1
zhang
1 天以前 dcf8384b4a7604e6b4e3b68f2fe76571c0d00d41
1
5个文件已修改
526 ■■■■ 已修改文件
open-rcs/components/content/content-interface-word.html 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
open-rcs/components/sidebar/sidebar-interface-word.html 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
open-rcs/pages/接口文档.html 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-cv/src/main/java/com/zy/asrs/controller/SiteController.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-cv/src/main/java/com/zy/asrs/controller/WmsController.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
open-rcs/components/content/content-interface-word.html
@@ -1387,6 +1387,132 @@
                            "timestamp": 1671526800000
                        }
                    }
                },
                {
                    "apiId": "api-cv-getError",
                    "name": "输送线异常信息接口",
                    "description": "输送线异常信息接口",
                    "isCommon": false,
                    "method": "POST",
                    "url": "/station/getError",
                    "menu": {
                        "category": "输送线异常信息接口",
                        "order": 6
                    },
                    "request": {
                        "parameters": [
                            {
                                "name": "staNo",
                                "type": "string",
                                "required": true,
                                "description": "站点编号",
                                "default": "1001"
                            }
                        ],
                        "example": {
                            "staNo": "1001"
                        }
                    },
                    "response": {
                        "parameters": [
                            {
                                "name": "code",
                                "type": "integer",
                                "description": "返回编号,200表示成功,1~N表示失败"
                            },
                            {
                                "name": "message",
                                "type": "string",
                                "description": "返回消息,请求成功表示成功,内容为详细的错误描述"
                            },
                            {
                                "name": "data",
                                "type": "object",
                                "description": "返回的数据结构"
                            },
                            {
                                "name": "timestamp",
                                "type": "integer",
                                "description": "时间戳"
                            }
                        ],
                        "example": {
                            "code": 200,
                            "message": "请求成功",
                            "timestamp": 1671526800000,
                            "data": [
                                {
                                    "staNo": "1001",
                                    "plcDesc": "有任务无货故障",
                                    "error": "有任务无货故障"
                                },
                                {
                                    "staNo": "1001",
                                    "plcDesc": "占位超时",
                                    "error": "占位超时"
                                }
                            ]
                        }
                    }
                },
                {
                    "apiId": "api-cv-getTaskNo",
                    "name": "输送线的任务号查询接口",
                    "description": "输送线的任务号查询接口",
                    "isCommon": false,
                    "method": "POST",
                    "url": "/station/getTaskNo",
                    "menu": {
                        "category": "输送线的任务号查询接口",
                        "order": 7
                    },
                    "request": {
                        "parameters": [
                            {
                                "name": "staNo",
                                "type": "string",
                                "required": true,
                                "description": "站点编号",
                                "default": "1001"
                            }
                        ],
                        "example": {
                            "staNo": "1001"
                        }
                    },
                    "response": {
                        "parameters": [
                            {
                                "name": "code",
                                "type": "integer",
                                "description": "返回编号,200表示成功,1~N表示失败"
                            },
                            {
                                "name": "message",
                                "type": "string",
                                "description": "返回消息,请求成功表示成功,内容为详细的错误描述"
                            },
                            {
                                "name": "data",
                                "type": "object",
                                "description": "返回的数据结构"
                            },
                            {
                                "name": "timestamp",
                                "type": "integer",
                                "description": "时间戳"
                            }
                        ],
                        "example": {
                            "code": 200,
                            "message": "请求成功",
                            "timestamp": 1671526800000,
                            "data": {
                                    "taskNo": "2121swasasas"
                                }
                        }
                    }
                }
            ];
open-rcs/components/sidebar/sidebar-interface-word.html
@@ -340,6 +340,30 @@
                        "category": "任务管理",
                        "order": 5
                    }
                },
                {
                    "apiId": "api-cv-getError",
                    "name": "输送线异常信息",
                    "description": "输送线异常信息",
                    "isCommon": false,
                    "method": "POST",
                    "url": "/cv/station/getError",
                    "menu": {
                        "category": "任务管理",
                        "order": 6
                    }
                },
                {
                    "apiId": "api-cv-getTaskNo",
                    "name": "输送线的任务号查询",
                    "description": "输送线的任务号查询",
                    "isCommon": false,
                    "method": "POST",
                    "url": "/cv/station/getTaskNo",
                    "menu": {
                        "category": "任务管理",
                        "order": 7
                    }
                }
            ];
open-rcs/pages/½Ó¿ÚÎĵµ.html
@@ -4,6 +4,7 @@
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>中扬RCS开放平台</title>
    <script src="https://cdn.jsdelivr.net/npm/jszip@3.10.1/dist/jszip.min.js"></script>
    <style>
        * {
            margin: 0;
@@ -74,7 +75,6 @@
            border: none;
            display: block;
        }
        /* åº•部 */
@@ -269,6 +269,8 @@
<div class="fixed-nav">
    <div>⊕<br>合作</div>
    <div>📧<br>咨询</div>
    <div onclick="exportToWord()">📄<br>导出Word</div>
    <div onclick="exportToMarkdown()">📝<br>导出MD</div>
    <div onclick="scrollToTop()">↑</div>
</div>
@@ -343,6 +345,218 @@
        });
    }
    // å¯¼å‡ºä¸ºWord (docx格式)
    function exportToWord() {
        const contentFrame = document.getElementById('content-frame');
        if (contentFrame && contentFrame.contentWindow) {
            try {
                console.log('开始导出Word');
                const contentDoc = contentFrame.contentDocument;
                const content = contentDoc.body.innerHTML;
                console.log('获取到内容,长度:', content.length);
                // æå–接口核心内容,过滤掉所有标题和元信息
                let coreContent = content;
                // ç§»é™¤æ ‡é¢˜å’Œå…ƒä¿¡æ¯
                coreContent = coreContent.replace(/RCS接口文档[\s\S]*?更新时间:[\s\S]*?\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g, '');
                coreContent = coreContent.replace(/<h1[^>]*>.*?<\/h1>/g, '');
                coreContent = coreContent.replace(/<h2[^>]*>.*?<\/h2>/g, '');
                coreContent = coreContent.replace(/<h3[^>]*>.*?<\/h3>/g, '');
                coreContent = coreContent.replace(/<h4[^>]*>.*?<\/h4>/g, '');
                coreContent = coreContent.replace(/<h5[^>]*>.*?<\/h5>/g, '');
                coreContent = coreContent.replace(/<h6[^>]*>.*?<\/h6>/g, '');
                coreContent = coreContent.replace(/更新时间:.*?<\/p>/g, '');
                // åˆ›å»ºHTML格式的Word文档
                const htmlContent = `
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>接口文档</title>
    <style>
        body {
            font-family: 'Microsoft YaHei', Arial, sans-serif;
            margin: 40px;
            line-height: 1.6;
        }
        p {
            margin-bottom: 15px;
            text-align: justify;
        }
        pre {
            background-color: #f8f9fa;
            padding: 15px;
            border-radius: 4px;
            border: 1px solid #e9ecef;
            margin: 20px 0;
            font-family: 'Consolas', 'Monaco', monospace;
            white-space: pre-wrap;
        }
        table {
            border-collapse: collapse;
            width: 100%;
            margin: 20px 0;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }
        th {
            background-color: #3498db;
            color: white;
            font-weight: bold;
            padding: 12px 15px;
            text-align: left;
        }
        td {
            border: 1px solid #ddd;
            padding: 10px 15px;
            text-align: left;
        }
        tr:nth-child(even) {
            background-color: #f8f9fa;
        }
        ul, ol {
            margin: 15px 0;
            padding-left: 30px;
        }
        li {
            margin-bottom: 8px;
        }
    </style>
</head>
<body>
    ${coreContent}
</body>
</html>
                `;
                // åˆ›å»ºBlob对象
                const blob = new Blob([htmlContent], { type: 'application/msword' });
                const url = URL.createObjectURL(blob);
                // åˆ›å»ºä¸‹è½½é“¾æŽ¥
                const link = document.createElement('a');
                link.href = url;
                link.download = '接口文档.doc';
                link.click();
                // é‡Šæ”¾URL对象
                setTimeout(() => URL.revokeObjectURL(url), 100);
                console.log('下载完成');
            } catch (e) {
                console.error('导出Word失败:', e);
                alert('导出Word失败,请重试:' + e.message);
            }
        } else {
            console.error('无法获取内容框架');
            alert('导出Word失败:无法获取内容框架');
        }
    }
    // å¯¼å‡ºä¸ºMarkdown
    function exportToMarkdown() {
        const contentFrame = document.getElementById('content-frame');
        if (contentFrame && contentFrame.contentWindow) {
            try {
                const contentDoc = contentFrame.contentDocument;
                const content = contentDoc.body;
                // è½¬æ¢HTML为Markdown
                let markdown = '';
                // æŒ‰æ–‡æ¡£é¡ºåºå¤„理所有元素
                const processElement = (element) => {
                    // è¿‡æ»¤æŽ‰ä¸éœ€è¦çš„元素
                    if (element.textContent.includes('RCS接口文档') ||
                        element.textContent.includes('接口详情') ||
                        element.textContent.includes('更新时间:') ||
                        element.textContent.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/)) {
                        return;
                    }
                    const tagName = element.tagName;
                    if (['H1', 'H2', 'H3', 'H4', 'H5', 'H6'].includes(tagName)) {
                        // å¤„理标题
                        const level = parseInt(tagName.substring(1));
                        const hashes = '#'.repeat(level);
                        markdown += `${hashes} ${element.textContent}\n\n`;
                    } else if (tagName === 'P') {
                        // å¤„理段落
                        markdown += `${element.textContent}\n\n`;
                    } else if (tagName === 'PRE') {
                        // å¤„理代码块
                        markdown += '```\n';
                        markdown += element.textContent;
                        markdown += '\n```\n\n';
                    } else if (tagName === 'UL' || tagName === 'OL') {
                        // å¤„理列表
                        const items = element.querySelectorAll('li');
                        items.forEach(item => {
                            const prefix = tagName === 'UL' ? '- ' : '1. ';
                            markdown += `${prefix}${item.textContent}\n`;
                        });
                        markdown += '\n';
                    } else if (tagName === 'TABLE') {
                        // å¤„理表格
                        const headers = element.querySelectorAll('th');
                        if (headers.length > 0) {
                            markdown += '| ';
                            headers.forEach(header => {
                                markdown += `${header.textContent} | `;
                            });
                            markdown += '\n';
                            // åˆ†éš”线
                            markdown += '| ';
                            headers.forEach(() => {
                                markdown += '--- | ';
                            });
                            markdown += '\n';
                        }
                        // å¤„理表格行
                        const rows = element.querySelectorAll('tr');
                        rows.forEach(row => {
                            const cells = row.querySelectorAll('td');
                            if (cells.length > 0) {
                                markdown += '| ';
                                cells.forEach(cell => {
                                    markdown += `${cell.textContent} | `;
                                });
                                markdown += '\n';
                            }
                        });
                        markdown += '\n';
                    } else if (element.children && element.children.length > 0) {
                        // å¤„理容器元素,递归处理子元素
                        Array.from(element.children).forEach(child => processElement(child));
                    }
                };
                // æŒ‰é¡ºåºå¤„理所有子元素
                Array.from(content.children).forEach(child => processElement(child));
                // åˆ›å»ºBlob对象
                const blob = new Blob([markdown], {type: 'text/markdown'});
                const url = URL.createObjectURL(blob);
                // åˆ›å»ºä¸‹è½½é“¾æŽ¥
                const link = document.createElement('a');
                link.href = url;
                link.download = '接口文档.md';
                link.click();
                // é‡Šæ”¾URL对象
                setTimeout(() => URL.revokeObjectURL(url), 100);
            } catch (e) {
                console.error('导出Markdown失败:', e);
                alert('导出Markdown失败,请重试');
            }
        }
    }
    // ç›‘听iframe加载完成
    window.addEventListener('load', function () {
        console.log('页面加载完成');
zy-acs-cv/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -76,23 +76,7 @@
        return R.ok().add(list);
    }
    @PostMapping("/table/plc/errors")
    @ManagerAuth(memo = "输送设备plc异常信息表")
    public R plcErrorTable() {
        List<PlcErrorTableVo> list = new ArrayList<>();
        for (DevpSlave devp : slaveProperties.getDevp()) {
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            Map<Integer, StaProtocol> station = devpThread.getStation();
            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
                if (!Cools.isEmpty(staPlcErr(entry))) {
                    list.add(staPlcErr(entry).get(0));
                }
            }
        }
        return R.ok().add(list);
    }
    @PostMapping("/output/site")
    @ManagerAuth(memo = "站点设备报文日志输出")
@@ -173,118 +157,6 @@
            }
        }
        return R.error("plc已掉线");
    }
    public List<PlcErrorTableVo> staPlcErr(Map.Entry<Integer, StaProtocol> entry) {
        List<PlcErrorTableVo> list = new ArrayList<>();
        StaProtocol staProtocol = entry.getValue();
        if (staProtocol.getBreakerErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("断路器故障");
            vo.setError("断路器故障");
            list.add(vo);
        }
        if (staProtocol.getInfraredErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("光电异常");
            vo.setError("光电异常");
            list.add(vo);
        }
        if (staProtocol.getOutTimeErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("运行超时");
            vo.setError("运行超时");
            list.add(vo);
        }
        if (staProtocol.getSeizeSeatErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("占位超时");
            vo.setError("占位超时");
            list.add(vo);
        }
        if (staProtocol.getWrkYgoodsN()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("有任务无货故障");
            vo.setError("有任务无货故障");
            list.add(vo);
        }
        if (staProtocol.getInverterErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("变频器故障");
            vo.setError("变频器故障");
            list.add(vo);
        }
        if (staProtocol.getContactErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("电机接触器故障");
            vo.setError("电机接触器故障");
            list.add(vo);
        }
        if (staProtocol.getUpcontactErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("顶升电机接触器故障");
            vo.setError("顶升电机接触器故障");
            list.add(vo);
        }
        if (staProtocol.isFrontErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("前超限");
            vo.setError("前超限");
            list.add(vo);
        }
        if (staProtocol.isBackErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("后超限");
            vo.setError("后超限");
            list.add(vo);
        }
        if (staProtocol.isHighErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("高超限");
            vo.setError("高超限");
            list.add(vo);
        }
        if (staProtocol.isLeftErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("左超限");
            vo.setError("左超限");
            list.add(vo);
        }
        if (staProtocol.isRightErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("右超限");
            vo.setError("右超限");
            list.add(vo);
        }
        if (staProtocol.isBarcodeErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setNo(entry.getKey());   //  åºå·
            vo.setPlcDesc("扫码失败");
            vo.setError("扫码失败");
            list.add(vo);
        }
        return list;
    }
zy-acs-cv/src/main/java/com/zy/asrs/controller/WmsController.java
@@ -49,10 +49,10 @@
        if (workNo != null) {
            Job jobByJobNo = jobService.getJobByJobNo(workNo);
            if (jobByJobNo != null) {
                return R.ok(jobByJobNo.getJobNo());
                return R.ok(jobByJobNo);
            }
        }
        return R.ok(list);
        return R.ok();
    }
@@ -78,98 +78,98 @@
        List<PlcErrorTableVo> list = new ArrayList<>();
        if (staProtocol.getBreakerErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("断路器故障");
            vo.setError("断路器故障");
            list.add(vo);
        }
        if (staProtocol.getInfraredErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("光电异常");
            vo.setError("光电异常");
            list.add(vo);
        }
        if (staProtocol.getOutTimeErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("运行超时");
            vo.setError("运行超时");
            list.add(vo);
        }
        if (staProtocol.getSeizeSeatErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("占位超时");
            vo.setError("占位超时");
            list.add(vo);
        }
        if (staProtocol.getWrkYgoodsN()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("有任务无货故障");
            vo.setError("有任务无货故障");
            list.add(vo);
        }
        if (staProtocol.getInverterErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("变频器故障");
            vo.setError("变频器故障");
            list.add(vo);
        }
        if (staProtocol.getContactErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("电机接触器故障");
            vo.setError("电机接触器故障");
            list.add(vo);
        }
        if (staProtocol.getUpcontactErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("顶升电机接触器故障");
            vo.setError("顶升电机接触器故障");
            list.add(vo);
        }
        if (staProtocol.isFrontErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("前超限");
            vo.setError("前超限");
            list.add(vo);
        }
        if (staProtocol.isBackErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("后超限");
            vo.setError("后超限");
            list.add(vo);
        }
        if (staProtocol.isHighErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("高超限");
            vo.setError("高超限");
            list.add(vo);
        }
        if (staProtocol.isLeftErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("左超限");
            vo.setError("左超限");
            list.add(vo);
        }
        if (staProtocol.isRightErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("右超限");
            vo.setError("右超限");
            list.add(vo);
        }
        if (staProtocol.isBarcodeErr()) {
            PlcErrorTableVo vo = new PlcErrorTableVo();
            vo.setStaNo(staProtocol.getSiteId());   //  åºå·
            vo.setStaNo(staProtocol.getSiteId());
            vo.setPlcDesc("扫码失败");
            vo.setError("扫码失败");
            list.add(vo);