From 3a38edcb5e9c15a9591e1e913d3583f3d437caf1 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期三, 16 十月 2024 10:05:29 +0800
Subject: [PATCH] Merge remote-tracking branch '公司服务器/master'
---
UI-Project/src/views/Returns/returns.vue | 12
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml | 16
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java | 2
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml | 17
UI-Project/src/views/Returns/return.vue | 49
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java | 17
hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java | 14
hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml | 2
UI-Project/src/views/LoginView.vue | 3
hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/configuration/MiloAutoConfiguration.java | 8
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatLayout.java | 70
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatDetailServiceImpl.java | 25
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java | 9
hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/pool/MiloConnectFactory.java | 10
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java | 33
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java | 22
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 67
hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml | 32
UI-Project/package.json | 2
hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml | 5
UI-Project/src/lang/py.js | 300 ++++
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatDetail.java | 116 +
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java | 4
hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java | 6
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java | 15
README.md | 1
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatLayoutMapper.java | 19
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java | 4
UI-Project/src/views/Returns/upreturns.vue | 1115 +++++++++++++++
UI-Project/src/router/index.js | 26
UI-Project/src/lang/index.js | 2
hangzhoumesParent/moduleService/pom.xml | 5
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql | 43
UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue | 16
UI-Project/src/layout/MainErpView.vue | 139 -
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java | 6
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatLayoutService.java | 17
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java | 2
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java | 14
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue | 32
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java | 11
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatDetailMapper.java | 19
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatDetailService.java | 17
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java | 100 +
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java | 235 +++
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java | 17
hangzhoumesParent/common/servicebase/pom.xml | 7
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java | 25
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java | 4
hangzhoumesParent/common/pom.xml | 1
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java | 233 ++
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java | 9
UI-Project/src/lang/en.js | 858 +++++++---
UI-Project/src/lang/zh.js | 61
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java | 25
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml | 4
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java | 72
UI-Project/src/views/Slicecage/slicecage.vue | 55
/dev/null | 12
hangzhoumesParent/readMe-OPC.md | 6
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java | 4
UI-Project/package-lock.json | 28
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java | 19
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java | 8
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue | 2
UI-Project/src/views/NewPage.vue | 151 ++
66 files changed, 3,604 insertions(+), 676 deletions(-)
diff --git a/README.md b/README.md
index f71d789..6990012 100644
--- a/README.md
+++ b/README.md
@@ -37,3 +37,4 @@
4. [GVP](https://gitee.com/gvp) 鍏ㄧО鏄� Gitee 鏈�鏈変环鍊煎紑婧愰」鐩紝鏄患鍚堣瘎瀹氬嚭鐨勪紭绉�寮�婧愰」鐩�
5. Gitee 瀹樻柟鎻愪緵鐨勪娇鐢ㄦ墜鍐� [https://gitee.com/help](https://gitee.com/help)
6. Gitee 灏侀潰浜虹墿鏄竴妗g敤鏉ュ睍绀� Gitee 浼氬憳椋庨噰鐨勬爮鐩� [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
+
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index 1762ec0..352bc93 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -26,7 +26,7 @@
"vue-echarts": "^6.7.3",
"vue-i18n": "^9.10.1",
"vue-print-nb": "^1.7.5",
- "vue-router": "^4.2.4",
+ "vue-router": "^4.0.13",
"vue3-print-nb": "^0.1.4",
"vxe-table": "^4.5.15",
"xe-utils": "^3.5.14",
@@ -2036,11 +2036,11 @@
}
},
"node_modules/vue-router": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
- "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "version": "4.0.13",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.13.tgz",
+ "integrity": "sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==",
"dependencies": {
- "@vue/devtools-api": "^6.5.0"
+ "@vue/devtools-api": "^6.0.0"
},
"funding": {
"url": "https://github.com/sponsors/posva"
@@ -3154,7 +3154,7 @@
"vue-echarts": "^6.7.3",
"vue-i18n": "^9.10.1",
"vue-print-nb": "^1.7.5",
- "vue-router": "^4.2.4",
+ "vue-router": "4.0.13",
"vue3-print-nb": "^0.1.4",
"vxe-table": "^4.5.15",
"xe-utils": "^3.5.14",
@@ -4536,11 +4536,11 @@
}
},
"vue-router": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
- "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "version": "4.0.13",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.13.tgz",
+ "integrity": "sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==",
"requires": {
- "@vue/devtools-api": "^6.5.0"
+ "@vue/devtools-api": "^6.0.0"
}
},
"vue3-print-nb": {
@@ -5093,11 +5093,11 @@
}
},
"vue-router": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
- "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "version": "4.0.13",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.13.tgz",
+ "integrity": "sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==",
"requires": {
- "@vue/devtools-api": "^6.5.0"
+ "@vue/devtools-api": "^6.0.0"
}
},
"vue3-print-nb": {
diff --git a/UI-Project/package.json b/UI-Project/package.json
index c08443f..67c31f5 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -26,7 +26,7 @@
"vue-echarts": "^6.7.3",
"vue-i18n": "^9.10.1",
"vue-print-nb": "^1.7.5",
- "vue-router": "^4.2.4",
+ "vue-router": "^4.0.13",
"vue3-print-nb": "^0.1.4",
"vxe-table": "^4.5.15",
"xe-utils": "^3.5.14",
diff --git a/UI-Project/src/lang/en.js b/UI-Project/src/lang/en.js
index 869758b..07b45d6 100644
--- a/UI-Project/src/lang/en.js
+++ b/UI-Project/src/lang/en.js
@@ -1,300 +1,586 @@
export default {
- "northglassMESsystem": '小懈褋褌械屑邪 "NorthGlass MES"' ,
- login:{
- userErr:'袙胁械写懈褌械 薪芯屑械褉 褋褔械褌邪.',
- pwErr:'袙胁械写懈褌械 锌邪褉芯谢褜.',
- user:'袗泻泻邪褍薪褌',
- password:'袣芯写',
- login:'袟邪谢芯谐懈薪',
- loginSuccessful:'袙褏芯写 胁 褋懈褋褌械屑褍 胁褘锌芯谢薪械薪 褍褋锌械褕薪芯锛�',
- register:'袟邪褉械谐懈褋褌褉懈褉芯胁邪',
- namea:'袠屑褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
- len:'袛谢懈薪邪 薪械 写芯谢卸薪邪 锌褉械胁褘褕邪褌褜 16',
- passnull:'袩邪褉芯谢褜 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
- leng:'袛谢懈薪邪 锌邪褉芯谢褟 薪械 写芯谢卸薪邪 斜褘褌褜 屑械薪褜褕械 6 懈谢懈 斜芯谢褜褕械 16.',
- spwn:'袩邪褉芯谢褜 锌芯写褌胁械褉卸写械薪懈褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
- depass:'袛胁邪 褉邪蟹薪褘褏 锌邪褉芯谢褟.',
- },
- register:{
- registerSuccessful:'袪械谐懈褋褌褉邪褑懈褟 褍褋锌械褕薪芯',
- newuserregister:'袧芯胁褘泄 褉械械褋褌褉 锌芯谢褜蟹芯胁邪褌械谢械泄',
- name:'袠屑褟锛�',
- inputname:'袙胁械写懈褌械 懈屑褟',
- password:'袣芯写:',
- pwErr:'袙胁械写懈褌械 锌邪褉芯谢褜.',
- passwordation:'袩芯写褌胁械褉写懈褌械 锌邪褉芯谢褜:',
- pwErration:'袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉褌懈褌械 锌邪褉芯谢褜',
- registration:'袩芯写褌胁械褉卸写械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈',
- false:'袨褌屑械薪邪',
- },
- main:{
- connectErr:'袧械芯斜褘褔薪芯械 锌芯写泻谢褞褔械薪懈械 泻 褋械褉胁械褉褍, 锌芯锌褉芯斜褍泄褌械 锌芯蟹卸械',
- titleFirst:"袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜 ",
- titleLast:' 胁 褋懈褋褌械屑褍 NorthGlass MES锛�',
- quit:"袙褘褏芯写",
- },
- basicData:{
- deletemessage:'校写邪谢懈褌褜 褝褌褍 懈薪褎芯褉屑邪褑懈褞 懈谢懈 薪械褌?',
- laserprinting:'袦邪褕懈薪邪 谢邪蟹械褉薪芯泄 屑邪褉泻懈褉芯胁泻懈 谐芯褌芯胁邪锛�',
- cuttingmachine:'袦邪褕懈薪邪 写谢褟 褉械蟹泻懈 谐芯褌芯胁邪锛�',
- machine:'小芯褋褌芯褟薪懈械 褋褌邪薪芯泻 蟹邪谐褉褍蟹泻懈 胁 褉械卸懈屑械 芯薪谢邪泄薪锛�',
- machineaa:'袪褍褔薪芯械 褋芯褋褌芯褟薪懈械 褋褌邪薪芯泻 蟹邪谐褉褍蟹泻懈:',
- selectproject:"袙褘斜械褉懈褌械 锌褉芯械泻褌",
- startloading:'袧邪褔邪谢芯 蟹邪谐褉褍蟹泻懈',
- stop:'袩邪褍蟹邪',
- yes:'锌芯写褌胁械褉写',
- change:'锌械褉械泻谢褞褔邪',
- projectnumber:'袧芯屑械褉 锌褉芯械泻褌邪',
- glasswidth:'楔懈褉懈薪邪 褋褌械泻谢邪',
- glassheight:'袙褘褋芯褌邪 褋褌械泻谢邪',
- coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
- coatingtypesa:'孝懈锌褘 锌芯泻褉褘褌懈泄锛�',
- quantity:'袣芯谢懈褔械褋褌胁芯',
- quantitya:'袣芯谢懈褔械褋褌胁芯锛�',
- thickness:'孝芯谢褖懈薪邪',
- thicknessa:'孝芯谢褖懈薪邪锛�',
- startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
- pass:'效械褉械蟹',
- waiting:'袞写械屑.',
- up:'袟邪谐褉褍蟹泻邪',
- finish:'袟邪胁械褉褕械薪芯',
- project:'懈薪卸械薪械褉懈褟',
- plselectproject:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 锌褉芯械泻褌.',
- confirm:'锌芯写褌胁械褉写',
- cancel:'袨褌屑械薪邪',
- startfilm:'袧邪褔懈薪邪褌褜 懈谢懈 薪械褌锛�',
- whetherpause:'袩邪褍蟹邪 懈谢懈 薪械褌锛�',
- station:'袪邪斜芯褔械械 屑械褋褌芯',
- width:'楔懈褉懈薪邪',
- widtha:'楔懈褉懈薪邪锛�',
- height:'袙褘褋芯褌邪',
- heighta:'袙褘褋芯褌邪锛�',
- operate:'袨锌械褉邪褑懈褟',
- add:'袛芯斜邪胁谢褟',
- delete:'校写邪谢',
- addglass:'袛芯斜邪胁懈褌褜 褋褌械泻谢芯',
- selectwidth:'袙褘斜懈褉懈褌械 褕懈褉懈薪褍',
- selectheight:'袙褘斜懈褉懈褌械 胁褘褋芯褌褍',
- selectcoatingtypes:'袙褘斜械褉懈褌械 褌懈锌褘 锌芯泻褉褘褌懈泄',
- selectthickness:'袙褘斜械褉懈褌械 褌芯谢褖懈薪褍',
- selectquantity:'袙胁械写懈褌械 泻芯谢褜褔械褋褌胁芯.',
- pause:'袙褌芯褉邪褟 懈 褔械褌胁械褉褌邪褟 褋褌褉芯泻懈 写芯谢卸薪褘 斜褘褌褜 胁褘褕械 2700 写谢褟 褋芯褏褉邪薪械薪懈褟!',
- pausea:'袩芯卸邪谢褍泄褋褌邪, 褍斜械写懈褌械褋褜, 褔褌芯 屑邪褉泻懈褉芯胁芯褔薪邪褟 懈 褉械卸褍褖邪褟 屑邪褕懈薪褘 谐芯褌芯胁褘!',
- infonull:'袧芯屑械褉 锌褉芯械泻褌邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑!',
- updatanull:'袩褉芯械泻褌 薪械 褋芯褏褉邪薪懈谢懈褋褜 薪邪 谢懈褋褌械 蟹邪谐褉褍蟹泻懈!',
- glassnull:'袨褕懈斜泻邪 锌褉懈 芯斜薪芯胁谢械薪懈懈 褋褌械泻谢邪',
- },
- sorter:{
- gridnumber:'携褔械械泻 褋械褌泻谢邪',
- glassnumber:'袧芯屑械褉 褋褌邪泻谢邪',
- width:'楔懈褉懈薪邪',
- height:'袙褘褋芯褌邪',
- startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
- disable:'袨褌泻谢褞褔',
- start:'袧邪褔邪谢芯',
- deficiencieste:'袧械写芯褋褌邪褌泻懈 胁 芯褌褔械褌薪芯褋褌懈',
- operate:'袨锌械褉邪褑懈褟',
- prompt:'袩芯写褋泻邪蟹泻',
- information:'小谢械写褍械褌 谢懈 褋芯芯斜褖邪褌褜 薪械写芯褋褌邪褞褖褍褞 懈薪褎芯褉屑邪褑懈褞锛�',
- yes:'袛邪',
- cancel:'袨褌屑械薪邪',
- },
- order:{
- dilapidation:'袩芯胁褉械卸写械薪懈械',
- Takeaway:'袙蟹褟褌褜 胁褉褍褔薪褍褞',
- },
-
- searchOrder:{
- cageinformation:'袠薪褎芯褉屑邪褑懈褟 斜褍褎械褉邪',
- productionqueue:'袩褉芯懈蟹胁芯写褋褌胁械薪薪邪褟 芯褔械褉械写褜',
- outputglassID:'袙褘褏芯写薪芯械 褋褌械泻谢芯 ID',
- startposition:'袟邪薪褟褌褜 锌芯蟹懈褑懈懈',
- targetlocation:'袩芯蟹懈褑懈褟 褑械谢懈',
- trips:'鈩� 锌芯械蟹写邪',
- number:'小械褉懈泄薪 薪芯屑械褉',
- taskstatus:'小芯褋褌芯褟薪懈械 蟹邪写邪褔懈',
- filmenter:'袨卸懈写邪薪懈械 褋褌械泻谢褟薪薪芯泄 胁褏芯写',
- infilm:'袙 薪邪褋褌芯褟褖械械 胁褉械屑褟',
- endtask:'袟邪写邪褔邪 薪邪 泻芯薪械褑',
- completetask:'袙褘锌芯谢薪械薪懈械 蟹邪写邪薪懈褟',
- intoglassid:'袙褏芯写薪芯泄 褋褌械泻谢褟薪薪褘泄 ID',
- line:'袥懈薪懈褟',
- Usage:'小泻芯褉芯褋褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈褟',
- free:'袘械褋锌谢邪褌薪芯 (褟褔械械泻)',
- addcage:'袛芯斜邪胁懈褌褜 懈薪褎芯褉屑邪褑懈褞 芯 斜褍褎械褉械',
- glassIDa:'小褌械泻谢褟薪薪褘泄 ID锛�',
- glassID:'小褌械泻谢褟薪薪褘泄 ID',
- inglassID:'袙胁械写懈褌械 褋褌械泻谢芯 ID',
- pieceingrid:'袩芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 屑邪谢械薪褜泻懈褏 褋褌械泻谢褟薪薪褘褏 锌谢邪褋褌懈薪 胁 泻谢械褌泻械',
- pieceingrida:'袩芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 屑邪谢械薪褜泻懈褏 褋褌械泻谢褟薪薪褘褏 锌谢邪褋褌懈薪 胁 泻谢械褌泻械锛�',
- inpieceingrid:'袙胁械写懈褌械 锌芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 褋褌械泻谢褟薪薪褘褏 谢懈褋褌芯胁 胁 褟褔械械泻械',
- cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
- cardnumbera:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪锛�',
- incardnumber:'袙胁械写懈褌械 薪芯屑械褉 锌褉芯褑械褋褋邪 .',
- typeglass:'孝懈锌 褋褌械泻谢邪',
- typeglassa:'孝懈锌 褋褌械泻谢邪锛�',
- intypeglass:'袙胁械写懈褌械 褌懈锌 褋褌械泻谢邪',
- coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
- width:'楔懈褉懈薪邪',
- widtha:'楔懈褉懈薪邪锛�',
- inwidth:'袙胁械写懈褌械 褕懈褉懈薪褍',
- height:'袙褘褋芯褌邪',
- heighta:'袙褘褋芯褌邪锛�',
- inheight:'袙胁械写懈褌械 胁褘褋芯褌褍',
- thickness:'孝芯谢褖懈薪邪',
- thicknessa:'孝芯谢褖懈薪邪锛�',
- inthickness:'袙胁械写懈褌械 褌芯谢褖懈薪褍.',
- layoutID:'效械褉褌械卸 ID 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
- layoutIDa:'效械褉褌械卸 ID 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈锛�',
- inlayoutID:'袙胁械写懈褌械 褔械褉褌械卸 蟹邪泻邪谢泻懈 ID',
- picturesequence:'效械褉褌械卸 褋械褉懈泄薪 薪芯屑械褉 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
- picturesequencea:'效械褉褌械卸 褋械褉懈泄薪 薪芯屑械褉 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈锛�',
- inpicturesequence:'袙胁械写懈褌械 锌芯褉褟写芯泻 褔械褉褌械卸懈 蟹邪泻邪谢泻懈 褋褌械泻谢邪.',
- startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
- startstatusa:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈锛�',
- instartstatus:'袙胁械写懈褌械 褋芯褋褌芯褟薪懈械 邪泻褌懈胁邪褑懈懈',
- glassgaps:'小褌械泻谢褟薪薪褘泄 蟹邪蟹芯褉',
- glassgapsa:'小褌械泻谢褟薪薪褘泄 蟹邪蟹芯褉锛�',
- inglassgaps:'袙胁械写懈褌械 褋褌械泻谢芯 蟹邪蟹芯褉',
- sure:'锌芯写褌胁械褉写',
- cancel:'袨褌屑械薪邪',
- operate:'袨锌械褉邪褑懈褟',
- breakage:'袩芯胁褉械卸写械薪懈械',
- delete:'校写邪谢',
- outfilm:'袙褘锌褍褋泻 褋褌械泻谢邪',
- cagetableID:'ID 斜褍褎械褉薪芯泄 褌邪斜谢懈褑褘',
- cagenumber:'袘褍褎械褉 薪芯屑械褉邪',
- gridnumber:'携褔械械泻 褋械褌泻谢邪',
- enable:'袧邪褔邪谢芯',
- disable:'袨褌泻谢褞褔',
- remainingwidth:'袨褋褌邪褌芯褔薪邪褟 褕懈褉懈薪邪',
- add:'袛芯斜邪胁谢褟',
- sheetID:'袟邪泻邪谢泻邪 屑邪谢械薪褜泻懈泄 褋褌械泻谢褟薪薪褘泄 ID 褌邪斜谢懈褑褘 懈薪褎芯褉屑邪褑懈懈',
- processcards:'袣邪褉褌芯褔泻邪 锌褉芯褑械褋褋邪',
- processcardtype:'孝懈锌 褋褌械泻谢邪 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
- acceptshorizontal:'校屑械褉械薪薪芯械 锌褉懈薪褟褌懈械 谐芯褉懈蟹芯薪褌邪谢懈',
- xcoordinates:'X-泻芯芯褉写懈薪邪褌褘',
- ycoordinates:'Y-泻芯芯褉写懈薪邪褌褘',
- rotationangle:'校谐芯谢 胁褉邪褖械薪懈褟 (锌褉芯褌懈胁 褔邪褋芯胁芯泄 褋褌褉械谢泻懈)',
- state:'小芯褋褌芯褟薪懈械',
- takeout:'袙蟹褟褌褜',
- deletemessage:'校写邪谢懈褌褜 褝褌褍 懈薪褎芯褉屑邪褑懈褞 懈谢懈 薪械褌?',
- prompt:'袩芯写褋泻邪蟹泻',
- yes:'袛邪',
- accept:'袩褉懈薪褟褌褜',
- noaccept:'袧械 锌褉懈薪懈屑邪褌褜',
- filmcomplete:'小褌械泻谢芯 谐芯褌芯胁芯',
- waiting:'袞写械屑.',
+ "northglassMESsystem": "NorthGlass MES System",
+ login:{
+ userErr:'Please enter account number',
+ pwErr:'Please input a password',
+ user:'Account number',
+ password:'Password',
+ login:'Log on',
+ loginSuccessful:'Log on was successful锛�',
+ register:'Register',
+ namea:'Name cannot be empty',
+ len:'The length cannot exceed 16',
+ passnull:'Password cannot be empty',
+ leng:'The password length cannot be less than 6 or more than 16',
+ spwn:'Confirm password cannot be empty',
+ depass:'The two passwords are not the same',
+ },
+ register:{
+ registerSuccessful:'login was successful',
+ newuserregister:'New user register',
+ name:'Full name锛�',
+ inputname:'Please enter your name',
+ password:'Password:',
+ pwErr:'Please input a password',
+ passwordation:'Confirm password:',
+ pwErration:'Please confirm password',
+ registration:'Registration Confirm',
+ false:'Cancel',
+ },
+ main:{
+ connectErr:'The server connection is abnormal. Please try again later',
+ titleFirst:"Welcome ",
+ titleLast:' to use NorthGlass MES system锛�',
+ quit:"Exit",
+ },
+ basicData:{
+ laserprinting:'Laser printing machine ready status锛�',
+ cuttingmachine:'Cutting machine ready status锛�',
+ machine:'Online status of the loading table锛�',
+ machineaa:'Manual state of the loading table锛�',
+ selectproject:"Select project",
+ startloading:'Start loading',
+ stop:'Pause',
+ yes:'Confirm',
+ change:'Switch',
+ projectnumber:'Project number',
+ glasswidth:'Glass width',
+ glassheight:'Glass height',
+ coatingtypes:'Coating types',
+ coatingtypesa:'Coating types锛�',
+ quantity:'Quantity',
+ quantitya:'Quantity锛�',
+ thickness:'Thickness',
+ thicknessa:'Thickness锛�',
+ startstatus:'Start status',
+ pass:'Pass',
+ waiting:'Waiting',
+ up:'Loading',
+ finish:'Completed',
+ project:'Project ',
+ plselectproject:'Please select project',
+ confirm:'Confirm',
+ cancel:'Cancel',
+ startfilm:'Whether start loading锛�',
+ whetherpause:'Whether pause锛�',
+ station:'Station',
+ width:'Width',
+ widtha:'Width锛�',
+ height:'Height',
+ heighta:'Height锛�',
+ operate:'Operate',
+ add:'Increase',
+ delete:'Delete',
+ addglass:'Add glass',
+ selectwidth:'Please select width',
+ selectheight:'Please select high',
+ selectcoatingtypes:'Please select the coating types',
+ selectthickness:'Please select thickness',
+ selectquantity:'Please enter the quantity',
+ pause:'The height of the second and fourth rows must be greater than 2700 in order to save锛�',
+ pausea:'Please confirm the ready status of marking machine and cutting machine锛�',
+ infonull:'Project number cannot be empty锛�',
+ updatanull:'This project has not been saved to the loading list锛�',
+ glassnull:'An error occurred while updating the glass status',
+ deletemessage:'Do you want to delete this message?',
+ layoutSequence:'Serial Number',
+ },
+ sorter:{
+ gridnumber:'Grid number',
+ glassnumber:'Glass number',
+ width:'Width',
+ height:'Height',
+ startstatus:'Start status',
+ disable:'Disabled',
+ start:'Enabled',
+ deficiencieste:'Report deficiencies',
+ updown:'Artificial filming',
+ operate:'Operate',
+ prompt:'Prompt',
+ information:'Is the missing information reported锛�',
+ infor:'Whether to manually download this information锛�',
+ yes:'Yes',
+ cancel:'Cancel',
+ },
+ order:{
+ dilapidation:'Breakage',
+ takeaway:'Manual removal',
+ takeon:'The arrangement is complete',
+ },
+ searchOrder:{
+ cageinformation:'Sorter information',
+ productionqueue:'Production queue',
+ outputglassID:'Output glass ID',
+ startposition:'Start position',
+ targetlocation:'Target Position',
+ trips:'Train number',
+ number:'Serial Number',
+ taskstatus:'Task state',
+ filmenter:'Waiting for input glass',
+ infilm:'In progress',
+ endtask:'End task',
+ completetask:'Complete the task',
+ intoglassid:'Input glass ID',
+ line:'Wire',
+ Usage:'Usage rate',
+ free:'Free(pieces)',
+ addcage:'Add information on sorter',
+ glassIDa:'Glass ID锛�',
+ glassID:'Glass ID',
+ inglassID:'Please enter the glass ID',
+ pieceingrid:'The order of small pieces within the grid',
+ pieceingrida:'The order of small pieces within the grid锛�',
+ inpieceingrid:'Please enter the order of small pieces within the grid',
+ cardnumber:'Process card number',
+ cardnumbera:'Process card number锛�',
+ incardnumber:'Please enter the process card number',
+ typeglass:'Glass type',
+ typeglassa:'Glass type锛�',
+ intypeglass:'Please enter the glass type',
+ width:'Width',
+ widtha:'Width锛�',
+ inwidth:'Please enter width',
+ height:'Height',
+ heighta:'Height锛�',
+ inheight:'Please enter height',
+ coatingtypes:'Coating types',
+ thickness:'Thickness',
+ thicknessa:'Thickness锛�',
+ inthickness:'Please enter the thickness',
+ layoutID:'Drawing ID of loading for tempering furnace',
+ layoutIDa:'Drawing ID of loading for tempering furnace锛�',
+ inlayoutID:'Please enter the drawing ID of loading for tempering furnace',
+ picturesequence:'Drawing sequence of loading for tempering furnace',
+ picturesequencea:'Drawing sequence of loading for tempering furnace锛�',
+ inpicturesequence:'Please enter the drawing sequence of loading for tempering furnace',
+ startstatus:'Start status',
+ startstatusa:'Start status锛�',
+ instartstatus:'Please enter the enabled status',
+ glassgaps:'Glass gap',
+ glassgapsa:'Glass gap锛�',
+ inglassgaps:'Please enter the glass gap',
+ sure:'Confirm',
+ cancel:'Cancel',
+ operate:'Operate',
+ breakage:'Breakage',
+ delete:'Delete',
+ outfilm:'Output glass',
+ cagetableID:'Sorter table ID',
+ cagenumber:'Sorter number',
+ gridnumber:'Grid number',
+ gridnumbera:'Grid number锛�',
+ grid:'Please enter a grid number',
+ enable:'Enabled',
+ disable:'Disabled',
+ remainingwidth:'Remaining width',
+ add:'Add',
+ sheetID:'Tempered small piece information table ID',
+ processcards:'Process card',
+ processcardtype:'Process card glass type',
+ acceptshorizontal:'Does tempering accept horizontal placement',
+ xcoordinates:'x coordinate',
+ ycoordinates:'Y coordinate',
+ rotationangle:'Rotation angle (counterclockwise)',
+ state:'Status',
+ takeout:'Take away',
+ deletemessage:'Do you want to delete this message?',
+ prompt:'Prompt',
+ yes:'Yes',
+ accept:'Accept',
+ noaccept:'Not accept',
+ filmcomplete:'Glass output completed',
+ waiting:'Waiting',
+ broke:'Is this information damaged锛�',
+ brokeb:'Do you need to delete the message锛�',
+ outfil:'Whether the film is released or not锛�',
+ inputid:'Please enter the glass ID',
+ search:'Search',
+ tabid:'Dali film cage details table ID',
+ tid:'Device ID',
+ tida:'Device ID锛�',
+ fin:'Whether or not the task was completed锛�',
+ sureadd:'Confirm the addition',
+ sureadda:'Whether to confirm the addition锛�',
+ zailong:'In a cage',
+ rengongxp:'Artificial filming',
+ up:'Previous',
+ down:'Next',
+ now:'The current page is displayed',
+ tit:'data',
+ temperingqueries:'Tempering queries',
+ specifytempering:'Specify a furnace',
+ specifyengineerid:'Specify the project',
+ projectnumber:'Project number',
+ layoutnumber:'Drawing number of loading for tempering furnace',
+ numberglasses:'Number of glasses',
+ specifytemperinga:'Whether to specify the tempering of this information锛�',
+ temperedswitch:'Tempered switch',
+ dutyinformation:'Duty information',
+ process:'Process',
+ team:'Team',
+ basic:'equipment',
+ makesure:'Confirm the save',
+ // cancel:'鍙栨秷',
+ temperingtotal:'Number of tempering furnaces锛�',
+ glasstotal:'Total number of glasses锛�',
},
workOrder:{
- glassID:'小褌械泻谢褟薪薪褘泄 ID',
- height:'袙褘褋芯褌邪',
- width:'楔懈褉懈薪邪',
- thickness:'孝芯谢褖懈薪邪',
- coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
- productionsequence:'袩芯褋谢械写芯胁邪褌械谢褜薪芯褋褌褜 锌褉芯懈蟹胁芯写褋褌胁邪',
- cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
- operate:'袨锌械褉邪褑懈褟',
- messagedamaged:'袩芯胁褉械卸写械薪芯 谢懈 褋芯芯斜褖械薪懈械锛�',
- prompt:'袩芯写褋泻邪蟹泻',
- yes:'袛邪',
- cancel:'袨褌屑械薪邪',
- takemessage:'小谢械写褍械褌 谢懈 褍写邪谢褟褌褜 褋芯芯斜褖械薪懈械锛�',
- breakage:'袩芯胁褉械卸写械薪懈械',
- takeout:'袙蟹褟褌褜',
+ glassID:'Glass ID',
+ height:'Height',
+ width:'Width',
+ thickness:'Thickness',
+ coatingtypes:'Coating types',
+ productionsequence:'Production sequence',
+ cardnumber:'Process card number',
+ operate:'Operate',
+ messagedamaged:'Is this information damaged?',
+ prompt:'Prompt',
+ yes:'Yes',
+ cancel:'Cancel',
+ takemessage:'Do you need to delete the message锛�',
+ breakage:'Breakage',
+ takeout:'Take away',
+ glasstype:'Glass type',
+ line:'Wire',
+ status:'Status',
},
processCard:{
- intofurnace:'袙 锌械褔褜',
- beforefurnace:'袛芯 锌械褔泻懈.',
- outfurnace:'袨泻芯薪褔械薪芯 褋褌械泻谢芯 懈蟹 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+ intofurnace:'Entering the furnace',
+ beforefurnace:'Before entering the furnace',
+ outfurnace:'Glass finished from tempering furnace',
+ print:'Take away the print',
+ printing:'print',
+ projectnumber:'Please enter the project number',
+ inquire:'Inquire',
+ project:'Project number',
+ awayprocess:'Take away the process',
+ awayequipment:'Take away the equipment',
+ awayteam:'Take away the crew',
+ flowcard:'Process card',
+ layer:'Layer number',
+ temperinglayout:'Heat number',
+ temperingfeed:'Preface',
+ width:'Width',
+ height:'Height',
+ thickness:'Thickness',
+ glasstakeout:'Glass take away list',
+ layoutID:'Drawing ID of loading for tempering furnace',
+ glassID:'Glass ID',
},
reportWork:{
- lowerbit:'小褌邪薪褑懈褟 褉邪蟹谐褉褍蟹泻懈',
- shelfnumber:'袧芯屑械褉 褋褌芯泄泻懈 褉械谐懈褋褌褉邪褑懈懈',
- cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
- totalquantity:'袨斜褖械械 泻芯谢懈褔械褋褌胁芯',
- beendropped:'袣芯谢懈褔械褋褌胁芯 褋褌械泻谢邪 褉邪蟹谐褉褍蟹泻懈',
- state:'小芯褋褌芯褟薪懈械',
- devicenumber:'袧芯屑械褉 芯斜芯褉褍写芯胁邪薪懈褟.',
- startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
- enable:'袧邪褔邪谢芯',
- unenable:'袧械 薪邪褔邪褌',
- operate:'袨锌械褉邪褑懈褟',
- bindingshelves:'袧邪蟹薪邪褔械薪薪邪褟 褋褌械谢谢邪卸泻邪',
- clear:'效懈褋褌芯.',
- workstation:'小褌邪薪褑懈褟 薪芯屑械褉',
- cardnumbera:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪锛�',
- incardnumber:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 薪芯屑械褉 锌褉芯谐褉邪屑屑褘',
- clearglass:'袨褔懈褋褌懈褌褜 褋褌械泻谢芯 褋 锌芯谢泻懈',
- sure:'锌芯写褌胁械褉写',
- cancel:'袨褌屑械薪邪',
- glassinformation:'袠薪褎芯褉屑邪褑懈褟 褋褌械泻谢邪',
- glassID:'小褌械泻谢褟薪薪褘泄 ID',
- coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
- thickness:'孝芯谢褖懈薪邪',
- width:'楔懈褉懈薪邪',
- height:'袙褘褋芯褌邪',
+ lowerbit:'Unloading station',
+ shelfnumber:'Rack number',
+ cardnumber:'Process card number',
+ totalquantity:'Total quantity',
+ beendropped:'Quantity of unloaded glass',
+ state:'Status',
+ devicenumber:'Equipment No.',
+ startstatus:'Start status',
+ enable:'Start',
+ unenable:'Unstart',
+ operate:'Operate',
+ bindingshelves:'Assigned rack',
+ clear:'Clear',
+ workstation:'Station No.',
+ shelfnumbera:'Rack number锛�',
+ cardnumbera:'Process card number锛�',
+ incardnumber:'Please select the process card number',
+ clearglass:'Clear the glass on the shelf',
+ sure:'Operate',
+ cancel:'Cancel',
+ glassinformation:'Glass information',
+ glassID:'Glass ID',
+ coatingtypes:'Coating types',
+ thickness:'Thickness',
+ width:'Width',
+ height:'Height',
},
+
productStock:{
- addusers:'袛芯斜邪胁褜褌械 锌芯谢褜蟹芯胁邪褌械谢械泄.',
- username:'袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟.',
- usernamea:'袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟.锛�',
- inusername:'袙胁械写懈褌械 懈屑褟 锌芯谢褜蟹芯胁邪褌械谢褟',
- role:'袪芯谢褜',
- rolea:'袪芯谢褜锛�',
- inrole:'袙褘斜械褉懈褌械 褉芯谢褜',
- test:'孝械褋褌',
- admin:'袗写屑懈薪懈褋褌褉邪褌芯褉.',
- operate:'袨锌械褉邪褑懈褟',
- resetpassword:'小斜褉芯褋懈褌褜 锌邪褉芯谢褜',
- exit:'袪械写邪泻褌芯褉',
- delete:'校写邪谢',
- prompt:'袩芯写褋泻邪蟹泻',
- repassword:'袩械褉械蟹邪谐褉褍蟹泻邪 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯谐芯 锌邪褉芯谢褟 懈谢懈 薪械褌锛�',
- yes:'袛邪',
- cancel:'袨褌屑械薪邪',
- reusername:'袠蟹屑械薪械薪懈械 锌芯谢褜蟹芯胁邪褌械谢褟',
- addusername:'袛芯斜邪胁褜褌械 锌芯谢褜蟹芯胁邪褌械谢械泄.',
- password:'袣芯写锛�',
- sure:'锌芯写褌胁械褉写',
- inpassword:'袙胁械写懈褌械 锌邪褉芯谢褜.',
- deusername:'校写邪谢械薪懈械 锌芯谢褜蟹芯胁邪褌械谢褟 懈谢懈 薪械褌锛�',
+ addusers:'Add user',
+ username:'User name',
+ usernamea:'User name锛�',
+ inusername:'Enter one user name',
+ role:'Role',
+ rolea:'Role锛�',
+ inrole:'Please select a role',
+ test:'Test',
+ admin:'Administrator',
+ operate:'Operate',
+ resetpassword:'Reset password',
+ exit:'Edit',
+ delete:'Delete',
+ prompt:'Prompt',
+ repassword:'Do you want to reset the user password锛�',
+ yes:'Yes',
+ cancel:'Cancel',
+ reusername:'Modify Users',
+ addusername:'Add user',
+ password:'Password锛�',
+ sure:'Confirm',
+ inpassword:'Please input a password',
+ deusername:'Do you want to delete the user锛�',
},
customer:{
- addmenu:'袛芯斜邪胁褜褌械 屑械薪褞.',
- firstmenu:'孝邪斜谢懈褑邪 屑械薪褞 锌械褉胁芯泄 褋褌械锌械薪懈',
- link:'小褋褘谢泻',
- linka:'小褋褘谢泻锛�',
- inlink:'袙胁械写懈褌械 褋褋褘谢泻褍',
- sort:'小芯褉褌懈褉芯胁泻',
- sorta:'小芯褉褌懈褉芯胁泻锛�',
- insort:'袙胁械写懈褌械 褋芯褉褌懈褉芯胁泻褍',
- operate:'袨锌械褉邪褑懈褟',
- exit:'袪械写邪泻褌芯褉',
- inmenu:'袙胁械写懈褌械 屑械薪褞',
- delete:'校写邪谢',
- semenu:'孝邪斜谢懈褑邪 屑械薪褞 胁褌芯褉芯泄 褋褌械锌械薪懈',
- menu:'袦械薪褞.锛�',
- sure:'锌芯写褌胁械褉写',
- cancel:'袨褌屑械薪邪',
- exmene:'袠蟹屑械薪械薪懈械 屑械薪褞.',
- yes:'袛邪',
- demenu:'校写邪谢懈褌褜 屑械薪褞 懈谢懈 薪械褌锛�',
- prompt:'袩芯写褋泻邪蟹泻',
+ addmenua:'Add secondary menus',
+ addmenu:'Add a first-level menu',
+ firstmenu:'First level menu bar',
+ firstmenuname:'The name of the first-level menu:',
+ link:'Link',
+ inlink:'Please enter the link',
+ linka:'Link锛�',
+ sort:'Sort',
+ insort:'Please enter sorting',
+ sorta:'Sort锛�',
+ operate:'Operate',
+ exit:'Edit',
+ delete:'Delete',
+ semenu:'Secondary menu bar',
+ semenuname:'Secondary menu name:',
+ menu:'Menu bar锛�',
+ inmenu:'Please enter a menu name',
+ sure:'Confirm',
+ cancel:'Cancel',
+ exmene:'Modify the first-level menu',
+ exmenea:'Modify the secondary menu',
+ yes:'Yes',
+ demenu:'Do you want to delete this menu锛�',
+ prompt:'Prompt',
},
delivery:{
- addrole:'袛芯斜邪胁褜褌械 褉芯谢懈.',
- editrole:'袠蟹屑械薪械薪懈械 褉芯谢懈.',
- role :'袪芯谢褜',
- rolea :'袪芯谢褜锛�',
- inrole :'袙胁械写懈褌械 褉芯谢懈.',
- operate :'袨锌械褉邪褑懈褟',
- edit :'袪械写邪泻褌芯褉',
- delete :'校写邪谢',
- sure :'锌芯写褌胁械褉写',
- cancel :'袨褌屑械薪邪',
- yes:'袛邪',
- derole :'校写邪谢懈褌褜 锌械褉褋芯薪邪卸 懈谢懈 薪械褌锛�',
- prompt:'袩芯写褋泻邪蟹泻',
+ addrole:'Add Role',
+ editrole:'Modify role',
+ role :'Role',
+ rolea :'Role锛�',
+ inrole :'Please enter the role',
+ operate :'Operate',
+ edit :'Edit',
+ delete :'Delete',
+ yes:'Yes',
+ sure :'Confirm',
+ cancel :'Cancel',
+ derole :'Do you want to delete this role',
+ prompt:'Prompt',
+ choice:'Menu permissions锛�',
+ inchoice:'Please select Menu Permissions',
},
- }
\ No newline at end of file
+ replenish:{
+ patchManagement:'Mesh management',
+
+ },
+ rework:{
+ reworkManagement:'Rework management',
+ addRework:"Rework added ",
+ },
+
+
+ role:{
+ id:'ID',
+ characterHomepage:'Character Home',
+ },
+ user:{
+ userId:'User ID',
+ userHomepage:'User Home',
+ },
+ orderBasicData:{
+ order:'orders',
+ orderType:'The type of order',
+ },
+ machine:{
+ basicId:'Device number',
+ basicName:'The name of the device',
+ basicCategory:'The process in which it is located',
+ tempering:'Steel',
+ },
+ report:{
+ productionReport:'Production reports',
+ workInProgressReport:'WIP report',
+ },
+ productionBasicData:{
+ basicDataQuery :'Basic data query',
+ },
+ mainIngredient:{
+ materialInformation :'Material information',
+ },
+ mainIngredientStock:{
+ materialName :'The name of the item',
+ createTime :'Return date',
+ },
+ large:{
+ time: 'The time of the break',
+ number: 'Order number',
+ jobnumber: 'Job number',
+ productionnumber: 'The production order number',
+ cardnumber: 'Process card number',
+ projectname: 'The name of the project',
+ batch: 'batch',
+ detailID: 'Detail ID',
+ building: 'Building No',
+ serialnumber: 'Order serial number',
+ productname: 'Product name',
+ serial: 'Process validation number',
+ slicemarker: 'Frame marker (position)',
+ numberpatches: 'Number of patches',
+ width: 'Width',
+ height: 'Height',
+ shape: 'Shape',
+ responsibleprocess: 'Responsible process',
+ process: 'This process',
+ numberfractions: 'The number of unfilled fractions',
+ breakreason: 'The reason for the break',
+ breaktype: 'Sub-break type',
+ responsiblepersonnel: 'Responsible Personnel',
+ responsiblequipment: 'Responsible Equipment',
+ responsibleteam: 'Responsible team',
+ area: 'Sub-broken area',
+ inspector: 'Quality inspector',
+ operate: 'Operate',
+ mes: 'Detail',
+ projectnumber: 'The project order number',
+ brokeno: 'The report is broken and not filled',
+ close: 'Shut down',
+ orderId: 'Order ID',
+ customerName: 'The name of the customer',
+ project: 'The name of the project',
+ are: 'are',
+ quantity: 'quantity',
+ warehousing: 'State',
+ deliveryDate: 'Delivery time',
+ notstocked: 'Not yet in stock',
+ inboundstatus: 'Partial inventory status',
+ allstatus: 'All in stock status',
+ completedquantity: 'Completed quantity',
+ scrapquantity: 'Scrap Quantity',
+ method: 'Processing method',
+ innumber: 'Quantity already entered',
+ productstatus: 'Production status',
+ right: 'normal',
+ stop: 'termination',
+ inquire: 'query',
+ starttime :'Start Time',
+ endtime :'End Time',
+ loading :'In the process of uploading锛�',
+ },
+ reportmanage:{
+ productiontime :'production time',
+ starttime :'Start Time',
+ endtime :'End Time',
+ ctype :'Please select type',
+ cstate :'Please select the status',
+ cprocess :'Please select the process',
+ all :'All',
+ completed :'Completed',
+ broke :'Damaged',
+ takeout :'Takeout',
+ dreportwork :'Unreported work',
+ pendingwork :'Pending job application',
+ reportwork :'Reported work',
+ incise :'slicing',
+ edging :'edging',
+ steel :'toughened',
+ inquire :'query',
+ signingwork :'Reporting for work',
+ reporteam :'Report work team',
+ reportingequipment :'Reporting equipment',
+ line :'line',
+ process :'production processes',
+ glassID :'Glass ID',
+ projectnumber :'Project number',
+ layoutID :'Tempered layout ID',
+ type :'type',
+ state :'state',
+ processcards :'Flow Card',
+ number :'Serial Number',
+ layer :'storey',
+ typebreakage :'Damage type',
+ ptypebreakage :' Please select the type of damage',
+ causebreakage :'Reason for damage',
+ pcausebreakage :'Please select the reason for the damage',
+ responsibleprocess :'Responsibility Process',
+ responsiblepersonnel :'Responsible personnel',
+ presponsiblepersonnel :'Please enter the responsible personnel',
+ responsibleteam :'Responsible team',
+ presponsibleteam :'Please select the responsible team',
+ responsibleequipment :'Responsible equipment',
+ presponsibleequipment :'Please select the responsible device',
+ remark :'notes',
+ premark :'Please enter a note',
+ },
+ film:{
+ mes:'Original film storage details',
+ warehousing:'store',
+ operate: 'Operate',
+ exit:'Edit',
+ delete:'Delete',
+ outbound:'Outbound',
+ deviceid:'device ID',
+ slot:'Grid number',
+ enablestatea:'Enable tagging',
+ disable:'Disable',
+ start:'Enable',
+ startslot:'Start workstation',
+ endslot:'Target workstation',
+ slotid:'Grid ID',
+ width:'Width',
+ widtha:'Width锛�',
+ inwidth:'Please enter width',
+ height:'Height',
+ inheight:'Please enter height',
+ heighta:'Height锛�',
+ thickness:'Thickness',
+ inthickness:'Please enter thickness',
+ thicknessa:'Thickness锛�',
+ films:'Films',
+ infilms:'Please enter films',
+ filmsa:'Films锛�',
+ createtime:'Creation time',
+ remainquantity:'Remaining Quantity',
+ thickremainquantity:'Remaining quantity of original film (sheets)锛�',
+ inquantity:'Please enter the quantity',
+ quantitya:'Number锛�',
+ enableid:'Task ID',
+ originateslot:'Starting grid',
+ patternquantity:'Number',
+ enabletype:'Task Type',
+ enablestate:'Workstation status',
+ finish:'Completed',
+ unfinish:'Incomplete',
+ dedelete:'Do you want to delete this content锛�',
+ dedisable:'Do you want to disable this content锛�',
+ deoutbound:'Whether to release the content of this item from the warehouse锛�',
+ selectwarehousing:'Please select the lifting position',
+ inwarehousing:'Lifting position锛�',
+ warehousing1:'Lifting position 1',
+ warehousing2:'Lifting position 2',
+ starttime :'Start Time',
+ endtime :'End Time',
+ taskstatus :'Status',
+ built :'newly built',
+ execution :'In progress',
+ tasktype :'Task Type',
+ stocke :'store',
+ dispatch :'dispatch',
+ inquire :'query',
+ station :'station',
+ },
+ Mounting:{
+ previewproject :'Select Preview Project',
+ loadinglinea :'Upper film line',
+ loadingline :'Upper film line锛�',
+ inloadingline :'Please select the upper film line',
+ oneloadingline :'Line 1 on film',
+ twoloadingline :'Line 2 on film',
+ waiting :'Waiting',
+ setparameters :'Set parameters',
+ project :'Project number',
+ projecta :'Project number锛�',
+ width :'Width',
+ height :'Height',
+ thickness :'Thickness',
+ projectnumber :'Project original piece number',
+ state :'state',
+ createtime :'Creation time',
+ all :'Select All',
+
+ }
+}
\ No newline at end of file
diff --git a/UI-Project/src/lang/index.js b/UI-Project/src/lang/index.js
index 2a371f6..b2d76c4 100644
--- a/UI-Project/src/lang/index.js
+++ b/UI-Project/src/lang/index.js
@@ -1,10 +1,12 @@
import { createI18n} from 'vue-i18n'
import zh from "./zh"
+import py from "./py"
import en from "./en"
let messages = {
zh:zh,
+ py:py,
en: en
}
diff --git a/UI-Project/src/lang/py.js b/UI-Project/src/lang/py.js
new file mode 100644
index 0000000..869758b
--- /dev/null
+++ b/UI-Project/src/lang/py.js
@@ -0,0 +1,300 @@
+export default {
+ "northglassMESsystem": '小懈褋褌械屑邪 "NorthGlass MES"' ,
+ login:{
+ userErr:'袙胁械写懈褌械 薪芯屑械褉 褋褔械褌邪.',
+ pwErr:'袙胁械写懈褌械 锌邪褉芯谢褜.',
+ user:'袗泻泻邪褍薪褌',
+ password:'袣芯写',
+ login:'袟邪谢芯谐懈薪',
+ loginSuccessful:'袙褏芯写 胁 褋懈褋褌械屑褍 胁褘锌芯谢薪械薪 褍褋锌械褕薪芯锛�',
+ register:'袟邪褉械谐懈褋褌褉懈褉芯胁邪',
+ namea:'袠屑褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
+ len:'袛谢懈薪邪 薪械 写芯谢卸薪邪 锌褉械胁褘褕邪褌褜 16',
+ passnull:'袩邪褉芯谢褜 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
+ leng:'袛谢懈薪邪 锌邪褉芯谢褟 薪械 写芯谢卸薪邪 斜褘褌褜 屑械薪褜褕械 6 懈谢懈 斜芯谢褜褕械 16.',
+ spwn:'袩邪褉芯谢褜 锌芯写褌胁械褉卸写械薪懈褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
+ depass:'袛胁邪 褉邪蟹薪褘褏 锌邪褉芯谢褟.',
+ },
+ register:{
+ registerSuccessful:'袪械谐懈褋褌褉邪褑懈褟 褍褋锌械褕薪芯',
+ newuserregister:'袧芯胁褘泄 褉械械褋褌褉 锌芯谢褜蟹芯胁邪褌械谢械泄',
+ name:'袠屑褟锛�',
+ inputname:'袙胁械写懈褌械 懈屑褟',
+ password:'袣芯写:',
+ pwErr:'袙胁械写懈褌械 锌邪褉芯谢褜.',
+ passwordation:'袩芯写褌胁械褉写懈褌械 锌邪褉芯谢褜:',
+ pwErration:'袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉褌懈褌械 锌邪褉芯谢褜',
+ registration:'袩芯写褌胁械褉卸写械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈',
+ false:'袨褌屑械薪邪',
+ },
+ main:{
+ connectErr:'袧械芯斜褘褔薪芯械 锌芯写泻谢褞褔械薪懈械 泻 褋械褉胁械褉褍, 锌芯锌褉芯斜褍泄褌械 锌芯蟹卸械',
+ titleFirst:"袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜 ",
+ titleLast:' 胁 褋懈褋褌械屑褍 NorthGlass MES锛�',
+ quit:"袙褘褏芯写",
+ },
+ basicData:{
+ deletemessage:'校写邪谢懈褌褜 褝褌褍 懈薪褎芯褉屑邪褑懈褞 懈谢懈 薪械褌?',
+ laserprinting:'袦邪褕懈薪邪 谢邪蟹械褉薪芯泄 屑邪褉泻懈褉芯胁泻懈 谐芯褌芯胁邪锛�',
+ cuttingmachine:'袦邪褕懈薪邪 写谢褟 褉械蟹泻懈 谐芯褌芯胁邪锛�',
+ machine:'小芯褋褌芯褟薪懈械 褋褌邪薪芯泻 蟹邪谐褉褍蟹泻懈 胁 褉械卸懈屑械 芯薪谢邪泄薪锛�',
+ machineaa:'袪褍褔薪芯械 褋芯褋褌芯褟薪懈械 褋褌邪薪芯泻 蟹邪谐褉褍蟹泻懈:',
+ selectproject:"袙褘斜械褉懈褌械 锌褉芯械泻褌",
+ startloading:'袧邪褔邪谢芯 蟹邪谐褉褍蟹泻懈',
+ stop:'袩邪褍蟹邪',
+ yes:'锌芯写褌胁械褉写',
+ change:'锌械褉械泻谢褞褔邪',
+ projectnumber:'袧芯屑械褉 锌褉芯械泻褌邪',
+ glasswidth:'楔懈褉懈薪邪 褋褌械泻谢邪',
+ glassheight:'袙褘褋芯褌邪 褋褌械泻谢邪',
+ coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+ coatingtypesa:'孝懈锌褘 锌芯泻褉褘褌懈泄锛�',
+ quantity:'袣芯谢懈褔械褋褌胁芯',
+ quantitya:'袣芯谢懈褔械褋褌胁芯锛�',
+ thickness:'孝芯谢褖懈薪邪',
+ thicknessa:'孝芯谢褖懈薪邪锛�',
+ startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+ pass:'效械褉械蟹',
+ waiting:'袞写械屑.',
+ up:'袟邪谐褉褍蟹泻邪',
+ finish:'袟邪胁械褉褕械薪芯',
+ project:'懈薪卸械薪械褉懈褟',
+ plselectproject:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 锌褉芯械泻褌.',
+ confirm:'锌芯写褌胁械褉写',
+ cancel:'袨褌屑械薪邪',
+ startfilm:'袧邪褔懈薪邪褌褜 懈谢懈 薪械褌锛�',
+ whetherpause:'袩邪褍蟹邪 懈谢懈 薪械褌锛�',
+ station:'袪邪斜芯褔械械 屑械褋褌芯',
+ width:'楔懈褉懈薪邪',
+ widtha:'楔懈褉懈薪邪锛�',
+ height:'袙褘褋芯褌邪',
+ heighta:'袙褘褋芯褌邪锛�',
+ operate:'袨锌械褉邪褑懈褟',
+ add:'袛芯斜邪胁谢褟',
+ delete:'校写邪谢',
+ addglass:'袛芯斜邪胁懈褌褜 褋褌械泻谢芯',
+ selectwidth:'袙褘斜懈褉懈褌械 褕懈褉懈薪褍',
+ selectheight:'袙褘斜懈褉懈褌械 胁褘褋芯褌褍',
+ selectcoatingtypes:'袙褘斜械褉懈褌械 褌懈锌褘 锌芯泻褉褘褌懈泄',
+ selectthickness:'袙褘斜械褉懈褌械 褌芯谢褖懈薪褍',
+ selectquantity:'袙胁械写懈褌械 泻芯谢褜褔械褋褌胁芯.',
+ pause:'袙褌芯褉邪褟 懈 褔械褌胁械褉褌邪褟 褋褌褉芯泻懈 写芯谢卸薪褘 斜褘褌褜 胁褘褕械 2700 写谢褟 褋芯褏褉邪薪械薪懈褟!',
+ pausea:'袩芯卸邪谢褍泄褋褌邪, 褍斜械写懈褌械褋褜, 褔褌芯 屑邪褉泻懈褉芯胁芯褔薪邪褟 懈 褉械卸褍褖邪褟 屑邪褕懈薪褘 谐芯褌芯胁褘!',
+ infonull:'袧芯屑械褉 锌褉芯械泻褌邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑!',
+ updatanull:'袩褉芯械泻褌 薪械 褋芯褏褉邪薪懈谢懈褋褜 薪邪 谢懈褋褌械 蟹邪谐褉褍蟹泻懈!',
+ glassnull:'袨褕懈斜泻邪 锌褉懈 芯斜薪芯胁谢械薪懈懈 褋褌械泻谢邪',
+ },
+ sorter:{
+ gridnumber:'携褔械械泻 褋械褌泻谢邪',
+ glassnumber:'袧芯屑械褉 褋褌邪泻谢邪',
+ width:'楔懈褉懈薪邪',
+ height:'袙褘褋芯褌邪',
+ startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+ disable:'袨褌泻谢褞褔',
+ start:'袧邪褔邪谢芯',
+ deficiencieste:'袧械写芯褋褌邪褌泻懈 胁 芯褌褔械褌薪芯褋褌懈',
+ operate:'袨锌械褉邪褑懈褟',
+ prompt:'袩芯写褋泻邪蟹泻',
+ information:'小谢械写褍械褌 谢懈 褋芯芯斜褖邪褌褜 薪械写芯褋褌邪褞褖褍褞 懈薪褎芯褉屑邪褑懈褞锛�',
+ yes:'袛邪',
+ cancel:'袨褌屑械薪邪',
+ },
+ order:{
+ dilapidation:'袩芯胁褉械卸写械薪懈械',
+ Takeaway:'袙蟹褟褌褜 胁褉褍褔薪褍褞',
+ },
+
+ searchOrder:{
+ cageinformation:'袠薪褎芯褉屑邪褑懈褟 斜褍褎械褉邪',
+ productionqueue:'袩褉芯懈蟹胁芯写褋褌胁械薪薪邪褟 芯褔械褉械写褜',
+ outputglassID:'袙褘褏芯写薪芯械 褋褌械泻谢芯 ID',
+ startposition:'袟邪薪褟褌褜 锌芯蟹懈褑懈懈',
+ targetlocation:'袩芯蟹懈褑懈褟 褑械谢懈',
+ trips:'鈩� 锌芯械蟹写邪',
+ number:'小械褉懈泄薪 薪芯屑械褉',
+ taskstatus:'小芯褋褌芯褟薪懈械 蟹邪写邪褔懈',
+ filmenter:'袨卸懈写邪薪懈械 褋褌械泻谢褟薪薪芯泄 胁褏芯写',
+ infilm:'袙 薪邪褋褌芯褟褖械械 胁褉械屑褟',
+ endtask:'袟邪写邪褔邪 薪邪 泻芯薪械褑',
+ completetask:'袙褘锌芯谢薪械薪懈械 蟹邪写邪薪懈褟',
+ intoglassid:'袙褏芯写薪芯泄 褋褌械泻谢褟薪薪褘泄 ID',
+ line:'袥懈薪懈褟',
+ Usage:'小泻芯褉芯褋褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈褟',
+ free:'袘械褋锌谢邪褌薪芯 (褟褔械械泻)',
+ addcage:'袛芯斜邪胁懈褌褜 懈薪褎芯褉屑邪褑懈褞 芯 斜褍褎械褉械',
+ glassIDa:'小褌械泻谢褟薪薪褘泄 ID锛�',
+ glassID:'小褌械泻谢褟薪薪褘泄 ID',
+ inglassID:'袙胁械写懈褌械 褋褌械泻谢芯 ID',
+ pieceingrid:'袩芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 屑邪谢械薪褜泻懈褏 褋褌械泻谢褟薪薪褘褏 锌谢邪褋褌懈薪 胁 泻谢械褌泻械',
+ pieceingrida:'袩芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 屑邪谢械薪褜泻懈褏 褋褌械泻谢褟薪薪褘褏 锌谢邪褋褌懈薪 胁 泻谢械褌泻械锛�',
+ inpieceingrid:'袙胁械写懈褌械 锌芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 褋褌械泻谢褟薪薪褘褏 谢懈褋褌芯胁 胁 褟褔械械泻械',
+ cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+ cardnumbera:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪锛�',
+ incardnumber:'袙胁械写懈褌械 薪芯屑械褉 锌褉芯褑械褋褋邪 .',
+ typeglass:'孝懈锌 褋褌械泻谢邪',
+ typeglassa:'孝懈锌 褋褌械泻谢邪锛�',
+ intypeglass:'袙胁械写懈褌械 褌懈锌 褋褌械泻谢邪',
+ coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+ width:'楔懈褉懈薪邪',
+ widtha:'楔懈褉懈薪邪锛�',
+ inwidth:'袙胁械写懈褌械 褕懈褉懈薪褍',
+ height:'袙褘褋芯褌邪',
+ heighta:'袙褘褋芯褌邪锛�',
+ inheight:'袙胁械写懈褌械 胁褘褋芯褌褍',
+ thickness:'孝芯谢褖懈薪邪',
+ thicknessa:'孝芯谢褖懈薪邪锛�',
+ inthickness:'袙胁械写懈褌械 褌芯谢褖懈薪褍.',
+ layoutID:'效械褉褌械卸 ID 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+ layoutIDa:'效械褉褌械卸 ID 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈锛�',
+ inlayoutID:'袙胁械写懈褌械 褔械褉褌械卸 蟹邪泻邪谢泻懈 ID',
+ picturesequence:'效械褉褌械卸 褋械褉懈泄薪 薪芯屑械褉 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+ picturesequencea:'效械褉褌械卸 褋械褉懈泄薪 薪芯屑械褉 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈锛�',
+ inpicturesequence:'袙胁械写懈褌械 锌芯褉褟写芯泻 褔械褉褌械卸懈 蟹邪泻邪谢泻懈 褋褌械泻谢邪.',
+ startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+ startstatusa:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈锛�',
+ instartstatus:'袙胁械写懈褌械 褋芯褋褌芯褟薪懈械 邪泻褌懈胁邪褑懈懈',
+ glassgaps:'小褌械泻谢褟薪薪褘泄 蟹邪蟹芯褉',
+ glassgapsa:'小褌械泻谢褟薪薪褘泄 蟹邪蟹芯褉锛�',
+ inglassgaps:'袙胁械写懈褌械 褋褌械泻谢芯 蟹邪蟹芯褉',
+ sure:'锌芯写褌胁械褉写',
+ cancel:'袨褌屑械薪邪',
+ operate:'袨锌械褉邪褑懈褟',
+ breakage:'袩芯胁褉械卸写械薪懈械',
+ delete:'校写邪谢',
+ outfilm:'袙褘锌褍褋泻 褋褌械泻谢邪',
+ cagetableID:'ID 斜褍褎械褉薪芯泄 褌邪斜谢懈褑褘',
+ cagenumber:'袘褍褎械褉 薪芯屑械褉邪',
+ gridnumber:'携褔械械泻 褋械褌泻谢邪',
+ enable:'袧邪褔邪谢芯',
+ disable:'袨褌泻谢褞褔',
+ remainingwidth:'袨褋褌邪褌芯褔薪邪褟 褕懈褉懈薪邪',
+ add:'袛芯斜邪胁谢褟',
+ sheetID:'袟邪泻邪谢泻邪 屑邪谢械薪褜泻懈泄 褋褌械泻谢褟薪薪褘泄 ID 褌邪斜谢懈褑褘 懈薪褎芯褉屑邪褑懈懈',
+ processcards:'袣邪褉褌芯褔泻邪 锌褉芯褑械褋褋邪',
+ processcardtype:'孝懈锌 褋褌械泻谢邪 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+ acceptshorizontal:'校屑械褉械薪薪芯械 锌褉懈薪褟褌懈械 谐芯褉懈蟹芯薪褌邪谢懈',
+ xcoordinates:'X-泻芯芯褉写懈薪邪褌褘',
+ ycoordinates:'Y-泻芯芯褉写懈薪邪褌褘',
+ rotationangle:'校谐芯谢 胁褉邪褖械薪懈褟 (锌褉芯褌懈胁 褔邪褋芯胁芯泄 褋褌褉械谢泻懈)',
+ state:'小芯褋褌芯褟薪懈械',
+ takeout:'袙蟹褟褌褜',
+ deletemessage:'校写邪谢懈褌褜 褝褌褍 懈薪褎芯褉屑邪褑懈褞 懈谢懈 薪械褌?',
+ prompt:'袩芯写褋泻邪蟹泻',
+ yes:'袛邪',
+ accept:'袩褉懈薪褟褌褜',
+ noaccept:'袧械 锌褉懈薪懈屑邪褌褜',
+ filmcomplete:'小褌械泻谢芯 谐芯褌芯胁芯',
+ waiting:'袞写械屑.',
+ },
+ workOrder:{
+ glassID:'小褌械泻谢褟薪薪褘泄 ID',
+ height:'袙褘褋芯褌邪',
+ width:'楔懈褉懈薪邪',
+ thickness:'孝芯谢褖懈薪邪',
+ coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+ productionsequence:'袩芯褋谢械写芯胁邪褌械谢褜薪芯褋褌褜 锌褉芯懈蟹胁芯写褋褌胁邪',
+ cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+ operate:'袨锌械褉邪褑懈褟',
+ messagedamaged:'袩芯胁褉械卸写械薪芯 谢懈 褋芯芯斜褖械薪懈械锛�',
+ prompt:'袩芯写褋泻邪蟹泻',
+ yes:'袛邪',
+ cancel:'袨褌屑械薪邪',
+ takemessage:'小谢械写褍械褌 谢懈 褍写邪谢褟褌褜 褋芯芯斜褖械薪懈械锛�',
+ breakage:'袩芯胁褉械卸写械薪懈械',
+ takeout:'袙蟹褟褌褜',
+ },
+ processCard:{
+ intofurnace:'袙 锌械褔褜',
+ beforefurnace:'袛芯 锌械褔泻懈.',
+ outfurnace:'袨泻芯薪褔械薪芯 褋褌械泻谢芯 懈蟹 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+ },
+ reportWork:{
+ lowerbit:'小褌邪薪褑懈褟 褉邪蟹谐褉褍蟹泻懈',
+ shelfnumber:'袧芯屑械褉 褋褌芯泄泻懈 褉械谐懈褋褌褉邪褑懈懈',
+ cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+ totalquantity:'袨斜褖械械 泻芯谢懈褔械褋褌胁芯',
+ beendropped:'袣芯谢懈褔械褋褌胁芯 褋褌械泻谢邪 褉邪蟹谐褉褍蟹泻懈',
+ state:'小芯褋褌芯褟薪懈械',
+ devicenumber:'袧芯屑械褉 芯斜芯褉褍写芯胁邪薪懈褟.',
+ startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+ enable:'袧邪褔邪谢芯',
+ unenable:'袧械 薪邪褔邪褌',
+ operate:'袨锌械褉邪褑懈褟',
+ bindingshelves:'袧邪蟹薪邪褔械薪薪邪褟 褋褌械谢谢邪卸泻邪',
+ clear:'效懈褋褌芯.',
+ workstation:'小褌邪薪褑懈褟 薪芯屑械褉',
+ cardnumbera:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪锛�',
+ incardnumber:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 薪芯屑械褉 锌褉芯谐褉邪屑屑褘',
+ clearglass:'袨褔懈褋褌懈褌褜 褋褌械泻谢芯 褋 锌芯谢泻懈',
+ sure:'锌芯写褌胁械褉写',
+ cancel:'袨褌屑械薪邪',
+ glassinformation:'袠薪褎芯褉屑邪褑懈褟 褋褌械泻谢邪',
+ glassID:'小褌械泻谢褟薪薪褘泄 ID',
+ coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+ thickness:'孝芯谢褖懈薪邪',
+ width:'楔懈褉懈薪邪',
+ height:'袙褘褋芯褌邪',
+ },
+ productStock:{
+ addusers:'袛芯斜邪胁褜褌械 锌芯谢褜蟹芯胁邪褌械谢械泄.',
+ username:'袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟.',
+ usernamea:'袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟.锛�',
+ inusername:'袙胁械写懈褌械 懈屑褟 锌芯谢褜蟹芯胁邪褌械谢褟',
+ role:'袪芯谢褜',
+ rolea:'袪芯谢褜锛�',
+ inrole:'袙褘斜械褉懈褌械 褉芯谢褜',
+ test:'孝械褋褌',
+ admin:'袗写屑懈薪懈褋褌褉邪褌芯褉.',
+ operate:'袨锌械褉邪褑懈褟',
+ resetpassword:'小斜褉芯褋懈褌褜 锌邪褉芯谢褜',
+ exit:'袪械写邪泻褌芯褉',
+ delete:'校写邪谢',
+ prompt:'袩芯写褋泻邪蟹泻',
+ repassword:'袩械褉械蟹邪谐褉褍蟹泻邪 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯谐芯 锌邪褉芯谢褟 懈谢懈 薪械褌锛�',
+ yes:'袛邪',
+ cancel:'袨褌屑械薪邪',
+ reusername:'袠蟹屑械薪械薪懈械 锌芯谢褜蟹芯胁邪褌械谢褟',
+ addusername:'袛芯斜邪胁褜褌械 锌芯谢褜蟹芯胁邪褌械谢械泄.',
+ password:'袣芯写锛�',
+ sure:'锌芯写褌胁械褉写',
+ inpassword:'袙胁械写懈褌械 锌邪褉芯谢褜.',
+ deusername:'校写邪谢械薪懈械 锌芯谢褜蟹芯胁邪褌械谢褟 懈谢懈 薪械褌锛�',
+ },
+ customer:{
+ addmenu:'袛芯斜邪胁褜褌械 屑械薪褞.',
+ firstmenu:'孝邪斜谢懈褑邪 屑械薪褞 锌械褉胁芯泄 褋褌械锌械薪懈',
+ link:'小褋褘谢泻',
+ linka:'小褋褘谢泻锛�',
+ inlink:'袙胁械写懈褌械 褋褋褘谢泻褍',
+ sort:'小芯褉褌懈褉芯胁泻',
+ sorta:'小芯褉褌懈褉芯胁泻锛�',
+ insort:'袙胁械写懈褌械 褋芯褉褌懈褉芯胁泻褍',
+ operate:'袨锌械褉邪褑懈褟',
+ exit:'袪械写邪泻褌芯褉',
+ inmenu:'袙胁械写懈褌械 屑械薪褞',
+ delete:'校写邪谢',
+ semenu:'孝邪斜谢懈褑邪 屑械薪褞 胁褌芯褉芯泄 褋褌械锌械薪懈',
+ menu:'袦械薪褞.锛�',
+ sure:'锌芯写褌胁械褉写',
+ cancel:'袨褌屑械薪邪',
+ exmene:'袠蟹屑械薪械薪懈械 屑械薪褞.',
+ yes:'袛邪',
+ demenu:'校写邪谢懈褌褜 屑械薪褞 懈谢懈 薪械褌锛�',
+ prompt:'袩芯写褋泻邪蟹泻',
+ },
+ delivery:{
+ addrole:'袛芯斜邪胁褜褌械 褉芯谢懈.',
+ editrole:'袠蟹屑械薪械薪懈械 褉芯谢懈.',
+ role :'袪芯谢褜',
+ rolea :'袪芯谢褜锛�',
+ inrole :'袙胁械写懈褌械 褉芯谢懈.',
+ operate :'袨锌械褉邪褑懈褟',
+ edit :'袪械写邪泻褌芯褉',
+ delete :'校写邪谢',
+ sure :'锌芯写褌胁械褉写',
+ cancel :'袨褌屑械薪邪',
+ yes:'袛邪',
+ derole :'校写邪谢懈褌褜 锌械褉褋芯薪邪卸 懈谢懈 薪械褌锛�',
+ prompt:'袩芯写褋泻邪蟹泻',
+ },
+ }
\ No newline at end of file
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index d1de9eb..d2fa6e0 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -199,26 +199,27 @@
tid:'璁惧id',
tida:'璁惧id锛�',
fin:'鏄惁瀹屾垚浠诲姟锛�',
- sureadd:'纭娣诲姞',
- sureadda:'鏄惁纭娣诲姞锛�',
- zailong:'鍦ㄧ涓�',
- rengongxp:'浜哄伐涓嬬墖',
- up:'涓婁竴椤�',
- down:'涓嬩竴椤�',
- now:'褰撳墠椤垫樉绀�',
- tit:'鏉℃暟鎹�',
- temperingqueries:'閽㈠寲鏌ヨ',
- specifytempering:'鎸囧畾涓�鐐�',
- specifyengineerid:'鎸囧畾宸ョ▼',
- projectnumber:'宸ョ▼鍙�',
- layoutnumber:'閽㈠寲鐗堝浘鍙�',
- numberglasses:'鐜荤拑鏁伴噺',
- specifytemperinga:'鏄惁鎸囧畾閽㈠寲璇ユ潯淇℃伅锛�',
- temperedswitch:'閽㈠寲寮�鍏�',
- dutyinformation:'鍊肩彮淇℃伅',
- process:'宸ュ簭',
- team:'鐝粍',
- basic:'璁惧',
+ sureadd: '纭娣诲姞',
+ sureadda: '鏄惁纭娣诲姞锛�',
+ zailong: '鍦ㄧ涓�',
+ rengongxp: '浜哄伐涓嬬墖',
+ up: '涓婁竴椤�',
+ down: '涓嬩竴椤�',
+ now: '褰撳墠椤垫樉绀�',
+ tit: '鏉℃暟鎹�',
+ temperingqueries: '閽㈠寲鏌ヨ',
+ specifytempering: '鎸囧畾涓�鐐�',
+ specifyout: '鎸囧畾浜哄伐鍑虹墖',
+ specifyengineerid: '鎸囧畾宸ョ▼',
+ projectnumber: '宸ョ▼鍙�',
+ layoutnumber: '閽㈠寲鐗堝浘鍙�',
+ numberglasses: '鐜荤拑鏁伴噺',
+ specifytemperinga: '鏄惁鎸囧畾閽㈠寲璇ユ潯淇℃伅锛�',
+ temperedswitch: '閽㈠寲寮�鍏�',
+ dutyinformation: '鍊肩彮淇℃伅',
+ process: '宸ュ簭',
+ team: '鐝粍',
+ basic: '璁惧',
makesure:'纭淇濆瓨',
// cancel:'鍙栨秷',
temperingtotal:'閽㈠寲鐐夋暟锛�',
@@ -563,4 +564,24 @@
inquire :'鏌ヨ',
station :'宸ヤ綅',
},
+ Mounting:{
+ previewproject :'閫夋嫨棰勮宸ョ▼',
+ loadinglinea :'涓婄墖绾�',
+ loadingline :'涓婄墖绾匡細',
+ inloadingline :'璇烽�夋嫨涓婄墖绾�',
+ oneloadingline :'涓�鍙蜂笂鐗囩嚎',
+ twoloadingline :'浜屽彿涓婄墖绾�',
+ waiting :'绛夊緟涓�',
+ setparameters :'璁剧疆鍙傛暟',
+ project :'宸ョ▼鍙�',
+ projecta :'宸ョ▼鍙凤細',
+ width :'鍘熺墖瀹�',
+ height :'鍘熺墖楂�',
+ thickness :'鍘熺墖鍘�',
+ projectnumber :'宸ョ▼鍘熺墖搴忓彿',
+ state :'鐘舵��',
+ createtime :'鍒涘缓鏃堕棿',
+ all :'鍏ㄩ��',
+
+ }
}
\ No newline at end of file
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index e2f4b57..5528ee9 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -29,60 +29,66 @@
})
router.push('/login')
}
-// const quit = async () => {
-// try {
-// store.$patch({user: null})
-// const response = await request.post('/loadGlass/sys/user/logout')
-// if (response.code === 200) {
-// console.log('鐧诲嚭鎴愬姛');
-// } else {
-// // 澶勭悊閿欒鎯呭喌
-// console.error('鐧诲嚭澶辫触', response);
-// }
-// }
-// catch (error) {
-// // 澶勭悊閿欒
-// console.error(error);
-// }
-// }
-// store.createWebSocket();
-// function quit() {
-// userStore.$patch({
-// user: null,
-// })
-// // router.push('/login')
-// request.get("/loadGlass/sys/user/login").then((res) => {
-// if (res.code === 200) {
-// ElMessage.success(res.msg);
-// console.log(res.data);
-// } else {
-// ElMessage.warning(res.msg);
-// // router.push("/login");
-// }
-// });
-// }
-
-
function replaceChineseWithEnglish(menuData) {
+ // 瀹氫箟涓縿鏂囧鐓у叧绯诲璞�
+ const translation = {
+ '涓婄墖鏈�': '小褌芯谢 蟹邪谐褉褍蟹泻懈',
+ '涓婄墖': '袙械褉褏薪褟褟 褔邪褋褌褜',
+ '鎺扮墖/璇嗗埆': '袪邪蟹谢芯屑/懈写械薪褌懈褎懈泻邪褑懈褟',
+ '鍗у紡缂撳瓨': ' 袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉',
+ '纾ㄨ竟鍓嶅崸寮忕紦瀛�': '袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉 锌械褉械写 褕谢懈褎芯胁泻芯泄',
+ '涓嬬墖鍗у紡缂撳瓨': '袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉 褋褌械泻谢邪 褉邪蟹谐褉褍蟹泻懈',
+ '纾ㄨ竟锛堝喎鍔犲伐锛�': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',
+ '1绾跨(杈�(鍐峰姞宸�)': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 1 谢懈薪懈懈 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',
+ '2绾跨(杈�(鍐峰姞宸�)': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 2 谢懈薪懈懈 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',
+ '澶х悊鐗囩': '袘褍褎械褉薪邪褟 褋懈褋褌械屑邪',
+ '閽㈠寲': '袟邪泻邪谢泻邪',
+ '閽㈠寲鍓�': '袩械褉械写 蟹邪泻邪谢泻懈',
+ '閽㈠寲鍚�': '袩芯褋谢械 蟹邪泻邪谢泻懈',
+ '涓嬬墖鍙�': '小褌芯谢 褉邪蟹谐褉褍蟹泻懈',
+ '绯荤粺绠$悊': '校锌褉邪胁谢械薪懈械 褋懈褋褌械屑芯泄',
+ '鐢ㄦ埛绠$悊': '校锌褉邪胁谢械薪懈械 锌芯谢褜蟹芯胁邪褌械谢械屑',
+ '鏉冮檺绠$悊': '校锌褉邪胁谢械薪懈械 锌芯谢薪芯屑芯褔懈褟屑懈',
+ '瑙掕壊绠$悊': '校锌褉邪胁谢械薪懈械 褉芯谢褜褞',
+ '鍙鍖栫郴缁�': '袙懈蟹褍邪谢褜薪邪褟 褋懈褋褌械屑邪',
+ '鎶ュ伐绠$悊': '校锌褉邪胁谢械薪懈械 芯褌褔械褌薪芯褋褌褜褞',
+ '浠撳偍涓績': '小泻谢邪写褋泻芯泄 褑械薪褌褉',
+ '鍘熺墖浠撳偍': '小泻谢邪写 褋褘褉褜褟',
+ };
+ menuData.forEach(menu => {
+ menu.menuName = translation[menu.menuName] || menu.menuName;
+ // if (menu.children) {
+ menu.children && menu.children.forEach(submenu => {
+ submenu.menuName = translation[submenu.menuName] || submenu.menuName;
+ });
+ // }
+ });
+}
+function replaceChineseWithRussian(menuData) {
// 瀹氫箟涓嫳鏂囧鐓у叧绯诲璞�
const translation = {
- '涓婄墖鏈�': '小褌芯谢 蟹邪谐褉褍蟹泻懈',
- '鎺扮墖/璇嗗埆': '袪邪蟹谢芯屑/懈写械薪褌懈褎懈泻邪褑懈褟',
- '鍗у紡缂撳瓨': ' 袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉',
- '纾ㄨ竟鍓嶅崸寮忕紦瀛�': '袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉 锌械褉械写 褕谢懈褎芯胁泻芯泄',
- '涓嬬墖鍗у紡缂撳瓨': '袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉 褋褌械泻谢邪 褉邪蟹谐褉褍蟹泻懈',
- '纾ㄨ竟锛堝喎鍔犲伐锛�': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',
- '1绾跨(杈�(鍐峰姞宸�)': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 1 谢懈薪懈懈 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',
- '2绾跨(杈�(鍐峰姞宸�)': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 2 谢懈薪懈懈 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',
- '澶х悊鐗囩': '袘褍褎械褉薪邪褟 褋懈褋褌械屑邪',
- '閽㈠寲': '袟邪泻邪谢泻邪',
- '閽㈠寲鍓�': '袩械褉械写 蟹邪泻邪谢泻懈',
- '閽㈠寲鍚�': '袩芯褋谢械 蟹邪泻邪谢泻懈',
- '涓嬬墖鍙�': '小褌芯谢 褉邪蟹谐褉褍蟹泻懈',
- '绯荤粺绠$悊': '校锌褉邪胁谢械薪懈械 褋懈褋褌械屑芯泄',
- '鐢ㄦ埛绠$悊': '校锌褉邪胁谢械薪懈械 锌芯谢褜蟹芯胁邪褌械谢械屑',
- '鏉冮檺绠$悊': '校锌褉邪胁谢械薪懈械 锌芯谢薪芯屑芯褔懈褟屑懈',
- '瑙掕壊绠$悊': '校锌褉邪胁谢械薪懈械 褉芯谢褜褞',
+ '涓婄墖鏈�': 'Loading Machine',
+ '涓婄墖': 'Start showing a movie',
+ '鎺扮墖/璇嗗埆': 'Breaking /Identification',
+ '鍗у紡缂撳瓨': 'Horizontal cache',
+ '纾ㄨ竟鍓嶅崸寮忕紦瀛�': 'Horizontal buffer before edge grinding',
+ '涓嬬墖鍗у紡缂撳瓨': 'Offline horizontal cache',
+ '纾ㄨ竟锛堝喎鍔犲伐锛�': 'Grinding edge (cold processing)',
+ '1绾跨(杈�(鍐峰姞宸�)': '1-line edge grinding (cold processing)',
+ '2绾跨(杈�(鍐峰姞宸�)': '2-line edge grinding (cold processing)',
+ '澶х悊鐗囩': 'Dali slice cage',
+ '閽㈠寲': 'Toughened',
+ '閽㈠寲鍓�': 'Before Tempering',
+ '閽㈠寲鍚�': 'After Tempering',
+ '涓嬬墖鍙�': 'Next Stage',
+ '绯荤粺绠$悊': 'System Management',
+ '鐢ㄦ埛绠$悊': 'User Management',
+ '鏉冮檺绠$悊': 'Rights Management',
+ '瑙掕壊绠$悊': 'Roles',
+ '鍙鍖栫郴缁�': 'visualization system',
+ '鎶ュ伐绠$悊': 'Job reporting management',
+ '浠撳偍涓績': 'Storage Center',
+ '鍘熺墖浠撳偍': 'Original film storage',
};
menuData.forEach(menu => {
menu.menuName = translation[menu.menuName] || menu.menuName;
@@ -96,32 +102,15 @@
//鎻愬彇鑿滃崟妯″潡鍒楄〃
let menuList = $ref([])
-// onMounted(async () => {
-// try {
-// const res = await request.get('/loadGlass/sys/menu/getMenuTree'); // 鍋囪 request.get 杩斿洖 Promise
-// if (res.code == 200) {
-// // 浣跨敤 value 灞炴�ф潵淇敼 ref 寮曠敤鐨勫��
-// menuList.value = deepClone(res.data);
-// const language = $i18n.locale;
-// if (language === 'en') {
-// replaceChineseWithEnglish(menuList.value); // 浼犲叆 ref 鐨� value
-// }
-// console.log(res.data.token); // 濡傛灉 res.data 涓湁 token 鐨勮瘽
-// } else {
-// ElMessage.warning(res.msg);
-// router.push('/login');
-// }
-// } catch (error) {
-// // 澶勭悊璇锋眰閿欒
-// console.error('鑾峰彇鑿滃崟鍒楄〃鏃跺嚭閿�:', error);
-// }
-// });
request.get('/loadGlass/sys/menu/getMenuTree').then((res) => {
if (res.code == 200) {
menuList = res.data
console.log(language.value)
+ // translateMenu(menuList.value, language.value);
if (language.value === 'en') {
-
+ replaceChineseWithRussian(menuList);
+ }
+ if (language.value === 'py') {
replaceChineseWithEnglish(menuList);
}
} else {
@@ -169,7 +158,7 @@
<el-header>
<div style="height: 100%;width: 100%;display: flex;background-color: #fff;">
<img src="../assets/northGlass.ico"
- alt=""
+ alt="" @click="toggleCollapse"
style="max-width: 100%;max-height: 100%">
<h3 style="margin: 1rem ;font-weight: bold;width: 33vw;"> {{ $t('main.titleFirst') }}{{ userName }}{{ $t('main.titleLast') }}</h3>
<span style="height: 70%;width: 78vw;margin-top: 1rem;">
@@ -187,11 +176,11 @@
<SwitchButton size=""/>{{ $t('main.quit') }}
</el-icon>
</el-button>
- <div class="header-left">
+ <!-- <div class="header-left">
<el-button @click="toggleCollapse" style="height: 30px;">
<el-icon><Expand /></el-icon>
</el-button>
- </div>
+ </div> -->
</span>
</div>
</el-header>
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index f492054..b62dc2c 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -3,7 +3,6 @@
// import User from '../views/sys/User.vue'
// import Role from '../views/sys/Role.vue'
// import Menu from '../views/sys/Menu.vue'
-
const router = createRouter({
history: createWebHashHistory(),
routes: [
@@ -17,6 +16,11 @@
path: '/login',
name: 'login',
component: () => import('../views/LoginView.vue')
+ },
+ {
+ path: '/new-page', // 鏂板鐨勬棤闇�鐧诲綍鐨勯〉闈�
+ name: 'newPage',
+ component: () => import('../views/NewPage.vue')
},
{
path: '/main',
@@ -68,13 +72,18 @@
/*----------- 涓婄墖鏈� ----------------*/
{
path: 'Returns',
- name: 'Returns',
- component: () => import('../views/Returns/returns.vue'),
+ name: 'return',
+ component: () => import('../views/Returns/return.vue'),
children:[
{
path: '/Returns/returns',
name: 'returns',
component: () => import('../views/Returns/returns.vue')
+ },
+ {
+ path: '/Returns/upreturns',
+ name: 'upreturns',
+ component: () => import('../views/Returns/upreturns.vue')
},
]
},
@@ -302,7 +311,7 @@
},
{
path: '',
- redirect: '/returns/returns'
+ redirect: '/Returns/returns'
}
]
},
@@ -315,4 +324,13 @@
]
})
+// 瀵艰埅瀹堝崼
+router.beforeEach((to, from, next) => {
+ const isAuthenticated = !!localStorage.getItem('authToken'); // 鍋囪杩欐槸浣犵殑鐧诲綍鐘舵�佹鏌ラ�昏緫
+ if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {
+ next({ name: 'login' }); // 濡傛灉闇�瑕佺櫥褰曚絾鏈櫥褰曪紝鍒欓噸瀹氬悜鍒扮櫥褰曢〉闈�
+ } else {
+ next(); // 鍚﹀垯缁х画瀵艰埅
+ }
+});
export default router
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index 6431f47..40a1353 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -130,7 +130,8 @@
placeholder=" "
style="float: right;width: 9rem">
<el-option value="zh" label="涓枃" />
- <el-option value="en" label="袪褍褋褋泻懈泄 褟蟹褘泻" />
+ <el-option value="py" label="袪褍褋褋泻懈泄 褟蟹褘泻" />
+ <el-option value="en" label="English" />
</el-select>
<el-form @submit.native.prevent
ref="ruleFormRef"
diff --git a/UI-Project/src/views/NewPage.vue b/UI-Project/src/views/NewPage.vue
new file mode 100644
index 0000000..6fd5636
--- /dev/null
+++ b/UI-Project/src/views/NewPage.vue
@@ -0,0 +1,151 @@
+<template>
+ <div>
+ <div style="display: flex;">
+ <div style="margin-left: 50px;margin-top: 15px;font-size:large">宸ョ▼鍙�:</div>
+<el-input v-model="current" style="margin-left: 20px;margin-top: 15px;width: 240px" placeholder="璇疯緭鍏ュ伐绋嬪彿" @input="updateUrl"/>
+ <el-button style="margin-top: 15px;margin-left: 15px;" type="primary" @click="fetchData">鏌ヨ</el-button>
+ </div>
+ <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;margin-right: 10px;width: 1850px;" height="900" v-loading="loading">
+ <div v-for="(row, rowIndex) in divsData" :key="rowIndex" class="row">
+ <div v-for="(rect, colIndex) in row" :key="colIndex" class="div-container">
+ <el-scrollbar height="430px" width="900px" style="background-color: #e9e9eb;">
+ <div style="position: relative;width: 100%;height: 100%;">
+ <div
+ v-for="(rect, index) in getAdjustedRectsForRow(rowIndex)"
+ :key="index"
+ class="rect"
+ :style="{ position: 'absolute',
+ top: `${rect.y_axis}px`,
+ left: `${rect.x_axis}px`,
+ width: `${rect.width}px`,
+ height: `${rect.height}px`,
+ backgroundColor: '#911005'}">
+ <div class="centered-text">
+ <div style="font-size: 15px;font-weight: bold;">{{ rect.process_id }}</div>
+ <div style="font-size: 15px;font-weight: bold;">{{ rect.project_no }}</div>
+ <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div>
+ </div>
+ </div>
+ </div>
+ </el-scrollbar>
+ </div>
+ </div>
+ </el-card>
+ </div>
+</template>
+
+<script setup>
+import {onMounted, ref, watch} from 'vue';
+import {useRoute, useRouter} from 'vue-router';
+import request from "@/utils/request"
+
+const route = useRoute();
+const router = useRouter();
+const current = ref(route.query.current || '');
+const adjustedRects = ref([]);
+const loading = ref(false);
+const adjustedRectsPerRow = ref([]);
+const divsData = ref([]);
+const rawData = ref([]);
+onMounted(() => {
+ if (route.query.current) {
+ current.value = route.query.current;
+ console.log(current.value);
+ window.localStorage.setItem('current', current.value)
+ }
+ });
+ onMounted(async () => {
+ try {
+ let current = window.localStorage.getItem('current')
+ const response = await request.post(`/cacheGlass/taskCache/temperingTerritory?current=${current}`);
+ if (response.code === 200) {
+ rawData.value = response.data;
+ console.log(rawData.value);
+ processData(rawData.value);
+ } else {
+ // ElMessage.warning(res.msg)
+ }
+ } catch (error) {
+ // console.error('Error fetching rects :', error);
+ }
+ });
+ watch(
+ current,
+ (newVal) => {
+ router.replace({ query: { current: newVal } });
+ },
+ { immediate: true } // 浣跨敤 immediate: true 鏉ョ‘淇濆湪缁勪欢鎸傝浇鏃剁珛鍗虫墽琛屼竴娆� watch 鍥炶皟
+ );
+ const fetchData = async () => {
+ try {
+ const response = await request.post(`/cacheGlass/taskCache/temperingTerritory?current=${current.value}`);
+ if (response.code === 200) {
+ rawData.value = response.data;
+ console.log(rawData.value);
+ processData(rawData.value);
+ }
+ } catch (error) {
+ console.error('Failed to fetch data:', error);
+ } finally {
+ loading.value = false;
+ }
+};
+ function processData(data) {
+ const groupedData = [];
+ for (let i = 0; i < data.length; i += 2) {
+ groupedData.push(data.slice(i, i + 2));
+ }
+ divsData.value = groupedData;
+adjustedRectsPerRow.value = divsData.value.map(() => []);
+ divsData.value.forEach((row, rowIndex) => {
+ const rawRowData = rawData.value[rowIndex];
+ if (rawRowData) {
+adjustedRectsPerRow.value[rowIndex] = rawRowData.map(rect => {
+ let adjustedWidth, adjustedHeight,newX;
+ if (rect.rotate_angle === 0) {
+ newX = rect.olHeight -(rect.y_axis + rect.height);
+ adjustedWidth = rect.height * (900/rect.olHeight);
+ adjustedHeight = rect.width * (430/rect.olWidth);
+ } else {
+ newX = rect.olHeight -(rect.y_axis + rect.width);
+ adjustedWidth = rect.width * (900/rect.olHeight);
+ adjustedHeight = rect.height * (430/rect.olWidth);
+ }
+ let adjustedRect = {
+ ...rect,
+ // x_axis: rect.y_axis * (959.35/rect.olHeight),
+ y_axis: rect.x_axis * (430/rect.olWidth),
+ x_axis: newX * (900/rect.olHeight),
+ // y_axis: rect.x_axis * (430/rect.olWidth),
+ width: adjustedWidth,
+ height: adjustedHeight,
+ widtha: rect.width,
+ heighta: rect.height,
+ };
+ return adjustedRect;
+ });
+ }
+ });
+}
+// 鏂规硶鐢ㄤ簬鑾峰彇褰撳墠琛岀殑adjustedRects
+function getAdjustedRectsForRow(rowIndex) {
+ return adjustedRectsPerRow.value[rowIndex] || [];
+}
+ </script>
+
+
+ <style scoped>
+.row {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 20px;
+}
+
+.div-container {
+ width: 900px;
+ float: left;
+ background-color: #f4f4f5;
+ height: 430px;
+ box-sizing: border-box;
+}
+ </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index d875780..f6b504c 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -272,7 +272,7 @@
widtha = rect.width;
heighta = rect.height;
}
- if (rect.angle === 0) {
+ if (rect.angle === 0) {
adjustedWidth = widtha * scaleFactor;
adjustedHeight = heighta * scaleFactory;
// adjustedWidtha = widtha;
diff --git a/UI-Project/src/views/Returns/return.vue b/UI-Project/src/views/Returns/return.vue
new file mode 100644
index 0000000..d0567d3
--- /dev/null
+++ b/UI-Project/src/views/Returns/return.vue
@@ -0,0 +1,49 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+let indexFlag=$ref(1)
+function changeRouter(index){
+ indexFlag=index
+}
+
+</script>
+
+<template>
+ <!-- <div id="main-div"> -->
+
+
+ <div id="main-body">
+ <router-view />
+ </div>
+ <!-- </div> -->
+</template>
+
+<style scoped>
+#main-div{
+ width: 100%;
+ height: 100%;
+}
+#div-title{
+ height: 2%;
+ width: 100%;
+}
+#searchButton{
+ margin-top: -5px;
+ margin-left: 1rem;
+}
+/* #searchButton1{
+//margin-left: 10rem;
+} */
+/*main-body鏍峰紡*/
+#main-body{
+ width: 100%;
+ height: 95%;
+ /* margin-top: 1%; */
+}
+#select{
+ margin-left:0.5rem;
+}
+:deep(.indexTag .el-breadcrumb__inner){
+ color: #5CADFE !important;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index c5ffe12..91bf66f 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -228,10 +228,10 @@
const requestData = {
state: 100
};
-
-
-
-
+
+
+
+
const selectgong = async (queryString: string) => {
try {
const response = await request.post('/loadGlass/optimizeProject/listByState',{
@@ -559,7 +559,7 @@
// window.location.reload()
blindb.value = false;
tableData.splice([]);
-
+
// 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
ElMessage.error(response.message);
}
@@ -613,7 +613,7 @@
const handleBindb = (row) => {
blindb.value = true;
};
-
+
// 鍒犻櫎
const handleBindRacka = (row) => {
workstationId.value = row.workstationId;
diff --git a/UI-Project/src/views/Returns/upreturns.vue b/UI-Project/src/views/Returns/upreturns.vue
new file mode 100644
index 0000000..93d9f1d
--- /dev/null
+++ b/UI-Project/src/views/Returns/upreturns.vue
@@ -0,0 +1,1115 @@
+<script lang="ts" setup>
+import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
+import {useRouter} from "vue-router"
+import {ElMessage} from 'element-plus'
+import {useI18n} from 'vue-i18n'
+import {host, WebSocketHost} from '@/utils/constants'
+import request from "@/utils/request"
+import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
+
+const router = useRouter()
+const {t} = useI18n()
+const selectValuesa = reactive([]);
+
+
+const dialogFormVisible = ref(false)
+const blind = ref(false)
+const blinda = ref(false)
+const blindb = ref(false)
+const add = ref(false)
+const adda = ref(false)
+const flake = ref(false)
+const flakea = ref(false)
+const flakeb = ref(false)
+const flakec = ref(false)
+const dialoglea = ref(false)
+const tableDatax = ref([])
+const user = ref('');
+const projectNo = ref('');
+const workstationId = ref('');
+const id = ref('');
+const patternHeight = ref('');
+const patternWidth = ref('');
+const filmsId = ref('');
+const patternThickness = ref('');
+const number = ref('');
+const canSelectProject = ref(true);
+const canStartLoading = ref(false);
+const ida = ref(null);
+const selectedProjectNo = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿
+const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿
+const selectedValue = ref(''); // 褰撳墠閫変腑鐨勫
+const selectedValuea = ref('');
+const selectedValueb = ref('');
+const selectedValuec = ref('');
+// const upstatus = ref('涓婄墖鏈烘墜鍔ㄧ姸鎬侊細'); // 鍋囪杩欎釜鐢ㄤ簬鏄剧ず鑷姩/鎵嬪姩鐘舵��
+const upstatus = ref(t('basicData.machineaa'));
+const cuttingMachine = ref(''); // 鍋囪杩欎釜鐢ㄤ簬瀛樺偍鍚庣杩斿洖鐨勭姸鎬佸�硷紙0鎴�1锛�
+const cuttingMachineStatusColor = ref('#911005'); // 鐢ㄤ簬鍔ㄦ�佽缃甶鏍囩鐨勮儗鏅壊
+const inKageWord = ref(0); // 鐢ㄤ簬瀛樺偍瑕佷紶閫掔粰鎺ュ彛鐨刬nKageWord鍊�
+const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃
+const selectOptions = ref<Array<any>>([]); // 涓嬫媺閫夐�夐」鏁扮粍
+const selectOptionsa = ref<Array<any>>([]); // 涓嬫媺閫夐�夐」鏁扮粍
+const selectOptionsb = ref<Array<any>>([]); // 涓嬫媺閫夐�夐」鏁扮粍
+const selectOptionsc = ref<Array<any>>([]); // 涓嬫媺閫夐�夐」鏁扮粍
+const tableDataa = ref([])
+const tableData = reactive([]);
+const fetchTableData = async () => {
+ try {
+ const response = await request.get("/loadGlass/up-patten-usage/prioritylist");
+ // 妫�鏌ュ搷搴旂姸鎬�
+ if (response.code === 200) {
+ // 鏇存柊琛ㄦ牸鏁版嵁
+ console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
+ tableData.splice(0, tableData.length, ...response.data);
+ // window.localStorage.setItem('engineeringId', response.data[0].engineeringId)
+ // 鑾峰彇鍞竴鍊�
+ const uniqueWidths = new Set(response.data.map(item => item.width));
+ const uniqueHeights = new Set(response.data.map(item => item.height));
+ const uniqueFilmsIds = new Set(response.data.map(item => item.filmsId));
+ const uniqueThicknesses = new Set(response.data.map(item => item.thickness));
+
+ selectOptions.value = Array.from(uniqueWidths).map(width => ({
+ value: width, // 鍋囪杩欐槸浣犳兂瑕佷綔涓簐alue鐨勫睘鎬�
+ label: width, // 鍋囪杩欐槸浣犳兂瑕佹樉绀虹殑label
+ }));
+ selectOptionsa.value = Array.from(uniqueHeights).map(height => ({
+ value: height,
+ label: height,
+ }));
+ selectOptionsb.value = Array.from(uniqueFilmsIds).map(filmsId => ({
+ value: filmsId,
+ label: filmsId,
+ }));
+ selectOptionsc.value = Array.from(uniqueThicknesses).map(thickness => ({
+ value: thickness,
+ label: thickness,
+ }));
+ } else {
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
+ // ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
+ }
+};
+const handlezhiban = () => {
+ dialoglea.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+ fetchFlowCardId();
+};
+const selectproject = () => {
+ dialogFormVisible.value = true;
+ selectgong();
+};
+// 鍊肩彮淇℃伅
+const fetchFlowCardId = async () => {
+ try {
+ const response = await request.post('/loadGlass/work_assignment/selectWorkAssignment', {
+ line: 2001,
+ workingProcedure: '鍐峰姞宸�'
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data;
+ console.log(tableDatax.value);
+ console
+ } else {
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+}
+const handleConfirmb = async () => {
+ const response = await request.post("/loadGlass/work_assignment/updateWorkAssignment", tableDatax.value)
+ if (response.code === 200) {
+ ElMessage.success(response.message);
+ dialoglea.value = false;
+ } else {
+ ElMessage.error(response.message);
+ }
+};
+onMounted(() => {
+ list('');
+ fetchOptions('');
+ socket = initializeWebSocket(socketUrl, handleMessage);
+});
+onUnmounted(() => {
+ if (socket) {
+ closeWebSocket(socket);
+ }
+});
+const list = async () => {
+ try {
+ const response = await request.get('/loadGlass/LoadGlass/list');
+ if (response.code == 200) {
+ tableDataa.value = response.data
+ if (tableDataa.value.length === 4) {
+ if (tableDataa.value[0].patternHeight > 0 && tableDataa.value[0].patternWidth > 0 && tableDataa.value[0].number > 0) {
+ flake.value = true;
+ }
+ if (tableDataa.value[1].patternHeight > 0 && tableDataa.value[1].patternWidth > 0 && tableDataa.value[1].number > 0) {
+ flakea.value = true;
+ }
+ if (tableDataa.value[2].patternHeight > 0 && tableDataa.value[2].patternWidth > 0 && tableDataa.value[2].number > 0) {
+ flakeb.value = true;
+ }
+ if (tableDataa.value[3].patternHeight > 0 && tableDataa.value[3].patternWidth > 0 && tableDataa.value[3].number > 0) {
+ flakec.value = true;
+ }
+ }
+ } else {
+ ElMessage.warning(response.data);
+ }
+ } catch (error) {
+ console.error('Error fetching options:', error);
+ }
+};
+// 鍋囪杩欐槸鎮ㄧ殑鍝嶅簲澶勭悊鍑芥暟
+// request.get("/loadGlass/LoadGlass/list").then((res) => {
+// if (res.code == 200) {
+// tableDataa.value = res.data
+// if (tableDataa.value.length === 4) {
+// if (tableDataa.value[0].patternHeight > 0) {
+// flake.value = true;
+// }
+// if (tableDataa.value[1].patternHeight > 0) {
+// flakea.value = true;
+// }
+// if (tableDataa.value[2].patternHeight > 0) {
+// flakeb.value = true;
+// }
+// if (tableDataa.value[3].patternHeight > 0) {
+// flakec.value = true;
+// }
+// }
+// } else {
+// ElMessage.warning(res.message)
+// // router.push("/login")
+// }
+// });
+//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
+const titleSelectJson = ref({
+ processType: [],
+})
+const titleSelectJsona = ref({
+ processTypea: [],
+})
+let socket = null;
+const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
+// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
+const handleMessage = (data) => {
+ if (data.prioritylist != null) {
+ tableData.splice(0, tableData.length, ...data.prioritylist[0]);
+ }
+ if (data.list != null) {
+ tableDataa.value = data.list[0]
+ }
+ if (data.engineering) {
+ if (Array.isArray(data.engineering) && data.engineering.length !== 0) {
+ canSelectProject.value = false;
+ canStartLoading.value = true;
+ } else {
+ canSelectProject.value = true;
+ canStartLoading.value = false;
+ }
+ }
+ if (data.InkageStatus) {
+ if (data.InkageStatus != null) {
+ const status = data.InkageStatus[0];
+ cuttingMachine.value = status;
+ upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
+ cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
+ inKageWord.value = status === '1' ? 0 : 1;
+ }
+ }
+};
+const requestData = {
+ state: 100
+};
+
+
+const selectgong = async (queryString: string) => {
+ try {
+ const response = await request.post('/loadGlass/optimizeProject/listByState', {
+ ...requestData,
+ query: queryString
+ })
+ if (response.code == 200) {
+ titleSelectJson.value.processType = response.data;
+ } else {
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+}
+const fetchOptions = async (queryString: string) => {
+ try {
+ // 鍙戦�佽姹傚埌鍚庣鎺ュ彛
+ const response = await request.post('/loadGlass/optimizeProject/listByState', {
+ ...requestData,
+ query: queryString // 灏嗘煡璇㈠瓧绗︿覆浣滀负鍙傛暟浼犻��
+ });
+ if (response.code == 200) {
+ // titleSelectJson.value.processType = response.data;
+ console.log(response.data);
+
+ } else {
+ ElMessage.warning(response.data);
+ }
+ } catch (error) {
+ console.error('Error fetching options:', error);
+ }
+};
+// 澶勭悊鐢ㄦ埛杈撳叆鍙樺寲鐨勬柟娉�
+const handleInputChange = async (value: string) => {
+ if (value) {
+ await fetchOptions(value);
+ } else {
+ options.value = []; // 娓呯┖閫夐」鍒楄〃
+ }
+};
+// 澶勭悊鐢ㄦ埛杈撳叆鍙樺寲鐨勬柟娉�
+const handleInputChangea = async (value: string) => {
+ if (value) {
+ await fetchOptionsa(value);
+ } else {
+ options.value = []; // 娓呯┖閫夐」鍒楄〃
+ }
+};
+onBeforeUnmount(() => {
+ closeWebSocket();
+});
+// 娣诲姞
+const handleBindRack = (row) => {
+ workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+ ida.value = row.id;
+ add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 娣诲姞
+const handleConfirm = async () => {
+ // console.log('id.value:', id.value);
+ if ((ida.value === 2 || ida.value === 4) && (parseInt(selectedValuea.value, 10) >= 2700)) {
+ try {
+ const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
+ id: workstationId.value,
+ workstationId: workstationId.value,
+ patternHeight: selectedValuea.value,
+ patternWidth: selectedValue.value,
+ filmsId: selectedValueb.value,
+ patternThickness: selectedValuec.value,
+ number: number.value
+ });
+ // window.localStorage.setItem('workstationId', workstationId.value)
+ // window.localStorage.setItem('patternHeight', selectedValuea.value)
+ // window.localStorage.setItem('patternWidth', selectedValue.value)
+ // window.localStorage.setItem('number', number.value)
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ // window.location.reload()
+ add.value = false;
+ tableDataa.value = response.data;
+ // let workstationId = window.localStorage.getItem('workstationId')
+ // let patternHeight = window.localStorage.getItem('patternHeight')
+ // let patternWidth = window.localStorage.getItem('patternWidth')
+ // let number = window.localStorage.getItem('number')
+ if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
+ flake.value = true
+ } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2') {
+ flakea.value = true
+ } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3') {
+ flakeb.value = true
+ } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4') {
+ flakec.value = true
+ }
+ // if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '1') {
+ // flake.value = true
+ // } else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '2'){
+ // flakea.value = true
+ // }else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '3'){
+ // flakeb.value = true
+ // }else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '4'){
+ // flakec.value = true
+ // }
+ selectedValuea.value = '';
+ selectedValue.value = '';
+ selectedValueb.value = '';
+ selectedValuec.value = '';
+ number.value = '';
+ list()
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊璇锋眰閿欒
+ }
+ } else if (ida.value === 1 || ida.value === 3) {
+ try {
+ const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
+ id: workstationId.value,
+ workstationId: workstationId.value,
+ patternHeight: selectedValuea.value,
+ patternWidth: selectedValue.value,
+ filmsId: selectedValueb.value,
+ patternThickness: selectedValuec.value,
+ number: number.value
+ });
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ // window.location.reload()
+ add.value = false;
+ tableDataa.value = response.data;
+ if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
+ flake.value = true
+ } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2') {
+ flakea.value = true
+ } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3') {
+ flakeb.value = true
+ } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4') {
+ flakec.value = true
+ }
+ selectedValuea.value = '';
+ selectedValue.value = '';
+ selectedValueb.value = '';
+ selectedValuec.value = '';
+ number.value = '';
+ list()
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊璇锋眰閿欒
+ }
+ } else {
+ ElMessage({
+ type: 'info',
+ message: t('basicData.pause'),
+ })
+ }
+};
+// 鍒犻櫎
+const handleConfirma = async () => {
+ try {
+ const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
+ workstationId: workstationId.value,
+ patternHeight: 0,
+ patternWidth: 0,
+ filmsId: "",
+ patternThickness: 0,
+ number: 0
+ });
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ adda.value = false;
+ tableDataa.value = response.data;
+ // window.localStorage.setItem('workstationId', response.data.workstationId)
+ // let workstationId = window.localStorage.getItem('workstationId')
+ if (workstationId.value == '1') {
+ flake.value = false
+ } else if (workstationId.value == '2') {
+ flakea.value = false
+ } else if (workstationId.value == '3') {
+ flakeb.value = false
+ } else if (workstationId.value == '4') {
+ flakec.value = false
+ }
+ list()
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+};
+// 閫夋嫨宸ョ▼纭
+const handleup = async () => {
+ try {
+ const response = await request.post('/loadGlass/up-patten-usage/selectUpPattenUsage', {
+ engineerId: selectedProjectNo.value,
+ })
+ window.localStorage.setItem('engineeringId', selectedProjectNo.value)
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ // window.location.reload()
+ dialogFormVisible.value = false;
+ tableData.splice(0, tableData.length, ...response.data);
+ selectedProjectNo.value = ''
+ markingMachineStatus.value = '#911005';
+ cuttingMachineStatus.value = '#911005';
+ const uniqueWidths = new Set(response.data.map(item => item.width));
+ const uniqueHeights = new Set(response.data.map(item => item.height));
+ const uniqueFilmsIds = new Set(response.data.map(item => item.filmsId));
+ const uniqueThicknesses = new Set(response.data.map(item => item.thickness));
+ selectOptions.value = Array.from(uniqueWidths).map(width => ({
+ value: width,
+ label: width,
+ }));
+ selectOptionsa.value = Array.from(uniqueHeights).map(height => ({
+ value: height,
+ label: height,
+ }));
+ selectOptionsb.value = Array.from(uniqueFilmsIds).map(filmsId => ({
+ value: filmsId,
+ label: filmsId,
+ }));
+ selectOptionsc.value = Array.from(uniqueThicknesses).map(thickness => ({
+ value: thickness,
+ label: thickness,
+ }));
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ // ElMessage.error(response.msg);
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+}
+// 寮�濮嬩笂鐗�
+const handle = async () => {
+ if (markingMachineStatus.value === 'green' && cuttingMachineStatus.value === 'green') {
+ try {
+ let engineeringId = window.localStorage.getItem('engineeringId')
+ const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
+ engineerId: engineeringId,
+ state: 1,
+ })
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ // window.location.reload()
+ blind.value = false;
+ selectedProjectNoa.value = '';
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+ } else if (markingMachineStatus.value === '#911005' || cuttingMachineStatus.value === '#911005') {
+ // 鎻愮ず鐢ㄦ埛鎵撴爣鏈烘湭灏辩华
+ ElMessage.warning(t('basicData.pausea'));
+ }
+}
+// 鏆傚仠
+const handlea = async () => {
+ try {
+ let engineeringId = window.localStorage.getItem('engineeringId')
+ console.log(engineeringId);
+ if (engineeringId !== '') {
+ const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
+ engineeringId: engineeringId,
+ state: 0,
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ blinda.value = false;
+ // tableData.splice([]);
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ }
+ }
+ else {
+ ElMessage({
+ type: 'info',
+ message: t('basicData.infonull'),
+ })
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+}
+// 鍋滄浠诲姟
+const handleb = async () => {
+ try {
+ let engineeringId = window.localStorage.getItem('engineeringId')
+ console.log(engineeringId);
+ if (engineeringId !== '') {
+ const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
+ engineeringId: engineeringId,
+ state: 0,
+ })
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ // window.location.reload()
+ blindb.value = false;
+ tableData.splice([]);
+
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.message);
+ }
+ } else {
+ ElMessage({
+ type: 'info',
+ message: t('basicData.infonull'),
+ })
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+}
+onMounted(fetchTableData);
+
+function getStatusText(state: number) {
+ switch (state) {
+ case 0:
+ return t('basicData.waiting');
+ case 1:
+ return t('basicData.up');
+ case 2:
+ return t('basicData.up');
+ case 100:
+ return t('basicData.finish');
+ }
+}
+function getStatusType(state: number) {
+ switch (state) {
+ case 0:
+ return 'warning';
+ case 1:
+ return 'primary';
+ case 2:
+ return 'primary';
+ case 100:
+ return 'success';
+ }
+}
+// 寮�濮嬩笂鐗�
+const handleBind = (row) => {
+ blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 鏆傚仠
+const handleBinda = (row) => {
+ blinda.value = true;
+};
+// 鍋滄浠诲姟
+const handleBindb = (row) => {
+ blindb.value = true;
+};
+
+// 鍒犻櫎
+const handleBindRacka = (row) => {
+ workstationId.value = row.workstationId;
+ adda.value = true;
+};
+// 瀹氫箟涓�涓搷搴斿紡寮曠敤锛岀敤浜庡瓨鍌ㄩ鑹茬姸鎬�
+const markingMachineStatus = ref('#911005');
+const cuttingMachineStatus = ref('#911005');
+// 瀹氫箟涓�涓柟娉曟潵鏀瑰彉棰滆壊鐘舵��
+const confirmMarkingMachine = () => {
+ markingMachineStatus.value = 'green';
+};
+const confirmCuttingMachine = () => {
+ cuttingMachineStatus.value = 'green';
+};
+const toggleEnableState = async (row: any) => {
+ // 妫�鏌� id 鏄惁涓虹┖
+ if (!row.id) {
+ ElMessage.error(t('basicData.updatanull'));
+ return; // 濡傛灉 id 涓虹┖锛屽垯涓嶆墽琛屽悗缁搷浣�
+ }
+ const newState = row.state === 100 ? 0 : 100;
+ try {
+ // 鍙戦�佽姹傚埌鍚庣鏇存柊鐘舵��
+ const response = await request.post('/loadGlass/up-patten-usage/updateGlassState', {id: row.id, state: newState});
+ if (response.code === 200) {
+ ElMessage.success(response.message);
+ row.state = newState;
+ } else {
+ ElMessage.error(response.message);
+ }
+ } catch (error) {
+ // 澶勭悊璇锋眰閿欒
+ ElMessage.error(t('basicData.glassnull'));
+ }
+};
+// 涓婄墖鏈鸿仈鏈虹姸鎬�
+// const wsUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
+// const ws = new WebSocket(wsUrl);
+// ws.onopen = () => {
+// console.log('WebSocket杩炴帴宸叉墦寮�');
+// };
+
+// // 鐩戝惉WebSocket鐨勯敊璇簨浠�
+// ws.onerror = (error) => {
+// console.error('WebSocket鍙戠敓閿欒:', error);
+// };
+
+// // 鐩戝惉WebSocket鐨勫叧闂簨浠�
+// ws.onclose = (event) => {
+// if (event.wasClean) {
+// console.log('WebSocket杩炴帴宸叉甯稿叧闂�');
+// } else {
+// console.error('WebSocket杩炴帴寮傚父鍏抽棴');
+// }
+// };
+// // 鐩戝惉WebSocket鐨勬秷鎭簨浠�
+// ws.onmessage = (event) => {
+// try {
+// const data = JSON.parse(event.data.replace('<END>', '')); // 瑙f瀽娑堟伅涓篔SON
+// if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {
+// if(data.InkageStatus!=null){
+// const status = data.InkageStatus[0];
+// cuttingMachine.value = status;
+// upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
+// cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
+// inKageWord.value = status === '1' ? 0 : 1;
+// }
+// } else {
+// // 澶勭悊閿欒鎯呭喌鎴栨棤鏁堟暟鎹�
+// // console.error('鎺ユ敹鍒扮殑鏁版嵁鏃犳晥', data);
+// }
+// } catch (error) {
+// // console.error('瑙f瀽WebSocket娑堟伅鏃跺彂鐢熼敊璇�', error);
+// }
+// };
+const confirmCutting = async () => {
+ try {
+ const response = await request.post('/loadGlass/LoadGlass/updateMesInkageLoad',
+ inKageWord.value
+ );
+ if (response.code == 200) {
+ const status = response.data.status;
+ upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
+ cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
+ // 鏄剧ず鎴愬姛娑堟伅
+ ElMessage.success(response.message);
+ } else {
+ ElMessage.error(response.message || '璇锋眰澶辫触');
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error('璇锋眰鏃跺彂鐢熼敊璇�', error);
+ ElMessage.error('璇锋眰鏃跺彂鐢熼敊璇�');
+ }
+};
+</script>
+<template>
+ <div>
+ <div id="dotClass">
+ <div>{{ $t('basicData.laserprinting') }}</div>
+ <i :style="{ marginTop: '2px', backgroundColor: markingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
+ <el-button @click="confirmMarkingMachine" style="margin-left: 30px;margin-top: -3px;">{{
+ $t('basicData.yes')
+ }}
+ </el-button>
+ <div style="margin-left: 70px;">{{ $t('basicData.cuttingmachine') }}</div>
+ <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
+ <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;">{{
+ $t('basicData.yes')
+ }}
+ </el-button>
+ <div style="margin-left: 70px;">{{ upstatus }}</div>
+ <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
+ <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;">{{
+ $t('basicData.change')
+ }}
+ </el-button>
+
+ </div>
+ <el-button :disabled="!canSelectProject" style="margin-top: 5px;margin-left: 15px;" type="primary"
+ @click="selectproject">{{ $t('Mounting.previewproject') }}
+ </el-button>
+ <el-button :disabled="!canSelectProject"
+ :style="{ backgroundColor: canStartLoading ? 'green' : 'initial',color: canStartLoading ? 'white' : 'black', }"
+ style="margin-top: 5px;margin-left: 20px;" @click="handleBind">{{ $t('basicData.startloading') }}
+ </el-button>
+ <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="warning" @click="handleBinda">
+ {{ $t('basicData.stop') }}
+ </el-button>
+ <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">
+ {{ $t('searchOrder.dutyinformation') }}
+ </el-button>
+ <el-select v-model="selectValuesa[0]" clearable :placeholder="$t('film.taskstatus')"
+ style="margin-top: 5px;margin-left: 20px;">
+ <el-option :label="$t('film.built')" value="1"></el-option>
+ <el-option :label="$t('film.execution')" value="2"></el-option>
+ <el-option :label="$t('film.finish')" value="3"></el-option>
+ </el-select>
+ <el-select v-model="selectValuesa[1]" clearable :placeholder="$t('film.tasktype')"
+ style="margin-top: 5px;margin-left: 20px;">
+ <el-option :label="$t('film.stocke')" value="1"></el-option>
+ <el-option :label="$t('film.outbound')" value="2"></el-option>
+ <el-option :label="$t('film.dispatch')" value="3"></el-option>
+ </el-select>
+ <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{
+ $t('film.inquire')
+ }}
+ </el-button>
+ <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
+ <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+ <el-table
+ height="350"
+ ref="table"
+ :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
+ :data="tableData"
+ >
+ <el-table-column prop="layoutSequence" :label="$t('basicData.layoutSequence')" width="100" align="center"/>
+ <el-table-column prop="engineeringId" :label="$t('basicData.projectnumber')" width="200" align="center"/>
+ <el-table-column prop="width" :label="$t('basicData.glasswidth')" align="center"/>
+ <el-table-column prop="height" :label="$t('basicData.glassheight')" align="center"/>
+ <el-table-column prop="filmsId" :label="$t('basicData.coatingtypes')" align="center"/>
+ <el-table-column :label="$t('basicData.quantity')" align="center">
+ <template #default="{ row }">
+ <!-- 杩欓噷鎬绘槸鏄剧ず 1 -->
+ <span>{{ 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="thickness" :label="$t('basicData.thickness')" align="center"/>
+ <!-- <el-table-column
+ align="center"
+ label="鐘舵��"
+ min-width="80"
+ prop="state"
+ >
+ <template #default="scope">
+ <el-tag :type="getStatusType(scope.row.state)">
+ {{ getStatusText(scope.row.state) }}
+ </el-tag>
+ </template> -->
+ <el-table-column
+ align="center"
+ :label="$t('basicData.startstatus')"
+ min-width="80"
+ prop="state"
+ >
+ <template #default="scope">
+ <el-tag
+ :type="scope.row.state === 100 ? 'success' : 'warning'"
+ @click="toggleEnableState(scope.row)"
+ >
+ {{ scope.row.state === 100 ? $t('basicData.pass') : $t('basicData.waiting') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </el-card>
+ <el-dialog v-model="blind" top="30vh" width="25%" :title="$t('basicData.startfilm')">
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handle">
+ {{ $t('basicData.confirm') }}
+ </el-button>
+ <el-button @click="blind = false">{{ $t('basicData.cancel') }}</el-button>
+ </div>
+ </template>
+ </el-dialog>
+
+<el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')">
+ <el-table ref="table" style="margin-top: 20px;height: 300px;"
+ :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+ <el-table-column prop="line" fixed align="center" :label="$t('searchOrder.line')"/>
+ <el-table-column prop="workProcesses" fixed align="center" :label="$t('searchOrder.process')" />
+ <el-table-column prop="teamsGroupsName" align="center" :label="$t('searchOrder.team')">
+ <template #default="{ row }">
+ <el-input v-model="row.teamsGroupsName" autocomplete="off" min-width="150"/>
+ </template>
+ </el-table-column>
+ <el-table-column prop="deviceName" align="center" :label="$t('searchOrder.basic')">
+ <template #default="{ row }">
+ <el-input v-model="row.deviceName" autocomplete="off" min-width="150"/>
+ </template>
+ </el-table-column>
+ </el-table>
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">
+ {{ $t('searchOrder.add') }}
+ </el-button>
+ <el-button @click="dialoglea = false">{{ $t('searchOrder.cancel') }}</el-button>
+ </div>
+ </template>
+</el-dialog>
+ <el-dialog v-model="blinda" top="30vh" width="25%" :title="$t('basicData.whetherpause')">
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handlea">
+ {{ $t('basicData.confirm') }}
+ </el-button>
+ <el-button @click="blinda = false">{{ $t('basicData.cancel') }}</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ <!-- <el-dialog v-model="blindb" top="30vh" width="25%" title="鏄惁鍋滄浠诲姟?" >
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handleb">
+ 纭
+ </el-button>
+ <el-button @click="blindb = false">鍙栨秷</el-button>
+ </div>
+ </template>
+ </el-dialog> -->
+ <div id="parent">
+ <img src="../../assets/shangpian.png" alt=""
+ style="max-width: 40%;max-height: 40%;margin-top: 20px;margin-left: 340px;">
+ <div id="overlay" v-show="flake"></div>
+ <div id="overlaya" v-show="flakea"></div>
+ <div id="overlayb" v-show="flakeb"></div>
+ <div id="overlayc" v-show="flakec"></div>
+ </div>
+ <div style="margin-top: -300px;margin-left: 680px;">
+ <el-table :data="tableDataa" border style="width: 85%"
+ :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
+ >
+ <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60"/>
+ <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80"/>
+ <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80"/>
+ <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80"/>
+ <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80"/>
+ <el-table-column fixed="right" :label="$t('basicData.operate')" align="center" width="150">
+ <template #default="scope">
+ <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">{{
+ $t('basicData.add')
+ }}
+ </el-button>
+ <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">{{
+ $t('basicData.delete')
+ }}
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <el-dialog v-model="add" top="23vh" width="45%" :title="$t('basicData.addglass')">
+ <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+ <el-form size="mini" label-width="150px">
+ <el-form label-width="70px" label-position="right">
+ <el-row style="margin-top: -15px;margin-bottom: -2px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item :label="$t('basicData.widtha')" :required="true" style="width: 14vw">
+ <el-select
+ v-model="selectedValue"
+ filterable
+ clearable
+ :placeholder="$t('basicData.selectwidth')"
+ style="width: 220px"
+ @input="handleInputChangea"
+ >
+ <el-option
+ v-for="item in selectOptions"
+ :key="item.id"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+ </div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item :label="$t('basicData.heighta')" :required="true" style="width: 14vw">
+ <el-select
+ v-model="selectedValuea"
+ filterable
+ clearable
+ :placeholder="$t('basicData.selectheight')"
+ style="width: 220px"
+ @input="handleInputChangea"
+ >
+ <el-option
+ v-for="item in selectOptionsa"
+ :key="item.id"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item></div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item :label="$t('basicData.coatingtypesa')" :required="true" style="width: 14vw;">
+ <el-select
+ v-model="selectedValueb"
+ filterable
+ clearable
+ :placeholder="$t('basicData.selectcoatingtypes')"
+ style="width: 220px"
+ @input="handleInputChangea"
+ >
+ <el-option
+ v-for="item in selectOptionsb"
+ :key="item.id"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item></div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item :label="$t('basicData.thicknessa')" :required="true" style="width: 14vw">
+ <el-select
+ v-model="selectedValuec"
+ filterable
+ clearable
+ :placeholder="$t('basicData.selectthickness')"
+ style="width: 220px"
+ @input="handleInputChangea"
+ >
+ <el-option
+ v-for="item in selectOptionsc"
+ :key="item.id"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ <!-- <el-input v-model="patternThickness" autocomplete="off" /> -->
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item :label="$t('basicData.quantitya')" :required="true" style="width: 14vw;">
+ <el-input :placeholder="$t('basicData.selectquantity')" v-model="number" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-form>
+ </div>
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">
+ {{ $t('basicData.confirm') }}
+ </el-button>
+ <el-button @click="add = false">{{ $t('basicData.cancel') }}</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ <el-dialog v-model="adda" top="30vh" width="25%" :title="$t('basicData.deletemessage')">
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handleConfirma">
+ {{ $t('basicData.confirm') }}
+ </el-button>
+ <el-button @click="adda = false">{{ $t('basicData.cancel') }}</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </div>
+ <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" :title="$t('basicData.project')">
+ <div style="margin-left: 50px;margin-bottom: 10px;">
+ <el-form-item :label="$t('basicData.projectnumber')" :required="true">
+ <el-select
+ v-model="selectedProjectNo"
+ filterable
+ clearable
+ :placeholder="$t('basicData.plselectproject')"
+ style="width: 220px"
+ @input="handleInputChange"
+ >
+ <el-option
+ v-for="item in titleSelectJson['processType']"
+ :key="item.id"
+ :label="item.projectNo"
+ :value="item.projectNo"
+ />
+ </el-select>
+ </el-form-item>
+ </div>
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handleup">
+ {{ $t('basicData.confirm') }}
+ </el-button>
+ <el-button @click="dialogFormVisible = false">{{ $t('basicData.cancel') }}</el-button>
+ </div>
+ </template>
+ </el-dialog>
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+ text-align: center;
+ margin-top: -15px;
+}
+
+#dotClass {
+ display: flex;
+ margin-left: 20px;
+ size: 50px;
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+#parent {
+ position: relative;
+ width: 1500px;
+ margin-left: -300px
+}
+
+#overlayb {
+ position: absolute;
+ z-index: 1;
+ width: 228px;
+ height: 16px;
+ background-color: #529b2e;
+ margin-top: -303px;
+ margin-left: 355px;
+}
+
+#overlayc {
+ position: absolute;
+ z-index: 1;
+ width: 228px;
+ height: 16px;
+ background-color: #529b2e;
+ margin-top: -303px;
+ margin-left: 703px;
+}
+
+#overlay {
+ position: absolute;
+ z-index: 1;
+ width: 228px;
+ height: 16px;
+ background-color: #529b2e;
+ margin-top: -45px;
+ margin-left: 355px;
+}
+
+#overlaya {
+ position: absolute;
+ z-index: 1;
+ width: 228px;
+ height: 16px;
+ background-color: #529b2e;
+ margin-top: -45px;
+ margin-left: 703px;
+}
+
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 686a171..e00d842 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -1,16 +1,15 @@
<script lang="ts" setup>
-import { useI18n } from 'vue-i18n'
- const { t } = useI18n()
- let language = ref(localStorage.getItem('lang') || 'zh')
-import {Search} from "@element-plus/icons-vue";
+import {useI18n} from 'vue-i18n'
import {useRouter} from "vue-router"
-const router = useRouter()
import request from "@/utils/request"
-import { WebSocketHost ,host} from '@/utils/constants'
-import { ref, onMounted , onBeforeUnmount, reactive, computed,onUnmounted } from "vue";
-import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { tr } from "element-plus/es/locale";
+import {host, WebSocketHost} from '@/utils/constants'
+import {computed, onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
+import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
+import {ElMessage, ElMessageBox} from 'element-plus'
+
+const {t} = useI18n()
+let language = ref(localStorage.getItem('lang') || 'zh')
+const router = useRouter()
const dialogFormVisible = ref(false)
const dialoglea = ref(false)
const dialogFormVisiblea = ref(false)
@@ -362,21 +361,22 @@
}
};
// 鎸囧畾閽㈠寲
- const brokee = async(row) => {
+const brokee = async (row, temperingFeedSequence) => {
try {
- const confirmResult = await ElMessageBox.confirm(
- t('searchOrder.specifytemperinga'),
- t('searchOrder.prompt'),
- {
- confirmButtonText: t('searchOrder.yes'),
- cancelButtonText: t('searchOrder.cancel'),
- type: 'warning',
- }
+ const confirmResult = await ElMessageBox.confirm(
+ t('searchOrder.specifytemperinga'),
+ t('searchOrder.prompt'),
+ {
+ confirmButtonText: t('searchOrder.yes'),
+ cancelButtonText: t('searchOrder.cancel'),
+ type: 'warning',
+ }
);
if (confirmResult === 'confirm') {
const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/TemperingGlass",{
engineerId: row.engineer_id,
temperingLayoutId: row.tempering_layout_id,
+ temperingFeedSequence: temperingFeedSequence
});
if (response.code === 200) {
ElMessage.success(response.message);
@@ -386,7 +386,8 @@
}
} catch (error) {
console.error('鍙戠敓閿欒:', error);
- }
+ }
+ handleganghua();
};
// 鎸囧畾宸ョ▼
const brokek = async(row) => {
@@ -1561,10 +1562,18 @@
<el-table-column prop="count4" align="center" :label="$t('鐮存崯/鎷胯蛋鏁伴噺')" min-width="150" />
<el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="250">
<template #default="scope">
- <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifytempering') }}</el-button>
- <el-button size="mini" type="text" plain @click="brokek(scope.row)">{{ $t('searchOrder.specifyengineerid') }}</el-button>
+ <el-button size="mini" type="text" plain @click="brokee(scope.row,1)">
+ {{ $t('searchOrder.specifytempering') }}
+ </el-button>
+ <el-button size="mini" type="text" plain @click="brokee(scope.row,0)">{{
+ $t('searchOrder.specifyout')
+ }}
+ </el-button>
+ <el-button size="mini" type="text" plain @click="brokek(scope.row)">{{
+ $t('searchOrder.specifyengineerid')
+ }}
+ </el-button>
</template>
-
</el-table-column>
</el-table>
</el-dialog>
diff --git a/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue b/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue
index 2927b8f..35c3a2d 100644
--- a/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue
+++ b/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue
@@ -1,8 +1,7 @@
<script setup>
import request from "@/utils/request"
-import {ElDatePicker, ElMessage} from "element-plus"
-import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
-import {Search} from "@element-plus/icons-vue"
+import {ElMessage} from "element-plus"
+import {onMounted, ref} from "vue"
// import {useRouter} from 'vue-router'
// import {changeFilterEvent, filterChanged} from "@/hook"
// import {useI18n} from 'vue-i18n'
@@ -36,14 +35,15 @@
let props = defineProps({
printFlowCardId: null,
printLayer: null,
+ printGlassId: null,
})
onMounted(async () => {
- console.log(props.printFlowCardId,props.printLayer)
- const response = await request.post('/unLoadGlass/downGlassInfo/downGlassLabelPrint',{
- flowCardId:props.printFlowCardId,
- layer:props.printLayer
- });
+ const response = await request.post('/unLoadGlass/downGlassInfo/downGlassLabelPrint', {
+ flowCardId: props.printFlowCardId,
+ layer: props.printLayer,
+ glassId: props.printGlassId
+ });
if (response.code == 200) {
console.log("lastList.value",response.data)
lastList.value=response.data;
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index 5a918af..cb55ff6 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -1,18 +1,14 @@
<script setup>
-import { onBeforeUnmount, onMounted, onUnmounted, reactive, ref } from "vue";
-import { useRouter } from "vue-router"
-import { useI18n } from 'vue-i18n'
-import { ElMessage } from 'element-plus'
+import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
+import {useRouter} from "vue-router"
+import {useI18n} from 'vue-i18n'
+import {ElMessage} from 'element-plus'
import request from "@/utils/request";
-import { closeWebSocket, initializeWebSocket } from '@/utils/WebSocketService';
-import { host, WebSocketHost } from '@/utils/constants'
-import PrintFlow from "@/views/UnLoadGlass/PrintFlow.vue";
-import Landingindication from "./Landingindication.vue";
-import Landingindicationtwo from "./Landingindicationtwo.vue";
-import PrintLabel from "@/views/UnLoadGlass/PrintCustomLabelSemi1.vue";
+import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
+import {host, WebSocketHost} from '@/utils/constants'
const router = useRouter()
-const { t } = useI18n()
+const {t} = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
const printLoading = ref(true)
const fullFlowCard = ref('')
@@ -44,6 +40,7 @@
const dialogTableVisible1 = ref(false)
const printFlowCardId = ref('')
const printLayer = ref('')
+const printGlassId = ref('')
const now = new Date();
const timeRange = ref([])
const browser = ref(false)
@@ -234,6 +231,9 @@
scanGlass.value.width = height;
scanGlass.value.height = width;
}
+ if (autoPrint.value == true && browser.value == true) {
+ open1(scanGlass);
+ }
}
//鑷姩鎵撳嵃
@@ -338,6 +338,7 @@
printFlowCardId.value = row.flowCardId;
printLayer.value = row.layer
+ printGlassId.value = row.glassId
dialogTableVisible1.value = true;
setTimeout(() => {
printFlowCard1();
@@ -536,6 +537,9 @@
</div>
<div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:170px;">
<div>浜哄伐涓嬬墖褰撳墠鐜荤拑淇℃伅</div>
+ <div>
+ <el-button type="primary" @click="open1(takeGlass)">鎵撳嵃鏍囩</el-button>
+ </div>
<div>{{ takeGlass.flowCardId }}</div>
<div>{{ takeGlass.layer }}</div>
<div>{{ takeGlass.glassId }}</div>
@@ -551,6 +555,9 @@
</div>
<div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:200px;">
<div>鎵爜鏋綋鍓嶇幓鐠冧俊鎭�</div>
+ <div>
+ <el-button type="primary" @click="open1(scanGlass)">鎵撳嵃鏍囩</el-button>
+ </div>
<div>{{ scanGlass.flowCardId }}</div>
<div>{{ scanGlass.layer }}</div>
<div>{{ scanGlass.glassId }}</div>
@@ -622,7 +629,8 @@
style="width: 100%;height: 100%" />
</el-dialog>
<el-dialog id="sizePrintCalrd1" v-model="dialogTableVisible1" destroy-on-close>
- <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer" style="" />
+ <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer"
+ :printGlassId="printGlassId" style=""/>
</el-dialog>
</template>
diff --git a/hangzhoumesParent/common/opcuaClient/pom.xml b/hangzhoumesParent/common/opcuaClient/pom.xml
deleted file mode 100644
index cf5d20f..0000000
--- a/hangzhoumesParent/common/opcuaClient/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>common</artifactId>
- <groupId>com.mes</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>opcuaClient</artifactId>
-
- <properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-autoconfigure</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.milo</groupId>
- <artifactId>sdk-client</artifactId>
- <version>0.6.8</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-pool2</artifactId>
- <version>2.6.2</version>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/configuration/MiloProperties.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/configuration/MiloProperties.java
deleted file mode 100644
index 1dac285..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/configuration/MiloProperties.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.mes.milo.configuration;
-
-import lombok.Data;
-import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * @author mes
- * @date 2020/4/25
- * @desc milo-spring-boot-starter
- * @since 0.0.1
- */
-@Data
-@ConfigurationProperties(prefix = MiloProperties.PREFIX)
-public class MiloProperties {
- public static final String PREFIX = "mes.milo";
-
- /**
- * 鏄惁鍚敤缁勪欢
- */
- private Boolean enabled = true;
-
- /**
- * server 榛樿璇锋眰閰嶇疆锛屼笉鎸囧畾锛屽垯榛樿鍙� config涓涓�涓�
- */
- private String primary;
-
- /**
- * server 鍒楄〃
- */
- private Map<String, Config> config = new LinkedHashMap<>();
-
- /**
- * 杩炴帴姹犻厤缃�
- */
- private Pool pool = new Pool();
-
- @Data
- public static class Config {
-
- /**
- * OPC UA鍦板潃
- */
- private String endpoint;
-
- /**
- * 瀹夊叏绛栫暐
- */
- private SecurityPolicy securityPolicy = SecurityPolicy.None;
-
- /**
- * 鐢ㄦ埛鍚�
- */
- private String username;
-
- /**
- * 瀵嗙爜
- */
- private String password;
- }
-
- @Data
- public static class Pool {
- /**
- * 鏈�澶х┖闂�
- */
- private int maxIdle = 5;
- /**
- * 鏈�澶ф�绘暟
- */
- private int maxTotal = 20;
- /**
- * 鏈�灏忕┖闂�
- */
- private int minIdle = 2;
-
- /**
- * 鍒濆鍖栬繛鎺ユ暟
- */
- private int initialSize = 3;
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/exception/EndPointNotFoundException.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/exception/EndPointNotFoundException.java
deleted file mode 100644
index 0388c2f..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/exception/EndPointNotFoundException.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.milo.exception;
-
-/**
- * 绫� EndPointNotFoundException 鍔熻兘鎻忚堪锛�
- *
- * @author mes
- * @version 0.0.1
- * @date 2021/09/04 17:03
- */
-public class EndPointNotFoundException extends RuntimeException {
- public EndPointNotFoundException() {
- super();
- }
-
- public EndPointNotFoundException(String message) {
- super(message);
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/exception/IdentityNotFoundException.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/exception/IdentityNotFoundException.java
deleted file mode 100644
index afd69f2..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/exception/IdentityNotFoundException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mes.milo.exception;
-
-/**
- * 绫� IdentityNotFoundException 鍔熻兘鎻忚堪锛�
- *
- * @author mes
- * @version 0.0.1
- * @date 2021/09/15 09:35
- */
-public class IdentityNotFoundException extends RuntimeException {
- public IdentityNotFoundException(String message) {
- super(message);
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java
deleted file mode 100644
index 5276365..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mes.milo.model;
-
-import lombok.*;
-import lombok.experimental.Accessors;
-import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
-
-/**
- * @author mes
- * @version 0.0.1
- * @desc
- * @since 2020/4/13
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@Accessors(chain = true)
-@ToString
-public class ReadWriteEntity {
-
- private String identifier;
-
- private Object value;
-
- private DataValue dataValue;
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/WriteEntity.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/WriteEntity.java
deleted file mode 100644
index 748781c..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/WriteEntity.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.mes.milo.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
-import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
-
-/**
- * @author mes
- * @version 0.0.1
- * @since 2020/4/13
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@Accessors(chain = true)
-public class WriteEntity {
- private String identifier;
- private Variant variant;
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/pool/MiloConnectPool.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/pool/MiloConnectPool.java
deleted file mode 100644
index aa13b70..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/pool/MiloConnectPool.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.mes.milo.pool;
-
-import com.mes.milo.configuration.MiloProperties;
-import org.apache.commons.pool2.KeyedPooledObjectFactory;
-import org.apache.commons.pool2.impl.GenericKeyedObjectPool;
-import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-
-/**
- * 绫� MiloConnectPool 鍔熻兘鎻忚堪锛�<br/>
- *
- * @author mes
- * @version 0.0.1
- * @date 2023/5/4 19:17
- */
-public class MiloConnectPool extends GenericKeyedObjectPool<MiloProperties.Config, OpcUaClient> {
-
- public MiloConnectPool(KeyedPooledObjectFactory<MiloProperties.Config, OpcUaClient> factory) {
- super(factory);
- }
-
- public MiloConnectPool(KeyedPooledObjectFactory<MiloProperties.Config, OpcUaClient> factory, GenericKeyedObjectPoolConfig<OpcUaClient> config) {
- super(factory, config);
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/BrowseNodeRunner.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/BrowseNodeRunner.java
deleted file mode 100644
index 6b3ba57..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/BrowseNodeRunner.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.mes.milo.runner;
-
-import com.mes.milo.utils.CustomUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.sdk.client.nodes.UaNode;
-import org.eclipse.milo.opcua.stack.core.UaException;
-import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * @author mes
- * @version 0.0.1
- * @since 2020/4/14
- */
-@Slf4j
-public class BrowseNodeRunner {
- /**
- * 瑕佽鐨勮妭鐐�
- */
- private final String browseRoot;
-
- public BrowseNodeRunner(String browseRoot) {
- this.browseRoot = browseRoot;
- }
-
- public List<String> run(OpcUaClient opcUaClient) {
- NodeId nodeId = CustomUtil.parseNodeId(browseRoot);
- return browseNode(browseRoot, opcUaClient, nodeId);
- }
-
- private List<String> browseNode(String prefix, OpcUaClient client, NodeId browseRoot) {
- List<String> nodesList = new ArrayList<>();
- try {
- List<? extends UaNode> nodes = client.getAddressSpace().browseNodes(browseRoot);
-
- nodes = nodes.stream().filter(item -> !Objects.requireNonNull(item.getBrowseName().getName()).startsWith("_")).collect(Collectors.toList());
-
- for (UaNode node : nodes) {
- String sub = prefix + "." + node.getBrowseName().getName();
-
- // recursively browse to children
- List<String> browseNode = browseNode(sub, client, node.getNodeId());
- if (browseNode.isEmpty()) {
- nodesList.add(sub);
- } else {
- nodesList.addAll(browseNode(sub, client, node.getNodeId()));
- }
- }
- } catch (UaException e) {
- log.error("Browsing nodeId={} failed: {}", browseRoot, e.getMessage(), e);
- }
- return nodesList;
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/BrowseRunner.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/BrowseRunner.java
deleted file mode 100644
index 2f93c84..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/BrowseRunner.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.mes.milo.runner;
-
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.sdk.client.nodes.UaNode;
-import org.eclipse.milo.opcua.stack.core.Identifiers;
-import org.eclipse.milo.opcua.stack.core.UaException;
-import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UShort;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * @author mes
- * @version 0.0.1
- * @since 2020/4/14
- */
-@Slf4j
-public class BrowseRunner {
-
- public List<String> run(OpcUaClient opcUaClient) {
- List<String> nodesList = new ArrayList<>();
- try {
- List<? extends UaNode> nodes = opcUaClient.getAddressSpace().browseNodes(Identifiers.ObjectsFolder);
-
- nodesList.addAll(nodes.stream().filter(item -> !Objects.requireNonNull(item.getBrowseName().getName()).startsWith("_")
- && Objects.equals(item.getBrowseName().getNamespaceIndex(), UShort.valueOf(2)))
- .map(item -> item.getBrowseName().getName()).collect(Collectors.toList()));
- } catch (UaException e) {
- log.error("閬嶅巻鏍硅妭鐐瑰紓甯革細{}", e.getMessage(), e);
- }
- return nodesList;
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/ReadValuesRunner.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/ReadValuesRunner.java
deleted file mode 100644
index 74772d5..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/ReadValuesRunner.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.mes.milo.runner;
-
-import com.mes.milo.model.ReadWriteEntity;
-import com.mes.milo.utils.CustomUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
-import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
-import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
-import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author mes
- * @version 0.0.1
- * @desc
- * @since 2020/4/14
- */
-@Slf4j
-public class ReadValuesRunner {
- /**
- * 瑕佽鐨勭偣浣峫ist
- */
- private final List<String> identifiers;
-
- public ReadValuesRunner(List<String> identifiers) {
- this.identifiers = identifiers;
- }
-
- public List<ReadWriteEntity> run(OpcUaClient opcUaClient) {
- List<ReadWriteEntity> entityList = new ArrayList<>();
- try {
- List<NodeId> nodeIds = new ArrayList<>();
- identifiers.forEach(identifier -> nodeIds.add(CustomUtil.parseNodeId(identifier)));
- // 璇诲彇鎸囧畾鐐逛綅鐨勫�硷紝10s瓒呮椂
- List<DataValue> dataValues = opcUaClient.readValues(10000, TimestampsToReturn.Both, nodeIds).get();
- if (dataValues.size() == identifiers.size()) {
- for (int i = 0; i < identifiers.size(); i++) {
- String id = identifiers.get(i);
- Object value = dataValues.get(i).getValue().getValue();
- StatusCode status = dataValues.get(i).getStatusCode();
- assert status != null;
- if (status.isGood()) {
- log.info("璇诲彇鐐逛綅 '{}' 鐨勫�间负 {}", id, value);
- }
- entityList.add(ReadWriteEntity.builder()
- .identifier(id)
- .value(value)
- .dataValue(dataValues.get(i))
- .build());
- }
- }
- } catch (Exception e) {
- log.error("璇诲�兼椂鍑虹幇浜嗗紓甯革細{}", e.getMessage(), e);
- }
- return entityList;
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/WriteValuesRunner.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/WriteValuesRunner.java
deleted file mode 100644
index 9ff7e71..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/WriteValuesRunner.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.mes.milo.runner;
-
-import com.mes.milo.model.WriteEntity;
-import com.mes.milo.utils.CustomUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
-import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
-import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * @author mes
- * @version 0.0.1
- * @since 2020/4/14
- */
-@Slf4j
-public class WriteValuesRunner {
- private final List<WriteEntity> entities;
-
- public WriteValuesRunner(List<WriteEntity> entities) {
- this.entities = entities;
- }
-
- public void run(OpcUaClient opcUaClient) {
- try {
- if (!entities.isEmpty()) {
- List<NodeId> nodeIds = new LinkedList<>();
- List<DataValue> dataValues = new LinkedList<>();
- for (WriteEntity entity : entities) {
- nodeIds.add(CustomUtil.parseNodeId(entity.getIdentifier()));
- dataValues.add(new DataValue(entity.getVariant(), null, null));
- }
-
- List<StatusCode> statusCodeList = opcUaClient.writeValues(nodeIds, dataValues).join();
- for (int i = 0; i < statusCodeList.size(); i++) {
- if (statusCodeList.get(i).isGood()) {
- log.info("灏嗗�� '{}' 鍐欏叆鍒扮偣浣嶏細{} 鎴愬姛", dataValues.get(i).getValue(), nodeIds.get(i));
- } else {
- log.error("鐐逛綅锛歿} 鍐欏叆鏃跺嚭鐜颁簡寮傚父锛歿}", nodeIds.get(i), statusCodeList.get(i));
- }
- }
- }
- } catch (Exception e) {
- log.error("鎵归噺鍐欏�煎嚭鐜板紓甯稿嚭鐜颁簡寮傚父锛歿}", e.getMessage(), e);
- }
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/subscription/SubscriptionCallback.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/subscription/SubscriptionCallback.java
deleted file mode 100644
index a31cee0..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/subscription/SubscriptionCallback.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.milo.runner.subscription;
-
-import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem;
-import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
-
-/**
- * 绫� SubscriptionCallback 鍔熻兘鎻忚堪锛�<br/>
- *
- * @author mes
- * @version 0.0.1
- * @date 2023/5/8 22:14
- */
-public interface SubscriptionCallback {
-
- void onSubscribe(ManagedDataItem dataItem, DataValue value) throws Exception;
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/subscription/SubscriptionRunner.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/subscription/SubscriptionRunner.java
deleted file mode 100644
index 3cc0db3..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/runner/subscription/SubscriptionRunner.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.mes.milo.runner.subscription;
-
-import com.mes.milo.utils.CustomUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscription;
-import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscriptionManager;
-import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem;
-import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedSubscription;
-import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
-import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
-import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-/**
- * 绫� SubscriptionRunner 鍔熻兘鎻忚堪锛�
- *
- * @author mes
- * @version 0.0.1
- * @date 2022/01/01 23:49
- */
-@Slf4j
-public class SubscriptionRunner {
- /**
- * 鐐逛綅list
- */
- private final List<String> identifiers;
-
- private final double samplingInterval;
-
- public SubscriptionRunner(List<String> identifiers) {
- this.identifiers = identifiers;
- this.samplingInterval = 1000.0D;
- }
-
- public SubscriptionRunner(List<String> identifiers, double samplingInterval) {
- this.identifiers = identifiers;
- this.samplingInterval = samplingInterval;
- }
-
- public void run(OpcUaClient opcUaClient, SubscriptionCallback callback) {
-
- final CountDownLatch downLatch = new CountDownLatch(1);
-
- //娣诲姞璁㈤槄鐩戝惉鍣紝鐢ㄤ簬澶勭悊鏂嚎閲嶈繛鍚庣殑璁㈤槄闂
- opcUaClient.getSubscriptionManager().addSubscriptionListener(new CustomSubscriptionListener(opcUaClient, callback));
-
- //澶勭悊璁㈤槄閫昏緫
- handler(opcUaClient, callback);
-
- try {
- //鎸佺画鐩戝惉
- downLatch.await();
- } catch (Exception e) {
- log.error("璁㈤槄鏃跺嚭鐜颁簡寮傚父锛歿}", e.getMessage(), e);
- }
- }
-
- private void handler(OpcUaClient opcUaClient, SubscriptionCallback callback) {
- try {
- //鍒涘缓璁㈤槄
- ManagedSubscription subscription = ManagedSubscription.create(opcUaClient, samplingInterval);
- subscription.setDefaultSamplingInterval(samplingInterval);
- subscription.setDefaultQueueSize(UInteger.valueOf(10));
-
- List<NodeId> nodeIdList = new ArrayList<>();
- for (String identifier : identifiers) {
- nodeIdList.add(CustomUtil.parseNodeId(identifier));
- }
- List<ManagedDataItem> dataItemList = subscription.createDataItems(nodeIdList);
- for (ManagedDataItem dataItem : dataItemList) {
- dataItem.addDataValueListener((item) -> {
- try {
- callback.onSubscribe
- (dataItem, item);
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- }
- } catch (Exception e) {
- log.error("璁㈤槄鏃跺嚭鐜颁簡寮傚父锛歿}", e.getMessage(), e);
- }
- }
-
- private class CustomSubscriptionListener implements UaSubscriptionManager.SubscriptionListener {
- private final OpcUaClient client;
- private final SubscriptionCallback callback;
-
- public CustomSubscriptionListener(OpcUaClient client, SubscriptionCallback callback) {
- this.client = client;
- this.callback = callback;
- }
-
- /**
- * 閲嶈繛鏃� 灏濊瘯鎭㈠涔嬪墠鐨勮闃呭け璐ユ椂 浼氳皟鐢ㄦ鏂规硶
- *
- * @param uaSubscription 璁㈤槄
- * @param statusCode 鐘舵��
- */
- @Override
- public void onSubscriptionTransferFailed(UaSubscription uaSubscription, StatusCode statusCode) {
- log.debug("鎭㈠璁㈤槄澶辫触 闇�瑕侀噸鏂拌闃�");
- //鍦ㄥ洖璋冩柟娉曚腑閲嶆柊璁㈤槄
- handler(client, callback);
- }
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/service/MiloService.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/service/MiloService.java
deleted file mode 100644
index 45c5658..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/service/MiloService.java
+++ /dev/null
@@ -1,553 +0,0 @@
-package com.mes.milo.service;
-
-import com.mes.milo.configuration.MiloProperties;
-import com.mes.milo.model.ReadWriteEntity;
-import com.mes.milo.model.WriteEntity;
-import com.mes.milo.pool.MiloConnectPool;
-import com.mes.milo.runner.BrowseNodeRunner;
-import com.mes.milo.runner.BrowseRunner;
-import com.mes.milo.runner.ReadValuesRunner;
-import com.mes.milo.runner.WriteValuesRunner;
-import com.mes.milo.runner.subscription.SubscriptionCallback;
-import com.mes.milo.runner.subscription.SubscriptionRunner;
-import com.mes.milo.utils.CustomUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
-import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author mes
- * @date 2020/4/25
- * @desc milo-spring-boot-starter
- * @since 0.0.1
- */
-@Service
-@Slf4j
-public class MiloService {
- private final MiloConnectPool connectPool;
- private final MiloProperties properties;
-
- public MiloService(MiloConnectPool connectPool, MiloProperties properties) {
- this.connectPool = connectPool;
- this.properties = properties;
- }
-
- /**
- * 閬嶅巻OPC UA鏈嶅姟鍣ㄦ牴鑺傜偣
- *
- * @return 鏍硅妭鐐瑰垪琛�
- */
- public List<String> browseRoot() throws Exception {
- return browseRoot(null);
- }
-
- /**
- * 閬嶅巻OPC UA鏈嶅姟鍣ㄦ牴鑺傜偣
- *
- * @param clientName 閰嶇疆key
- * @return 鏍硅妭鐐瑰垪琛�
- */
- public List<String> browseRoot(String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- BrowseRunner runner = new BrowseRunner();
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- return runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- return Collections.emptyList();
- }
-
- /**
- * 閬嶅巻OPC UA鏈嶅姟鍣ㄦ寚瀹氳妭鐐�
- *
- * @param browseRoot 鑺傜偣鍚嶇О
- * @return 鎸囧畾鑺傜偣 tag鍒楄〃
- */
- public List<String> browseNode(String browseRoot) throws Exception {
- return browseNode(browseRoot, null);
- }
-
- /**
- * 閬嶅巻OPC UA鏈嶅姟鍣ㄦ寚瀹氳妭鐐�
- *
- * @param browseRoot 鑺傜偣鍚嶇О
- * @param clientName 閰嶇疆key
- * @return 鎸囧畾鑺傜偣 tag鍒楄〃
- */
- public List<String> browseNode(String browseRoot, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- BrowseNodeRunner runner = new BrowseNodeRunner(browseRoot);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- return runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- return Collections.emptyList();
- }
-
- /**
- * 鎸囧畾绫诲瀷 鍐欏叆kep鐐逛綅鍊�
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- */
- public void writeSpecifyType(WriteEntity entity) throws Exception {
- writeSpecifyType(Collections.singletonList(entity));
- }
-
- /**
- * 鎸囧畾绫诲瀷 鍐欏叆kep鐐逛綅鍊�
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeSpecifyType(WriteEntity entity, String clientName) throws Exception {
- writeSpecifyType(Collections.singletonList(entity), clientName);
- }
-
- /**
- * 鎸囧畾绫诲瀷 鍐欏叆kep鐐逛綅鍊硷紝鍙壒閲忓啓鍏ヤ笉鍚岀被鍨嬬殑鍊�
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- */
- public void writeSpecifyType(List<WriteEntity> entities) throws Exception {
- writeSpecifyType(entities, null);
- }
-
- /**
- * 鎸囧畾绫诲瀷 鍐欏叆kep鐐逛綅鍊硷紝鍙壒閲忓啓鍏ヤ笉鍚岀被鍨嬬殑鍊�
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeSpecifyType(List<WriteEntity> entities, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- WriteValuesRunner runner = new WriteValuesRunner(entities);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
- /**
- * 鍐欏叆kep鐐逛綅鍊�
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcUa(ReadWriteEntity entity) throws Exception {
- writeToOpcUa(Collections.singletonList(entity));
- }
-
- /**
- * 鍐欏叆kep鐐逛綅鍊�
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcUa(ReadWriteEntity entity, String clientName) throws Exception {
- writeToOpcUa(Collections.singletonList(entity), clientName);
- }
-
- /**
- * 鍐欏叆kep鐐逛綅鍊�
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcUa(List<ReadWriteEntity> entities) throws Exception {
- writeToOpcUa(entities, null);
- }
-
- /**
- * 鍐欏叆kep鐐逛綅鍊�
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcUa(List<ReadWriteEntity> entities, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- List<WriteEntity> writeEntityList = new ArrayList<>();
- if (!entities.isEmpty()) {
- for (ReadWriteEntity entity : entities) {
- writeEntityList.add(WriteEntity.builder()
- .identifier(entity.getIdentifier())
- .variant(new Variant(entity.getValue()))
- .build());
- }
- }
- WriteValuesRunner runner = new WriteValuesRunner(writeEntityList);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Char<br/>
- * 8浣嶅甫绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcChar(ReadWriteEntity entity) throws Exception {
- writeToOpcChar(Collections.singletonList(entity));
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Char<br/>
- * 8浣嶅甫绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcChar(ReadWriteEntity entity, String clientName) throws Exception {
- writeToOpcChar(Collections.singletonList(entity), clientName);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Char<br/>
- * 8浣嶅甫绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcChar(List<ReadWriteEntity> entities) throws Exception {
- writeToOpcChar(entities, null);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Char<br/>
- * 8浣嶅甫绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcChar(List<ReadWriteEntity> entities, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- List<WriteEntity> writeEntityList = new ArrayList<>();
- if (!entities.isEmpty()) {
- for (ReadWriteEntity entity : entities) {
- writeEntityList.add(WriteEntity.builder()
- .identifier(entity.getIdentifier())
- .variant(new Variant(((Integer) entity.getValue()).byteValue()))
- .build());
- }
- }
- WriteValuesRunner runner = new WriteValuesRunner(writeEntityList);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Byte<br/>
- * 8浣嶆棤绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcByte(ReadWriteEntity entity) throws Exception {
- writeToOpcByte(Collections.singletonList(entity));
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Byte<br/>
- * 8浣嶆棤绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcByte(ReadWriteEntity entity, String clientName) throws Exception {
- writeToOpcByte(Collections.singletonList(entity), clientName);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Byte<br/>
- * 8浣嶆棤绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcByte(List<ReadWriteEntity> entities) throws Exception {
- writeToOpcByte(entities, null);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Byte<br/>
- * 8浣嶆棤绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcByte(List<ReadWriteEntity> entities, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- List<WriteEntity> writeEntityList = new ArrayList<>();
- if (!entities.isEmpty()) {
- for (ReadWriteEntity entity : entities) {
- writeEntityList.add(WriteEntity.builder()
- .identifier(entity.getIdentifier())
- .variant(new Variant(Unsigned.ubyte((Integer) entity.getValue())))
- .build());
- }
- }
- WriteValuesRunner runner = new WriteValuesRunner(writeEntityList);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Short<br/>
- * 16浣嶅甫绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcShort(ReadWriteEntity entity) throws Exception {
- writeToOpcShort(Collections.singletonList(entity));
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Short<br/>
- * 16浣嶅甫绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcShort(ReadWriteEntity entity, String clientName) throws Exception {
- writeToOpcShort(Collections.singletonList(entity), clientName);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Short<br/>
- * 16浣嶅甫绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcShort(List<ReadWriteEntity> entities) throws Exception {
- writeToOpcShort(entities, null);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Short<br/>
- * 16浣嶅甫绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcShort(List<ReadWriteEntity> entities, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- List<WriteEntity> writeEntityList = new ArrayList<>();
- if (!entities.isEmpty()) {
- for (ReadWriteEntity entity : entities) {
- writeEntityList.add(WriteEntity.builder()
- .identifier(entity.getIdentifier())
- .variant(new Variant(((Integer) entity.getValue()).shortValue()))
- .build());
- }
- }
- WriteValuesRunner runner = new WriteValuesRunner(writeEntityList);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Word<br/>
- * 16浣嶆棤绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcWord(ReadWriteEntity entity) throws Exception {
- writeToOpcWord(Collections.singletonList(entity));
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Word<br/>
- * 16浣嶆棤绗﹀彿鏁存暟
- *
- * @param entity 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcWord(ReadWriteEntity entity, String clientName) throws Exception {
- writeToOpcWord(Collections.singletonList(entity), clientName);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Word<br/>
- * 16浣嶆棤绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- */
- public void writeToOpcWord(List<ReadWriteEntity> entities) throws Exception {
- writeToOpcWord(entities, null);
- }
-
- /**
- * kepware 鏁版嵁绫诲瀷涓猴細Word<br/>
- * 16浣嶆棤绗﹀彿鏁存暟
- *
- * @param entities 寰呭啓鍏ユ暟鎹�
- * @param clientName 閰嶇疆key
- */
- public void writeToOpcWord(List<ReadWriteEntity> entities, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- List<WriteEntity> writeEntityList = new ArrayList<>();
- if (!entities.isEmpty()) {
- for (ReadWriteEntity entity : entities) {
- writeEntityList.add(WriteEntity.builder()
- .identifier(entity.getIdentifier())
- .variant(new Variant(Unsigned.ushort((Integer) entity.getValue())))
- .build());
- }
- }
- WriteValuesRunner runner = new WriteValuesRunner(writeEntityList);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
- /**
- * 璇诲彇kep鐐逛綅鍊�
- *
- * @param id 鐐逛綅id
- * @return
- */
- public ReadWriteEntity readFromOpcUa(String id) throws Exception {
- return readFromOpcUa(id, null);
- }
-
- /**
- * 璇诲彇kep鐐逛綅鍊�
- *
- * @param id 鐐逛綅id
- * @param clientName 閰嶇疆key
- * @return
- */
- public ReadWriteEntity readFromOpcUa(String id, String clientName) throws Exception {
- List<ReadWriteEntity> entityList = readFromOpcUa(Collections.singletonList(id), clientName);
- if (!entityList.isEmpty()) {
- return entityList.get(0);
- }
- return null;
- }
-
- /**
- * 璇诲彇kep鐐逛綅鍊�
- *
- * @param ids 鐐逛綅id鏁扮粍
- * @return
- */
- public List<ReadWriteEntity> readFromOpcUa(List<String> ids) throws Exception {
- return readFromOpcUa(ids, null);
- }
-
- /**
- * 璇诲彇kep鐐逛綅鍊�
- *
- * @param ids 鐐逛綅id鏁扮粍
- * @param clientName 閰嶇疆key
- * @return
- */
- public List<ReadWriteEntity> readFromOpcUa(List<String> ids, String clientName) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- ReadValuesRunner runner = new ReadValuesRunner(ids);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- return runner.run(client);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- return new ArrayList<>();
- }
-
- /**
- * 璁㈤槄kep鐐逛綅鍊�
- *
- * @param ids 鐐逛綅id鏁扮粍
- * @return
- */
- public void subscriptionFromOpcUa(List<String> ids, SubscriptionCallback callback) throws Exception {
- subscriptionFromOpcUa(ids, 1000.0, callback);
- }
-
- /**
- * 璁㈤槄kep鐐逛綅鍊�
- *
- * @param ids 鐐逛綅id鏁扮粍
- * @param clientName 閰嶇疆key
- * @return
- */
- public void subscriptionFromOpcUa(List<String> ids, String clientName, SubscriptionCallback callback) throws Exception {
- subscriptionFromOpcUa(ids, 1000.0, clientName, callback);
- }
-
- /**
- * 璁㈤槄kep鐐逛綅鍊�
- *
- * @param ids 鐐逛綅id鏁扮粍
- * @param samplingInterval 璁㈤槄鏃堕棿闂撮殧 榛樿1000 ms
- * @return
- */
- public void subscriptionFromOpcUa(List<String> ids, double samplingInterval, SubscriptionCallback callback) throws Exception {
- subscriptionFromOpcUa(ids, samplingInterval, null, callback);
- }
-
- /**
- * 璁㈤槄kep鐐逛綅鍊�
- *
- * @param ids 鐐逛綅id鏁扮粍
- * @param samplingInterval 璁㈤槄鏃堕棿闂撮殧 榛樿1000 ms
- * @param clientName 閰嶇疆key
- * @return
- */
- public void subscriptionFromOpcUa(List<String> ids, double samplingInterval, String clientName, SubscriptionCallback callback) throws Exception {
- MiloProperties.Config config = CustomUtil.getConfig(properties, clientName);
- SubscriptionRunner runner = new SubscriptionRunner(ids, samplingInterval);
- OpcUaClient client = connectPool.borrowObject(config);
- if (client != null) {
- try {
- runner.run(client, callback);
- } finally {
- connectPool.returnObject(config, client);
- }
- }
- }
-
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/utils/CustomUtil.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/utils/CustomUtil.java
deleted file mode 100644
index 37df820..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/utils/CustomUtil.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.mes.milo.utils;
-
-import com.google.common.collect.Sets;
-import com.mes.milo.configuration.MiloProperties;
-import com.mes.milo.exception.EndPointNotFoundException;
-import com.mes.milo.exception.IdentityNotFoundException;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
-import org.springframework.util.StringUtils;
-
-import java.net.*;
-import java.util.*;
-
-/**
- * @author mes
- * @version 0.0.1
- * @desc
- * @since 2020/4/13
- */
-@Slf4j
-public class CustomUtil {
-
- private static final String OPC_UA_NOT_CONFIG = "璇烽厤缃甇PC UA鍦板潃淇℃伅";
-
- private CustomUtil() {
- }
-
- public static String getHostname() {
- try {
- return InetAddress.getLocalHost().getHostName();
- } catch (UnknownHostException var1) {
- return "localhost";
- }
- }
-
- public static Set<String> getHostnames(String address) {
- return getHostnames(address, true);
- }
-
- public static Set<String> getHostnames(String address, boolean includeLoopback) {
- HashSet<String> hostnames = Sets.newHashSet();
-
- try {
- InetAddress inetAddress = InetAddress.getByName(address);
- if (inetAddress.isAnyLocalAddress()) {
- try {
- Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
-
- for (NetworkInterface ni : Collections.list(nis)) {
- Collections.list(ni.getInetAddresses()).forEach((ia) -> {
- if (ia instanceof Inet4Address) {
- boolean loopback = ia.isLoopbackAddress();
- if (!loopback || includeLoopback) {
- hostnames.add(ia.getHostName());
- hostnames.add(ia.getHostAddress());
- hostnames.add(ia.getCanonicalHostName());
- }
- }
-
- });
- }
- } catch (SocketException var7) {
- log.warn("Failed to NetworkInterfaces for bind address: {}", address, var7);
- }
- } else {
- boolean loopback = inetAddress.isLoopbackAddress();
- if (!loopback || includeLoopback) {
- hostnames.add(inetAddress.getHostName());
- hostnames.add(inetAddress.getHostAddress());
- hostnames.add(inetAddress.getCanonicalHostName());
- }
- }
- } catch (UnknownHostException var8) {
- log.warn("Failed to get InetAddress for bind address: {}", address, var8);
- }
-
- return hostnames;
- }
-
- public static NodeId parseNodeId(String identifier) {
- NodeId nodeId = new NodeId(2, identifier);
- if (identifier.startsWith("ns=") && identifier.contains(";")) {
- nodeId = NodeId.parseOrNull(identifier);
- }
- if (nodeId == null) {
- throw new IdentityNotFoundException("NodeId 瑙f瀽澶辫触锛岃妫�鏌�");
- }
- return nodeId;
- }
-
- public static void verifyProperties(MiloProperties properties) {
- if (properties.getConfig().isEmpty()) {
- throw new EndPointNotFoundException(OPC_UA_NOT_CONFIG);
- }
- if (!StringUtils.hasText(properties.getPrimary())) {
- Set<String> keySet = properties.getConfig().keySet();
- properties.setPrimary(keySet.stream().findFirst().orElseThrow(() -> new EndPointNotFoundException(OPC_UA_NOT_CONFIG)));
- }
- properties.getConfig().forEach((key, config) -> {
- if (!StringUtils.hasText(config.getEndpoint())) {
- throw new EndPointNotFoundException(OPC_UA_NOT_CONFIG + ": " + key);
- }
- });
- }
-
- public static MiloProperties.Config getConfig(MiloProperties properties) {
- return getConfig(properties, null);
- }
-
- public static MiloProperties.Config getConfig(MiloProperties properties, String clientName) {
- Map<String, MiloProperties.Config> config = properties.getConfig();
- return StringUtils.hasText(clientName) ? config.get(clientName) : config.get(properties.getPrimary());
- }
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/utils/KeyStoreLoader.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/utils/KeyStoreLoader.java
deleted file mode 100644
index ad4c6bb..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/utils/KeyStoreLoader.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.mes.milo.utils;
-
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.milo.opcua.stack.client.security.DefaultClientCertificateValidator;
-import org.eclipse.milo.opcua.stack.core.security.DefaultTrustListManager;
-import org.eclipse.milo.opcua.stack.core.util.SelfSignedCertificateBuilder;
-import org.eclipse.milo.opcua.stack.core.util.SelfSignedCertificateGenerator;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.security.*;
-import java.security.cert.X509Certificate;
-import java.util.Arrays;
-import java.util.regex.Pattern;
-
-@Slf4j
-public class KeyStoreLoader {
-
- private static final Pattern IP_ADDR_PATTERN = Pattern.compile(
- "^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
-
- private static final String CLIENT_ALIAS = "client-ai";
- private static final char[] PASSWORD = "password".toCharArray();
-
- private X509Certificate clientCertificate;
- private X509Certificate[] clientCertificateChain;
- private KeyPair clientKeyPair;
- private DefaultClientCertificateValidator certificateValidator;
-
- public KeyStoreLoader load() throws Exception {
- Path securityTempDir = Paths.get(System.getProperty("java.io.tmpdir"), "security");
- Files.createDirectories(securityTempDir);
- if (!Files.exists(securityTempDir)) {
- throw new Exception("unable to create security dir: " + securityTempDir);
- }
-
- File pkiDir = securityTempDir.resolve("pki").toFile();
-
- log.info("security temp dir: {}", securityTempDir.toAbsolutePath());
-
- KeyStore keyStore = KeyStore.getInstance("PKCS12");
-
- Path serverKeyStore = securityTempDir.resolve("milo-client.pfx");
-
- DefaultTrustListManager trustListManager = new DefaultTrustListManager(pkiDir);
-
- certificateValidator = new DefaultClientCertificateValidator(trustListManager);
-
- log.info("Loading KeyStore at {}", serverKeyStore);
-
- if (!Files.exists(serverKeyStore)) {
- keyStore.load(null, PASSWORD);
-
- KeyPair keyPair = SelfSignedCertificateGenerator.generateRsaKeyPair(2048);
-
- SelfSignedCertificateBuilder builder = new SelfSignedCertificateBuilder(keyPair)
- .setCommonName("Milo Client")
- .setOrganization("kangaroohy")
- .setOrganizationalUnit("dev")
- .setLocalityName("Folsom")
- .setStateName("CA")
- .setCountryCode("US")
- .setApplicationUri("urn:kangaroohy:milo:client")
- .addDnsName("localhost")
- .addIpAddress("127.0.0.1");
-
- // Get as many hostnames and IP addresses as we can listed in the certificate.
- for (String hostname : CustomUtil.getHostnames("0.0.0.0")) {
- if (IP_ADDR_PATTERN.matcher(hostname).matches()) {
- builder.addIpAddress(hostname);
- } else {
- builder.addDnsName(hostname);
- }
- }
-
- X509Certificate certificate = builder.build();
-
- keyStore.setKeyEntry(CLIENT_ALIAS, keyPair.getPrivate(), PASSWORD, new X509Certificate[]{certificate});
- try (OutputStream out = Files.newOutputStream(serverKeyStore)) {
- keyStore.store(out, PASSWORD);
- }
- } else {
- try (InputStream in = Files.newInputStream(serverKeyStore)) {
- keyStore.load(in, PASSWORD);
- }
- }
-
- Key clientPrivateKey = keyStore.getKey(CLIENT_ALIAS, PASSWORD);
- if (clientPrivateKey instanceof PrivateKey) {
- clientCertificate = (X509Certificate) keyStore.getCertificate(CLIENT_ALIAS);
-
- clientCertificateChain = Arrays.stream(keyStore.getCertificateChain(CLIENT_ALIAS))
- .map(X509Certificate.class::cast)
- .toArray(X509Certificate[]::new);
-
- PublicKey clientPublicKey = clientCertificate.getPublicKey();
- clientKeyPair = new KeyPair(clientPublicKey, (PrivateKey) clientPrivateKey);
- }
-
- return this;
- }
-
- public X509Certificate getClientCertificate() {
- return clientCertificate;
- }
-
- public X509Certificate[] getClientCertificateChain() {
- return clientCertificateChain;
- }
-
- public DefaultClientCertificateValidator getCertificateValidator() {
- return certificateValidator;
- }
-
- public KeyPair getClientKeyPair() {
- return clientKeyPair;
- }
-
-}
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/resources/META-INF/spring.factories b/hangzhoumesParent/common/opcuaClient/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index dfcfa97..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,3 +0,0 @@
-# Auto Configure
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- com.mes.milo.configuration.MiloAutoConfiguration
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/hangzhoumesParent/common/opcuaClient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index eda2fe7..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-com.mes.milo.configuration.MiloAutoConfiguration
\ No newline at end of file
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/resources/application.yml b/hangzhoumesParent/common/opcuaClient/src/main/resources/application.yml
deleted file mode 100644
index 1ea573c..0000000
--- a/hangzhoumesParent/common/opcuaClient/src/main/resources/application.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-mes:
- milo:
- primary: default
- config:
- default:
- endpoint: opc.tcp://zidonghua:49320
- security-policy: basic256sha256
- username: zsh
- password: 1qaz2wsx3edc4rfv
\ No newline at end of file
diff --git a/hangzhoumesParent/common/pom.xml b/hangzhoumesParent/common/pom.xml
index affa009..c8bb428 100644
--- a/hangzhoumesParent/common/pom.xml
+++ b/hangzhoumesParent/common/pom.xml
@@ -15,7 +15,6 @@
<modules>
<module>servicebase</module>
<module>springsecurity</module>
- <module>opcuaClient</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/hangzhoumesParent/common/servicebase/pom.xml b/hangzhoumesParent/common/servicebase/pom.xml
index 0605bf7..4bb9465 100644
--- a/hangzhoumesParent/common/servicebase/pom.xml
+++ b/hangzhoumesParent/common/servicebase/pom.xml
@@ -38,6 +38,13 @@
<artifactId>sdk-server</artifactId>
<version>0.6.8</version>
</dependency>
+ <dependency>
+ <groupId>com.kangaroohy</groupId>
+ <artifactId>milo-spring-boot-starter</artifactId>
+ <version>3.0.6.12</version>
+ </dependency>
+
+
</dependencies>
</project>
\ No newline at end of file
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/configuration/MiloAutoConfiguration.java b/hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/configuration/MiloAutoConfiguration.java
similarity index 95%
rename from hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/configuration/MiloAutoConfiguration.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/configuration/MiloAutoConfiguration.java
index 5e56b39..739b239 100644
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/configuration/MiloAutoConfiguration.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/configuration/MiloAutoConfiguration.java
@@ -1,8 +1,8 @@
-package com.mes.milo.configuration;
+package com.kangaroohy.milo.configuration;
-import com.mes.milo.pool.MiloConnectFactory;
-import com.mes.milo.pool.MiloConnectPool;
-import com.mes.milo.service.MiloService;
+import com.kangaroohy.milo.pool.MiloConnectFactory;
+import com.kangaroohy.milo.pool.MiloConnectPool;
+import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/pool/MiloConnectFactory.java b/hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/pool/MiloConnectFactory.java
similarity index 95%
rename from hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/pool/MiloConnectFactory.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/pool/MiloConnectFactory.java
index f99202a..187eda4 100644
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/pool/MiloConnectFactory.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/kangaroohy/milo/pool/MiloConnectFactory.java
@@ -1,9 +1,9 @@
-package com.mes.milo.pool;
+package com.kangaroohy.milo.pool;
-import com.mes.milo.configuration.MiloProperties;
-import com.mes.milo.exception.EndPointNotFoundException;
-import com.mes.milo.exception.IdentityNotFoundException;
-import com.mes.milo.utils.CustomUtil;
+import com.kangaroohy.milo.configuration.MiloProperties;
+import com.kangaroohy.milo.exception.EndPointNotFoundException;
+import com.kangaroohy.milo.exception.IdentityNotFoundException;
+import com.kangaroohy.milo.utils.CustomUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.KeyedPooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index 6b9a1de..46c9d01 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -180,4 +180,23 @@
public static final Integer UNLOAD_GLASS_OUT = 1;
public static final Integer UNLOAD_GLASS_DOWN = 2;
+
+ /**
+ * 鍘熺墖浠撳偍浠诲姟绫诲瀷
+ * 杩涚墖浠诲姟1
+ * 鍑虹墖浠诲姟2
+ */
+ public static final Integer RAW_GLASS_TASK_TYPE_IN = 1;
+ public static final Integer RAW_GLASS_TASK_TYPE_OUT = 2;
+ public static final Integer RAW_GLASS_TASK_TYPE_DISPATCH = 3;
+
+ /**
+ * 鍘熺墖浠撳偍浠诲姟绫诲瀷
+ * 杩涚墖浠诲姟1
+ * 鍑虹墖浠诲姟2
+ */
+ public static final Integer ENGINEERING_NEW = 0;
+ public static final Integer ENGINEERING_RUNNING = 1;
+
+
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatDetail.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatDetail.java
new file mode 100644
index 0000000..8678d22
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatDetail.java
@@ -0,0 +1,116 @@
+package com.mes.pp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class OptimizeHeatDetail implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 宸ョ▼鍙�
+ */
+ private String projectNo;
+
+ /**
+ * 娴佺▼鍗″彿
+ */
+ private String processId;
+
+ /**
+ * 琛ョ墖鐘舵��:琛ョ墖1锛�0闈炶ˉ鐗�;2024.0409鏂板
+ */
+ private Integer patchState;
+
+ /**
+ * 灞�
+ */
+ private Integer layer;
+
+ /**
+ * 璁㈠崟鍐呮帓搴�
+ */
+ private Integer orderSort;
+
+ /**
+ * 鐗堝浘缂栧彿
+ */
+ private Integer layoutId;
+ /**
+ * 鐗堝浘鍐呮帓搴�
+ */
+ private Integer sort;
+ /**
+ * 灏忕墖缂栧彿
+ */
+ private Integer glassId;
+
+ /**
+ * 灏忕墖瀹�
+ */
+ private double width;
+
+ /**
+ * 灏忕墖楂�
+ */
+ private double height;
+ /**
+ * 閰嶇墖瀹�
+ */
+ private double pairWidth;
+ /**
+ * 閰嶇墖楂�
+ */
+ private double pairHeight;
+ /**
+ * x鍧愭爣
+ */
+ private double xAxis;
+
+ /**
+ * y鍧愭爣
+ */
+ private double yAxis;
+
+ /**
+ * 鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
+ */
+ private double rotateAngle;
+ /**
+ * 鍒涘缓浜�
+ */
+ private String creater;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private Data createTime;
+ /**
+ * 淇敼鏃堕棿
+ */
+ private Data updateTime;
+
+ @TableField("intRemark")
+ private Integer intRemark;
+
+ @TableField("strRemark")
+ private String strRemark;
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatLayout.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatLayout.java
new file mode 100644
index 0000000..7aa5d3c
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatLayout.java
@@ -0,0 +1,70 @@
+package com.mes.pp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class OptimizeHeatLayout implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 宸ョ▼鍙�
+ */
+ private String projectNo;
+
+ /**
+ * 鐗堝浘Id
+ */
+ private Integer layoutId;
+
+ /**
+ * 鐜荤拑鏁伴噺
+ */
+ private Integer glassQty;
+
+ /**
+ * 鐗堝浘鐜荤拑闈㈢Н
+ */
+ private double glassArea;
+
+ /**
+ * 瑁呰浇鐜�
+ */
+ private double layoutRate;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ private Integer creater;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private Date createTime;
+
+ @TableField("intRemark")
+ private Integer intRemark;
+
+ @TableField("strRemark")
+ private String strRemark;
+
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatDetailMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatDetailMapper.java
new file mode 100644
index 0000000..0e7c2ea
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatDetailMapper.java
@@ -0,0 +1,19 @@
+package com.mes.pp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeHeatDetail;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@DS("pp")
+public interface OptimizeHeatDetailMapper extends MPJBaseMapper<OptimizeHeatDetail> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatLayoutMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatLayoutMapper.java
new file mode 100644
index 0000000..4a607f4
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatLayoutMapper.java
@@ -0,0 +1,19 @@
+package com.mes.pp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeHeatLayout;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@DS("pp")
+public interface OptimizeHeatLayoutMapper extends MPJBaseMapper<OptimizeHeatLayout> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatDetailService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatDetailService.java
new file mode 100644
index 0000000..838f47b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatDetailService.java
@@ -0,0 +1,17 @@
+package com.mes.pp.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeHeatDetail;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+public interface OptimizeHeatDetailService extends MPJBaseService<OptimizeHeatDetail> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatLayoutService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatLayoutService.java
new file mode 100644
index 0000000..c28833e
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatLayoutService.java
@@ -0,0 +1,17 @@
+package com.mes.pp.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeHeatLayout;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+public interface OptimizeHeatLayoutService extends MPJBaseService<OptimizeHeatLayout> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatDetailServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatDetailServiceImpl.java
new file mode 100644
index 0000000..d25905b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatDetailServiceImpl.java
@@ -0,0 +1,25 @@
+package com.mes.pp.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeHeatDetail;
+import com.mes.pp.mapper.OptimizeDetailMapper;
+import com.mes.pp.mapper.OptimizeHeatDetailMapper;
+import com.mes.pp.service.OptimizeDetailService;
+import com.mes.pp.service.OptimizeHeatDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@Service
+@DS("pp")
+public class OptimizeHeatDetailServiceImpl extends MPJBaseServiceImpl<OptimizeHeatDetailMapper, OptimizeHeatDetail> implements OptimizeHeatDetailService {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java
new file mode 100644
index 0000000..6764eae
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java
@@ -0,0 +1,25 @@
+package com.mes.pp.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeHeatLayout;
+import com.mes.pp.mapper.OptimizeDetailMapper;
+import com.mes.pp.mapper.OptimizeHeatLayoutMapper;
+import com.mes.pp.service.OptimizeDetailService;
+import com.mes.pp.service.OptimizeHeatLayoutService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@Service
+@DS("pp")
+public class OptimizeHeatLayoutServiceImpl extends MPJBaseServiceImpl<OptimizeHeatLayoutMapper, OptimizeHeatLayout> implements OptimizeHeatLayoutService {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
index 211ac25..9f32596 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -2,12 +2,12 @@
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
import com.mes.temperingglass.service.TemperingGlassInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import com.github.yulichang.base.MPJBaseServiceImpl;
import java.util.List;
@@ -29,7 +29,7 @@
public List<TemperingGlassInfo> selectWaitingGlass() {
//鑾峰彇绛夊緟杩涚倝涓殑鐜荤拑淇℃伅
QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
- wrapper.select("Top 1 *").in("state",1,0);
+ wrapper.select("Top 1 *").in("state", 1, 0, -1);
TemperingGlassInfo glass=temperingMapper.selectOne(wrapper);
if(glass!=null) {
QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java
new file mode 100644
index 0000000..eda97c0
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java
@@ -0,0 +1,14 @@
+package com.mes.uppattenusage.entity.vo;
+
+import com.mes.uppattenusage.entity.UpPattenUsage;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/10/12 15:43
+ * @Description:
+ */
+@Data
+public class UpPattenUsageVO extends UpPattenUsage {
+ private String groupNumber;
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
index 154e50d..42e4308 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
@@ -2,7 +2,10 @@
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.uppattenusage.entity.UpPattenUsage;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -14,4 +17,5 @@
*/
public interface UpPattenUsageMapper extends MPJBaseMapper<UpPattenUsage> {
+ List<UpPattenUsageVO> queryRawGlassByEngineeringId(@Param("engineeringId") String engineerId);
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
index 40292ce..27d4d64 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
@@ -27,7 +27,7 @@
on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number
where fc.process_id = #{processId}
<if test="technologyNumber != 0">
- and a.layer = #{technologyNumber}
+ and fc.technology_number = #{technologyNumber}
</if>
<if test="technologyNumber != 0">
and position(fc.technology_number in #{technologyNumber})
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml
new file mode 100644
index 0000000..951829c
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.uppattenusage.mapper.UpPattenUsageMapper">
+
+ <resultMap id="baseMap" type="com.mes.uppattenusage.entity.vo.UpPattenUsageVO">
+ <result column="id" property="id"/>
+ <result column="engineering_id" property="engineeringId"/>
+ <result column="films_id" property="filmsId"/>
+ <result column="width" property="width"/>
+ <result column="height" property="height"/>
+ <result column="thickness" property="thickness"/>
+ <result column="layout_sequence" property="layoutSequence"/>
+ <result column="state" property="state"/>
+ <result column="group_number" property="groupNumber"/>
+ </resultMap>
+ <select id="queryRawGlassByEngineeringId" resultType="com.mes.uppattenusage.entity.vo.UpPattenUsageVO">
+ SET @prev_width := NULL;
+ SET @prev_height := NULL;
+ SET @counter := 0;
+
+ SELECT t.*,
+ @counter := IF(@prev_width = width and @prev_height = height, @counter, @counter + 1) AS group_number,
+ @prev_width := width,
+ @prev_height := height
+ FROM up_patten_usage t
+ where t.engineering_id = #{engineeringId}
+ and t.state = 0
+ ORDER BY t.layout_sequence
+ </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
index c1f69a7..3c25501 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -31,6 +31,12 @@
* @return
*/
List<List<Map<String, Object>>> selectCurrentCutTerritory(String current);
+ /**
+ * 鑾峰彇 宸ョ▼涓嬬殑閽㈠寲鐗堝浘
+ * @param current
+ * @return
+ */
+ List<List<Map<String, Object>>> selectTemperingTerritory(String current);
/**
* 鏌ヨ绗煎唴鐗堝浘宸�艰寖鍥村唴鐨� 姝ゅ昂瀵哥幓鐠� 濡傛棤鍒欐寜鐓� 閽㈠寲鐗堝浘搴忓彿 浠ュ強鐜荤拑搴忓彿
@@ -64,4 +70,12 @@
* @return
*/
String edgReportStatus(IdentWornRequest request);
+
+ /**
+ * 杩涚墖 鎵爜ID楠岃瘉閲嶅
+ *
+ * @param glassId
+ * @return
+ */
+ boolean inToVerify(String glassId);
}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index 67232f0..83e7104 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -8,7 +8,6 @@
import com.github.yulichang.query.MPJLambdaQueryWrapper;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.mapper.DamageMapper;
import com.mes.damage.service.DamageService;
@@ -24,9 +23,9 @@
import com.mes.engineering.mapper.EngineeringMapper;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
-import com.mes.pp.entity.OptimizeDetail;
-import com.mes.pp.entity.OptimizeLayout;
+import com.mes.pp.entity.*;
import com.mes.pp.mapper.OptimizeDetailMapper;
+import com.mes.pp.mapper.OptimizeHeatDetailMapper;
import com.mes.taskcache.entity.TaskCache;
import com.mes.taskcache.service.TaskCacheService;
import com.mes.uppattenusage.entity.UpPattenUsage;
@@ -62,6 +61,9 @@
@Autowired
OptimizeDetailMapper optimizeDetailMapper;
+
+ @Autowired
+ OptimizeHeatDetailMapper optimizeHeatDetailMapper;
@Autowired
EdgStorageCageMapper edgStorageCageMapper;
@@ -299,6 +301,72 @@
}
/**
+ * 鑾峰彇 宸ョ▼涓嬬殑閽㈠寲鐗堝浘
+ *
+ * @param current
+ * @return
+ */
+ @Override
+ public List<List<Map<String, Object>>> selectTemperingTerritory(String current) {
+ //姝ゅ伐绋嬬殑鎵�鏈変紭鍖栨暟鎹�
+ List<Map<String, Object>> resultCutTerritory=optimizeHeatDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeHeatDetail.class)
+ .selectAll(OptimizeHeatDetail.class)
+ .selectAs(OptimizeProject::getLoadWidth, "olWidth")
+ .selectAs(OptimizeProject::getLoadLength, "olHeight")
+ .leftJoin(OptimizeHeatLayout.class, on -> on
+ .eq(OptimizeHeatLayout::getProjectNo, OptimizeHeatDetail::getProjectNo)
+ .eq(OptimizeHeatLayout::getLayoutId, OptimizeHeatDetail::getLayoutId))
+ .leftJoin(OptimizeProject.class, on -> on
+ .eq(OptimizeProject::getProjectNo, OptimizeHeatLayout::getProjectNo))
+ .eq(OptimizeHeatDetail::getProjectNo, current)
+ );
+
+ Map<String, List<Map<String, Object>>> groupBy = resultCutTerritory.stream().collect(Collectors.groupingBy(item -> item.get("layout_id").toString()));
+// List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList());
+ List<List<Map<String, Object>>> result = new ArrayList<>();
+ for (int i = 1; i <= groupBy.keySet().size(); i++) {
+ String key = i + "";
+ if (key != null) {
+ result.add(groupBy.get(key));
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 鑾峰彇 宸ョ▼涓嬬殑閽㈠寲鐗堝浘
+ *
+ * @param current
+ * @return
+ */
+ @Override
+ public List<List<Map<String, Object>>> selectTemperingTerritory(String current) {
+ //姝ゅ伐绋嬬殑鎵�鏈変紭鍖栨暟鎹�
+ List<Map<String, Object>> resultCutTerritory = optimizeHeatDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeHeatDetail.class)
+ .selectAll(OptimizeHeatDetail.class)
+ .selectAs(OptimizeProject::getLoadWidth, "olWidth")
+ .selectAs(OptimizeProject::getLoadLength, "olHeight")
+ .leftJoin(OptimizeHeatLayout.class, on -> on
+ .eq(OptimizeHeatLayout::getProjectNo, OptimizeHeatDetail::getProjectNo)
+ .eq(OptimizeHeatLayout::getLayoutId, OptimizeHeatDetail::getLayoutId))
+ .leftJoin(OptimizeProject.class, on -> on
+ .eq(OptimizeProject::getProjectNo, OptimizeHeatLayout::getProjectNo))
+ .eq(OptimizeHeatDetail::getProjectNo, current)
+ );
+
+ Map<String, List<Map<String, Object>>> groupBy = resultCutTerritory.stream().collect(Collectors.groupingBy(item -> item.get("layout_id").toString()));
+// List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList());
+ List<List<Map<String, Object>>> result = new ArrayList<>();
+ for (int i = 1; i <= groupBy.keySet().size(); i++) {
+ String key = i + "";
+ if (key != null) {
+ result.add(groupBy.get(key));
+ }
+ }
+ return result;
+ }
+
+ /**
* 鏌ヨ绗煎唴鐗堝浘宸�艰寖鍥村唴鐨� 姝ゅ昂瀵哥幓鐠� 濡傛棤鍒欐寜鐓� 閽㈠寲鐗堝浘搴忓彿 浠ュ強鐜荤拑搴忓彿
*
* @param glassId
@@ -431,4 +499,30 @@
.set(EdgGlassTaskInfo::getStatus, request.getState()).eq(EdgGlassTaskInfo::getGlassId, request.getGlassId()));
return "success";
}
+
+ /**
+ * 杩涚墖 鎵爜ID楠岃瘉閲嶅
+ *
+ * @param glassId
+ * @return
+ */
+ @Override
+ public boolean inToVerify(String glassId){
+ List<EdgStorageCageDetails> listEdgStorageCageDetails = baseMapper.selectList(new LambdaQueryWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getGlassId, glassId)
+ );
+ if (listEdgStorageCageDetails.isEmpty()) {
+ //璇存槑姝ょ幓鐠冩病鏈夎繘杩囩悊鐗�
+ return true;
+ }else{
+ List<Damage> damage=damageMapper.selectList(new LambdaQueryWrapper<Damage>()
+ .eq(Damage::getGlassId, glassId)
+ .and(wrapper->wrapper.eq(Damage::getType, 8).or().eq(Damage::getType, 9))
+ );
+ if(!damage.isEmpty()){
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index e5d34d7..37bfe0d 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -80,6 +80,12 @@
@Value("${mes.max.secondLength}")
private String secondLength;
+ @Value("${mes.cache.cacheWidth}")
+ private double cacheWidth;
+
+ @Value("${mes.cache.cacheHeight}")
+ private double cacheHeight;
+
@Value("${mes.min.one.firstLength}")
private String minOneFirstLength;
@@ -94,7 +100,7 @@
public static String engineerId = "";
- @Scheduled(fixedDelay = 1000)
+ //@Scheduled(fixedDelay = 1000)
public void plcHomeEdgTask() {
Date startDate = new Date();
log.info("鏈浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -124,8 +130,9 @@
log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛椾笉涓�0锛岀洿鎺ョ粨鏉�");
return;
}
- if ("1".equals(taskRequestTypeValue)) {
- log.info("2銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+ boolean result = edgStorageCageDetailsService.inToVerify(glassIdeValue);
+ if ("1".equals(taskRequestTypeValue) && result) {
+ log.info("2銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�,鎵爜閲嶅ID楠岃瘉銆愭湁閲嶅=false,鏃犻噸澶�=true銆戯細{}", result);
inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
} else if ("2".equals(taskRequestTypeValue)) {
//09绌洪棽 锛�1 10绌洪棽 锛�2 閮界┖闂诧細3 鍏朵粬0
@@ -137,8 +144,8 @@
//鍔犵瀛愰噷闈㈡槸鍚︽湁鐜荤拑锛屾湁鍏堝嚭锛屾棤鐜荤拑鍏堣繘
boolean outFlase = outTo(Integer.parseInt(out08Glassstate),
Integer.parseInt(out10Glassstate), confirmationWrodAddress, glassIdeValue, Integer.parseInt(currentSlot));
- log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟", outFlase, glassIdeValue);
- if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) {
+ log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟,鎵爜閲嶅ID楠岃瘉銆愭湁閲嶅=false,鏃犻噸澶�=true銆戯細{}", outFlase, glassIdeValue, result);
+ if (!outFlase && StringUtils.isNotBlank(glassIdeValue) && result) {
inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
}
}
@@ -164,9 +171,9 @@
Damage damage = new Damage();
damage.setGlassId(e.getGlassId());
damage.setLine(e.getEndCell());
- damage.setWorkingProcedure("鍐峰姞宸�");
+ damage.setWorkingProcedure("纾ㄨ竟");
damage.setRemark("纾ㄨ竟鍓嶅崸寮忕悊鐗�");
- damage.setStatus(0);
+ damage.setStatus(1);
damage.setType(e.getTaskStatus());
return damage;
}).collect(Collectors.toList());
@@ -186,14 +193,28 @@
*/
public void inTo(String glassId, String confirmationWrodAddress, String currentSlot) {
log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
+
+ GlassInfo feedGlassInfo = glassInfoService.getOne(
+ new LambdaQueryWrapper<GlassInfo>()
+ .eq(GlassInfo::getGlassId, glassId)
+ );
+ if (Math.max(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheWidth || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheHeight) {
+ log.info("1.1銆佺幓鐠冭秴杩囧崸寮忕悊鐗囨渶澶у昂瀵�:{}", feedGlassInfo);
+ return;
+ }
+
//娣诲姞杩涚墖浠诲姟 鏌ユ壘绌烘牸
EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot), Boolean.FALSE);
Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧");
log.info("2銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
- //鏌ヨ鐜荤拑骞惰繘琛屼氦鎹�
- GlassInfo glassInfo = queryAndChangeGlass(glassId);
+ //鏌ヨ鐜荤拑淇℃伅
+ GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
if (glassInfo == null) {
+ return;
+ }
+ if ((glassInfo.getWidth() < Double.parseDouble(minTwoFirstLength) && glassInfo.getHeight() < Double.parseDouble(minTwoSecondLength)) || (glassInfo.getWidth() < Double.parseDouble(minTwoSecondLength) && glassInfo.getHeight() < Double.parseDouble(minTwoFirstLength))) {
+ log.info("3銆佺幓鐠冧俊鎭笉绗﹀悎杩涘叆鐞嗙墖绗兼渶灏忓昂瀵革紝鐜荤拑淇℃伅涓簕}", glassInfo);
return;
}
log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
@@ -219,15 +240,10 @@
* @param glassId
* @return
*/
- public GlassInfo queryAndChangeGlass(String glassId) {
+ public String queryAndChangeGlass(String glassId) {
GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
// .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
- Assert.isFalse(null == glassInfo, "鐜荤拑淇℃伅涓嶅瓨鍦�");
- if ((glassInfo.getWidth() < Double.parseDouble(minTwoFirstLength) && glassInfo.getHeight() < Double.parseDouble(minTwoSecondLength)) || (glassInfo.getWidth() < Double.parseDouble(minTwoSecondLength) && glassInfo.getHeight() < Double.parseDouble(minTwoFirstLength))) {
- log.info("3銆佺幓鐠冧俊鎭笉绗﹀悎杩涘叆鐞嗙墖绗兼渶灏忓昂瀵革紝鐜荤拑淇℃伅涓簕}", glassInfo);
- return null;
- }
- //鎸夌収鐜荤拑灏哄
+ Assert.isFalse(null == glassInfo, "鐜荤拑淇℃伅涓嶅瓨鍦�"); //鎸夌収鐜荤拑灏哄
LambdaQueryWrapper<GlassInfo> queryWrapper = new LambdaQueryWrapper<GlassInfo>()
.eq(GlassInfo::getWidth, glassInfo.getWidth())
.eq(GlassInfo::getHeight, glassInfo.getHeight())
@@ -249,9 +265,41 @@
glassInfo.setGlassId(swapGlassId);
glassInfoService.updateById(swapGlassInfo);
glassInfoService.updateById(glassInfo);
- return swapGlassInfo;
+ return swapGlassId;
}
- return glassInfo;
+ return "";
+ }
+
+
+ /**
+ * 鏌ヨ鍗у紡鐞嗙墖鐜荤拑骞惰繘琛屼氦鎹�
+ *
+ * @param glassId
+ * @return
+ */
+ public void queryEdgAndChangeGlass(String glassId, String swapGlassId) {
+ if (StringUtils.isBlank(swapGlassId)) {
+ log.info("褰撳墠鍑虹鐜荤拑涓嶅瓨鍦ㄩ渶瑕佹浛鎹㈢殑鐜荤拑");
+ return;
+ }
+ //鑾峰彇寰呭嚭绗肩殑鐜荤拑
+ EdgStorageCageDetails glassInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getGlassId, glassId).eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
+// 鑾峰彇寰呭嚭绗肩殑鐜荤拑闇�瑕佹浛鎹㈢殑鐜荤拑淇℃伅
+ EdgStorageCageDetails swapGlassDetailInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getGlassId, swapGlassId).eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
+// 鐜荤拑灏忕墖琛ㄤ腑鐜荤拑宸茬粡鏇挎崲锛屾洿鏂板崸鐞嗙鍐呯幇鏈夌殑鍑嗗鍑虹鐨勭幓鐠冧俊鎭紝
+ if (null == swapGlassDetailInfo) {
+ //闇�瑕佹浛鎹㈢殑鐜荤拑涓哄瓨杩涘崸鐞嗭紝浠呴渶鏇存柊褰撳墠闇�瑕佸嚭绗肩殑鐜荤拑淇℃伅鍗冲彲
+ edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getGlassId, glassId).set(EdgStorageCageDetails::getGlassId, swapGlassId));
+ } else {
+ //闇�瑕佹浛鎹㈢殑鐜荤拑閮藉湪鍗х悊鍐咃紝鎸夌収鐜荤拑id瀵硅皟鐜荤拑淇℃伅锛氬璋冪幓鐠僫d鍗冲彲
+ edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getId, glassInfo.getId()).set(EdgStorageCageDetails::getGlassId, swapGlassId));
+ edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getId, swapGlassDetailInfo.getId()).set(EdgStorageCageDetails::getGlassId, glassId));
+ }
}
/**
@@ -636,7 +684,6 @@
details.setSlot(nearestEmpty.getSlot());
details.setState(Const.GLASS_STATE_OUT);
edgStorageCageDetailsService.save(details);
-
boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), nearestEmpty.getSlot(), endcell, Const.GLASS_CACHE_TYPE_THROUGH);
log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
} else {
@@ -653,7 +700,153 @@
log.info("7銆佹坊鍔犲嚭鐗囩幓鐠冨昂瀵镐俊鎭埌纾ㄨ竟鍓嶇幓鐠冭〃鏄惁瀹屾垚锛歿}", glassSizeStatus);
S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 1);
log.info("8銆佸彂閫佺‘璁ゅ瓧宸插畬鎴�");
- Damage damage=new Damage();
+ Damage damage = new Damage();
+ damage.setGlassId(glassInfo.getGlassId());
+ damage.setWorkingProcedure("鍒囧壊");
+ damage.setLine(1001);
+ damage.setType(1);
+ damage.setRemark("杩囧崸寮忕悊鐗�");
+ damageService.insertDamage(damage);
+ return Boolean.TRUE;
+ }
+ return Boolean.FALSE;
+ }
+
+ /**
+ * 淇濆瓨鍑虹墖浠诲姟鐩稿叧淇℃伅
+ *
+ * @param glassInfo
+ * @param endcell
+ * @param confirmationWrodAddress
+ * @param glassId
+ * @return
+ */
+ private boolean saveOutGlassMessageBySlot(EdgStorageCageDetails glassInfo, int endcell, String confirmationWrodAddress, String glassId, Integer currentSlot) {
+ if (glassInfo != null) {
+ log.info("4銆佹坊鍔犲嚭鐗囦换鍔★紝鐜荤拑id锛歿}锛屼换鍔$被鍨嬶細{}锛岃捣濮嬩綅缃細{}锛岀粨鏉熶綅缃細{}", glassInfo.getGlassId(),
+ 2, glassInfo.getSlot(), endcell);
+ if (glassInfo.getGlassId().equals(glassId)) {
+ log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+ EdgStorageCageDetails details = new EdgStorageCageDetails();
+ //鐜荤拑淇℃伅鏇挎崲
+ String glassIdChange = queryAndChangeGlass(glassId);
+ if (StringUtils.isBlank(glassIdChange)) {
+ BeanUtils.copyProperties(glassInfo, details);
+ } else {
+ GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+ BeanUtils.copyProperties(glassInfo, details);
+ }
+ EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot, Boolean.TRUE);
+ Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
+ log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
+ details.setSlot(nearestEmpty.getSlot());
+ details.setState(Const.GLASS_STATE_OUT);
+ edgStorageCageDetailsService.save(details);
+ boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), nearestEmpty.getSlot(), endcell, Const.GLASS_CACHE_TYPE_THROUGH);
+ log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
+ } else {
+ log.info("5銆侀潪鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+ if (endcell != currentSlot) {
+ EdgStorageCageDetails currentGlass = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .eq(EdgStorageCageDetails::getSlot, currentSlot).eq(EdgStorageCageDetails::getWidth, glassInfo.getWidth())
+ .eq(EdgStorageCageDetails::getHeight, glassInfo.getHeight()).eq(EdgStorageCageDetails::getThickness, glassInfo.getThickness())
+ );
+ if (null != currentGlass) {
+ glassInfo = currentGlass;
+ endcell = currentSlot;
+ }
+ }
+ //鐜荤拑淇℃伅鏇挎崲
+ String glassIdChange = queryAndChangeGlass(glassInfo.getGlassId());
+ //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
+ queryEdgAndChangeGlass(glassInfo.getGlassId(), glassIdChange);
+ LambdaUpdateWrapper<EdgStorageCageDetails> wrapper = new LambdaUpdateWrapper<>();
+ wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()).set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT);
+ edgStorageCageDetailsService.update(wrapper);
+ log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT);
+
+ boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT);
+ log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
+ }
+ boolean glassSizeStatus = saveGlassSize(glassInfo, endcell);
+ log.info("7銆佹坊鍔犲嚭鐗囩幓鐠冨昂瀵镐俊鎭埌纾ㄨ竟鍓嶇幓鐠冭〃鏄惁瀹屾垚锛歿}", glassSizeStatus);
+ S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 1);
+ log.info("8銆佸彂閫佺‘璁ゅ瓧宸插畬鎴�");
+ Damage damage = new Damage();
+ damage.setGlassId(glassInfo.getGlassId());
+ damage.setWorkingProcedure("鍒囧壊");
+ damage.setLine(1001);
+ damage.setType(1);
+ damage.setRemark("杩囧崸寮忕悊鐗�");
+ damageService.insertDamage(damage);
+ return Boolean.TRUE;
+ }
+ return Boolean.FALSE;
+ }
+
+ /**
+ * 淇濆瓨鍑虹墖浠诲姟鐩稿叧淇℃伅
+ *
+ * @param glassInfo
+ * @param endcell
+ * @param confirmationWrodAddress
+ * @param glassId
+ * @return
+ */
+ private boolean saveOutGlassMessageBySlot(EdgStorageCageDetails glassInfo, int endcell, String confirmationWrodAddress, String glassId, Integer currentSlot) {
+ if (glassInfo != null) {
+ log.info("4銆佹坊鍔犲嚭鐗囦换鍔★紝鐜荤拑id锛歿}锛屼换鍔$被鍨嬶細{}锛岃捣濮嬩綅缃細{}锛岀粨鏉熶綅缃細{}", glassInfo.getGlassId(),
+ 2, glassInfo.getSlot(), endcell);
+ if (glassInfo.getGlassId().equals(glassId)) {
+ log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+ EdgStorageCageDetails details = new EdgStorageCageDetails();
+ //鐜荤拑淇℃伅鏇挎崲
+ String glassIdChange = queryAndChangeGlass(glassId);
+ if (StringUtils.isBlank(glassIdChange)) {
+ BeanUtils.copyProperties(glassInfo, details);
+ } else {
+ GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+ BeanUtils.copyProperties(glassInfo, details);
+ }
+ EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot, Boolean.TRUE);
+ Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
+ log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
+ details.setSlot(nearestEmpty.getSlot());
+ details.setState(Const.GLASS_STATE_OUT);
+ edgStorageCageDetailsService.save(details);
+ boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), nearestEmpty.getSlot(), endcell, Const.GLASS_CACHE_TYPE_THROUGH);
+ log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
+ } else {
+ log.info("5銆侀潪鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+ if (endcell != currentSlot) {
+ EdgStorageCageDetails currentGlass = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+ .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .eq(EdgStorageCageDetails::getSlot, currentSlot).eq(EdgStorageCageDetails::getWidth, glassInfo.getWidth())
+ .eq(EdgStorageCageDetails::getHeight, glassInfo.getHeight()).eq(EdgStorageCageDetails::getThickness, glassInfo.getThickness())
+ );
+ if (null != currentGlass) {
+ glassInfo = currentGlass;
+ endcell = currentSlot;
+ }
+ }
+ //鐜荤拑淇℃伅鏇挎崲
+ String glassIdChange = queryAndChangeGlass(glassInfo.getGlassId());
+ //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
+ queryEdgAndChangeGlass(glassInfo.getGlassId(), glassIdChange);
+ LambdaUpdateWrapper<EdgStorageCageDetails> wrapper = new LambdaUpdateWrapper<>();
+ wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()).set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT);
+ edgStorageCageDetailsService.update(wrapper);
+ log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT);
+
+ boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT);
+ log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
+ }
+ boolean glassSizeStatus = saveGlassSize(glassInfo, endcell);
+ log.info("7銆佹坊鍔犲嚭鐗囩幓鐠冨昂瀵镐俊鎭埌纾ㄨ竟鍓嶇幓鐠冭〃鏄惁瀹屾垚锛歿}", glassSizeStatus);
+ S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 1);
+ log.info("8銆佸彂閫佺‘璁ゅ瓧宸插畬鎴�");
+ Damage damage = new Damage();
damage.setGlassId(glassInfo.getGlassId());
damage.setWorkingProcedure("鍒囧壊");
damage.setLine(1001);
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
index 47b2fd0..165ff7f 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -1,7 +1,5 @@
package com.mes.job;
-import com.mes.milo.runner.subscription.SubscriptionCallback;
-import com.mes.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -18,14 +16,14 @@
@Slf4j
public class OpcCacheGlassTask {
- @Autowired
- MiloService miloService;
-
- @Autowired
- SubscriptionCallback cacheGlassSubscriptionCallback;
-
- @Scheduled(fixedDelay = Long.MAX_VALUE)
- public void startOpcTask() throws Exception {
- miloService.subscriptionFromOpcUa(Arrays.asList("my.device.x1", "my.device.x2"), cacheGlassSubscriptionCallback);
- }
+// @Autowired
+// MiloService miloService;
+//
+// @Autowired
+// SubscriptionCallback cacheGlassSubscriptionCallback;
+//
+// @Scheduled(fixedDelay = Long.MAX_VALUE)
+// public void startOpcTask() throws Exception {
+// miloService.subscriptionFromOpcUa(Arrays.asList("my.device.x1", "my.device.x2"), cacheGlassSubscriptionCallback);
+// }
}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java
index eaf7695..c736d4b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java
@@ -1,8 +1,5 @@
package com.mes.opccallback;
-import com.mes.milo.model.ReadWriteEntity;
-import com.mes.milo.runner.subscription.SubscriptionCallback;
-import com.mes.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
@@ -16,20 +13,20 @@
*/
@Service
@Slf4j
-public class CacheGlassSubscriptionCallback implements SubscriptionCallback {
+public class CacheGlassSubscriptionCallback {
- @Autowired
- MiloService miloService;
-
- @Override
- public void onSubscribe(ManagedDataItem dataItem, DataValue value) {
- try {
- log.info("{}___________{}" + dataItem, value);
- ReadWriteEntity readWriteEntity = miloService.readFromOpcUa("my.device.x1");
- log.info("{}___________{}" + readWriteEntity);
- } catch (Exception e) {
-
- }
-
- }
+// @Autowired
+// MiloService miloService;
+//
+// @Override
+// public void onSubscribe(ManagedDataItem dataItem, DataValue value) {
+// try {
+// log.info("{}___________{}" + dataItem, value);
+// ReadWriteEntity readWriteEntity = miloService.readFromOpcUa("my.device.x1");
+// log.info("{}___________{}" + readWriteEntity);
+// } catch (Exception e) {
+//
+// }
+//
+// }
}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
index 850789e..a5a966a 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -32,6 +32,14 @@
@Autowired
private TaskCacheService taskCacheService;
+ @ApiOperation("鏌ヨ閽㈠寲鐗堝浘淇℃伅-鏍规嵁 宸ョ▼鍙� 鍙傛暟(宸ョ▼鍙�)")
+ @PostMapping("/temperingTerritory")
+ @ResponseBody
+ public Result temperingTerritory(String current) {
+ List<List<Map<String, Object>>> h = edgStorageCageDetailsService.selectTemperingTerritory(current);
+ return Result.build(200, "鎴愬姛", h);
+ }
+
@ApiOperation("鏌ヨ鍒囧壊鐗堝浘淇℃伅-鏍规嵁 宸ョ▼鍙� 鍙傛暟(宸ョ▼鍙�)")
@PostMapping("/cutTerritory")
@ResponseBody
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index eaa6417..276d6b9 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
spring:
profiles:
- active: dev
+ active: cz
application:
name: cacheGlass
liquibase:
@@ -15,6 +15,9 @@
mes:
threshold: 3
ratio: 10
+ cache: # 鍗у紡鐞嗙墖鏈�澶у昂瀵�
+ cacheWidth: 4000
+ cacheHeight:3000
max: # 绗簩鏉$嚎鐨勬渶澶у昂瀵镐俊鎭�
firstLength: 3500
secondLength: 2500
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
index ad5430b..93f0fda 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -143,6 +143,12 @@
}
@Test
+ public void testEngineerTerritory() {
+ List<List<Map<String, Object>>> map = edgStorageCageDetailsService.selectTemperingTerritory("P24052203");
+ log.info("閽㈠寲宸ョ▼鐗堝浘淇℃伅锛歿}", Arrays.asList(map));
+ }
+
+ @Test
public void testidentWorn() {
Map<String, Object> arguments=new HashMap<>();
arguments.put("glassId","NG24051802A002-1-4-2-4");//鐜荤拑ID
@@ -152,6 +158,11 @@
// edgStorageCageDetailsService.identWorn(arguments);
log.info("璇嗗埆鍙般�愮牬鎹�/鎷胯蛋銆戯細{}", 1);
}
+ @Test
+ public void testInToVerify() {
+ boolean result=edgStorageCageDetailsService.inToVerify("P24060405|30|1");
+ log.info("鏄惁瀛樺湪閲嶅ID 銆嬪厑璁歌繘鐗囷細{}", result);
+ }
@Test
public void testPpOptimizeDetail() {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 3b73c7e..ee8546b 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
@@ -92,7 +91,8 @@
@ApiOperation("鎸囧畾閽㈠寲")
@PostMapping("/TemperingGlass")
public Result temperingGlass(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
- boolean result = bigStorageCageDetailsService.temperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(), bigStorageCageDetails.getEngineerId());
+ boolean result = bigStorageCageDetailsService
+ .temperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(), bigStorageCageDetails.getEngineerId(), bigStorageCageDetails.getTemperingFeedSequence().toString());
if (result == true) {
return Result.build(200, "鎸囧畾閽㈠寲鎴愬姛", 1);
} else {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 8703694..8daa7b7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -69,7 +69,7 @@
*/
List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId);
- boolean temperingGlass(String temperingLayoutId, String engineerId);
+ boolean temperingGlass(String temperingLayoutId, String engineerId, String temperingFeedSequence);
List<Map<String, Object>> selectTemperingGlass();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index 8a73f9e..1ddb267 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -2,7 +2,6 @@
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
@@ -27,6 +26,7 @@
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.job.PlcStorageCageTask;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
import com.mes.temperingglass.service.TemperingGlassInfoService;
@@ -70,6 +70,9 @@
@Resource
private TemperingGlassInfoService temperingGlassInfoService;
+
+ @Resource
+ private PlcStorageCageTask plcStorageCageTask;
@Resource
private DamageService damageService;
@@ -188,7 +191,7 @@
LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper<>();
bigStorageCageDetailsWrapper
.eq(BigStorageCageDetails::getGlassId, glassId)
- .eq(BigStorageCageDetails::getState,Const.GLASS_STATE_IN);
+ .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN);
BigStorageCageDetails bigStorageCageDetails = baseMapper.selectOne(bigStorageCageDetailsWrapper);
if (temperingGlassInfo != null) {
@@ -221,7 +224,7 @@
@Override
public List<BigStorageCageDetails> selectBigStorageCageDetails(String glassId) {
LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>();
- List<BigStorageCageDetails> bigStorageCageDetailsList=new ArrayList<>();
+ List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
glassInfoWrapper.eq(GlassInfo::getGlassId, glassId);
GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper);
BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
@@ -276,8 +279,8 @@
.gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
.last("limit 1");
if (glassInfo.getTemperingLayoutId() == 0) {
- wrapper.eq(BigStorageCageDetails::getFlowCardId,glassInfo.getFlowCardId())
- .eq(BigStorageCageDetails::getLayer,glassInfo.getLayer());
+ wrapper.eq(BigStorageCageDetails::getFlowCardId, glassInfo.getFlowCardId())
+ .eq(BigStorageCageDetails::getLayer, glassInfo.getLayer());
// wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
} else {
wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1);
@@ -363,7 +366,7 @@
}
@Override
- public boolean temperingGlass(String temperingLayoutId, String engineerId) {
+ public boolean temperingGlass(String temperingLayoutId, String engineerId, String temperingFeedSequence) {
LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
temperingGlassInfoLambdaQueryWrapper
.eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW);
@@ -380,7 +383,13 @@
.in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
.orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
- temperingGlassInfoService.saveBatch(temperingGlassInfos);
+ if ("0".equals(temperingFeedSequence)) {
+ if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
+ plcStorageCageTask.computeOutMoreGlassInfo(temperingGlassInfos, Boolean.FALSE, "");
+ }
+ } else {
+ temperingGlassInfoService.saveBatch(temperingGlassInfos);
+ }
return true;
}
}
@@ -406,7 +415,7 @@
}
@Override
- public void appointEngineerId(String engineerId){
+ public void appointEngineerId(String engineerId) {
redisUtil.setCacheObject("temperingengineerId", engineerId);
}
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index d0f2fe9..9937f03 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -575,30 +575,53 @@
* 纭瀛楁竻绌�
*/
// @Scheduled(fixedDelay = 300)
+// public void confirmClear() {
+// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+// String d01ToMES = plcParameterObject.getPlcParameter("D01ToMES").getValue();
+// String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue();
+// String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress();
+// String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress();
+// String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue();
+// String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue();
+// String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress();
+// String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress();
+// if(!REQUEST_WORD.equals(d01ToMES)){
+// S7object.getinstance().plccontrol.writeWord(mesD01Address, 0);
+// }
+// if(!REQUEST_WORD.equals(d04ToMES)){
+// S7object.getinstance().plccontrol.writeWord(mesD04Address, 0);
+// }
+// if (!REQUEST_WORD.equals(d03ToMES)) {
+// S7object.getinstance().plccontrol.writeWord(mesD03Address, 0);
+// }
+// if (!REQUEST_WORD.equals(d05ToMES)) {
+// S7object.getinstance().plccontrol.writeWord(mesD05Address, 0);
+// }
+// }
/**
* 杩涚墖鐘舵�佷慨鏀�
*/
// @Scheduled(fixedDelay = 300)
- public void feedStatusUpdate() {
- List<String> glassIds1=null;
- List<String> glassIds2=null;
- List<BigStorageCageFeedTask> bigStorageCageFeedTasks1=bigStorageCageFeedTaskService.list(
- new LambdaQueryWrapper<BigStorageCageFeedTask>()
- .eq(BigStorageCageFeedTask::getTaskState,1)
- .eq(BigStorageCageFeedTask::getLine,Const.ARTIFICIAL_OUT_TARGET_POSITION)
- );
- List<BigStorageCageFeedTask> bigStorageCageFeedTasks2=bigStorageCageFeedTaskService.list(
- new LambdaQueryWrapper<BigStorageCageFeedTask>()
- .eq(BigStorageCageFeedTask::getTaskState,1)
- .eq(BigStorageCageFeedTask::getLine,Const.TEMPERING_OUT_TARGET_POSITION)
- );
-// if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){
-//
-// }
-// if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){
-//
-// }
- }
+// public void feedStatusUpdate() {
+// List<String> glassIds1=null;
+// List<String> glassIds2=null;
+// List<BigStorageCageFeedTask> bigStorageCageFeedTasks1=bigStorageCageFeedTaskService.list(
+// new LambdaQueryWrapper<BigStorageCageFeedTask>()
+// .eq(BigStorageCageFeedTask::getTaskState,1)
+// .eq(BigStorageCageFeedTask::getLine,Const.ARTIFICIAL_OUT_TARGET_POSITION)
+// );
+// List<BigStorageCageFeedTask> bigStorageCageFeedTasks2=bigStorageCageFeedTaskService.list(
+// new LambdaQueryWrapper<BigStorageCageFeedTask>()
+// .eq(BigStorageCageFeedTask::getTaskState,1)
+// .eq(BigStorageCageFeedTask::getLine,Const.TEMPERING_OUT_TARGET_POSITION)
+// );
+//// if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){
+////
+//// }
+//// if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){
+////
+//// }
+// }
/**
* 鎸夌収鐜荤拑id鍒ゆ柇鐜荤拑鐘舵�佸強鍗ц浆绔嬫槸鍚﹀彲鐩存帴鍚姩
@@ -623,8 +646,8 @@
);
EdgGlassTaskInfo edgGlassTaskInfo = new EdgGlassTaskInfo();
BeanUtils.copyProperties(glassInfo, edgGlassTaskInfo);
- edgGlassTaskInfo.setWidth((int)glassInfo.getWidth());
- edgGlassTaskInfo.setHeight((int)glassInfo.getHeight());
+ edgGlassTaskInfo.setWidth((int) glassInfo.getWidth());
+ edgGlassTaskInfo.setHeight((int) glassInfo.getHeight());
edgGlassTaskInfoList.add(edgGlassTaskInfo);
log.info("鍦ㄧ幓鐠冧俊鎭〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList);
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index dd93257..5ada9b0 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -2,13 +2,11 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
-import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
@@ -17,7 +15,6 @@
import com.mes.job.PlcStorageCageTask;
import com.mes.pp.entity.ReportingWork;
import com.mes.pp.entity.ReportingWorkDetail;
-import com.mes.temperingglass.entity.TemperingGlassInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -32,7 +29,9 @@
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* @Author : zhoush
@@ -173,7 +172,7 @@
Damage damage=new Damage();
damage.setGlassId("P24060403|3|6");
damage.setLine(2001);
- damage.setWorkingProcedure("鍐峰姞宸�");
+ damage.setWorkingProcedure("纾ㄨ竟");
damage.setRemark("");
damage.setStatus(2);
damageService.insertDamage(damage);
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
index a06a933..a3c0e25 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
@@ -2,10 +2,7 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
-import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglassstation.service.RawGlassStorageStationService;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
@@ -16,7 +13,6 @@
import javax.annotation.Resource;
import java.util.List;
-import java.util.stream.Collectors;
/**
* @author wangfei
@@ -25,56 +21,26 @@
@Component
public class RawGlassPushMessage {
- @Resource private RawGlassStorageStationService rawGlassStorageStationService;
+ @Resource
+ private RawGlassStorageStationService rawGlassStorageStationService;
- @Resource private RawGlassStorageTaskService rawGlassStorageTaskService;
+ @Resource
+ private RawGlassStorageTaskService rawGlassStorageTaskService;
- @Resource private RawGlassStorageDetailsService rawGlassStorageDetailsService;
-
- @Scheduled(fixedDelay = 2000)
- public void sendRawGlassMessage() {
- log.info("鍙戦�佷换鍔′俊鎭拰鏋跺瓙淇℃伅");
- JSONObject jsonObject = new JSONObject();
- List<RawGlassStorageDetails> rawStationDetailsList =
- rawGlassStorageStationService.listRawGlassDetails();
- List<RawGlassStorageTask> tasks = rawGlassStorageTaskService.listRawGlassTask();
- jsonObject.append("rawStationDetailsList", rawStationDetailsList);
- jsonObject.append("tasks", tasks);
-// log.info("鑾峰彇鍒扮殑宸ヤ綅璇︽儏鍙婁换鍔′俊鎭负锛歿}", jsonObject);
-
- List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("rawGlass");
- if (CollectionUtil.isNotEmpty(sendwServer)) {
- sendwServer.stream().forEach(e->{
- e.sendMessage(String.valueOf(jsonObject));
- });
+ @Scheduled(fixedDelay = 2000)
+ public void sendRawGlassMessage() {
+ log.info("鍙戦�佷换鍔′俊鎭拰鏋跺瓙淇℃伅");
+ JSONObject jsonObject = new JSONObject();
+ List<RawGlassStorageDetails> rawStationDetailsList =
+ rawGlassStorageStationService.listRawGlassDetails();
+ List<RawGlassStorageTask> tasks = rawGlassStorageTaskService.listRawGlassTask();
+ jsonObject.append("rawStationDetailsList", rawStationDetailsList);
+ jsonObject.append("tasks", tasks);
+ List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("rawGlass");
+ if (CollectionUtil.isNotEmpty(sendwServer)) {
+ sendwServer.stream().forEach(e -> {
+ e.sendMessage(String.valueOf(jsonObject));
+ });
+ }
}
- }
-
- /** todo:鍏ュ簱浠诲姟锛氬悐瑁呬綅鏈夌幓鐠冿紝鍏堝幓宸ヤ綅琛ㄦ煡璇㈢┖鏍煎瓙锛岀敓鎴愬叆搴撲换鍔′粠鍚婅浣嶅埌鐩爣鏍煎瓙 */
-// @Scheduled(fixedDelay = 1000)
-// public void sendRawGlassMessage() {
-//// List<RawGlassStorageDetails> rawGlassStorageDetailsList = rawGlassStorageDetailsService.List(new RawGlassStorageDetails())
-// Wrapper<RawGlassStorageDetails> queryWrapper = null;
-// List<RawGlassStorageDetails> detailsList = rawGlassStorageDetailsService.list(null);
-// queryWrapper.eq(RawGlassStorageDetails::getState, 100);
-// if(detailsList.size() >0){
-// //鏌ユ壘鏍煎瓙琛╠etails绌烘牸瀛�
-// List<String> slotIds = detailsList.stream()
-// .map(RawGlassStorageDetails::getSlotId)
-// .collect(Collectors.toList());
-// list(new LambdaQueryWrapper<RawGlassStorageTask>()
-// .in(CollectionUtil.isNotEmpty(request.getState()), RawGlassStorageTask::getState, request.getState())
-// .in(CollectionUtil.isNotEmpty(request.getSlotId()), RawGlassStorageTask::getSlotId, request.getSlotId())
-// .orderByDesc(RawGlassStorageTask::getCreateTime));
-// }if(slotIds.size()>0){
-// //鐢熸垚鍏ュ簱浠诲姟
-// }
-//
-// }
-
-
-
- /** todo:鍑哄簱浠诲姟锛�1銆佺偣鍑哄簱锛岀珛椹敓鎴愬嚭鐗囦换鍔� 2銆佺偣鍑哄簱淇敼宸ヤ綅璇︽儏鍐呯殑鐘舵�佷负寰呭嚭搴擄紝瀹氭椂浠诲姟鎵弿鐢熸垚鍑哄簱浠诲姟 */
-
- /** todo:鍘熺墖璋冨害锛�1銆佹煡璇㈠伐绋嬪師鐗囪〃锛屾寜鐓ч『搴忓皢鍘熺墖鏀惧叆涓婄墖1鍙蜂綅锛屽悗缁師鐗囨斁涓婄墖2鍙蜂綅锛屽嚭鐜板昂瀵告浛鎹紝鍒ゆ柇鍘熶笂鐗囦綅鏄惁鏈夌幓鐠冿紝鏈� 鍏堝嚭鍚庤繘锛屾棤 鐩存帴杩涚墖 */
}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
new file mode 100644
index 0000000..54d2030
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -0,0 +1,235 @@
+package com.mes.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.kangaroohy.milo.model.ReadWriteEntity;
+import com.kangaroohy.milo.service.MiloService;
+import com.mes.common.config.Const;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.mapper.EngineeringMapper;
+import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
+import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
+import com.mes.rawglassstation.entity.RawGlassStorageStation;
+import com.mes.rawglassstation.service.RawGlassStorageStationService;
+import com.mes.rawglasstask.entity.RawGlassStorageTask;
+import com.mes.rawglasstask.service.RawGlassStorageTaskService;
+import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
+import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/10/11 16:13
+ * @Description:
+ */
+@Slf4j
+@Component
+public class RawGlassTask {
+
+ @Autowired
+ private RawGlassStorageStationService rawGlassStorageStationService;
+ @Autowired
+ private RawGlassStorageDetailsService rawGlassStorageDetailsService;
+
+ @Autowired
+ private RawGlassStorageTaskService rawGlassStorageTaskService;
+
+ @Resource
+ private EngineeringMapper engineeringMapper;
+ @Resource
+ private UpPattenUsageMapper upPattenUsageMapper;
+
+ @Autowired
+ private MiloService miloService;
+
+ private static final List<String> liftingStation = Arrays.asList("1", "2");
+ private static final List<String> loadGlassStation = Arrays.asList("3", "4", "5", "6");
+
+ /**
+ * 鍏ュ簱浠诲姟锛氬悐瑁呬綅鏈夌幓鐠冿紝鍏堝幓宸ヤ綅琛ㄦ煡璇㈢┖鏍煎瓙锛岀敓鎴愬叆搴撲换鍔′粠鍚婅浣嶅埌鐩爣鏍煎瓙
+ *
+ * @throws Exception
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void warehouseTask() throws Exception {
+ ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
+ String value = entity.getValueString();
+ if (!"1".equals(value)) {
+ log.info("澶ц溅蹇欑");
+ return;
+ }
+ List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
+ .inSql(RawGlassStorageDetails::getSlotId, "select slot from raw_glass_storage_station where enable_state = 1 and slot in (1,2)"));
+ if (CollectionUtil.isEmpty(rawGlassList)) {
+ log.info("鍚婅浣嶈绂佺敤鎴栨病鏈夌幓鐠�");
+ return;
+ }
+ //鏌ヨ宸ヤ綅淇℃伅鏄惁鏈�
+ List<RawGlassStorageStation> stationList = rawGlassStorageStationService.list(new LambdaQueryWrapper<RawGlassStorageStation>().notInSql(RawGlassStorageStation::getSlot, "select slot_id from raw_glass_storage_details where state = '100'")
+ .eq(RawGlassStorageStation::getEnableState, Const.SLOT_ON));
+ if (CollectionUtil.isEmpty(stationList)) {
+ log.info("娌℃湁绌虹殑宸ヤ綅");
+ return;
+ }
+ //鐢熸垚杩涚浠诲姟
+ generateTask(rawGlassList.get(0).getSlotId(), stationList.get(0).getSlot(),
+ rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
+ //鐢熸垚宸ヤ綅浠诲姟锛屽皢鍚婅浣嶇殑鐜荤拑鐘舵�佹敼浣嶈繘绗间腑
+ }
+
+
+ /**
+ * 鍑哄簱浠诲姟锛�1銆佺偣鍑哄簱锛岀珛椹敓鎴愬嚭鐗囦换鍔� 2銆佺偣鍑哄簱淇敼宸ヤ綅璇︽儏鍐呯殑鐘舵�佷负寰呭嚭搴擄紝瀹氭椂浠诲姟鎵弿鐢熸垚鍑哄簱浠诲姟
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void outboundTask() throws Exception {
+ ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
+ String value = entity.getValueString();
+ if (!"2".equals(value)) {
+ log.info("澶ц溅蹇欑");
+ return;
+ }
+ List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT_ING)
+ .inSql(RawGlassStorageDetails::getSlotId, "select slot from raw_glass_storage_station where enable_state = 1 and slot not in (1,2)"));
+ if (CollectionUtil.isEmpty(rawGlassList)) {
+ log.info("绯荤粺娌℃湁闇�瑕佸嚭搴撶殑鍘熺墖淇℃伅");
+ return;
+ }
+ List<Integer> emptyLeftingList = rawGlassStorageDetailsService.listBySlotState(liftingStation, Arrays.asList(Const.GLASS_STATE_IN));
+ if (CollectionUtil.isEmpty(emptyLeftingList)) {
+ log.info("鍚婅浣嶅綋鍓嶉兘鏈夊師鐗囷紝缁撴潫鍑虹墖浠诲姟");
+ }
+ //鐢熸垚鍑哄簱浠诲姟
+ generateTask(rawGlassList.get(0).getSlotId(), emptyLeftingList.get(0),
+ rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT);
+ }
+
+ /**
+ * 鍘熺墖璋冨害锛�1銆佹煡璇㈠伐绋嬪師鐗囪〃锛屾寜鐓ч『搴忓皢鍘熺墖鏀惧叆涓婄墖1鍙蜂綅锛屽悗缁師鐗囨斁涓婄墖2鍙蜂綅锛屽嚭鐜板昂瀵告浛鎹紝鍒ゆ柇鍘熶笂鐗囦綅鏄惁鏈夌幓鐠冿紝鏈� 鍏堝嚭鍚庤繘锛屾棤 鐩存帴杩涚墖
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void rawGlassDispatchTask() throws Exception {
+ ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
+ String value = entity.getValueString();
+ if (!"2".equals(value)) {
+ log.info("澶ц溅蹇欑");
+ return;
+ }
+ //鏌ヨ褰撳墠绯荤粺姝e湪鎵ц鐨勮鍗�
+ Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>().eq(Engineering::getState, Const.ENGINEERING_RUNNING).last("order by id limit 1"));
+ if (null == engineering) {
+ log.info("娌℃湁姝e湪鎵ц鐨勫伐绋�");
+ return;
+ }
+ //褰撳墠灏哄闇�瑕佷笂鐗囩殑鏁伴噺
+ List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(engineering.getEngineerId());
+ if (CollectionUtils.isEmpty(pattenUsageList)) {
+ log.info("姝e湪鎵ц鐨勫伐绋嬪師鐗囨棤鍙笂鐗囩殑鍘熺墖淇℃伅");
+ return;
+ }
+ Map<String, List<UpPattenUsageVO>> upListMap = pattenUsageList.stream()
+ .collect(Collectors.groupingBy(UpPattenUsageVO::getGroupNumber));
+ //todo:鎸夌収宸ョ▼鍙锋寜鐓у伐绋嬩笅鏈畬鎴愮殑灏哄鐨勯『搴忥紝褰�1鍙蜂笂鐗囦綅鏋跺瓙涓婄殑褰撳墠灏哄鐜荤拑灏戜簬3鐗囦笖2鍙蜂笂鐗囦綅鏃犲師鐗囩幓鐠冿紝鍒欏皢鍘昏皟搴︾幓鐠冨幓2鍙蜂笂鐗囦綅锛�
+ //todo:褰撲竴鍙蜂笂鐗囦綅鏋跺瓙涓婄殑鐜荤拑浣嶇┖鎴栬�呭綋鍓嶅昂瀵哥敤瀹屾椂鏃讹紝灏�2鍙凤紙鏈夌幓鐠冿級涓婄墖浣嶈皟搴﹀埌1鍙蜂笂鐗囦綅
+ //1銆佹煡璇�4涓笂鐗囩殑鍘熺墖璇︽儏
+ List<RawGlassStorageDetails> rawGlassDetailsList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN).in(RawGlassStorageDetails::getSlotId, loadGlassStation));
+ if (CollectionUtils.isEmpty(rawGlassDetailsList)) {
+ //琛ㄧず1涓婄墖浣嶆病鏈夊師鐗囷紝鐩存帴鎵惧師鐗囨斁鍏ュ搴旂殑涓婄墖浣�
+ List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("1");
+ UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
+ RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId())
+ .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth())
+ .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight())
+ .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness())
+ .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size())
+ .orderByAsc(RawGlassStorageDetails::getRemainQuantity)
+ .last("limit 1")
+ );
+ generateTask(details.getSlotId(), 1, details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
+ //缁撴潫璋冨害浠诲姟
+ }
+ Map<Integer, List<RawGlassStorageDetails>> listMap = rawGlassDetailsList.stream().collect(Collectors.groupingBy(RawGlassStorageDetails::getSlotId));
+ RawGlassStorageDetails rawGlass03Details = listMap.get(3).get(0);
+ RawGlassStorageDetails rawGlass04Details = listMap.get(4).get(0);
+// RawGlassStorageDetails rawGlass05Details = listMap.get(5).get(0);
+// RawGlassStorageDetails rawGlass06Details = listMap.get(6).get(0);
+ //todo:涓婄墖1鍙蜂綅2绉嶆竻绌烘柟寮忥細鏂瑰紡涓�锛氬師鐗囩敤瀹� 鏂瑰紡浜岋細褰撳墠灏哄鐢ㄥ畬
+ if (null == rawGlass03Details) {
+ if (null == rawGlass04Details) {
+ //琛ㄧず1涓婄墖浣嶆病鏈夊師鐗囷紝鐩存帴鎵惧師鐗囨斁鍏ュ搴旂殑涓婄墖浣�
+ List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("1");
+ UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
+ RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId())
+ .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth())
+ .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight())
+ .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness())
+ .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size())
+ .orderByAsc(RawGlassStorageDetails::getRemainQuantity)
+ .last("limit 1")
+ );
+ generateTask(details.getSlotId(), 1, details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
+ //缁撴潫璋冨害浠诲姟
+ } else {
+ //灏�2鍙蜂笂鐗囦綅鐨勫師鐗囨斁鍏�1鍙蜂笂鐗囦綅
+ generateTask(2, 1, rawGlass04Details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
+ //缁撴潫璋冨害浠诲姟
+ }
+ } else {
+ if (null == rawGlass04Details) {
+ List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("2");
+ if (CollectionUtils.isEmpty(upPattenUsage01VOS)) {
+ return;
+ }
+ UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
+ RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId())
+ .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth())
+ .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight())
+ .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness())
+ .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size())
+ .orderByAsc(RawGlassStorageDetails::getRemainQuantity)
+ .last("limit 1")
+ );
+ generateTask(details.getSlotId(), 2, details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
+ }
+ }
+
+
+ }
+
+
+ /**
+ * 鐢熸垚鍘熺墖浠撳偍浠诲姟
+ *
+ * @param startSlot
+ * @param endSlot
+ * @param patternQuantity
+ * @param taskType
+ * @return
+ */
+ private boolean generateTask(int startSlot, int endSlot, Integer patternQuantity, int taskType) {
+ RawGlassStorageTask task = RawGlassStorageTask.builder()
+ .originateSlot(startSlot)
+ .endSlot(endSlot)
+ .patternQuantity(patternQuantity)
+ .taskType(taskType)
+ .createTime(new Date()).build();
+ return rawGlassStorageTaskService.save(task);
+ }
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
index 1f99472..2a339bb 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
@@ -33,7 +33,7 @@
/**
* 鏍煎瓙id
*/
- private String slotId;
+ private Integer slotId;
/**
* 鍘熺墖瀹�
@@ -63,7 +63,7 @@
/**
* 鍓╀綑鏁伴噺
*/
- private String remainQuantity;
+ private Integer remainQuantity;
/**
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
index 868b2fd..46441d4 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
@@ -1,11 +1,14 @@
package com.mes.rawglassdetails.mapper;
-import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
- * Mapper 鎺ュ彛
+ * Mapper 鎺ュ彛
* </p>
*
* @author wf
@@ -13,4 +16,12 @@
*/
public interface RawGlassStorageDetailsMapper extends BaseMapper<RawGlassStorageDetails> {
+ /**
+ * 鎸夌収鍚婅浣嶅拰璇︽儏琛ㄧ姸鎬佹煡璇㈢┖闂茬殑鍚婅浣�
+ *
+ * @param liftingStation
+ * @param state
+ * @return
+ */
+ List<Integer> listBySlotState(@Param("leftingStation") List<String> liftingStation, @Param("state") List<Integer> state);
}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
index 454dde2..f13945e 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
@@ -1,5 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="glassdetails.mapper.RawGlassStorageDetailsMapper">
+<mapper namespace="com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper">
+ <select id="listBySlotState" resultType="java.lang.Integer">
+ select t.slot
+ from raw_glass_storage_station t
+ inner JOIN raw_glass_storage_details t1
+ on t.slot = t1.slot_id and t.enable_state = 1
+ and t.slot in
+ <foreach collection="leftingStation" item="item" open='(' close=')' separator=','>
+ #{item}
+ </foreach>
+ and t1.state not in
+ <foreach collection="state" item="item" open='(' close=')' separator=','>
+ #{item}
+ </foreach>
+ </select>
</mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
index e05c291..cd7ad71 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -1,10 +1,8 @@
package com.mes.rawglassdetails.service;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.mes.entity.request.GeneralRequest;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.entity.request.RawGlassRequest;
-import com.mes.userinfo.entity.vo.SysUserVO;
import java.util.List;
@@ -39,4 +37,6 @@
String deleteWarehousing(Long slotId);
String outWarehousing(Long slotId);
+
+ List<Integer> listBySlotState(List<String> liftingStation, List<Integer> state);
}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
index 8be12b1..e608d50 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -8,8 +8,6 @@
import com.mes.rawglassdetails.entity.request.RawGlassRequest;
import com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
-import com.mes.rawglassstation.entity.RawGlassStorageStation;
-import com.mes.userinfo.entity.vo.SysUserVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -24,8 +22,8 @@
@Service
@Slf4j
public class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
- @Override
- public boolean deleteRawGlassStorageDetails(String device_id) {
+ @Override
+ public boolean deleteRawGlassStorageDetails(String device_id) {
QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("device_id", device_id);
return remove(queryWrapper);//remove鎵嶆槸鍒犻櫎锛宒elete寰楃敤鍙﹀鐨勪緷璧栵紝榛樿鏂规硶鏄痳emove杩斿洖bool
@@ -60,17 +58,24 @@
.eq(RawGlassStorageDetails::getSlotId, request.getSlotId()));
return "success";
}
+
@Override
public String deleteWarehousing(Long slotId) {
update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
- .set(RawGlassStorageDetails::getState,Const.GLASS_STATE_OUT));
+ .set(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT));
return "success";
}
+
@Override
public String outWarehousing(Long slotId) {
update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
- .set(RawGlassStorageDetails::getState,Const.GLASS_STATE_OUT_ING));
+ .set(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT_ING));
return "success";
}
+ @Override
+ public List<Integer> listBySlotState(List<String> liftingStation, List<Integer> state) {
+ return baseMapper.listBySlotState(liftingStation, state);
+ }
+
}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
index 8c6a3be..5346dee 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
@@ -2,20 +2,23 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
+import java.util.Date;
/**
* <p>
- *
+ *
* </p>
*
* @author wf
* @since 2024-09-10
*/
@Data
+@Builder
@EqualsAndHashCode(callSuper = false)
public class RawGlassStorageTask implements Serializable {
@@ -38,7 +41,7 @@
/**
* 鍘熺墖鏁伴噺
*/
- private String patternQuantity;
+ private Integer patternQuantity;
/**
* 浠诲姟绫诲瀷
@@ -53,7 +56,7 @@
/**
* 鍒涘缓鏃堕棿
*/
- private String createTime;
+ private Date createTime;
}
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
index 089ecd4..6330ac4 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
@@ -152,7 +152,7 @@
damage.setLine(Const.TEMPERING_OUT_TARGET_POSITION);
damage.setWorkingProcedure("閽㈠寲");
damage.setRemark("閽㈠寲");
- damage.setStatus(0);
+ damage.setStatus(1);
damage.setType(e.getState());
return damage;
}).collect(Collectors.toList());
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
index 246a786..530267b 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
@@ -34,4 +34,6 @@
database: 0
host: 127.0.0.1
port: 6379
- password: 123456
\ No newline at end of file
+ password: 123456
+ liquibase:
+ change-log: classpath:changelog/changelogBase.xml
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
index af491d8..cd77223 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,16 +2,25 @@
port: 8084
spring:
profiles:
- active: cz
+ active: dev
application:
name: temperingGlass
liquibase:
- enabled: false
- change-log: classpath:changelog/changelog.sql
+ enabled: true
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mes:
width: 2800
- height: 5000
\ No newline at end of file
+ height: 5000
+kangaroohy:
+ milo:
+ enabled: false
+ primary: default
+ config:
+ default:
+ endpoint: opc.tcp://10.153.19.150:49320
+ security-policy: basic256sha256
+ username: admin
+ password: 1qaz2wsx3edc4rfv
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql
index 245a94c..5473f61 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql
@@ -153,56 +153,61 @@
-- rollback DELETE FROM sys_dict_data WHERE dict_type in ('鐧界幓', '鍗曢摱', '鍙岄摱');
--- changeset wangfei:20240918001
+-- changeset zsh:20240918001
-- preconditions onFail:CONTINUE onError:CONTINUE
-- precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'raw_glass_storage_details' and table_schema = 'hangzhoumes';
CREATE TABLE raw_glass_storage_details
(
id bigint NOT NULL AUTO_INCREMENT,
device_id int NULL DEFAULT NULL COMMENT '璁惧id',
- slot_id varchar(255) NULL DEFAULT NULL COMMENT '鏍煎瓙id',
+ slot int NULL DEFAULT NULL COMMENT '鏍煎瓙id',
pattern_width double(8, 2) NULL DEFAULT NULL COMMENT '鍘熺墖瀹�',
pattern_height double(8, 2) NULL DEFAULT NULL COMMENT '鍘熺墖楂�',
pattern_thickness double(8, 2) NULL DEFAULT NULL COMMENT '鍘熺墖鍘氬害',
- films_id varchar(255) NULL DEFAULT NULL COMMENT '鑶滅郴',
+ films_id varchar(64) NULL DEFAULT NULL COMMENT '鑶滅郴',
create_time datetime NOT NULL COMMENT '鍒涘缓鏃堕棿',
- remain_quantity varchar(255) NULL DEFAULT NULL COMMENT '鍓╀綑鏁伴噺',
+ remain_quantity int NULL DEFAULT NULL COMMENT '鍓╀綑鏁伴噺',
+ state int NULL DEFAULT NULL COMMENT '鐘舵��',
PRIMARY KEY (id) USING BTREE
);
-- rollback DROP TABLE raw_glass_storage_details;
--- changeset wangfei:20240918002
+-- changeset zsh:20240918002
-- preconditions onFail:CONTINUE onError:CONTINUE
-- precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'raw_glass_storage_station' and table_schema = 'hangzhoumes';
CREATE TABLE raw_glass_storage_station
(
- id bigint NOT NULL AUTO_INCREMENT,
- device_id int NULL DEFAULT NULL COMMENT '璁惧id',
- slot int NULL DEFAULT NULL COMMENT '鏍呮牸鍙�',
+ id bigint NOT NULL AUTO_INCREMENT,
+ device_id int NULL DEFAULT NULL COMMENT '璁惧id',
+ slot int NULL DEFAULT NULL COMMENT '鏍呮牸鍙�',
enable_state varchar(255) NULL DEFAULT NULL COMMENT '鍚敤鏍囪',
- start_slot int NULL DEFAULT NULL COMMENT '寮�濮嬪伐浣�',
- end_slot int NULL DEFAULT NULL COMMENT '鐩爣宸ヤ綅',
- PRIMARY KEY (id) USING BTREE
+ PRIMARY KEY (id)
);
-- rollback DROP TABLE raw_glass_storage_station;
--- changeset wangfei:20240918003
+-- changeset zsh:20240918003
-- preconditions onFail:CONTINUE onError:CONTINUE
-- precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'raw_glass_storage_task' and table_schema = 'hangzhoumes';
CREATE TABLE raw_glass_storage_task
(
- id bigint NOT NULL AUTO_INCREMENT,
- enable_id int NULL DEFAULT NULL COMMENT '浠诲姟ID',
- originate_slot int NULL DEFAULT NULL COMMENT '璧峰鏍煎瓙',
- end_slot int NULL DEFAULT NULL COMMENT '鐩爣鏍煎瓙',
- pattern_quantity varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鍘熺墖鏁伴噺',
- enable_type int NULL DEFAULT NULL COMMENT '浠诲姟绫诲瀷',
- enable_state int NULL DEFAULT NULL COMMENT '浠诲姟鐘舵��',
+ id bigint NOT NULL AUTO_INCREMENT,
+ start_slot int NULL DEFAULT NULL COMMENT '璧峰鏍煎瓙',
+ end_slot int NULL DEFAULT NULL COMMENT '鐩爣鏍煎瓙',
+ pattern_quantity int NULL DEFAULT NULL COMMENT '鍘熺墖鏁伴噺',
+ enable_type int NULL DEFAULT NULL COMMENT '浠诲姟绫诲瀷',
+ enable_state int NULL DEFAULT NULL COMMENT '浠诲姟鐘舵��',
create_time datetime NULL DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
PRIMARY KEY (id) USING BTREE
);
-- rollback DROP TABLE raw_glass_storage_task;
+-- changeset zsh:20241015001
+-- preconditions onFail:CONTINUE onError:CONTINUE
+-- precondition-sql-check expectedResult:0 SELECT count(0) FROM information_schema.columns WHERE table_schema = 'hangzhoumes' AND table_name = 'engineering' AND column_name = 'station_cell';
+ALTER TABLE engineering
+ ADD COLUMN station_cell varchar(20);
+
+
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index 7fdfb28..c7d2ab8 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,6 +1,5 @@
package com.mes.downglassinfo.service.impl;
-import cn.smallbun.screw.core.util.CollectionUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -19,6 +18,7 @@
import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
import com.mes.job.DownLoadCacheGlassTask;
import com.mes.pp.service.FlowCardService;
import lombok.extern.slf4j.Slf4j;
@@ -31,7 +31,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
@Slf4j
@Service
@@ -52,6 +51,9 @@
@Autowired
FlowCardService flowCardService;
+
+ @Autowired
+ GlassInfoService glassInfoService;
/**
* 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙�
@@ -224,8 +226,15 @@
@Override
public List<Map<String, Object>> downGlassLabelPrint(DownGlassInfo downGlassInfo) {
-
- List<Map<String, Object>> resultList = baseMapper.downGlassLabelPrint(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+ List<Map<String, Object>> resultList = null;
+ if (downGlassInfo.getGlassId() != null) {
+ resultList = glassInfoService.listMaps(
+ new LambdaQueryWrapper<GlassInfo>()
+ .eq(GlassInfo::getGlassId, downGlassInfo.getGlassId())
+ );
+ } else {
+ resultList = baseMapper.downGlassLabelPrint(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+ }
log.info("MES钀芥灦鏁版嵁:{}", resultList);
//鑾峰彇ERP鏍囩鎵�闇�鐨勪俊鎭�
List<Map<String, Object>> labelInfo;
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index e96ddf0..a335c88 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -30,7 +30,6 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -93,7 +92,6 @@
String confirmationWrodValue = plcParameterObject.getPlcParameter("confirmationWord").getValue();
String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
-
log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot);
@@ -169,9 +167,9 @@
Damage damage = new Damage();
damage.setGlassId(e.getGlassId());
damage.setLine(Const.TEMPERING_OUT_TARGET_POSITION);
- damage.setWorkingProcedure("涓嬬墖");
+ damage.setWorkingProcedure("閽㈠寲");
damage.setRemark("涓嬬墖");
- damage.setStatus(0);
+ damage.setStatus(1);
damage.setType(e.getTaskStatus());
return damage;
}).collect(Collectors.toList());
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
deleted file mode 100644
index b4e6af6..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-server:
- port: 8085
-
-spring:
- profiles:
- active: cz
- application:
- name: unLoadGlass
- liquibase:
- enabled: false
- task:
- scheduling:
- pool:
- size: 10
- thread-name-prefix: task-unLoad
-
-
-mybatis-plus:
- mapper-locations: classpath*:mapper/*.xml
-# configuration:
-# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
-mes:
- maxWidth: 2500 #涓嬬墖鐨勬渶澶у搴�
- maxHeight: 2000 #涓嬬墖鐨勬渶澶ч珮搴�
- minWidth: 400 #涓嬬墖鐨勬渶灏忓搴�
- minHeight: 400 #涓嬬墖鐨勬渶灏忛珮搴�
- throughWidth: 3000
- throughHeight: 2500
- threshold: 5 #涓嬬墖鐨勬渶澶ч槇鍊�
- scan:
- ip: 192.168.30.199
- port: 5000
diff --git a/hangzhoumesParent/moduleService/pom.xml b/hangzhoumesParent/moduleService/pom.xml
index b043adf..55ea5f6 100644
--- a/hangzhoumesParent/moduleService/pom.xml
+++ b/hangzhoumesParent/moduleService/pom.xml
@@ -55,11 +55,6 @@
<groupId>com.mes</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
- <dependency>
- <artifactId>opcuaClient</artifactId>
- <groupId>com.mes</groupId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
<!--寮�鍙戣�呭伐鍏�-->
<!-- <dependency>-->
diff --git a/hangzhoumesParent/readMe-OPC.md b/hangzhoumesParent/readMe-OPC.md
new file mode 100644
index 0000000..b9fc013
--- /dev/null
+++ b/hangzhoumesParent/readMe-OPC.md
@@ -0,0 +1,6 @@
+3.1.1.0.6.13 璇诲�兼敮鎸佽繑鍥炴洿澶氫俊鎭� #PR16 3.1.0.6.13 鍗囩骇鍒版渶鏂扮増鏈� 0.6.13 淇敼璁㈤槄鐩戝惉callback鍙傛暟浠ヨ幏鍙栨洿澶氫俊鎭紝鍏锋湁鐮村潖鎬э紒锛侊紒#PR15 3.0.6.12 鍗囩骇鍒版渶鏂扮増鏈� 0.6.12
+杩炴帴姹犻厤缃紭鍖� #gitee I86XSX 3.0.5 鏀寔閰嶇疆鏄惁鍚敤缁勪欢锛歬angaroohy.milo.enabled=true 3.0.4 鏀寔閰嶇疆澶氫釜 opc ua 鏈嶅姟鍣紝璋冪敤鏂规硶鏃跺彲鎵嬪姩鎸囧畾闇�瑕佽闂殑鏈嶅姟鍣� 鎵归噺璇诲�兼柟娉曚紭鍖�
+鍗囩骇milo渚濊禆鍒� 0.6.10 3.0.3 ID鏀寔瀛楃涓茶〃绀烘硶锛歯s=<鍛藉悕绌洪棿绱㈠紩>;<鏍囪瘑绗︾被鍨�>=<鏍囪瘑绗�>
+3.0.2 璁㈤槄鏃� 鏀寔鎸囧畾璁㈤槄鏃堕棿闂撮殭锛岄粯璁� 1000ms 3.0.1 endpoint 鏀寔澶栫綉绌块�忕被鐨勫湴鍧� 鏂板鐐逛綅璁㈤槄鏂规硶锛岃闃呮柇鎺夎嚜鍔ㄩ噸杩� 澶栫綉绌块�忕被鍦板潃濡傦細 鍐呯綉鍦板潃涓猴細opc.tcp://192.168.68.128:
+49320 澶栫綉鍦板潃涓猴細opc.tcp://opc.kangaroohy.com:59320 3.0.0 閫傞厤 spring boot 3.x锛屼篃鍙湪spring boot 2.x涓娇鐢� 鍩轰簬 eclipse milo 鏈�鏂扮増鏈� 0.6.9
+鏀寔杩炴帴姹犻厤缃�
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 295218b..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>groupId</groupId>
- <artifactId>HangZhouMes</artifactId>
- <version>1.0-SNAPSHOT</version>
-
-
-</project>
\ No newline at end of file
--
Gitblit v1.8.0