| | |
| | | /nbdist/ |
| | | /.nb-gradle/ |
| | | |
| | | */target/ |
| | | **/target/ |
| | | |
| | | ~*.xlsx |
| | | |
| | |
| | | </div> |
| | | |
| | | <script> |
| | | // APIé
ç½®æ°æ® |
| | | let apiConfigs = []; |
| | | |
| | | // 卿å è½½APIé
ç½®å¹¶æ¸²ææ¥å£å
容 |
| | | function loadApiConfigs() { |
| | | try { |
| | | // ç´æ¥å®ä¹APIé
ç½®æ°æ®ï¼é¿å
CORSé误 |
| | | const apiConfigs = [ |
| | | apiConfigs = [ |
| | | { |
| | | "apiId": "api-task-create", |
| | | "name": "çæä»»å¡å", |
| | |
| | | if (section) { |
| | | section.scrollIntoView({ behavior: 'smooth' }); |
| | | } |
| | | } else if (event.data.type === 'getApiConfigs') { |
| | | event.source.postMessage({ |
| | | type: 'apiConfigs', |
| | | data: apiConfigs |
| | | }, '*'); |
| | | } |
| | | }); |
| | | </script> |
| | |
| | | // 导åºä¸ºWord (docxæ ¼å¼) |
| | | function exportToWord() { |
| | | const contentFrame = document.getElementById('content-frame'); |
| | | if (contentFrame && contentFrame.contentWindow) { |
| | | try { |
| | | console.log('å¼å§å¯¼åºWord'); |
| | | if (!contentFrame || !contentFrame.contentWindow) { |
| | | alert('æ æ³è·åå
å®¹æ¡æ¶'); |
| | | return; |
| | | } |
| | | |
| | | 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); |
| | | const handleMessage = function(event) { |
| | | if (event.data.type === 'apiConfigs') { |
| | | const apiConfigs = event.data.data; |
| | | window.removeEventListener('message', handleMessage); |
| | | generateWordDocument(apiConfigs); |
| | | } |
| | | } else { |
| | | console.error('æ æ³è·åå
å®¹æ¡æ¶'); |
| | | alert('导åºWordå¤±è´¥ï¼æ æ³è·åå
å®¹æ¡æ¶'); |
| | | }; |
| | | |
| | | window.addEventListener('message', handleMessage, { once: true }); |
| | | contentFrame.contentWindow.postMessage({ type: 'getApiConfigs' }, '*'); |
| | | |
| | | setTimeout(() => { |
| | | try { |
| | | window.removeEventListener('message', handleMessage); |
| | | } catch (e) { |
| | | console.log('çå¬å¨å·²ç§»é¤'); |
| | | } |
| | | }, 5000); |
| | | } |
| | | |
| | | function generateWordDocument(apiConfigs) { |
| | | try { |
| | | console.log('å¼å§çæWordææ¡£, APIæ°é:', apiConfigs.length); |
| | | |
| | | let apiDetailsHtml = ''; |
| | | apiConfigs.forEach(function(config) { |
| | | const methodClass = config.method.toLowerCase() === 'post' ? 'method-post' : 'method-get'; |
| | | |
| | | let requestParamsHtml = ''; |
| | | if (config.request && config.request.parameters) { |
| | | config.request.parameters.forEach(function(param) { |
| | | const required = param.required ? 'å¿
å¡«' : 'éå¡«'; |
| | | const defaultVal = param.default !== undefined ? ' (é»è®¤å¼: ' + param.default + ')' : ''; |
| | | requestParamsHtml += '<tr><td>' + param.name + '</td><td>' + param.type + '</td><td>' + required + '</td><td>' + param.description + defaultVal + '</td></tr>'; |
| | | }); |
| | | } |
| | | |
| | | let requestExample = ''; |
| | | if (config.request && config.request.example) { |
| | | requestExample = JSON.stringify(config.request.example, null, 2); |
| | | } |
| | | |
| | | let responseParamsHtml = ''; |
| | | if (config.response && config.response.parameters) { |
| | | config.response.parameters.forEach(function(param) { |
| | | responseParamsHtml += '<tr><td>' + param.name + '</td><td>' + param.type + '</td><td>' + param.description + '</td></tr>'; |
| | | }); |
| | | } |
| | | |
| | | let responseExample = ''; |
| | | if (config.response && config.response.example) { |
| | | responseExample = JSON.stringify(config.response.example, null, 2); |
| | | } |
| | | |
| | | apiDetailsHtml += |
| | | '<div class="api-info">' + |
| | | '<h3>' + config.name + '</h3>' + |
| | | '<div class="api-method ' + methodClass + '">' + config.method + '</div>' + |
| | | '<div class="api-url">' + config.url + '</div>' + |
| | | '<h4>请æ±åæ°</h4>' + |
| | | '<table><thead><tr><th>åæ°å</th><th>ç±»å</th><th>æ¯å¦å¿
å¡«</th><th>æè¿°</th></tr></thead><tbody>' + requestParamsHtml + '</tbody></table>' + |
| | | '<h4>请æ±ç¤ºä¾</h4>' + |
| | | '<pre>' + requestExample + '</pre>' + |
| | | '<h4>è¿ååæ°</h4>' + |
| | | '<table><thead><tr><th>åæ°å</th><th>ç±»å</th><th>æè¿°</th></tr></thead><tbody>' + responseParamsHtml + '</tbody></table>' + |
| | | '<h4>è¿å示ä¾</h4>' + |
| | | '<pre>' + responseExample + '</pre>' + |
| | | '</div>'; |
| | | }); |
| | | |
| | | const apiContent = '<h1>RCSæ¥å£ææ¡£</h1>' + |
| | | '<div class="intro">' + |
| | | '<p>欢è¿ä½¿ç¨ä¸æ¬RCS弿¾å¹³å°APIãæ¬ææ¡£æä¾äºå®æ´çæ¥å£è¯´æï¼å
å«è¯·æ±åæ°ãè¿åç»æä»¥å示ä¾ä»£ç ãæ¯ä¸ªæ¥å£é½æä¾äºMockåè½ï¼æ¹ä¾¿æ¨å¿«éæµè¯åéæã</p>' + |
| | | '</div>' + |
| | | '<div class="note">' + |
| | | '<div class="note-title">å¿«éå¯¹æ¥æå</div>' + |
| | | '<p><strong>æ¥å£ä¸æ * çä¸ºå¸¸ç¨æ¥å£</strong>ï¼åæ¥å¯¹æ¥æ¶ï¼åªéè¦è°é以䏿¥å£ï¼</p>' + |
| | | '<ul><li>1. çæä»»å¡å</li><li>2. åæ¶ä»»å¡å</li></ul>' + |
| | | '<p><strong>妿ä¸å±ç³»ç»éè¦æ¥æ¶ä»»å¡çæ§è¡ç¶æ</strong>ï¼éè¦æä¾ä»¥ä¸æ¥å£ï¼ä¾è°åº¦ç³»ç»åè°ï¼</p>' + |
| | | '<ul><li>任塿§è¡éç¥æ¥å£</li></ul>' + |
| | | '<p><strong>è¶
æ¶è®¾ç½®ï¼</strong>䏿¬è°åº¦ç³»ç»è°ç¨ä¸å±ç³»ç»çæ¥å£ï¼è·åè¿æ¥è¶
æ¶æ¶é´é»è®¤ä¸º <strong>30ç§</strong>ï¼æ°æ®è¿åè¶
æ¶æ¶é´é»è®¤ä¸º <strong>60ç§</strong>ï¼è¶
æ¶æ
åµä¸ï¼è°åº¦ç³»ç»ä¼è¿åè¿æ¥å¤±è´¥ã</p>' + |
| | | '</div>' + |
| | | '<div class="api-info">' + |
| | | '<h3>对æ¥çº¦å®</h3>' + |
| | | '<ul><li><strong>ç»ä¸æ ¼å¼ï¼</strong>为æ¥å£ç»ä¸å¹¶å
¼å®¹ï¼ææçåæ°é½ä¸ºåç¬¦ä¸²æ ¼å¼ã</li><li><strong>æ¯è¯çº¦å®ï¼</strong>ææ¬æ¶åå°ç AGVãrobotãæºå¨äººæ¯è¯ãCTU为å䏿¯è¯ï¼ä¸è¦æ··æ·ã</li><li><strong>çæ¬å
¼å®¹ï¼</strong>为å
¼å®¹ä»¥åçæ¬ï¼æ¶æ¯ä¸æ¥åæ®µä¼æ¯ååºçåæ®µè¦å¤ï¼ä¸å±å¹³å°æ ¹æ®ä¸å¡æªåéè¦çåæ®µã</li><li><strong>容å¨å®ä¹ï¼</strong>åºç¨äºå车ãCTUç项ç®ä¸ï¼æç®±ãæçãè½½å
·é½å¯ç§°ä¸ºå®¹å¨ã</li></ul>' + |
| | | '</div>' + |
| | | '<section class="api-section">' + |
| | | '<h2>æ¥å£æ¦è§</h2>' + |
| | | '<div class="api-info">' + |
| | | '<h3>åºç¡ä¿¡æ¯</h3>' + |
| | | '<table><tbody><tr><td><strong>åºç¡ URL</strong></td><td><code>http://IP:PORT</code></td></tr><tr><td><strong>è¯·æ±æ ¼å¼</strong></td><td><code>application/json</code></td></tr><tr><td><strong>è¿åæ ¼å¼</strong></td><td><code>application/json</code></td></tr><tr><td><strong>å符ç¼ç </strong></td><td><code>UTF-8</code></td></tr></tbody></table>' + |
| | | '</div>' + |
| | | '<div class="api-info">' + |
| | | '<h3>éç¨è¯·æ±åæ°</h3>' + |
| | | '<p>以ä¸åæ°ä¸ºæææ¥å£çéç¨åæ°ï¼æ¯æ¬¡è°ç¨æ¶éè¦æºå¸¦ï¼</p>' + |
| | | '<table><thead><tr><th>åæ°å</th><th>æ¯å¦å¿
å¡«</th><th>æè¿°</th></tr></thead><tbody><tr><td><code>reqTime</code></td><td>éå¡«</td><td>è¯·æ±æ¶é´æ³ï¼æ ¼å¼: <code>yyyy-MM-dd HH:mm:ss</code>ãç±ä¸å±ç³»ç»è®¾å®ã</td></tr><tr><td><code>tokenCode</code></td><td>éå¡«</td><td>令çå·ï¼ç±è°åº¦ç³»ç»é¢åã妿填åï¼éå
å¨ RCS-2000 ç³»ç»é
ç½®ï¼ä¸å±ç³»ç»è°ç¨æ¶è¿è¡å¡«åã</td></tr></tbody></table>' + |
| | | '</div>' + |
| | | '<div class="api-info">' + |
| | | '<h3>éç¨è¿åå¼å®ä¹</h3>' + |
| | | '<p>æææ¥å£çååºé½éµå¾ªä»¥ä¸ç»ä¸æ ¼å¼ï¼</p>' + |
| | | '<table><thead><tr><th>åæ°å</th><th>æ¯å¦å¿
å¡«</th><th>æè¿°</th></tr></thead><tbody><tr><td><code>code</code></td><td>å¿
å¡«</td><td>è¿åç¼å·ï¼<code>200</code> 表示æåï¼<code>1~N</code> 表示失败</td></tr><tr><td><code>message</code></td><td>å¿
å¡«</td><td>è¿åæ¶æ¯ï¼<code>è¯·æ±æå</code> 表示æåï¼å
容为详ç»çé误æè¿°</td></tr><tr><td><code>data</code></td><td>éå¡«</td><td>è¿åçæ°æ®ç»æï¼å
·ä½å
å®¹æ ¹æ®æ¥å£èå®</td></tr></tbody></table>' + |
| | | '</div>' + |
| | | '</section>' + |
| | | '<section class="api-section">' + |
| | | '<h2>æ¥å£è¯¦æ
</h2>' + |
| | | apiDetailsHtml + |
| | | '</section>' + |
| | | '<section class="api-section">' + |
| | | '<h2>é误ç 说æ</h2>' + |
| | | '<div class="api-info">' + |
| | | '<h3>éç¨é误ç </h3>' + |
| | | '<table><thead><tr><th>é误ç </th><th>说æ</th><th>è§£å³æ¹æ¡</th></tr></thead><tbody><tr><td>200</td><td>æå</td><td>-</td></tr><tr><td>500</td><td>åæ°é误</td><td>æ£æ¥è¯·æ±åæ°æ¯å¦å®æ´åæ£ç¡®</td></tr></tbody></table>' + |
| | | '</div>' + |
| | | '</section>'; |
| | | |
| | | 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; } ' + |
| | | 'h1, h2, h3, h4 { color: #333; margin-top: 20px; margin-bottom: 15px; } ' + |
| | | '.api-method { display: inline-block; padding: 6px 16px; border-radius: 20px; font-weight: 700; margin-right: 12px; font-size: 13px; } ' + |
| | | '.method-post { background: #49cc90; color: #fff; } ' + |
| | | '.method-get { background: #61affe; color: #fff; } ' + |
| | | '.api-url { font-family: "Courier New", "Consolas", monospace; background: #2d3748; color: #48bb78; padding: 14px 18px; margin: 15px 0; border-radius: 8px; font-size: 14px; word-break: break-all; } ' + |
| | | '.note { background: #fff9e6; border-left: 5px solid #ffc107; padding: 20px; margin: 20px 0; border-radius: 12px; } ' + |
| | | '.api-info { background-color: #fff; padding: 25px; margin: 20px 0; border-radius: 12px; border-left: 5px solid #0066cc; } ' + |
| | | '</style></head><body>' + apiContent + '</body></html>'; |
| | | |
| | | 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.style.display = 'none'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | |
| | | setTimeout(() => URL.revokeObjectURL(url), 100); |
| | | console.log('Wordææ¡£ä¸è½½å®æ'); |
| | | } catch (e) { |
| | | console.error('çæWordææ¡£å¤±è´¥:', e); |
| | | alert('导åºWord失败ï¼è¯·éè¯ï¼' + e.message); |
| | | } |
| | | } |
| | | |
| | | // 导åºä¸ºMarkdown |
| | | function exportToMarkdown() { |
| | | const contentFrame = document.getElementById('content-frame'); |
| | | if (contentFrame && contentFrame.contentWindow) { |
| | | try { |
| | | const contentDoc = contentFrame.contentDocument; |
| | | const content = contentDoc.body; |
| | | if (!contentFrame || !contentFrame.contentWindow) { |
| | | alert('æ æ³è·åå
å®¹æ¡æ¶'); |
| | | return; |
| | | } |
| | | |
| | | // 转æ¢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失败ï¼è¯·éè¯'); |
| | | const handleMessage = function(event) { |
| | | if (event.data.type === 'apiConfigs') { |
| | | const apiConfigs = event.data.data; |
| | | window.removeEventListener('message', handleMessage); |
| | | generateMarkdownDocument(apiConfigs); |
| | | } |
| | | }; |
| | | |
| | | window.addEventListener('message', handleMessage, { once: true }); |
| | | contentFrame.contentWindow.postMessage({ type: 'getApiConfigs' }, '*'); |
| | | |
| | | setTimeout(() => { |
| | | try { |
| | | window.removeEventListener('message', handleMessage); |
| | | } catch (e) { |
| | | console.log('çå¬å¨å·²ç§»é¤'); |
| | | } |
| | | }, 5000); |
| | | } |
| | | |
| | | function generateMarkdownDocument(apiConfigs) { |
| | | try { |
| | | console.log('å¼å§çæMarkdownææ¡£, APIæ°é:', apiConfigs.length); |
| | | |
| | | let apiDetailsMd = ''; |
| | | apiConfigs.forEach(function(config) { |
| | | let requestParamsMd = ''; |
| | | if (config.request && config.request.parameters) { |
| | | config.request.parameters.forEach(function(param) { |
| | | const required = param.required ? 'å¿
å¡«' : 'éå¡«'; |
| | | const defaultVal = param.default !== undefined ? ' (é»è®¤å¼: ' + param.default + ')' : ''; |
| | | requestParamsMd += '| ' + param.name + ' | ' + param.type + ' | ' + required + ' | ' + param.description + defaultVal + ' |\n'; |
| | | }); |
| | | } |
| | | |
| | | let requestExample = ''; |
| | | if (config.request && config.request.example) { |
| | | requestExample = JSON.stringify(config.request.example, null, 2); |
| | | } |
| | | |
| | | let responseParamsMd = ''; |
| | | if (config.response && config.response.parameters) { |
| | | config.response.parameters.forEach(function(param) { |
| | | responseParamsMd += '| ' + param.name + ' | ' + param.type + ' | ' + param.description + ' |\n'; |
| | | }); |
| | | } |
| | | |
| | | let responseExample = ''; |
| | | if (config.response && config.response.example) { |
| | | responseExample = JSON.stringify(config.response.example, null, 2); |
| | | } |
| | | |
| | | apiDetailsMd += |
| | | '### ' + config.name + '\n\n' + |
| | | '**' + config.method + '** `' + config.url + '`\n\n' + |
| | | '#### 请æ±åæ°\n\n' + |
| | | '| åæ°å | ç±»å | æ¯å¦å¿
å¡« | æè¿° |\n' + |
| | | '| --- | --- | --- | --- |\n' + |
| | | requestParamsMd + |
| | | '#### 请æ±ç¤ºä¾\n\n' + |
| | | '```json\n' + |
| | | requestExample + '\n' + |
| | | '```\n\n' + |
| | | '#### è¿ååæ°\n\n' + |
| | | '| åæ°å | ç±»å | æè¿° |\n' + |
| | | '| --- | --- | --- |\n' + |
| | | responseParamsMd + |
| | | '#### è¿å示ä¾\n\n' + |
| | | '```json\n' + |
| | | responseExample + '\n' + |
| | | '```\n\n'; |
| | | }); |
| | | |
| | | const markdown = |
| | | '# RCSæ¥å£ææ¡£\n\n' + |
| | | '## å¿«éå¯¹æ¥æå\n\n' + |
| | | '**æ¥å£ä¸æ * çä¸ºå¸¸ç¨æ¥å£**ï¼åæ¥å¯¹æ¥æ¶ï¼åªéè¦è°é以䏿¥å£ï¼\n\n' + |
| | | '- 1. çæä»»å¡å\n' + |
| | | '- 2. åæ¶ä»»å¡å\n\n' + |
| | | '**妿ä¸å±ç³»ç»éè¦æ¥æ¶ä»»å¡çæ§è¡ç¶æ**ï¼éè¦æä¾ä»¥ä¸æ¥å£ï¼ä¾è°åº¦ç³»ç»åè°ï¼\n\n' + |
| | | '- 任塿§è¡éç¥æ¥å£\n\n' + |
| | | '**è¶
æ¶è®¾ç½®ï¼** 䏿¬è°åº¦ç³»ç»è°ç¨ä¸å±ç³»ç»çæ¥å£ï¼è·åè¿æ¥è¶
æ¶æ¶é´é»è®¤ä¸º **30ç§**ï¼æ°æ®è¿åè¶
æ¶æ¶é´é»è®¤ä¸º **60ç§**ï¼è¶
æ¶æ
åµä¸ï¼è°åº¦ç³»ç»ä¼è¿åè¿æ¥å¤±è´¥ã\n\n' + |
| | | '## 对æ¥çº¦å®\n\n' + |
| | | '- **ç»ä¸æ ¼å¼ï¼** 为æ¥å£ç»ä¸å¹¶å
¼å®¹ï¼ææçåæ°é½ä¸ºåç¬¦ä¸²æ ¼å¼ã\n' + |
| | | '- **æ¯è¯çº¦å®ï¼** ææ¬æ¶åå°ç AGVãrobotãæºå¨äººæ¯è¯ãCTU为å䏿¯è¯ï¼ä¸è¦æ··æ·ã\n' + |
| | | '- **çæ¬å
¼å®¹ï¼** 为å
¼å®¹ä»¥åçæ¬ï¼æ¶æ¯ä¸æ¥åæ®µä¼æ¯ååºçåæ®µè¦å¤ï¼ä¸å±å¹³å°æ ¹æ®ä¸å¡æªåéè¦çåæ®µã\n' + |
| | | '- **容å¨å®ä¹ï¼** åºç¨äºå车ãCTUç项ç®ä¸ï¼æç®±ãæçãè½½å
·é½å¯ç§°ä¸ºå®¹å¨ã\n\n' + |
| | | '## æ¥å£æ¦è§\n\n' + |
| | | '### åºç¡ä¿¡æ¯\n\n' + |
| | | '| åæ° | å¼ |\n' + |
| | | '| --- | --- |\n' + |
| | | '| åºç¡ URL | `http://IP:PORT` |\n' + |
| | | '| è¯·æ±æ ¼å¼ | `application/json` |\n' + |
| | | '| è¿åæ ¼å¼ | `application/json` |\n' + |
| | | '| å符ç¼ç | `UTF-8` |\n\n' + |
| | | '### éç¨è¯·æ±åæ°\n\n' + |
| | | '| åæ°å | æ¯å¦å¿
å¡« | æè¿° |\n' + |
| | | '| --- | --- | --- |\n' + |
| | | '| `reqTime` | éå¡« | è¯·æ±æ¶é´æ³ï¼æ ¼å¼: `yyyy-MM-dd HH:mm:ss`ãç±ä¸å±ç³»ç»è®¾å®ã |\n' + |
| | | '| `tokenCode` | éå¡« | 令çå·ï¼ç±è°åº¦ç³»ç»é¢åã妿填åï¼éå
å¨ RCS-2000 ç³»ç»é
ç½®ï¼ä¸å±ç³»ç»è°ç¨æ¶è¿è¡å¡«åã |\n\n' + |
| | | '### éç¨è¿åå¼å®ä¹\n\n' + |
| | | '| åæ°å | æ¯å¦å¿
å¡« | æè¿° |\n' + |
| | | '| --- | --- | --- |\n' + |
| | | '| `code` | å¿
å¡« | è¿åç¼å·ï¼`200` 表示æåï¼`1~N` 表示失败 |\n' + |
| | | '| `message` | å¿
å¡« | è¿åæ¶æ¯ï¼`è¯·æ±æå` 表示æåï¼å
容为详ç»çé误æè¿° |\n' + |
| | | '| `data` | éå¡« | è¿åçæ°æ®ç»æï¼å
·ä½å
å®¹æ ¹æ®æ¥å£èå® |\n\n' + |
| | | '## æ¥å£è¯¦æ
\n\n' + |
| | | apiDetailsMd + |
| | | '## é误ç 说æ\n\n' + |
| | | '### éç¨é误ç \n\n' + |
| | | '| é误ç | 说æ | è§£å³æ¹æ¡ |\n' + |
| | | '| --- | --- | --- |\n' + |
| | | '| 200 | æå | - |\n' + |
| | | '| 500 | åæ°é误 | æ£æ¥è¯·æ±åæ°æ¯å¦å®æ´åæ£ç¡® |\n'; |
| | | |
| | | const blob = new Blob([markdown], { type: 'text/markdown;charset=utf-8' }); |
| | | const url = URL.createObjectURL(blob); |
| | | |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æ¥å£ææ¡£.md'; |
| | | link.style.display = 'none'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | |
| | | setTimeout(() => URL.revokeObjectURL(url), 100); |
| | | console.log('Markdownææ¡£ä¸è½½å®æ'); |
| | | } catch (e) { |
| | | console.error('çæMarkdownææ¡£å¤±è´¥:', e); |
| | | alert('导åºMarkdown失败ï¼è¯·éè¯ï¼' + e.message); |
| | | } |
| | | } |
| | | |
| New file |
| | |
| | | /* |
| | | Navicat Premium Data Transfer |
| | | |
| | | Source Server : dockerMySql |
| | | Source Server Type : MySQL |
| | | Source Server Version : 50744 |
| | | Source Host : 127.0.0.1:3306 |
| | | Source Schema : cv |
| | | |
| | | Target Server Type : MySQL |
| | | Target Server Version : 50744 |
| | | File Encoding : 65001 |
| | | |
| | | Date: 09/03/2026 13:09:19 |
| | | */ |
| | | |
| | | SET NAMES utf8mb4; |
| | | SET FOREIGN_KEY_CHECKS = 0; |
| | | |
| | | -- ---------------------------- |
| | | -- Table structure for cv_devp |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `cv_devp`; |
| | | CREATE TABLE `cv_devp` ( |
| | | `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', |
| | | `dev_no` int(11) NULL DEFAULT NULL COMMENT 'ç¼å·', |
| | | `dec_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'è®¾å¤æè¿°', |
| | | `in_enable` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'å¯å
¥', |
| | | `out_enable` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'å¯åº', |
| | | `autoing` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'èªå¨', |
| | | `loading` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'æç©', |
| | | `canining` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'è½å
¥', |
| | | `canouting` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'è½åº', |
| | | `wrk_no` int(11) NULL DEFAULT NULL COMMENT 'å·¥ä½å·', |
| | | `barcode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'æ¡å½¢ç ', |
| | | `loc_type` smallint(6) NULL DEFAULT NULL COMMENT 'åºä½ç±»å', |
| | | `status` int(11) NULL DEFAULT NULL COMMENT 'ç¶æ 1:æ£å¸¸ 0:å»ç»', |
| | | `deleted` int(11) NULL DEFAULT NULL COMMENT 'æ¯å¦å é¤ 1:æ¯ 0:å¦', |
| | | `tenant_id` bigint(20) NULL DEFAULT NULL COMMENT 'ç§æ·', |
| | | `create_by` bigint(20) NULL DEFAULT NULL COMMENT 'æ·»å 人å', |
| | | `create_time` datetime NULL DEFAULT NULL COMMENT 'æ·»å æ¶é´', |
| | | `update_by` bigint(20) NULL DEFAULT NULL COMMENT 'ä¿®æ¹äººå', |
| | | `update_time` datetime NULL DEFAULT NULL COMMENT 'ä¿®æ¹æ¶é´', |
| | | `memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '夿³¨', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '设å¤è¡¨' ROW_FORMAT = Dynamic; |
| | | |
| | | -- ---------------------------- |
| | | -- Records of cv_devp |
| | | -- ---------------------------- |
| | | INSERT INTO `cv_devp` VALUES (1, 1001, NULL, 'Y', 'N', 'Y', 'N', 'Y', 'Y', 0, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (2, 1002, NULL, 'Y', 'N', 'Y', 'N', 'Y', 'Y', 0, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (3, 1003, NULL, 'Y', 'N', 'Y', 'N', 'Y', 'Y', 0, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (4, 1004, NULL, 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 0, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (5, 1005, NULL, 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 14, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (6, 1006, NULL, 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 13, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (7, 1007, NULL, 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 9, NULL, 1, 1, 0, NULL, NULL, '2026-03-04 10:30:55', NULL, '2026-03-05 14:57:11', NULL); |
| | | INSERT INTO `cv_devp` VALUES (8, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_devp` VALUES (9, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | |
| | | -- ---------------------------- |
| | | -- Table structure for cv_job |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `cv_job`; |
| | | CREATE TABLE `cv_job` ( |
| | | `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', |
| | | `task_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'ä»»å¡å·', |
| | | `barcode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'æ¡å½¢ç ', |
| | | `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'æ¹æ¬¡å·', |
| | | `sta_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'ç«ç¹å·', |
| | | `loc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'åºä½å·', |
| | | `job_no` int(11) NULL DEFAULT NULL COMMENT 'å·¥ä½å·', |
| | | `job_sts` int(11) NULL DEFAULT NULL COMMENT 'å·¥ä½ç¶æ', |
| | | `start_time` datetime NULL DEFAULT NULL COMMENT 'å¼å§æ¶é´', |
| | | `wms_time` datetime NULL DEFAULT NULL COMMENT 'å
¥åºæ¶é´', |
| | | `rcs_time` datetime NULL DEFAULT NULL COMMENT 'ä»»å¡åçæ¶é´', |
| | | `status` int(11) NULL DEFAULT NULL COMMENT 'ç¶æ 1:æ£å¸¸ 0:å»ç»', |
| | | `deleted` int(11) NULL DEFAULT NULL COMMENT 'æ¯å¦å é¤ 1:æ¯ 0:å¦', |
| | | `tenant_id` bigint(20) NULL DEFAULT NULL COMMENT 'ç§æ·', |
| | | `create_by` bigint(20) NULL DEFAULT NULL COMMENT 'æ·»å 人å', |
| | | `create_time` datetime NULL DEFAULT NULL COMMENT 'æ·»å æ¶é´', |
| | | `update_by` bigint(20) NULL DEFAULT NULL COMMENT 'ä¿®æ¹äººå', |
| | | `update_time` datetime NULL DEFAULT NULL COMMENT 'ä¿®æ¹æ¶é´', |
| | | `memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '夿³¨', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'ä»»å¡è¡¨' ROW_FORMAT = Dynamic; |
| | | |
| | | -- ---------------------------- |
| | | -- Records of cv_job |
| | | -- ---------------------------- |
| | | INSERT INTO `cv_job` VALUES (7, 'TK2603054400', NULL, NULL, NULL, NULL, 8, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job` VALUES (8, 'TK2603054408', '00000011', 'TK2603054408', '1007', 'A102900101', 9, 7, '2026-03-05 13:55:03', '2026-03-05 13:55:01', '2026-03-05 13:55:09', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job` VALUES (9, 'TK2603054404', NULL, NULL, NULL, NULL, 10, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'æ¨¡æææé®'); |
| | | INSERT INTO `cv_job` VALUES (10, 'TK2603054405', NULL, NULL, NULL, NULL, 11, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'æ¨¡æææé®'); |
| | | INSERT INTO `cv_job` VALUES (11, 'TK2603054406', NULL, NULL, NULL, NULL, 12, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'æ¨¡æææé®'); |
| | | INSERT INTO `cv_job` VALUES (12, 'TK2603054409', '00000006', 'TK2603054409', '1007', 'A102400201', 13, 5, '2026-03-05 14:07:16', '2026-03-05 14:07:15', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job` VALUES (13, 'TK2603054410', '00000005', 'TK2603054410', '1007', 'A102500201', 14, 5, '2026-03-05 14:14:19', '2026-03-05 14:09:20', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | |
| | | -- ---------------------------- |
| | | -- Table structure for cv_job_log |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `cv_job_log`; |
| | | CREATE TABLE `cv_job_log` ( |
| | | `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', |
| | | `task_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'ä»»å¡å·', |
| | | `barcode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'æ¡å½¢ç ', |
| | | `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'æ¹æ¬¡å·', |
| | | `sta_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'ç«ç¹å·', |
| | | `loc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'åºä½å·', |
| | | `job_no` int(11) NULL DEFAULT NULL COMMENT 'å·¥ä½å·', |
| | | `job_sts` int(11) NULL DEFAULT NULL COMMENT 'å·¥ä½ç¶æ', |
| | | `start_time` datetime NULL DEFAULT NULL COMMENT 'å¼å§æ¶é´', |
| | | `wms_time` datetime NULL DEFAULT NULL COMMENT 'å
¥åºæ¶é´', |
| | | `rcs_time` datetime NULL DEFAULT NULL COMMENT 'ä»»å¡åçæ¶é´', |
| | | `status` int(11) NULL DEFAULT NULL COMMENT 'ç¶æ 1:æ£å¸¸ 0:å»ç»', |
| | | `deleted` int(11) NULL DEFAULT NULL COMMENT 'æ¯å¦å é¤ 1:æ¯ 0:å¦', |
| | | `tenant_id` bigint(20) NULL DEFAULT NULL COMMENT 'ç§æ·', |
| | | `create_by` bigint(20) NULL DEFAULT NULL COMMENT 'æ·»å 人å', |
| | | `create_time` datetime NULL DEFAULT NULL COMMENT 'æ·»å æ¶é´', |
| | | `update_by` bigint(20) NULL DEFAULT NULL COMMENT 'ä¿®æ¹äººå', |
| | | `update_time` datetime NULL DEFAULT NULL COMMENT 'ä¿®æ¹æ¶é´', |
| | | `memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '夿³¨', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任塿¥å¿è¡¨' ROW_FORMAT = Dynamic; |
| | | |
| | | -- ---------------------------- |
| | | -- Records of cv_job_log |
| | | -- ---------------------------- |
| | | INSERT INTO `cv_job_log` VALUES (1, 'TK2603054397', '00000006', 'TK2603054397', '1007', 'A103200101', 2, 8, '2026-03-05 13:21:57', '2026-03-05 13:21:55', '2026-03-05 13:22:03', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job_log` VALUES (2, 'TK2603054398', '00000011', 'TK2603054398', '1007', 'A102900101', 3, 8, '2026-03-05 13:36:45', '2026-03-05 13:36:43', '2026-03-05 13:36:50', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job_log` VALUES (3, 'TK2603054399', '00000006', 'TK2603054399', '1007', 'A102400201', 4, 8, '2026-03-05 13:37:25', '2026-03-05 13:37:23', '2026-03-05 13:37:31', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job_log` VALUES (4, 'TK2603054401', '00000009', 'TK2603054401', '1007', 'A102500201', 5, 8, '2026-03-05 13:43:49', '2026-03-05 13:43:47', '2026-03-05 13:43:55', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job_log` VALUES (5, 'TK2603054402', '00000005', 'TK2603054402', '1007', 'A102600201', 6, 8, '2026-03-05 13:43:55', '2026-03-05 13:43:53', '2026-03-05 13:44:13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | INSERT INTO `cv_job_log` VALUES (6, 'TK2603054403', '00000012', 'TK2603054403', '1007', 'A102700201', 7, 8, '2026-03-05 13:44:14', '2026-03-05 13:44:01', '2026-03-05 13:46:10', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | |
| | | -- ---------------------------- |
| | | -- Table structure for cv_work_lastno |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `cv_work_lastno`; |
| | | CREATE TABLE `cv_work_lastno` ( |
| | | `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', |
| | | `type` int(11) NULL DEFAULT NULL COMMENT 'ç±»å', |
| | | `wrk_no` int(11) NULL DEFAULT NULL COMMENT 'å½åå·¥ä½å·', |
| | | `s_no` int(11) NULL DEFAULT NULL COMMENT 'èµ·å§ID', |
| | | `e_no` int(11) NULL DEFAULT NULL COMMENT 'ç»æ¢ID', |
| | | `status` int(11) NULL DEFAULT NULL COMMENT 'ç¶æ 1:æ£å¸¸ 0:å»ç»', |
| | | `deleted` int(11) NULL DEFAULT NULL COMMENT 'æ¯å¦å é¤ 1:æ¯ 0:å¦', |
| | | `tenant_id` bigint(20) NULL DEFAULT NULL COMMENT 'ç§æ·', |
| | | `create_by` bigint(20) NULL DEFAULT NULL COMMENT 'æ·»å 人å', |
| | | `create_time` datetime NULL DEFAULT NULL COMMENT 'æ·»å æ¶é´', |
| | | `update_by` bigint(20) NULL DEFAULT NULL COMMENT 'ä¿®æ¹äººå', |
| | | `update_time` datetime NULL DEFAULT NULL COMMENT 'ä¿®æ¹æ¶é´', |
| | | `memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '夿³¨', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'å·¥ä½å·ç»´æ¤è¡¨' ROW_FORMAT = Dynamic; |
| | | |
| | | -- ---------------------------- |
| | | -- Records of cv_work_lastno |
| | | -- ---------------------------- |
| | | INSERT INTO `cv_work_lastno` VALUES (1, 1, 14, 1, 8999, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL); |
| | | |
| | | SET FOREIGN_KEY_CHECKS = 1; |
| | |
| | | |
| | | private Long timestamp = System.currentTimeMillis(); |
| | | |
| | | public DeviceMessage(String sourceHexStr) { |
| | | this.sourceHexStr = sourceHexStr; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping("/output/site") |
| | | @ManagerAuth(memo = "ç«ç¹è®¾å¤æ¥ææ¥å¿è¾åº") |
| | | public R siteOutput() { |
| | |
| | | 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); |
| | |
| | | public Devp setSqlData(Devp devp) { |
| | | this.setDevNo(devp.getDevNo()); |
| | | this.setWrkNo(devp.getWrkNo()); |
| | | this.setAutoing(devp.getAutoing() ); |
| | | this.setLoading(devp.getLoading() ); |
| | | this.setAutoing(devp.getAutoing()); |
| | | this.setLoading(devp.getLoading()); |
| | | this.setInEnable(devp.getInEnable()); |
| | | this.setOutEnable(devp.getOutEnable()); |
| | | this.setUpdateTime(new Date()); |
| | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.zy.asrs.entity.Devp; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | @Repository |
| | |
| | | |
| | | Job getJobByBarcode(@Param("barcode") String barcode); |
| | | |
| | | |
| | | List<Job> listJobByJobSts(@Param("jobSts") Integer jobSts); |
| | | |
| | | List<Job> listJobByJobStsAndDay(@Param("jobSts") Integer jobSts, @Param("day") Integer day); |
| | | |
| | | List<Job> listJobToLog(@Param("jobSts") Integer jobSts, @Param("day") Integer day); |
| | | |
| | | |
| | |
| | | import com.zy.asrs.mapper.JobMapper; |
| | | import com.zy.asrs.service.JobService; |
| | | import com.zy.core.enums.ConveyorStateType; |
| | | import com.zy.core.properties.CtuOperationConfig; |
| | | import com.zy.core.properties.CtuServiceProperties; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | @Autowired |
| | | private JobMapper jobMapper; |
| | | |
| | | @Autowired |
| | | private CtuServiceProperties properties; |
| | | |
| | | |
| | | //@Scheduled(cron = "0 0 2 * * ?") |
| | | @Scheduled(cron = "*/5 * * * * ?") |
| | | public void autoToLog() { |
| | | List<Job> jobs = jobMapper.listJobByJobSts(ConveyorStateType.CLEARSIGNAL.getStatus()); |
| | | List<Job> jobs = jobMapper.listJobByJobStsAndDay(ConveyorStateType.CLEARSIGNAL.getStatus(),1); |
| | | for (Job job : jobs) { |
| | | jobService.saveJobLog(job); |
| | | } |
| | | jobs = jobMapper.listJobToLog(ConveyorStateType.OUTBOUND.getStatus(), 1); |
| | | for (Job job : jobs) { |
| | | jobService.saveJobLog(job); |
| | | Boolean flag = true; |
| | | List<CtuOperationConfig> operations = properties.getOperations(); |
| | | for (CtuOperationConfig config : operations) { |
| | | if (config.getType().equals(ConveyorStateType.FAKEUSER)) { |
| | | flag = false; |
| | | } |
| | | } |
| | | if (flag) { |
| | | jobs = jobMapper.listJobToLog(ConveyorStateType.OUTBOUND.getStatus(), 1); |
| | | for (Job job : jobs) { |
| | | jobService.saveJobLog(job); |
| | | } |
| | | } else { |
| | | jobs = jobMapper.listJobToLog(ConveyorStateType.FAKEUSER.getStatus(), 1); |
| | | for (Job job : jobs) { |
| | | jobService.saveJobLog(job); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | import com.zy.asrs.entity.Devp; |
| | | import com.zy.asrs.mapper.DevpMapper; |
| | | import com.zy.asrs.service.DevpService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | import com.zy.acs.framework.exception.CoolException; |
| | | import com.zy.asrs.entity.WrkLastno; |
| | | import com.zy.asrs.mapper.WrkLastnoMapper; |
| | | import com.zy.asrs.service.JobService; |
| | | import com.zy.asrs.service.WrkLastnoService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("wrkLastnoService") |
| | | public class WrkLastnoServiceImpl extends ServiceImpl<WrkLastnoMapper, WrkLastno> implements WrkLastnoService { |
| | | |
| | | @Autowired |
| | | private JobService jobService; |
| | | |
| | | |
| | | /** |
| | |
| | | int sNo = wrkLastno.getSNo(); |
| | | int eNo = wrkLastno.getENo(); |
| | | |
| | | workNo = workNo >= eNo ? sNo : workNo + 1; |
| | | do { |
| | | workNo = workNo >= eNo ? sNo : workNo + 1; |
| | | } while (jobService.getJobByJobNo(workNo) == null); |
| | | |
| | | if (workNo > 0) { |
| | | wrkLastno.setWrkNo(workNo); |
| | | baseMapper.updateById(wrkLastno); |
| | | } |
| | | if (workNo == 0) { |
| | | throw new CoolException("çæå·¥ä½å·å¤±è´¥ï¼è¯·è系管çå"); |
| | | } else { |
| | | if (baseMapper.selectById(workNo) != null) { |
| | | throw new CoolException("çæå·¥ä½å·" + workNo + "å¨å·¥ä½æ¡£ä¸å·²åå¨"); |
| | | } |
| | | } |
| | | return workNo; |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public StaProtocol clone() { |
| | | try { |
| | |
| | | package com.zy.core.operation.handler; |
| | | |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.framework.exception.CoolException; |
| | | import com.zy.asrs.controller.vo.ApplyInDto; |
| | | import com.zy.asrs.controller.vo.ApplyInRepsonseDto; |
| | | import com.zy.asrs.entity.Job; |
| | |
| | | import com.zy.asrs.service.JobService; |
| | | import com.zy.asrs.service.WmsMainService; |
| | | import com.zy.asrs.service.WrkLastnoService; |
| | | import com.zy.core.cache.MessageQueue; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.ConveyorStateType; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.enums.TaskType; |
| | | import com.zy.core.model.DevpSlave; |
| | | import com.zy.core.model.Task; |
| | | import com.zy.core.model.protocol.StaProtocol; |
| | | import com.zy.core.operation.OperationHandler; |
| | | import com.zy.core.properties.CtuOperationConfig; |
| | |
| | | if (staProtocol.getWorkNo() >= 9991 && staProtocol.getWorkNo() <= 9992) { |
| | | Job job = jobService.getJobByBarcode(barcode); |
| | | // ç³è¯·å
¥åº |
| | | if (job == null || (job != null && job.getJobSts() == 8)) { |
| | | if (job == null || (job != null && job.getJobSts() == ConveyorStateType.CLEARSIGNAL.getStatus())) { |
| | | ApplyInRepsonseDto locOfWms = wmsMainService.getLocOfWms(applyIn(barcode, inSta.getStaNo() + "", staProtocol)); |
| | | if (locOfWms != null) { |
| | | job = new Job(); |
| | | job.setLoc(locOfWms.getLocNo()); |
| | | job.setTaskNo(locOfWms.getTaskNo()); |
| | | job.setBatchNo(locOfWms.getBatchNo()); |
| | | job.setBarcode(barcode); |
| | | job.setStaNo(inSta.getTargetSta() + ""); |
| | | job.setJobNo(wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type)); |
| | | job.setJobSts(ConveyorStateType.APPLYLOC.getStatus()); |
| | | job.setWmsTime(new Date()); |
| | | jobService.insert(job); |
| | | staProtocol.setWorkNo(job.getJobNo()); |
| | | staProtocol.setStaNo(inSta.getTargetSta()); |
| | | if (MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(TaskType.WRITE, staProtocol))) { |
| | | if (!jobService.insert(initJob(locOfWms, barcode, inSta.getTargetSta() + ""))) { |
| | | throw new CoolException("æ´æ°è¾é线任å¡å¤±è´¥," + " - " + staProtocol.getWorkNo()); |
| | | } |
| | | log.info("å
¥åºåè¿ï¼{},{}", staProtocol.getWorkNo(), inSta.getTargetSta()); |
| | | } |
| | | } else { |
| | | log.info("WMSæªè¿ååºä½ä¿¡æ¯ï¼æ¡ç ï¼{},ç«ç¹ï¼{}", barcode, inSta.getStaNo()); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | private Job initJob(ApplyInRepsonseDto locOfWms, String barcode, String staNo) { |
| | | Job job = new Job(); |
| | | job.setLoc(locOfWms.getLocNo()); |
| | | job.setTaskNo(locOfWms.getTaskNo()); |
| | | job.setBatchNo(locOfWms.getBatchNo()); |
| | | job.setBarcode(barcode); |
| | | job.setStaNo(staNo); |
| | | job.setJobNo(getWorkNo()); |
| | | job.setJobSts(ConveyorStateType.INBOUND.getStatus()); |
| | | job.setWmsTime(new Date()); |
| | | return job; |
| | | } |
| | | |
| | | private Integer getWorkNo() { |
| | | return wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type); |
| | | } |
| | | |
| | | private ApplyInDto applyIn(String barcode, String staNo, StaProtocol staProtocol) { |
| | | ApplyInDto applyInDto = new ApplyInDto(); |
| | | applyInDto.setStaNo(staNo); |
| | |
| | | if (!staProtocol.isLoading()) { |
| | | return; |
| | | } |
| | | StaProtocol staProtocol5 = devpThread.getStation().get(1005); |
| | | if (staProtocol5.isLoading()){ |
| | | log.info("1005æç©ï¼çæ ç©ä¹åæå
¥åº"); |
| | | return; |
| | | } |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing()) { |
| | | Job jobByWorkNo = jobService.getJobByJobNo(staProtocol.getWorkNo()); |
| | | if (jobByWorkNo != null && jobByWorkNo.getJobSts() == 1) { |
| | | staProtocol.setStaNo(1006); |
| | | if (jobByWorkNo != null && jobByWorkNo.getJobSts() == ConveyorStateType.OUTBOUND.getStatus()) { |
| | | staProtocol.setWorkNo(9992); |
| | | staProtocol.setStaNo(1005); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(TaskType.WRITE, staProtocol)); |
| | | if (result) { |
| | | jobByWorkNo.setJobSts(3); |
| | |
| | | datasource: |
| | | driver-class-name: com.mysql.jdbc.Driver |
| | | #url: jdbc:mysql://127.0.0.1:3306/rcs_ctu_stable?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai |
| | | url: jdbc:mysql://127.0.0.1:3306/cv?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai |
| | | url: jdbc:mysql://192.168.133.173:3306/cv?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai |
| | | username: root |
| | | password: xltys1995 |
| | | mvc: |
| | | static-path-pattern: /** |
| | | |
| | | logging: |
| | | file: |
| | | path: stock/out/cv/logs |
| | | |
| | | wms: |
| | | url: 10.10.10.220:8081 |
| | |
| | | mark: 10 |
| | | max-retries: 3 |
| | | retry-delay: 800 |
| | | # - type: FAKEUSER |
| | | # mark: 20 |
| | | # max-retries: 2 |
| | | # retry-delay: 800 |
| | | - type: FAKEUSER |
| | | mark: 20 |
| | | max-retries: 2 |
| | | retry-delay: 800 |
| | | - type: APPLYLOC |
| | | mark: 30 |
| | | max-retries: 2 |
| | | retry-delay: 2000 |
| | | - type: INBOUND |
| | | mark: 40 |
| | | max-retries: 3 |
| | | retry-delay: 500 |
| | | # - type: INBOUND |
| | | # mark: 40 |
| | | # max-retries: 3 |
| | | # retry-delay: 500 |
| | | - type: CLEARSIGNAL |
| | | mark: 50 |
| | | max-retries: 2 |
| | |
| | | # global-config: |
| | | # field-strategy: 0 |
| | | |
| | | logging: |
| | | file: |
| | | path: /stock/logs |
| | | |
| | | |
| | | super: |
| | | pwd: xltys1995 |
| | |
| | | </resultMap> |
| | | |
| | | <select id="getDevpByDevNo" resultMap="BaseResultMap"> |
| | | select * from cv_devp where dev_no = #{devNo} |
| | | select * |
| | | from cv_devp |
| | | where dev_no = #{devNo} |
| | | </select> |
| | | |
| | | |
| | | |
| | | </mapper> |
| | |
| | | where job_sts = #{jobSts} |
| | | </select> |
| | | |
| | | <select id="listJobByJobStsAndDay" resultMap="BaseResultMap"> |
| | | select * |
| | | from cv_job |
| | | where job_sts = #{jobSts} |
| | | and DATEDIFF(NOW(), #{day}) > 1 |
| | | </select> |
| | | |
| | | |
| | | <select id="listJobToLog" resultMap="BaseResultMap"> |
| | | select * |
| | | from cv_job |
| | | where job_sts = #{jobSts} and DATEDIFF(NOW(), #{day}) > 1 |
| | | where job_sts = #{jobSts} |
| | | and DATEDIFF(NOW(), #{day}) > 1 |
| | | </select> |
| | | </mapper> |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /* è¡¨æ ¼å®¹å¨ */ |
| | | .table-container { |
| | | flex: 1; |
| | |
| | | border: 1px solid rgba(59, 130, 246, 0.3); |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | |
| | | /* è¡¨æ ¼å®¹å¨æ»å¨æ¡æ ·å¼ */ |
| | | .table-container::-webkit-scrollbar { |
| | | width: 8px; |
| | | } |
| | | |
| | | |
| | | .table-container::-webkit-scrollbar-track { |
| | | background: rgba(30, 41, 59, 0.3); |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | |
| | | .table-container::-webkit-scrollbar-thumb { |
| | | background: #3b82f6; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | |
| | | .table-container::-webkit-scrollbar-thumb:hover { |
| | | background: #60a5fa; |
| | | } |
| | |
| | | background: transparent; |
| | | color: #e2e8f0; |
| | | } |
| | | |
| | | |
| | | /* è®¾ç½®è¡¨æ ¼å宽ï¼ç¡®ä¿éåºå®¹å¨ */ |
| | | .modern-table th, |
| | | .modern-table td { |
| | |
| | | top: 0; |
| | | z-index: 10; |
| | | } |
| | | |
| | | |
| | | /* ç¡®ä¿è¡¨æ ¼å®¹å¨ææå¤§é«åº¦ï¼ä»¥ä¾¿æ»å¨ */ |
| | | .table-container { |
| | | max-height: calc(100vh - 200px); |
| | |
| | | .site-card.status-normal { |
| | | border-left: 4px solid #4ade80; |
| | | } |
| | | |
| | | |
| | | .site-card.status-warning { |
| | | border-left: 4px solid #fbbf24; |
| | | } |
| | | |
| | | |
| | | .site-card.status-error { |
| | | border-left: 4px solid #f87171; |
| | | } |
| | | |
| | | |
| | | .site-card.status-standby { |
| | | border-left: 4px solid #94a3b8; |
| | | } |
| | |
| | | } |
| | | |
| | | @keyframes pulse { |
| | | 0% { transform: scale(1); } |
| | | 50% { transform: scale(1.2); } |
| | | 100% { transform: scale(1); } |
| | | 0% { |
| | | transform: scale(1); |
| | | } |
| | | 50% { |
| | | transform: scale(1.2); |
| | | } |
| | | 100% { |
| | | transform: scale(1); |
| | | } |
| | | } |
| | | |
| | | /* IOæ¨¡å¼æé®æ ·å¼ */ |
| | |
| | | flex-direction: column; |
| | | gap: 20px; |
| | | } |
| | | |
| | | |
| | | .dashboard-stats { |
| | | width: 100%; |
| | | justify-content: space-around; |
| | | } |
| | | |
| | | |
| | | .sites-grid { |
| | | grid-template-columns: 1fr; |
| | | } |
| | |
| | | <main> |
| | | <!-- ç«ç¹ç¶ææ°æ®çæ§ç --> |
| | | <section id="site-monitor" class="main-board"> |
| | | <!-- <div class="dashboard-header">--> |
| | | <!-- <h3 class="dashboard-title">ç«ç¹å®æ¶çæ§</h3>--> |
| | | <!-- </div>--> |
| | | |
| | | <!-- <div class="dashboard-header">--> |
| | | <!-- <h3 class="dashboard-title">ç«ç¹å®æ¶çæ§</h3>--> |
| | | <!-- </div>--> |
| | | |
| | | <!-- è¡¨æ ¼å®¹å¨ --> |
| | | <div class="table-container"> |
| | | <table id="site-table" class="modern-table"> |
| | | <thead> |
| | | <tr> |
| | | <th>ç«å·</th> |
| | | <th>å·¥ä½å·</th> |
| | | <th>èªå¨</th> |
| | | <th>æç©</th> |
| | | <th>å¯å
¥</th> |
| | | <th>å¯åº</th> |
| | | <th>å
¥åºæ è®°</th> |
| | | <th>空æ¿ä¿¡å·</th> |
| | | <th>ç®æ ç«</th> |
| | | <th>é«ä½åºä½</th> |
| | | </tr> |
| | | <tr> |
| | | <th>ç«å·</th> |
| | | <th>å·¥ä½å·</th> |
| | | <th>èªå¨</th> |
| | | <th>æç©</th> |
| | | <th>å¯å
¥</th> |
| | | <th>å¯åº</th> |
| | | <th>å
¥åºæ è®°</th> |
| | | <th>空æ¿ä¿¡å·</th> |
| | | <th>ç®æ ç«</th> |
| | | <th>é«ä½åºä½</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | <!-- è¡¨æ ¼å
容å°å¨è¿éå¨æçæ --> |
| | | <!-- è¡¨æ ¼å
容å°å¨è¿éå¨æçæ --> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | |
| | | <form class="detail-form" id="site-form"> |
| | | <div class="form-group"> |
| | | <label class="form-label" for="siteId">ç«å·:</label> |
| | | <input id="siteId" name="siteId" class="form-input" type="number" |
| | | <input id="siteId" name="siteId" class="form-input" type="number" |
| | | autocomplete="off" disabled> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label class="form-label" for="workNo">å·¥ä½å·:</label> |
| | | <input id="workNo" name="workNo" type="number" class="form-input" |
| | | <input id="workNo" name="workNo" type="number" class="form-input" |
| | | autocomplete="off"> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label class="form-label" for="staNo">ç®æ ç«:</label> |
| | | <input id="staNo" name="staNo" type="number" class="form-input" |
| | | <input id="staNo" name="staNo" type="number" class="form-input" |
| | | autocomplete="off"> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label class="form-label" for="pakMk">å
¥åºæ è®°:</label> |
| | | <input id="pakMk" name="pakMk" type="text" class="form-input" |
| | | <input id="pakMk" name="pakMk" type="text" class="form-input" |
| | | autocomplete="off"> |
| | | </div> |
| | | </form> |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | // è·åç«ç¹ä¿¡æ¯è¡¨ |
| | | function getSite() { |
| | | const tableEl = $('#site-table tbody'); |
| | | |
| | | |
| | | ajaxRequest({ |
| | | url: `${baseUrl}/site/table/site`, |
| | | method: 'POST', |
| | |
| | | function renderTable(sites) { |
| | | const tbody = $('#site-table tbody'); |
| | | tbody.empty(); |
| | | |
| | | |
| | | sites.forEach(site => { |
| | | const row = createTableRow(site); |
| | | tbody.append(row); |
| | |
| | | const isActive = site.autoing === 'Y'; |
| | | const hasLoad = site.loading === 'Y'; |
| | | const hasWorkNo = !!site.workNo && site.workNo !== ''; |
| | | |
| | | |
| | | // æ ¹æ®ç¶æç¡®å®è¡æ ·å¼ç±» |
| | | let rowClass = ''; |
| | | if (isActive) { |
| | |
| | | } else { |
| | | rowClass = 'row-auto-gray'; // ä¸èªå¨ä¸ºç°è² |
| | | } |
| | | |
| | | |
| | | // ç¹æ®ç¶æè¦ç |
| | | if (hasLoad && !hasWorkNo) { |
| | | rowClass = 'row-yellow'; // æç©æ å·¥ä½å·ä¸ºé»è² |
| | | } else if (!hasLoad && hasWorkNo) { |
| | | rowClass = 'row-red'; // æ ç©æå·¥ä½å·ä¸ºçº¢è² |
| | | } |
| | | |
| | | |
| | | return ` |
| | | <tr data-site-id="${site.devNo}" class="${rowClass}"> |
| | | <td>${site.devNo}</td> |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | // è·åè¾éè®¾å¤æ¥å¿è¾åº |
| | | function getSiteOutput() { |
| | | ajaxRequest({ |
| | |
| | | // æ¾ç¤ºæ¨¡ææ¡ |
| | | const modal = $('#modal-overlay'); |
| | | modal.addClass('active'); |
| | | |
| | | |
| | | // 设置æ é¢ |
| | | $('.modal-title').text(`ç«ç¹ #${siteId} ç¼è¾`); |
| | | |
| | | |
| | | // å è½½æ°æ® |
| | | http.get(`${baseUrl}/site/detl/${siteId}`, null, (res) => { |
| | | if (res.data) { |
| | |
| | | } |
| | | |
| | | // ç¹å»é®ç½©å±å
³é |
| | | $(document).on('click', '#modal-overlay', function(e) { |
| | | $(document).on('click', '#modal-overlay', function (e) { |
| | | if (e.target.id === 'modal-overlay') { |
| | | closeModal(); |
| | | } |
| | |
| | | const toast = $('#success-toast'); |
| | | $('.toast-message', toast).text(message); |
| | | toast.addClass('show'); |
| | | |
| | | |
| | | // 3ç§åèªå¨éè |
| | | setTimeout(() => { |
| | | toast.removeClass('show'); |
| | |
| | | name: rcs-hex |
| | | # RabbitMQé
ç½® |
| | | rabbitmq: |
| | | host: localhost |
| | | host: 192.168.133.173 |
| | | port: 5672 |
| | | username: root |
| | | password: xltys1995 |
| | |
| | | # --add-opens java.base/java.nio=ALL-UNNAMED |
| | | influxdb3: |
| | | enabled: true |
| | | url: http://127.0.0.1:8181 |
| | | token: apiv3_Jx1SvmBMV_kikGhc4eZJQbeGmNYN7KX1GdpoR9MClkKzMxSJ0MPKM_O2Xt3o1hVyRikMmlxZ_h9zfy6ybC5Idg |
| | | database: rcs |
| | | url: http://192.168.133.173:8181 |
| | | #token: apiv3_Jx1SvmBMV_kikGhc4eZJQbeGmNYN7KX1GdpoR9MClkKzMxSJ0MPKM_O2Xt3o1hVyRikMmlxZ_h9zfy6ybC5Idg |
| | | database: rcs |
| | | token: apiv3_116RKycNhxbf62Nys4zthC05aRD-aidzhEpEpLtsFuedhJTaCtVklNrzHs9LHxBWMuzDclBHVgToGoQuWGiIIA |