From 8a76767b0a7ad271c8487a02063590b956deb5df Mon Sep 17 00:00:00 2001 From: 严智鑫 <test> Date: 星期四, 25 七月 2024 14:30:30 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml | 22 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java | 12 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java | 4 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml | 16 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java | 2 hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java | 67 + hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java | 12 UI-Project/src/utils/api.js | 23 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java | 5 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java | 1 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java | 15 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java | 5 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java | 5 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java | 4 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml | 4 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java | 18 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java | 4 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java | 16 UI-Project/src/assets/d1a.png | 0 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java | 44 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java | 3 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java | 3 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java | 2 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java | 23 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml | 4 UI-Project/src/assets/shangpian.png | 0 UI-Project/src/views/Identify/identify.vue | 3 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java | 27 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java | 21 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java | 12 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue | 108 - hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java | 23 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java | 39 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml | 2 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java | 30 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java | 5 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java | 6 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java | 49 UI-Project/src/lang/zh.js | 7 UI-Project/src/views/ReportWork/reportWork.vue | 132 ++ hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java | 107 + hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java | 17 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml | 9 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml | 16 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java | 3 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java | 37 UI-Project/src/views/Slicecage/slicecage.vue | 173 ++ hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java | 1 UI-Project/src/views/GlassStorage/MaterialRackManagement.vue | 36 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json | 132 ++ hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java | 4 hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java | 2 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java | 8 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java | 11 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java | 4 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue | 309 ++++- hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java | 10 UI-Project/src/views/Returns/returns.vue | 232 ++- hangzhoumesParent/gateway/src/main/resources/application.yml | 8 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java | 23 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java | 7 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java | 20 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java | 20 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java | 77 + hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java | 3 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml | 2 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java | 1 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue | 8 hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java | 20 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 194 ++ hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java | 3 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java | 3 UI-Project/src/assets/dlpl9.png | 0 JsonFile/PlcTemperingGlass.json | 132 ++ hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java | 23 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java | 5 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java | 12 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java | 2 UI-Project/src/assets/lp9.png | 0 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java | 16 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java | 3 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue | 120 + hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java | 2 UI-Project/src/router/index.js | 13 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java | 29 UI-Project/src/utils/WebSocketService.js | 20 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java | 13 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java | 2 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java | 41 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml | 3 UI-Project/src/layout/MainErpView.vue | 4 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java | 66 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java | 80 + hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java | 7 UI-Project/src/views/Caching/cachingun.vue | 9 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java | 3 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java | 14 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java | 37 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java | 10 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java | 4 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java | 16 UI-Project/src/views/largescreen/largescreen.vue | 2 UI-Project/src/views/UnLoadGlass/Landingindication.vue | 8 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml | 4 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java | 71 + hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java | 51 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java | 16 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml | 10 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java | 36 /dev/null | 5 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java | 22 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java | 9 hangzhoumesParent/moduleService/TemperingGlassModule/src/test/java/com/mes/TemperingApplicationTest.java | 28 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/common/S7object.java | 60 + hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml | 2 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java | 112 + UI-Project/src/assets/lpa9.png | 0 117 files changed, 2,725 insertions(+), 675 deletions(-) diff --git a/JsonFile/PlcTemperingGlass.json b/JsonFile/PlcTemperingGlass.json new file mode 100644 index 0000000..3abe9a6 --- /dev/null +++ b/JsonFile/PlcTemperingGlass.json @@ -0,0 +1,132 @@ +{ + "plcAddressBegin": "DB88.0", + "plcAddressLenght": "58", + "dataType": "word", + "parameteInfor": [ + { + "codeId": "confirmationWord", + "addressIndex": "0", + "addressLenght": "2" + }, + { + "codeId": "temperingLayoutId", + "addressIndex": "2", + "addressLenght": "2" + }, + { + "codeId": "filmsid", + "addressIndex": "4", + "addressLenght": "2" + }, + { + "codeId": "temperingType", + "addressIndex": "6", + "addressLenght": "2" + }, + { + "codeId": "thickness", + "addressIndex": "8", + "addressLenght": "2" + }, + { + "codeId": "loadingRate", + "addressIndex": "10", + "addressLenght": "2" + }, + { + "codeId": "areaDifference", + "addressIndex": "12", + "addressLenght": "2" + }, + { + "codeId": "state", + "addressIndex": "22", + "addressLenght": "2" + }, + { + "codeId": "deviceState", + "addressIndex": "24", + "addressLenght": "2" + }, + { + "codeId": "resultState", + "addressIndex": "26", + "addressLenght": "2" + }, + { + "codeId": "loadSpeed", + "addressIndex": "28", + "addressLenght": "2" + }, + { + "codeId": "downSpeed", + "addressIndex": "30", + "addressLenght": "2" + }, + { + "codeId": "load1", + "addressIndex": "32", + "addressLenght": "2" + }, + { + "codeId": "heat1", + "addressIndex": "34", + "addressLenght": "2" + }, + { + "codeId": "heat2", + "addressIndex": "36", + "addressLenght": "2" + }, + { + "codeId": "cool1", + "addressIndex": "38", + "addressLenght": "2" + }, + { + "codeId": "cool2", + "addressIndex": "40", + "addressLenght": "2" + }, + { + "codeId": "downId", + "addressIndex": "42", + "addressLenght": "2" + }, + { + "codeId": "productionTime", + "addressIndex": "44", + "addressLenght": "2" + }, + { + "codeId": "heatEnergy", + "addressIndex": "46", + "addressLenght": "2" + }, + { + "codeId": "coolEnergy", + "addressIndex": "48", + "addressLenght": "2" + }, + { + "codeId": "temperatureUp1", + "addressIndex": "50", + "addressLenght": "2" + }, + { + "codeId": "temperatureDown1", + "addressIndex": "52", + "addressLenght": "2" + }, + { + "codeId": "temperatureUp2", + "addressIndex": "54", + "addressLenght": "2" + }, + { + "codeId": "temperatureDown2", + "addressIndex": "56", + "addressLenght": "2" + } + ] +} \ No newline at end of file diff --git a/UI-Project/src/assets/d1a.png b/UI-Project/src/assets/d1a.png new file mode 100644 index 0000000..b031d4b --- /dev/null +++ b/UI-Project/src/assets/d1a.png Binary files differ diff --git a/UI-Project/src/assets/dlpl9.png b/UI-Project/src/assets/dlpl9.png new file mode 100644 index 0000000..fc78fde --- /dev/null +++ b/UI-Project/src/assets/dlpl9.png Binary files differ diff --git a/UI-Project/src/assets/lp9.png b/UI-Project/src/assets/lp9.png new file mode 100644 index 0000000..a976458 --- /dev/null +++ b/UI-Project/src/assets/lp9.png Binary files differ diff --git a/UI-Project/src/assets/lpa9.png b/UI-Project/src/assets/lpa9.png new file mode 100644 index 0000000..f7f2204 --- /dev/null +++ b/UI-Project/src/assets/lpa9.png Binary files differ diff --git a/UI-Project/src/assets/shangpian.png b/UI-Project/src/assets/shangpian.png new file mode 100644 index 0000000..71152cc --- /dev/null +++ b/UI-Project/src/assets/shangpian.png Binary files differ diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js index 3a9af7a..21ceabd 100644 --- a/UI-Project/src/lang/zh.js +++ b/UI-Project/src/lang/zh.js @@ -83,6 +83,7 @@ updatanull:'璇ュ伐绋嬫湭淇濆瓨鍒颁笂鐗囪〃锛�', glassnull:'鏇存柊鐜荤拑鐘舵�佹椂鍙戠敓閿欒', deletemessage:'鏄惁鍒犻櫎璇ユ潯淇℃伅?', + layoutSequence:'搴忓彿', }, sorter:{ gridnumber:'鏍呮牸鍙�', @@ -205,6 +206,12 @@ down:'涓嬩竴椤�', now:'褰撳墠椤垫樉绀�', tit:'鏉℃暟鎹�', + temperingqueries:'閽㈠寲鏌ヨ', + specifytempering:'鎸囧畾閽㈠寲', + projectnumber:'宸ョ▼鍙�', + layoutnumber:'閽㈠寲鐗堝浘鍙�', + numberglasses:'鐜荤拑鏁伴噺', + specifytemperinga:'鏄惁鎸囧畾閽㈠寲璇ユ潯淇℃伅锛�', }, workOrder:{ glassID:'鐜荤拑ID', diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue index 098140d..8680e02 100644 --- a/UI-Project/src/layout/MainErpView.vue +++ b/UI-Project/src/layout/MainErpView.vue @@ -169,6 +169,10 @@ alt="" style="max-width: 100%;max-height: 100%"> <h3 style="margin: 1rem ;font-weight: bold;width: 33vw;"> {{ $t('main.titleFirst') }}{{ user }}{{ $t('main.titleLast') }}</h3> + <!-- <div class="header-left"> + <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse" + style="height:30px;"></el-button> + </div> --> <span style="height: 70%;width: 78vw;margin-top: 1rem;"> <!-- <el-button class="sys-quit" @click="quit" diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js index 030de26..d790e4b 100644 --- a/UI-Project/src/router/index.js +++ b/UI-Project/src/router/index.js @@ -259,6 +259,19 @@ }, ] }, + /*----------- 鎶ュ伐绠$悊 ----------------*/ + { + path: 'reportWork', + name: 'reportWork', + component: () => import('../views/ReportWork/reportWork.vue'), + children:[ + { + path: '/ReportWork/reportWork', + name: 'reportWork', + component: () => import('../views/ReportWork/reportWork.vue') + }, + ] + }, /*----------- 绠$悊绯荤粺 ----------------*/ { path: 'sys', diff --git a/UI-Project/src/utils/WebSocketService.js b/UI-Project/src/utils/WebSocketService.js index 432bd9c..4ad03b7 100644 --- a/UI-Project/src/utils/WebSocketService.js +++ b/UI-Project/src/utils/WebSocketService.js @@ -1,7 +1,7 @@ // WebSocketService.js let socket = null; - +let messages = ''; export const initializeWebSocket = (socketUrl, messageHandler) => { if (typeof WebSocket === "undefined") { console.log("Your browser does not support WebSocket"); @@ -18,13 +18,25 @@ if (!msg.data) { return; } - - const obj = JSON.parse(msg.data); - + + const isLastChunk = msg.data.endsWith('<END>'); + //鏄惁涓烘渶鍚庝竴鍧楁秷鎭� + messages += msg.data; + if(isLastChunk||msg.data.length<50000) { + messages= messages.replace('<END>', ''); + const obj = JSON.parse(messages); + // 璋冪敤娑堟伅澶勭悊鍑芥暟锛屽皢鏁版嵁浼犻�掔粰 Vue 缁勪欢 if (messageHandler) { messageHandler(obj); } + messages=''; + } + + + + + }; return socket; diff --git a/UI-Project/src/utils/api.js b/UI-Project/src/utils/api.js new file mode 100644 index 0000000..c8674a7 --- /dev/null +++ b/UI-Project/src/utils/api.js @@ -0,0 +1,23 @@ +// src/services/api.js +import request from 'request'; + + +export const findTasks = (id, newState) => { + const url = `glassStorage/api/storageTask/findTasks`; + const options = { + method: 'POST', + url, + json: true, + body: { id, enableState: newState } + }; + + return new Promise((resolve, reject) => { + request(options, (error, response, body) => { + if (error) { + reject(new Error(error.message)); + } else { + resolve(body); + } + }); + }); +}; diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue index d1ec117..2ce7900 100644 --- a/UI-Project/src/views/Caching/cachingun.vue +++ b/UI-Project/src/views/Caching/cachingun.vue @@ -10,7 +10,7 @@ <el-table-column prop="width" align="center" :label="$t('sorter.width')" min-width="120" /> <el-table-column prop="height" align="center" :label="$t('sorter.height')" min-width="120" /> <el-table-column - align="center" + align="center" :label="$t('sorter.startstatus')" min-width="80" prop="enable_state" @@ -194,7 +194,7 @@ const toggleEnableState = async (row) => { const newState = row.enable_state === 1 ? 0 : 1; // 鍙戦�佽姹傚埌鍚庣鏇存柊鐘舵�侊紙杩欓噷鐪佺暐浜嗗疄闄呯殑璇锋眰閫昏緫锛� - const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enablestate: newState }); + const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enableState: newState }); if (response.code === 200) { ElMessage.success(response.message); } else { @@ -202,7 +202,10 @@ } row.enable_state = newState; }; -const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`; + + + +const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/downcache`; // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺 const handleMessage = (data) => { // 鏇存柊 tableData 鐨勬暟鎹� diff --git a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue index e1b6d88..0f132b5 100644 --- a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue +++ b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue @@ -64,8 +64,17 @@ <!-- <el-button type="success" size="mini" @click="addglass()">娣诲姞鍘熺墖</el-button> --> </template> </el-table-column> - </el-table> + + </el-table> + <el-pagination + v-if="totalItems > 0" + background + layout="prev, pager, next" + :total="totalItems" + :page-size="pageSize" + @current-change="handleCurrentChange" + ></el-pagination> </el-dialog> @@ -256,6 +265,17 @@ const Hidden = ref(false) + + + const totalItems = ref(0); + totalItems.value = 10; + const pageSize = 10; + let currentPage = ref(1); + const handleCurrentChange = (val) => { + + currentPage.value = val; + + }; const getTagType2 =(status) => { switch (status) { @@ -555,17 +575,13 @@ </script> <style scoped> -html, body { - height: 100%; - margin: 0; - padding: 0; - overflow: hidden; /* 绂佹鍑虹幇婊氬姩鏉� */ -} -.app-container { - flex-direction: column; - height: 100vh; /* 浣跨敤瑙嗗彛楂樺害 */ +#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; } diff --git a/UI-Project/src/views/Identify/identify.vue b/UI-Project/src/views/Identify/identify.vue index a972dbe..74f05a1 100644 --- a/UI-Project/src/views/Identify/identify.vue +++ b/UI-Project/src/views/Identify/identify.vue @@ -111,7 +111,6 @@ // controlsId: 201, // }) if (response.code == 200) { - // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 ElMessage.success(response.message); // window.location.reload() blind.value = false; @@ -126,7 +125,7 @@ console.error(error); } } -// // 浜哄伐鎷胯蛋 + // 浜哄伐鎷胯蛋 const handleManualTake = async () => { try { var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200; diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue index 77bd047..ee5825e 100644 --- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue +++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue @@ -5,67 +5,202 @@ import request from "@/utils/request" import { ref, onMounted, onBeforeUnmount } from 'vue'; import { WebSocketHost ,host} from '@/utils/constants' +import { ElMessage, ElMessageBox } from 'element-plus' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { useI18n } from 'vue-i18n' const { t } = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') -const dialogFormVisible = ref(true) -const dialogFormVisiblea = ref(false) +const dialogFormVisible = ref(false) +const dialogFormVisiblea = ref(true) const dialogFormVisibleb = ref(false) +const blind = ref(false) const width = ref(); const height = ref(); const adjustedRects = ref([]); const adjustedRects2 = ref([]); const adjustedRectsa = ref([]); const adjustedRectsb = ref([]); +const currentGlassId = ref(null); +const currenttemperingFeedSequence = ref(null); const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; const handleMessage = (data) => { // 杩涚倝涓� - adjustedRects.value = data.intoGlass[0].map(rect => ({ + if(data.intoGlass!=null){ + adjustedRects.value = data.intoGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.height * 0.12; + adjustedHeight = rect.width * 0.1; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5087 - (rect.xCoordinate + rect.height); + } else { + adjustedWidth = rect.width * 0.12; + adjustedHeight = rect.height * 0.1; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5087 - (rect.xCoordinate + rect.width); + } + return { ...rect, - xcoordinate: rect.xCoordinate * 0.3, - ycoordinate: rect.ycoordinate * 0.3, - width: rect.width * 0.2, - height: rect.height * 0.2, - widtha: rect.width, - heighta: rect.height, - })); - adjustedRects2.value = data.intoGlass2[0].map(rect => ({ + xcoordinate: newX * 0.12, + ycoordinate: rect.yCoordinate * 0.1, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; + }); + } + if(data.intoGlass2!=null){ + adjustedRects2.value = data.intoGlass2[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.height * 0.12; + adjustedHeight = rect.width * 0.1; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5087 - (rect.xCoordinate + rect.height); + } else { + adjustedWidth = rect.width * 0.12; + adjustedHeight = rect.height * 0.1; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5087 - (rect.xCoordinate + rect.width); + } + return { ...rect, - xcoordinate: rect.xCoordinate * 0.3, - ycoordinate: rect.ycoordinate * 0.3, - width: rect.width * 0.2, - height: rect.height * 0.2, - widtha: rect.width, - heighta: rect.height, - })); - console.log(data.intoGlass[0]); + xcoordinate: newX * 0.12, + ycoordinate: rect.yCoordinate * 0.1, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; + }); + } // 杩涚倝鍓� - adjustedRectsa.value = data.waitingGlass[0].map(rect => ({ - ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - state: rect.state - })); + if(data.waitingGlass!=null){ + adjustedRectsa.value = data.waitingGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.width * 0.24; + adjustedHeight = rect.height * 0.16; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5190 - (rect.yCoordinate + rect.width); + } else { + adjustedWidth = rect.height * 0.24; + adjustedHeight = rect.width * 0.16; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5190 - (rect.yCoordinate + rect.height); + } + return { + ...rect, + x: newX * 0.24, + y: rect.xCoordinate * 0.16, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; +}); + } // 宸插嚭鐐� - adjustedRectsb.value = data.outGlass[0].map(rect => ({ + if(data.outGlass!=null){ + adjustedRectsb.value = data.outGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.width * 0.24; + adjustedHeight = rect.height * 0.16; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5190 - (rect.yCoordinate + rect.width); + } else { + adjustedWidth = rect.height * 0.24; + adjustedHeight = rect.width * 0.16; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5190 - (rect.yCoordinate + rect.height); + } + return { ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - state: rect.state - })); + x: newX * 0.24, + y: rect.xCoordinate * 0.16, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; +}); + } }; onMounted(() => { initializeWebSocket(socketUrl, handleMessage); }); +function updateRectColors() { + adjustedRectsa.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 5; + } + }); +} +function getRectColora(state) { + switch (state) { + case 0: + return '#d1edc4'; + case 1: + return '#E6E6FA'; + case -1: + return '#dedfe0'; + case 5: + return '#911005'; + } +} +function getRectColorb(state) { + switch (state) { + case 3: + return '#f8e3c5'; + case 4: + return '#F0F8FF'; + case 5: + return '#911005'; + } +} +function showDialog(rect) { + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blind.value = true; +} +// 鐮存崯 +const handleDamage = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + // temperingFeedSequence: currenttemperingFeedSequence.value, + line: 4001, + status: 2, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success(response.message); + blind.value = false; + updateRectColors(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} onBeforeUnmount(() => { console.log("鍏抽棴浜�") closeWebSocket(); @@ -73,89 +208,126 @@ </script> <template> <div style="margin-top: 10px;"> - <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">{{ $t('processCard.intofurnace') }}</el-button> - <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >{{ $t('processCard.beforefurnace') }}</el-button> + <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >{{ $t('processCard.beforefurnace') }}</el-button> + <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">{{ $t('processCard.intofurnace') }}</el-button> <el-button id="searchButton" type="success" @click="dialogFormVisibleb = true;dialogFormVisible = false;dialogFormVisiblea = false">{{ $t('processCard.outfurnace') }}</el-button> <div v-if="dialogFormVisible" > <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading"> <div style="width: 49%;float: left;background-color: #f4f4f5;height: 550px;"> - <el-scrollbar height="630px"> - <div style="position: relative;width: 1400px;"> + <div v-if="adjustedRects.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRects" :key="index" + @click="showDialog(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" + :style="{ position: 'absolute', + top: `${rect.ycoordinate}px`, + left: `${rect.xcoordinate}px`, + width: `${rect.width}px`, + height: `${rect.height}px`, + backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }" > <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </div> <div style="width: 49%;float: right;background-color: #f4f4f5;height: 550px;"> - <el-scrollbar height="550px"> - <div style="position: relative;width: 1400px;"> + <div v-if="adjustedRects2.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRects2" :key="index" + @click="showDialog(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" - > + :style="{ position: 'absolute', + top: `${rect.ycoordinate}px`, + left: `${rect.xcoordinate}px`, + width: `${rect.width}px`, + height: `${rect.height}px`, + backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }" + > <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </div> </el-card> </div> <div v-if="dialogFormVisiblea"> <!-- 杩涚倝鍓� --> - <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> - <el-scrollbar height="550px"> - <div style="position: relative;width: 1400px;"> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading"> + <div v-if="adjustedRectsa.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRectsa" :key="index" + @click="showDialog(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, + :style="{ position: 'absolute', top: `${rect.y}px`, left: `${rect.x}px`, width: `${rect.width}px`, height: `${rect.height}px`, - backgroundColor: rect.state === 0 ? '#dedfe0' : '#d1edc4' }"> - <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + backgroundColor: getRectColora(rect.state) }"> + <div class="centered-text"> + <div>{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </el-card> </div> <div v-if="dialogFormVisibleb"> <!-- 宸插嚭鐐� --> - <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> - <el-scrollbar height="550px"> - <div style="position: relative;width: 1400px;"> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading"> + <div v-if="adjustedRectsb.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRectsb" :key="index" + @click="showDialog(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, + :style="{ position: 'absolute', top: `${rect.y}px`, left: `${rect.x}px`, width: `${rect.width}px`, height: `${rect.height}px`, - backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }"> + backgroundColor: getRectColorb(rect.state) }"> + <!-- backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }"> --> <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </el-card> </div> + +<el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;"> + <el-button type="warning" plain :icon="Delete" @click="handleDamage" style="width: 140px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + </el-dialog> </div> </template> <style scoped> @@ -233,9 +405,10 @@ } .centered-text { /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */ - display: flex; + /* display: flex; */ justify-content: center; - align-items: center; + align-items: center; height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */ + /* font-size: small; */ } </style> \ No newline at end of file diff --git a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue index d987eb8..742ba24 100644 --- a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue +++ b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue @@ -2,14 +2,19 @@ import {Search} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {useRouter} from "vue-router" +import { ElMessage, ElMessageBox } from 'element-plus' +import request from "@/utils/request" import { ref, onMounted, onBeforeUnmount } from 'vue'; import { WebSocketHost ,host} from '@/utils/constants' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; const adjustedRects = ref([]); +const currentGlassId = ref(null); +const currenttemperingFeedSequence = ref(null); const dialogFormVisible = ref(true) const dialogFormVisiblea = ref(false) +const blind = ref(false) const getTableRow = (row,type) =>{ switch (type) { @@ -25,21 +30,85 @@ } } -const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; +const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺 const handleMessage = (data) => { // 鏇存柊 tableData 鐨勬暟鎹� - adjustedRects.value = data.overGlass[0].map(rect => ({ - ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3 - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - })); - console.log(adjustedRects.value); + if(data.overGlass!=null){ + adjustedRects.value = data.overGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.width * 0.24; + adjustedHeight = rect.height * 0.16; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5190 - (rect.yCoordinate + rect.width); + } else { + adjustedWidth = rect.height * 0.24; + adjustedHeight = rect.width * 0.16; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5190 - (rect.yCoordinate + rect.height); + } + return { + ...rect, + xcoordinate: newX * 0.24, + ycoordinate: rect.xCoordinate * 0.16, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; +}); + } }; +function updateRectColors() { + adjustedRectsa.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 5; + } + }); +} +function getRectColora(state) { + switch (state) { + case 3: + return '#f8e3c5'; + case 4: + return '#F0F8FF'; + case 5: + return '#911005'; + } +} +function showDialog(rect) { + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blind.value = true; +} +// 鐮存崯 +const handleDamage = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + // temperingFeedSequence: currenttemperingFeedSequence.value, + line: 4001, + status: 2, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success(response.message); + blind.value = false; + updateRectColors(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} onMounted(() => { // fetchFlowCardId(); // fetchTableData(); // 鑾峰彇鏁版嵁 @@ -55,25 +124,37 @@ <template> <div style="margin-top: 10px;"> <div> - <el-card style="margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> - <el-scrollbar height="600px"> - <div style="position: relative;width: 1400px;"> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading"> + <!-- <el-card style="margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> --> + <div v-if="adjustedRects.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" width="1200px" style="background-color: #e9e9eb;"> + <div style="position: relative;"> <div v-for="(rect, index) in adjustedRects" :key="index" + @click="showDialog(rect)" class="rect" :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px`, - backgroundColor: rect.state === 4 ? '#d1edc4' : '#f8e3c5' }"> + backgroundColor: getRectColora(rect.state) }"> <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> + <!-- <div style="margin-top: 25px;margin-left: -60px;">{{ rect.widtha }}*{{ rect.heighta }}</div> --> </div> </div> </div> </el-scrollbar> + </div> </el-card> </div> + <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;"> + <el-button type="warning" plain :icon="Delete" @click="handleDamage" style="width: 140px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + </el-dialog> </div> </template> @@ -94,9 +175,10 @@ } .centered-text { /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */ - display: flex; + /* display: flex; */ justify-content: center; - align-items: center; + align-items: center; height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */ + font-size: small; } </style> \ No newline at end of file diff --git a/UI-Project/src/views/ReportWork/reportWork.vue b/UI-Project/src/views/ReportWork/reportWork.vue new file mode 100644 index 0000000..f28dac1 --- /dev/null +++ b/UI-Project/src/views/ReportWork/reportWork.vue @@ -0,0 +1,132 @@ +<template> + <div style="height: 600px;"> + <span class="demonstration">鐢熶骇鏃堕棿</span> + <el-date-picker v-model="timeRange" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD" + start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" :default-time="defaultTime" /> + <el-select v-model="report.type" placeholder="娓呴�夋嫨绫诲瀷"> + <el-option label="鍏ㄩ儴" value="0"></el-option> + <el-option label="瀹屽伐" value="1"></el-option> + <el-option label="鐮存崯" value="2"></el-option> + <el-option label="鎷胯蛋" value="3"></el-option> + </el-select> + <el-select v-model="report.status" placeholder="娓呴�夋嫨鐘舵��"> + <el-option label="鍏ㄩ儴" value="0"></el-option> + <el-option label="鏈姤宸�" value="1"></el-option> + <el-option label="寰呮姤宸�" value="2"></el-option> + <el-option label="宸叉姤宸�" value="3"></el-option> + </el-select> + <el-select v-model="report.workingProcedure" placeholder="娓呴�夋嫨宸ュ簭"> + <el-option label="鍏ㄩ儴" value="0"></el-option> + <el-option label="鍒囧壊" value="1"></el-option> + <el-option label="纾ㄨ竟" value="2"></el-option> + <el-option label="閽㈠寲" value="3"></el-option> + </el-select> + <el-button type="primary" @click="selectReportData()">鏌ヨ</el-button> + <el-button type="success">鎶ュ伐</el-button> + <el-table height="100%" ref="table" :data="reportData" + :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> + <el-table-column prop="teamsGroupsName" align="center" label="鎶ュ伐鐝粍" min-width="120" /> + <el-table-column prop="deviceName" align="center" label="鎶ュ伐璁惧" min-width="120" /> + <el-table-column prop="line" align="center" label="绾胯矾" min-width="120" /> + <el-table-column prop="workingProcedure" align="center" label="宸ュ簭" min-width="120" /> + <el-table-column prop="glassId" align="center" label="鐜荤拑id" min-width="120" /> + <el-table-column prop="engineerId" align="center" label="宸ョ▼鍙�" min-width="120" /> + <el-table-column prop="temperingLayoutId" align="center" label="閽㈠寲鐗堝浘id" min-width="120" /> + <el-table-column prop="damageTime" align="center" label="鐢熶骇鏃堕棿" min-width="120" /> + <el-table-column prop="type" align="center" label="绫诲瀷" min-width="120" /> + <el-table-column prop="status" align="center" label="鐘舵��" min-width="120" /> + <el-table-column prop="processId" align="center" label="娴佺▼鍗�" min-width="120" /> + <el-table-column prop="orderNumber" align="center" label="搴忓彿" min-width="120" /> + <el-table-column prop="technologyNumber" align="center" label="灞�" min-width="120" /> + <el-table-column prop="breakageType" align="center" label="鐮存崯绫诲瀷" min-width="120" /> + <el-table-column prop="breakageReason" align="center" label="鐮存崯鍘熷洜" min-width="120" /> + <el-table-column prop="responsibleProcess" align="center" label="璐d换宸ュ簭" min-width="120" /> + <el-table-column prop="responsiblePersonnel" align="center" label="璐d换浜哄憳" min-width="120" /> + <el-table-column prop="responsibleTeam" align="center" label="璐d换鐝粍" min-width="120" /> + <el-table-column prop="responsibleEquipment" align="center" label="璐d换璁惧" min-width="120" /> + <el-table-column prop="remark" align="center" label="澶囨敞" min-width="120" /> + </el-table> + </div> +</template> +<script setup> +import { Delete, Upload } from '@element-plus/icons-vue' +import { ElMessage, ElMessageBox } from 'element-plus' +import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue"; +import request from "@/utils/request" +import { WebSocketHost, host } from '@/utils/constants' +import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; +import { useI18n } from 'vue-i18n' +const { t } = useI18n() +const report = ref({ + type: '0', + status: '0', + workingProcedure: '0', +}); +const reportData = ref([]) +const timeRange = ref(["2022-01-01", "2022-01-01"]) + + +// 鏌ヨ鏁版嵁 +const selectReportData = async () => { + const response = await request.post("/cacheVerticalGlass/damage/selectDamage", { + startTime: timeRange.value[0], + endTime: timeRange.value[1], + type: report.value.type, + status: report.value.status, + workingProcedure: report.value.workingProcedure + }) + if (response.code === 200) { + reportData.value = response.data; + ElMessage.success(response.message); + } else { + ElMessage.error(response.message); + } + + const responses = await request.post("/cacheVerticalGlass/damage/insertDamage", { + glassId:"P24060403|3|6", + line:"2001", + workingProcedure:"鍐峰姞宸�", + remark:"", + status:"2" + }) +}; + +const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`; +const handleMessage = (data) => { + // adjustedRects.value = data.device[0].map(rect => ({ + // ...rect, + // completed: rect.completedQuantity, + // breakage: rect.breakageQuantity, + // thisProcess: rect.thisProcess, + // })); +}; +let socket; +onMounted(() => { + socket = new WebSocket(socketUrl); + socket.onmessage = (event) => { + const data = JSON.parse(event.data); + + // updateCharts(); + }; + // }; +}); + + + + +onUnmounted(() => { + socket.close(); +}); + +onMounted(() => { + // fetchFlowCardId(); + // fetchTableData(); // 鑾峰彇鏁版嵁 + initializeWebSocket(socketUrl, handleMessage); +}); +onBeforeUnmount(() => { + console.log("鍏抽棴浜�") + closeWebSocket(); +}); +</script> + +<style scoped></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 42dd369..85ae736 100644 --- a/UI-Project/src/views/Returns/returns.vue +++ b/UI-Project/src/views/Returns/returns.vue @@ -15,6 +15,17 @@ const adda = ref(false) const flake = ref(false) const flakea = ref(false) +const flakeb = ref(false) +const flakec = ref(false) +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(''); import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" const ida = ref(null); @@ -78,26 +89,62 @@ // ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯'); } }; -request.get("/loadGlass/LoadGlass/list").then((res) => { - window.localStorage.setItem('patternWidth', res.data.patternWidth) - window.localStorage.setItem('workstationId', res.data.workstationId) - if (res.code == 200) { - console.log(res.data); - tableDataa.value = res.data - console.log(res.data.patternWidth); - - let workstationId = window.localStorage.getItem('workstationId') - let patternWidth = window.localStorage.getItem('patternWidth') - if (patternWidth !== '' || workstationId == '1') { - flake.value = true - } else if (patternWidth !== '' || workstationId == '2') { - flakea.value = true - } - } else { - ElMessage.warning(res.message) - // router.push("/login") +onMounted(() => { + list(''); + fetchOptions(''); + initializeWebSocket(socketUrl, handleMessage); +}); +onMounted(() => { +}); +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: [], @@ -109,10 +156,12 @@ // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺 const handleMessage = (data) => { // 鏇存柊 tableData 鐨勬暟鎹� - + if(data.prioritylist!=null){ tableData.splice(0, tableData.length, ...data.prioritylist[0]); + } + if(data.list!=null){ tableDataa.value = data.list[0] - // console.log("鏇存柊鍚庢暟鎹�", tableData); + } }; const requestData = { state: 100 @@ -153,36 +202,19 @@ options.value = []; // 娓呯┖閫夐」鍒楄〃 } }; -// 鍒濆鍖栧姞杞芥暟鎹紙濡傛灉闇�瑕侊級 -onMounted(() => { - fetchOptions(''); - initializeWebSocket(socketUrl, handleMessage); -}); onBeforeUnmount(() => { - console.log("鍏抽棴浜�") closeWebSocket(); }); -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 handleBindRack = (row) => { workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕 ida.value = row.id; - console.log(ida.value); add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗� }; // 娣诲姞 const handleConfirm = async () => { - console.log(ida.value); // console.log('id.value:', id.value); - if ((ida.value === 2 || ida.value === 4) && (parseInt(patternHeight.value, 10) >= 2700 )) { + if ((ida.value === 2 || ida.value === 4) && (parseInt(selectedValuea.value, 10) >= 2700 )) { try { const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', { id: workstationId.value, @@ -193,32 +225,50 @@ 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 = ''; - window.localStorage.setItem('workstationId', response.data.workstationId) - let workstationId = window.localStorage.getItem('workstationId') - if (workstationId == '1') { - flake.value = true - } else if (workstationId == '2'){ - flakea.value = true - } + list() } else { // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� ElMessage.error(response.message); } } catch (error) { // 澶勭悊璇锋眰閿欒 - console.error(error); - alert('璇锋眰澶辫触锛岃绋嶅悗鍐嶈瘯锛�'); } } else if( ida.value === 1 || ida.value === 3){ @@ -238,26 +288,27 @@ // 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 = ''; - window.localStorage.setItem('workstationId', response.data.workstationId) - let workstationId = window.localStorage.getItem('workstationId') - if (workstationId == '1') { - flake.value = true - } else if (workstationId == '2'){ - flakea.value = true - } + list() } else { // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� ElMessage.error(response.message); } } catch (error) { // 澶勭悊璇锋眰閿欒 - console.error(error); - alert('璇锋眰澶辫触锛岃绋嶅悗鍐嶈瘯锛�'); } } else { @@ -285,14 +336,19 @@ 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 == '1') { + // window.localStorage.setItem('workstationId', response.data.workstationId) + // let workstationId = window.localStorage.getItem('workstationId') + if (workstationId.value == '1') { flake.value = false - } else if (workstationId == '2'){ + } else if (workstationId.value == '2'){ flakea.value = false + }else if (workstationId.value == '3'){ + flakeb.value = false + }else if (workstationId.value == '4'){ + flakec.value = false } - } else { + list() + } else { // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� ElMessage.error(response.message); } @@ -545,11 +601,13 @@ const data = JSON.parse(event.data); // 瑙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); @@ -607,11 +665,17 @@ :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" :data="tableData" > - <el-table-column prop="engineeringId" :label="$t('basicData.projectnumber')" width="200" align="center"/> + <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 prop="layoutSequence" :label="$t('basicData.quantity')" 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" @@ -673,11 +737,13 @@ </template> </el-dialog> --> <div id="parent"> - <img src="../../assets/shangpianji.png" alt="" style="max-width: 20%;max-height: 20%;margin-top: 20px;margin-left: 500px;"> + <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: -350px;margin-left: 650px;"> + <div style="margin-top: -300px;margin-left: 680px;"> <el-table :data="tableDataa" border style="width: 85%" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" > @@ -873,23 +939,41 @@ 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: 212px; - height: 15px; + width: 228px; + height: 16px; background-color: #529b2e; - margin-top: -404px; - margin-left: 542px; + margin-top: -45px; + margin-left: 355px; } #overlaya{ position: absolute; z-index: 1; - width: 212px; - height: 15px; + width: 228px; + height: 16px; background-color: #529b2e; - margin-top: -38px; - margin-left: 537px; + 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 5fd9087..5870cad 100644 --- a/UI-Project/src/views/Slicecage/slicecage.vue +++ b/UI-Project/src/views/Slicecage/slicecage.vue @@ -14,7 +14,9 @@ const dialogFormVisible = ref(false) const dialogFormVisiblea = ref(false) const dialogFormVisibleb = ref(false) +const dialogFormVisiblec = ref(false) const tableData = ref([]) +const tableDatagh = ref([]) const tableDatab = ref([]) const tableDatac = ref([]) const tableDatad = ref([]) @@ -69,57 +71,68 @@ const cell8=ref(true); const cell9=ref(true); const selectedRow = ref(null); // 瀛樺偍閫変腑鐨勮鏁版嵁 - - + +onMounted(async () => { + try { + const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/selectTemperingGlass'); + if (response.code === 200) { + tableDatagh.value = response.data + } else { + ElMessage.warning(response.msg) + } + } catch (error) { + // console.error('Error fetching rects :', error); + } +}); // 褰撳墠椤电爜鍜屾瘡椤垫樉绀虹殑鏉℃暟 const currentPage = ref(1); const itemsPerPage = computed(() => { if (currentPage.value === 1) { - return 21; + return 55; } else if (currentPage.value === 2) { - return 21; + return 55; } else if (currentPage.value === 3) { - return 21; + return 55; } else if (currentPage.value === 4) { - return 20; + return 55; } else if (currentPage.value === 5) { - return 21; + return 55; } else if (currentPage.value === 6) { return 25; } else if (currentPage.value === 7) { - return 51; + return 30; } else if (currentPage.value === 8) { return 25; } else { return 25; // 榛樿鍊硷紝鍙互鏍规嵁瀹為檯闇�姹備慨鏀� } }); - + // 璁$畻鍒嗛〉鍚庣殑鏁版嵁 const paginatedUsers = computed(() => { const startIndex = calculateStartIndex(); const endIndex = startIndex + itemsPerPage.value; return tableData.value.slice(startIndex, endIndex); }); - + // 璁$畻褰撳墠椤电殑璧峰绱㈠紩 function calculateStartIndex() { let index = 0; for (let i = 1; i < currentPage.value; i++) { if (i === 1) { - index += 21; + index += 55; } else if (i === 2) { - index += 21; + index += 55; } else if (i === 3) { - index += 21; + index += 55; }else if (i === 4) { - index += 20; + index += 55; }else if (i === 5) { - index += 21; + index += 55; }else if (i === 6) { index += 25; }else if (i === 7) { - index += 51; + index += 30; }else if (i === 8) { index += 25; } else { @@ -145,7 +158,7 @@ currentPage.value++; } }; - + // 鎬婚〉鏁拌绠� const totalPages = computed(() => { // let total = 0; @@ -162,9 +175,9 @@ // } return 9; }); - - - + + + const getTableRow = (row,type) =>{ switch (type) { case 'edit' :{ @@ -349,6 +362,33 @@ console.error('鍙戠敓閿欒:', error); } }; + // 鎸囧畾閽㈠寲 + const brokee = async(row) => { + try { + 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, + }); + if (response.code === 200) { + ElMessage.success(response.message); + } else { + ElMessage.error(response.message); + } + } + } catch (error) { + console.error('鍙戠敓閿欒:', error); + } +}; // 鍑虹墖闃熷垪鎷胯蛋 const brokeb = async(row) => { try { @@ -452,7 +492,7 @@ ElMessage.success(response.message); glassId.value = ''; tableDataf.value = ''; - + } else { ElMessage.error(response.message); } @@ -469,21 +509,38 @@ // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺 const handleMessage = (data) => { // 鏇存柊 tableData 鐨勬暟鎹� - tableDatac.value = data.bigStorageCageDetailsOutTask[0] - tableDatad.value = data.bigStorageCageDetailsFeedTask[0] + if(data.bigStorageCageDetailsOutTask!=null){ + tableDatac.value = data.bigStorageCageDetailsOutTask[0] + adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); + } + if(data.bigStorageCageDetailsFeedTask!=null){ + tableDatad.value = data.bigStorageCageDetailsFeedTask[0] + adjust.value = data.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); + } + // adjust.value = data.bigStorageCageDetailsFeedTask[0].map(rect => ({ // ...rect, // })); - adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); - adjust.value = data.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); + // const adjust = computed(() => { // return data.value.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); // }); +if(data.bigStorageCageInfo!=null){ tableData.value = data.bigStorageCageInfo[0] +} +if(data.temperingGlassInfoList!=null){ tableDatab.value = data.temperingGlassInfoList[0] +} +if(data.bigStorageCageUsage!=null){ tableDatae.value = data.bigStorageCageUsage[0] +} +if(data.carPostion!=null){ carPosition.value = data.carPostion[0] - window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length) +} + + + if(data.bigStorageCageInfos!=null){ + window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length) let length = window.localStorage.getItem('length') adjustedRects.value = data.bigStorageCageInfos[0][1].map(rect => ({ ...rect, @@ -530,12 +587,15 @@ height: 20/length, top: 29/length })); + } + + }; // 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁� onMounted(() => { // fetchFlowCardId(); initializeWebSocket(socketUrl, handleMessage); - + }); function getStatusType(enableState: number) { switch (enableState) { @@ -597,9 +657,10 @@ <div style="height: 600px;"> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true">{{ $t('searchOrder.cageinformation') }}</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('searchOrder.productionqueue') }}</el-button> + <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info" @click="dialogFormVisiblec = true">{{ $t('searchOrder.temperingqueries') }}</el-button> <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;"> - <el-table height="100%" ref="table" + <el-table height="100px" ref="table" :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" /> @@ -634,7 +695,7 @@ </el-card> <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;"> - <el-table height="100%" ref="table" + <el-table height="100px" ref="table" @selection-change="handleSelectionChange" :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="120" /> @@ -667,7 +728,7 @@ </el-table> </div> </el-card> - <div style="padding: 10px;display: flex;height:110px;"> + <div style="padding: 10px;display: flex;height:130px;"> <div v-for="(item, index) in tableDatae" :key="index" id="occupy"> <el-col style="text-align:left;font-weight: bold;">#{{ item.device_id }}</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> @@ -681,7 +742,7 @@ </div> <!-- // 鐖剁骇妗� --> <div class="img-dlpl" > - <div class="img-car1" :style="'z-index:999;left:247px;top:' + 350*carPosition[0] + 'px;position:absolute;'"> + <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'"> <div v-for="(rect, index) in adjusta" :key="rect.id" @@ -689,13 +750,13 @@ width: '30px', height: '5px', backgroundColor: '#409EFF', - marginLeft: index * 5+ `px`, + marginLeft: 5+ `px`, top: '10px', }" > </div> </div> - <div class="img-car4" :style="'z-index:999;left:704px;top:' + 350*carPosition[1] + 'px;position:absolute;'"> + <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'"> <div v-for="(rect, index) in adjust" :key="rect.id" @@ -703,14 +764,14 @@ width: '30px', height: '5px', backgroundColor: '#409EFF', - marginLeft: index * 5+ `px`, + marginLeft: 5+ `px`, top: '10px', }" > </div> </div> <div style="position: relative;"> - <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:55px;left: 465px;"> + <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:50px;left: 495px;"> <div v-for="(rect, index) in adjustedRects" :key="rect" @@ -741,7 +802,7 @@ </div> </div> </div> - <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:56px;left: 465px;"> + <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:51px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsa" :key="rect.id" @@ -772,7 +833,7 @@ </div> </div> </div> - <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:117px;left: 465px;"> + <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:110px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsb" :key="rect.id" @@ -802,7 +863,7 @@ </div> </div> </div> - <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:148px;left: 465px;"> + <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:140px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsc" :key="rect.id" @@ -833,7 +894,7 @@ </div> </div> </div> - <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:208px;left: 465px;"> + <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:170px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsd" :key="rect.id" @@ -864,7 +925,7 @@ </div> </div> </div> - <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:238px;left: 465px;"> + <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:241px;left: 495px;"> <div v-for="(rect, index) in adjustedRectse" :key="rect.id" @@ -895,7 +956,7 @@ </div> </div> </div> - <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:269px;left: 465px;"> + <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:271px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsf" :key="rect.id" @@ -926,7 +987,7 @@ </div> </div> </div> - <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;"> + <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:301px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsg" :key="rect.id" @@ -957,7 +1018,7 @@ </div> </div> </div> - <div v-show="cell9" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;"> + <div v-show="cell9" style="width: 227px;height: 29px;position: absolute;top:332px;left: 495px;"> <div v-for="(rect, index) in adjustedRectsh" :key="rect.id" @@ -1019,8 +1080,8 @@ </el-input> <el-button type="primary" plain style="margin-left: 10px;" @click="searchout">{{ $t('searchOrder.search') }}</el-button> </div> - - <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 500px;"> + + <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;"> <el-table height="100%" ref="table" :data="tableDataf" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120" /> @@ -1219,6 +1280,19 @@ </el-table-column> </el-table> </el-dialog> +<el-dialog v-model="dialogFormVisiblec" top="5vh" width="85%" :title="$t('searchOrder.temperingqueries')"> + <el-table ref="table" style="margin-top: 20px;height: 500px;" + :data="tableDatagh" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> + <el-table-column prop="engineer_id" fixed align="center" :label="$t('searchOrder.projectnumber')" min-width="150"/> + <el-table-column prop="tempering_layout_id" fixed align="center" :label="$t('searchOrder.layoutnumber')" min-width="120" /> + <el-table-column prop="count" align="center" :label="$t('searchOrder.numberglasses')" min-width="150" /> + <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="150"> + <template #default="scope"> + <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifytempering') }}</el-button> + </template> + </el-table-column> + </el-table> +</el-dialog> </template> <style scoped> @@ -1320,8 +1394,9 @@ } .img-dlpl{ - margin-left: 80px; - background-image:url('../../assets/dlpl.png'); + margin-left: 20px; + margin-top: 20px; + background-image:url('../../assets/dlpl9.png'); background-repeat: no-repeat; background-attachment: local; min-height: 400px; @@ -1333,7 +1408,7 @@ } .img-car1{ display: flex; - background-image:url('../../assets/lp.png'); + background-image:url('../../assets/lp9.png'); position: absolute; background-repeat: no-repeat; background-attachment: local; @@ -1346,7 +1421,7 @@ } .img-car4{ display: flex; - background-image:url('../../assets/lpa.png'); + background-image:url('../../assets/lpa9.png'); position: absolute; background-repeat: no-repeat; background-attachment: local; diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue index 89d7621..36af612 100644 --- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue +++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue @@ -1,7 +1,7 @@ <template> <div class="glass-rack"> <div > - <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg"> + <svg width="500" height="370" xmlns="http://www.w3.org/2000/svg"> <g stroke="null" id="Layer_1"> <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 --> <g v-for="(rack, index) in racks" :key="index" :data="tableData"> @@ -42,11 +42,11 @@ import { initializeWebSocket } from '@/utils/WebSocketService'; import { WebSocketHost } from '@/utils/constants'; const racks = ref([ - { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '',downGlassInfoList:"" } }, + { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456',downGlassInfoList:"" } }, - { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '',downGlassInfoList:"" } }, + { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678',downGlassInfoList:"" } }, - { x: 140, y: 320, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: '' ,downGlassInfoList:""} } + { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' ,downGlassInfoList:""} } ]); diff --git a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue index 6566fde..c42fbe5 100644 --- a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue +++ b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue @@ -1,7 +1,7 @@ <template> <div class="glass-rack"> <div > - <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg"> + <svg width="500" height="370" xmlns="http://www.w3.org/2000/svg"> <g stroke="null" id="Layer_1"> <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 --> <g v-for="(rack, index) in racks" :key="index"> @@ -42,11 +42,11 @@ import { initializeWebSocket } from '@/utils/WebSocketService'; import { WebSocketHost ,host} from '@/utils/constants' const racks = ref([ - { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '' } }, + { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } }, - { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '' } }, + { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678' } }, - { x: 140, y: 320, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: '' } } + { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' } } ]); diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue index 9769112..581478d 100644 --- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue +++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue @@ -1,10 +1,8 @@ <script setup> import {Search} from "@element-plus/icons-vue"; import {reactive, onMounted, onBeforeUnmount} from "vue"; - import {useRouter} from "vue-router" const router = useRouter() - import { useI18n } from 'vue-i18n' const { t } = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') @@ -39,7 +37,6 @@ fetchFlowCardId(); dialogFormVisiblea.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗� }; - //鑾峰彇娴佺▼鍗″彿 const fetchFlowCardId = async () => { try { @@ -59,7 +56,6 @@ } }; //纭 - const handleConfirm = async () => { try { const firstPart = flowCardId.value.split('|')[0].trim(); // @@ -68,9 +64,7 @@ workstationId: workstationId.value, flowCardId: firstPart, layer:twoPart - }); - console.log(response) if (response.code == 200) { // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 @@ -88,16 +82,12 @@ console.error(error); } }; - - const updatePageData = () => { // 鍋囪浣犵殑椤甸潰涓婃湁涓�涓悕涓� tableData 鐨� Vue 缁勪欢 // 浣犲彲浠ョ洿鎺ユ洿鏂� tableData 鐨勬暟鎹� fetchTableData() // 浣跨敤 $forceUpdate() 寮哄埗鏇存柊缁勪欢 - }; - const handleBindRack2 = (row) => { workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕 dialogFormVisiblea2.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗� @@ -116,7 +106,7 @@ console.log('娓呴櫎鎴愬姛'); ElMessage.success(response.message); dialogFormVisiblea2.value = false; - } else if (response.code === 400) { + } else if (response.code === 500) { // 娓呴櫎澶辫触鐨勯�昏緫 console.log('娓呴櫎澶辫触'); console.log(response.message); // 鎵撳嵃鏈嶅姟鍣ㄨ繑鍥炵殑閿欒淇℃伅 @@ -129,8 +119,6 @@ dialogFormVisiblea2.value = false; } }; - - // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰 const fetchTableData = async () => { try { @@ -151,52 +139,47 @@ ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯'); } }; - - const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`; // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺 const handleMessage = (data) => { - // 鏇存柊 tableData 鐨勬暟鎹� - tableData.splice(0, tableData.length, ...data.params[0]); // console.log("鏇存柊鍚庢暟鎹�", data.params[0]); - }; - // 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁� - onMounted(() => { fetchFlowCardId(); fetchTableData(); // 鑾峰彇鏁版嵁 initializeWebSocket(socketUrl, handleMessage); }); - onBeforeUnmount(() => { console.log("鍏抽棴浜�") closeWebSocket(); }); + const getTagType =(status) => { return status === 1 ? 'success' : 'danger'; // 鏍规嵁鐘舵�佸�煎喅瀹氭爣绛剧被鍨嬶紝杩欓噷鍋囪鐘舵�佷负1鏃朵负鎴愬姛锛堢豢鑹诧級锛屽惁鍒欎负澶辫触锛堢孩鑹诧級 } - + const toggleStatus = (row) => { // 鍒囨崲鏂欐灦鐘舵�佺殑閫昏緫 row.enableState = 1 - row.enableState; // Toggle between 0 and 1 // 姝ゅ鍙互娣诲姞淇濆瓨鐘舵�佺殑閫昏緫锛屾瘮濡傝皟鐢� API 鏇存柊鏁版嵁 updateRowStatus(row); }; - + const updateRowStatus = async (row) => { try { // 鍋囪浣犵殑鍚庣 API 鎺ユ敹 PUT 璇锋眰锛屽苟涓旈渶瑕佷紶閫� row.id 鍜� row.enableState 鍙傛暟 - + const response = await request.post('unLoadGlass/downWorkStation/updateDownWorkstation', { - enableState: 1 - row.enableState + enableState: row.enableState, + id: row.id + }); console.log('Updated row status:', response.data); // 鍙互鏍规嵁鍚庣杩斿洖鐨勬暟鎹繘琛岃繘涓�姝ュ鐞嗭紝姣斿鏇存柊鏈湴鐘舵�佺瓑 @@ -205,25 +188,34 @@ // 澶勭悊閿欒鎯呭喌锛屾瘮濡傛彁绀虹敤鎴锋洿鏂板け璐� } }; + + + + + +// beforeUnmount(() => { +// closeWebSocket(); +// }); +// setInterval(fetchTableData, 2000) </script> - <template> <div> - <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading"> - <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;"> - <el-table height="100%" ref="table" + <el-card style="flex: 1;" v-loading="loading"> + <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading"> + <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> + <el-table height="200px" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="workstationId" align="center" :label="$t('reportWork.lowerbit')" min-width="80" /> <el-table-column prop="workstationId" align="center" :label="$t('reportWork.shelfnumber')" min-width="120" /> - <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="120" /> - <el-table-column prop="totalquantity" align="center" :label="$t('reportWork.totalquantity')" min-width="120" /> - <el-table-column prop="racksnumber" align="center" :label="$t('reportWork.beendropped')" min-width="120" /> + <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="150" /> + <el-table-column prop="totalQuantity" align="center" :label="$t('reportWork.totalquantity')" min-width="120" /> + <el-table-column prop="racksNumber" align="center" :label="$t('reportWork.beendropped')" min-width="120" /> <el-table-column prop="layer" align="center" label="灞傛暟" min-width="120" /> <el-table-column prop="otherNumber" align="center" label="浜哄伐涓嬬墖鏁�" min-width="120" /> - <el-table-column prop="work_state" align="center" :label="$t('reportWork.state')" min-width="120" /> + <!-- <el-table-column prop="work_state" align="center" :label="$t('reportWork.state')" min-width="120" /> --> <el-table-column prop="deviceId" align="center" :label="$t('reportWork.devicenumber')" min-width="120" /> <el-table-column align="center" @@ -247,7 +239,22 @@ </el-table> </div> </el-card> - + <!-- workstationId: '1', + workstationId: '1005', + flowCardId: '183.6', + totalquantity: '1991', + racksnumber:"1", + work_state: '寰呰瘑鍒�', --> + <div style="display: flex;" class="awatch"> + <div id="main-body"> + <Landingindication></Landingindication> + </div> + <div id="main-bodya"> + <Landingindicationtwo></Landingindicationtwo> + </div> + </div> + </el-card> + </div> <el-dialog v-model="dialogFormVisiblea" top="21vh" width="40%" :title="$t('reportWork.bindingshelves')"> <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;"> @@ -273,12 +280,7 @@ </div> </template> </el-dialog> - - - - <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" :title="$t('reportWork.clearglass')"> - <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleclear"> @@ -288,26 +290,8 @@ </div> </template> </el-dialog> - - - <!-- workstationId: '1', - workstationId: '1005', - flowCardId: '183.6', - totalquantity: '1991', - racksnumber:"1", - work_state: '寰呰瘑鍒�', --> - </div> - <div style="display: flex;"> - <div id="main-body"> - <Landingindication></Landingindication> - </div> - <div id="main-bodya"> - <Landingindicationtwo></Landingindicationtwo> - </div></div> </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{ @@ -323,15 +307,15 @@ background-color: #337ecc; margin-left: 28%; } -#awatch{ - height: 450px; +.awatch{ + max-width: 100%; } #main-body{ - margin-top: -20px; - margin-left: 200px; + margin-top: -40px; + margin-left: 150px; } #main-bodya{ - margin-top: -10px; + margin-top: -40px; margin-left: 100px; } </style> \ No newline at end of file diff --git a/UI-Project/src/views/largescreen/largescreen.vue b/UI-Project/src/views/largescreen/largescreen.vue index bd8d350..7c3603a 100644 --- a/UI-Project/src/views/largescreen/largescreen.vue +++ b/UI-Project/src/views/largescreen/largescreen.vue @@ -26,7 +26,7 @@ </el-table> </div> <div id="center" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;"> - <img src="../../assets/d1.png" alt="" style="margin-left: -30px; width: 110%;height: 100%;position: relative;"> + <img src="../../assets/d1a.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> </div> <div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;"> <el-table height="240" ref="table" width="340px" diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java index 97eba6b..b5c0c8e 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java @@ -22,6 +22,11 @@ */ @ApiModelProperty(value = "瀹�") private double width; + /** + * 瀹� + */ + @ApiModelProperty(value = "楂�") + private double height; /** * 鏍煎瓙鍙� @@ -29,4 +34,16 @@ @ApiModelProperty(value = "鐜荤拑id") private Integer slot; + /** + * x鍧愭爣 + */ + @ApiModelProperty(value = "x鍧愭爣", position = 13) + private Integer xCoordinate; + + /** + * y鍧愭爣 + */ + @ApiModelProperty(value = "y鍧愭爣", position = 14) + private Integer yCoordinate; + } 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 5423c6e..fe5c038 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 @@ -21,6 +21,7 @@ * A09鍑虹墖鐩爣浣嶇疆 d02鍗ц浆绔� 2001 * A10鍑虹墖鐩爣浣嶇疆 d05鍗ц浆绔� 2002 */ + public static final Integer OUT_TARGET_POSITION_ZERO = 0; public static final Integer A09_OUT_TARGET_POSITION = 2001; public static final Integer A10_OUT_TARGET_POSITION = 2002; @@ -37,12 +38,14 @@ * 璇嗗埆鍚庢垚鍔熺姸鎬�100 * 鍑虹墖浠诲姟101 * 浜哄伐涓嬬墖102 + * 鍑虹墖涓�103 * 鎷胯蛋200 * 鐮存崯201 */ public static final Integer GLASS_STATE_IN = 100; public static final Integer GLASS_STATE_OUT = 101; public static final Integer GLASS_STATE_ARTIFICIAL = 102; + public static final Integer GLASS_STATE_OUT_ING = 103; public static final Integer GLASS_STATE_TAKE = 200; public static final Integer GLASS_STATE_DAMAGE = 201; @@ -112,6 +115,7 @@ public static final Integer BIG_STORAGE_OUT_SUCCESS = 3; public static final Integer BIG_STORAGE_OUT_ERROR = 4; public static final Integer BIG_STORAGE_OUT_DAMAGE = 5; + public static final List<Integer> BIG_STORAGE_OUT_ALL = Arrays.asList(2, 3); /** * 鍗ц浆绔嬪嚭鐗囪姹� diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java index b821404..ea9bcb2 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java @@ -5,14 +5,14 @@ import com.mes.damage.entity.Damage; import com.mes.damage.service.DamageService; import com.mes.utils.Result; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; - +import java.util.Date; import java.util.List; +import java.util.Map; /** * <p> @@ -22,30 +22,50 @@ * @author wu * @since 2024-06-25 */ +@Api(description = "鎶ュ伐淇℃伅") @RestController @RequestMapping("/damage") +@ResponseBody public class DamageController { @Autowired private DamageService damageService; @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ") - @GetMapping("/selectDamage") - public Result selectDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) { - return Result.build(200,"鏌ヨ鎴愬姛",damageService.selectDamage(startTime,endTime,type,status,workingProcedureId)); + @PostMapping("/selectDamage") + public Result selectDamage(@RequestBody Map map) { + String startTime=map.get("startTime").toString(); + String endTime=map.get("endTime").toString(); + int type =Integer.parseInt(map.get("type").toString()); + int status =Integer.parseInt(map.get("status").toString()); + String workingProcedure =map.get("workingProcedure").toString(); + return Result.build(200,"鏌ヨ鎴愬姛",damageService.selectDamage(startTime,endTime,type,status,workingProcedure)); } @ApiOperation("鎶ュ伐") - @GetMapping("/submitDamage") - public Result submitDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) { - damageService.submitDamage(startTime,endTime,type,status,workingProcedureId); + @PostMapping("/submitDamage") + public Result submitDamage(@RequestBody Map map) { + String startTime=map.get("startTime").toString(); + String endTime=map.get("endTime").toString(); + int type =Integer.parseInt(map.get("type").toString()); + int status =Integer.parseInt(map.get("status").toString()); + String workingProcedure =map.get("workingProcedure").toString(); + damageService.submitDamage(startTime,endTime,type,status,workingProcedure); return Result.build(200,"鎶ュ伐鎴愬姛",1); } @ApiOperation("鎶ュ伐鏁版嵁淇敼") - @GetMapping("/updateDamage") - public Result updateDamage(List<Damage> damageList) { + @PostMapping("/updateDamage") + public Result updateDamage(@RequestBody List<Damage> damageList) { damageService.updateBatchById(damageList); return Result.build(200,"淇敼鎴愬姛",1); } + + @ApiOperation("鎶ュ伐鏁版嵁鏂板") + @PostMapping("/insertDamage") + public Result insertDamage(@RequestBody Damage damage) { + damageService.insertDamage(damage); + return Result.build(200,"鏂板鎴愬姛",1); + } + } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java index 2d78544..52b355e 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import java.time.LocalDateTime; import java.io.Serializable; +import java.sql.Timestamp; + import lombok.Data; import lombok.EqualsAndHashCode; @@ -52,7 +53,7 @@ /** * 鐢熶骇鏃堕棿 */ - private LocalDateTime damageTime; + private Timestamp damageTime; /** * 澶囨敞 diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java index 2b2bc54..a993bd7 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java @@ -1,5 +1,6 @@ package com.mes.damage.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.mes.damage.entity.Damage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -11,6 +12,7 @@ * @author wu * @since 2024-06-13 */ +@DS("hangzhoumes") public interface DamageMapper extends BaseMapper<Damage> { } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java index 43d1142..1fba706 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java @@ -4,6 +4,7 @@ import com.mes.damage.entity.Damage; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -16,9 +17,9 @@ */ public interface DamageService extends IService<Damage> { - List<Damage> selectDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId); + List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure); - void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId); + void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure); void insertDamage(Damage damage); } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java index b81f7b2..118d12e 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java @@ -3,7 +3,6 @@ import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.mes.damage.entity.Damage; import com.mes.damage.mapper.DamageMapper; import com.mes.damage.service.DamageService; @@ -16,6 +15,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.List; @@ -39,7 +39,7 @@ * 鏌ヨ鎶ュ伐淇℃伅 */ @Override - public List<Damage> selectDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){ + public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure){ LambdaQueryWrapper<Damage> damageSelectWrapper =new LambdaQueryWrapper<>(); damageSelectWrapper.between(Damage::getDamageTime,startTime,endTime); if (type!=0){ @@ -48,8 +48,8 @@ if (status!=0){ damageSelectWrapper.eq(Damage::getStatus,status); } - if(workingProcedureId!=0){ - damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedureId); + if(!"0".equals(workingProcedure)){ + damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure); } return baseMapper.selectList(damageSelectWrapper); } @@ -58,7 +58,7 @@ * 鎻愪氦鎶ュ伐 */ @Override - public void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){ + public void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure){ LambdaUpdateWrapper<Damage> damageUpdateWrapper=new LambdaUpdateWrapper<>(); damageUpdateWrapper.between(Damage::getDamageTime,startTime,endTime); if (type!=0){ @@ -67,8 +67,8 @@ if (status!=0){ damageUpdateWrapper.eq(Damage::getStatus,status); } - if(workingProcedureId!=0){ - damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedureId); + if(!"0".equals(workingProcedure)){ + damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedure); } Damage damage=new Damage(); damage.setStatus(2); @@ -96,7 +96,7 @@ damage.setProcessId(glassInfo.getFlowCardId()); damage.setOrderNumber(glassInfo.getGlassType()); damage.setTechnologyNumber(glassInfo.getLayer()); - damage.setDamageTime(LocalDateTime.now()); + damage.setDamageTime(Timestamp.valueOf(LocalDateTime.now())); damage.setType(2); baseMapper.insert(damage); } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java index bdfb970..e8b3016 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java @@ -1,5 +1,6 @@ package com.mes.glassinfo.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.github.yulichang.base.MPJBaseMapper; import com.mes.glassinfo.entity.GlassInfo; @@ -11,6 +12,7 @@ * @author wu * @since 2024-04-29 */ +@DS("hangzhoumes") public interface GlassInfoMapper extends MPJBaseMapper<GlassInfo> { } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java index fc7e13f..b2a6af1 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java @@ -1,7 +1,8 @@ package com.mes.glassinfo.service; -import com.mes.glassinfo.entity.GlassInfo; import com.github.yulichang.base.MPJBaseService; +import com.mes.glassinfo.entity.GlassInfo; + import java.util.List; import java.util.Map; @@ -24,11 +25,10 @@ */ void saveGlassInfo(List<GlassInfo> glassinfo); - int getGlassInfoCountByFlowCardId(String flowCardId,int layer); + int getGlassInfoCountByFlowCardId(String flowCardId, int layer); /** - * @return - * 鏌ヨ鎵�鏈夊伐绋嬬姸鎬佷笉涓�300涓嶅悓娴佺▼鍗″彿 + * @return 鏌ヨ鎵�鏈夊伐绋嬬姸鎬佷笉涓�300涓嶅悓娴佺▼鍗″彿 */ List<Map<String, Object>> getFlowCardId(); diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java index c143b88..10ab730 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java @@ -11,9 +11,9 @@ import com.mes.pp.entity.OptimizeProject; import com.mes.pp.mapper.OptimizeProjectMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -31,7 +31,7 @@ @Service @Slf4j public class GlassInfoServiceImpl extends MPJBaseServiceImpl<GlassInfoMapper, GlassInfo> implements GlassInfoService { - @Autowired + @Resource OptimizeProjectMapper optimizeProjectMapper; @Override @@ -42,7 +42,7 @@ optimizeGlassinfos = optimizeProjectMapper.selectJoinList(OptimizeGlassinfo.class, new MPJQueryWrapper<OptimizeProject>() .select("b.process_id,t.glass_type,b.o_width,b.o_height,t.glass_thickness,b.order_sort,b.p_width,b.p_height,b.layer, b.total_layer, b.stock_id,b.heat_layout_id,b.heat_layout_sort,c.x_axis,c.y_axis,b.project_no,b.glass_id,c.rotate_angle") .leftJoin("optimize_detail b on t.project_no=b.project_no") - .leftJoin("optimize_heat_detail c on c.project_no=t.project_no and b.heat_layout_id=c.layout_id and b.heat_layout_sort=c.sort") + .leftJoin("optimize_heat_detail c on c.project_no=t.project_no and b.heat_layout_id=c.layout_id and b.heat_layout_sort=c.sort") //.eq("t.state",100) .eq("t.project_no", engineeringId)); } @@ -89,7 +89,7 @@ @Override - public int getGlassInfoCountByFlowCardId(String flowCardId,int layer) { + public int getGlassInfoCountByFlowCardId(String flowCardId, int layer) { return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda() .eq(GlassInfo::getFlowCardId, flowCardId) .eq(GlassInfo::getLayer, layer)); @@ -121,7 +121,7 @@ List<Map<String, Object>> result = glassInfos.stream() .map(glassInfo -> { Map<String, Object> map = new HashMap<>(); - map.put("flow_card_id", glassInfo.getFlowCardId()+" | "+glassInfo.getLayer()); + map.put("flow_card_id", glassInfo.getFlowCardId() + " | " + glassInfo.getLayer()); // 濡傛灉杩樻湁鍏朵粬瀛楁闇�瑕佹坊鍔犲埌 map 涓紝鍦ㄨ繖閲岀户缁坊鍔� return map; }) diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeDetailController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeDetailController.java deleted file mode 100644 index df9b277..0000000 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeDetailController.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.mes.pp.controller; - - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * <p> - * 鍓嶇鎺у埗鍣� - * </p> - * - * @author zhoush - * @since 2024-04-16 - */ -@RestController -@RequestMapping("/optimize-detail") -public class OptimizeDetailController { - -} - diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java index 59ed7a3..0f6b968 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java @@ -1,10 +1,8 @@ package com.mes.pp.mapper; import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.github.yulichang.base.MPJBaseMapper; import com.mes.pp.entity.OptimizeDetail; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -15,7 +13,6 @@ * @since 2024-04-16 */ @DS("pp") -@Mapper public interface OptimizeDetailMapper extends MPJBaseMapper<OptimizeDetail> { } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java index 857d2a9..20f9c71 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java @@ -3,7 +3,6 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.github.yulichang.base.MPJBaseMapper; import com.mes.pp.entity.OptimizeLayout; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -14,7 +13,6 @@ * @since 2024-04-16 */ @DS("pp") -@Mapper public interface OptimizeLayoutMapper extends MPJBaseMapper<OptimizeLayout> { } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java index 08c1911..2449b5f 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java @@ -1,11 +1,9 @@ package com.mes.pp.mapper; import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.github.yulichang.base.MPJBaseMapper; import com.mes.pp.entity.OptimizeProject; import com.mes.pp.entity.request.OptimizeRequest; -import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -17,7 +15,6 @@ * @author zhoush * @since 2024-04-16 */ -@Mapper @DS("pp") public interface OptimizeProjectMapper extends MPJBaseMapper<OptimizeProject> { List<OptimizeProject> saveProject(OptimizeRequest optimizeRequest); diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java index e42cefa..47f829c 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java @@ -20,7 +20,7 @@ /** * <p> - * 鏈嶅姟瀹炵幇绫� + * 鏈嶅姟瀹炵幇绫� * </p> * * @author wu @@ -30,24 +30,25 @@ @DS("pp") @Slf4j public class ReportingWorkServiceImpl extends ServiceImpl<ReportingWorkMapper, ReportingWork> implements ReportingWorkService { -@Autowired -private ReportingDamageMapper reportingDamageMapper; -@Autowired -private AwaitingRepairMapper awaitingRepairMapper; + @Autowired + private ReportingDamageMapper reportingDamageMapper; + @Autowired + private AwaitingRepairMapper awaitingRepairMapper; + @Override public List<Reportingdamage> selectDamage(Reportingdamage reportingdamage) { - QueryWrapper<Reportingdamage>queryWrapper=new QueryWrapper<>(); - queryWrapper.select("this_process,sum(completed_quantity)as completedQuantity,sum(breakage_quantity)as breakageQuantity,device_name ") - .eq("this_process",reportingdamage.getThisProcess()) + QueryWrapper<Reportingdamage> queryWrapper = new QueryWrapper<>(); + queryWrapper.select("this_process,sum(completed_quantity) as completedQuantity,sum(breakage_quantity) as breakageQuantity ") + //.eq("this_process", reportingdamage.getThisProcess()) //.eq("device_name",reportingdamage.getDeviceName()) - .ge("reporting_work_time",reportingdamage.getReportingWorkTime()) + .ge("reporting_work_time", reportingdamage.getReportingWorkTime()) .groupBy("this_process"); return reportingDamageMapper.selectList(queryWrapper); } @Override public List<AwaitingRepair> selectAwaitingRepair() { - QueryWrapper<AwaitingRepair>queryWrapper=new QueryWrapper<>(); + QueryWrapper<AwaitingRepair> queryWrapper = new QueryWrapper<>(); queryWrapper.select("*"); return awaitingRepairMapper.selectList(queryWrapper); } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java index 63b0c45..9a83681 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java @@ -45,12 +45,6 @@ private Integer glassType; /** - * 楂� - */ - @ApiModelProperty(value = "楂�", position = 7) - private double height; - - /** * 鍘氬害 */ @ApiModelProperty(value = "鍘氬害", position = 8) @@ -81,18 +75,6 @@ private Integer temperingFeedSequence; /** - * x鍧愭爣 - */ - @ApiModelProperty(value = "x鍧愭爣", position = 13) - private Integer xCoordinate; - - /** - * y鍧愭爣 - */ - @ApiModelProperty(value = "y鍧愭爣", position = 14) - private Integer yCoordinate; - - /** * 鏃嬭浆瑙掑害锛堥�嗘椂閽堬級 */ @ApiModelProperty(value = "鏃嬭浆瑙掑害锛堥�嗘椂閽堬級", position = 15) @@ -104,4 +86,9 @@ @ApiModelProperty(value = "鐘舵��", position = 16) private Integer state; + /** + * 宸ョ▼id + */ + @ApiModelProperty(value = "宸ョ▼id", position = 17) + private String engineerId; } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingAgoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingAgoService.java deleted file mode 100644 index 83088d7..0000000 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingAgoService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.mes.temperingglass.service; -import com.mes.temperingglass.entity.TemperingGlassInfo; -import com.github.yulichang.base.MPJBaseService; -import java.util.List; - -/** - * <p> - * 鏈嶅姟绫� - * </p> - * - * @author zhoush - * @since 2024-04-07 - */ -public interface TemperingAgoService extends MPJBaseService<TemperingGlassInfo> { - - List<TemperingGlassInfo> selectWaitingGlass(); - - List<TemperingGlassInfo> selectIntoGlass(int layoutId); - - List<TemperingGlassInfo> selectOutGlass(); - - List<TemperingGlassInfo> selectOverGlass(); - - List<TemperingGlassInfo> selectLayoutId(); -} diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java new file mode 100644 index 0000000..3ebeae3 --- /dev/null +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java @@ -0,0 +1,51 @@ +package com.mes.temperingglass.service; +import com.mes.temperingglass.entity.TemperingGlassInfo; +import com.github.yulichang.base.MPJBaseService; +import java.util.List; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author zhoush + * @since 2024-04-07 + */ +public interface TemperingGlassInfoService extends MPJBaseService<TemperingGlassInfo> { + /** + * 绛夊緟涓殑鐜荤拑 + * @return + */ + List<TemperingGlassInfo> selectWaitingGlass(); + /** + * 杩涚倝涓殑鐜荤拑 + * @return + */ + List<TemperingGlassInfo> selectIntoGlass(TemperingGlassInfo temperingGlassInfo); + /** + * 鍑虹倝涓殑鐜荤拑 + * @return + */ + List<TemperingGlassInfo> selectOutGlass(); + /** + * 閽㈠寲鍚庣殑鐜荤拑 + * @return + */ + List<TemperingGlassInfo> selectOverGlass(); + /** + * 鏌ヨ閽㈠寲鍚庣殑鐗堝浘id + * @return + */ + List<TemperingGlassInfo> selectLayoutId(); + /** + * 鏌ヨ閽㈠寲鐘舵�� + * @return + */ + List<TemperingGlassInfo> selectTaskType(); + /** + * 閽㈠寲妯″潡鐮存崯 + * @return + */ + Integer updateTemperingState(TemperingGlassInfo temperingGlassInfo); + +} diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingAgoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingAgoServiceImpl.java deleted file mode 100644 index e8a10af..0000000 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingAgoServiceImpl.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.mes.temperingglass.service.impl; - -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.TemperingAgoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * <p> - * 鏈嶅姟瀹炵幇绫� - * </p> - * - * @author zhoush - * @since 2024-04-07 - */ -@Service -public class TemperingAgoServiceImpl extends MPJBaseServiceImpl<TemperingGlassInfoMapper, TemperingGlassInfo> implements TemperingAgoService { - @Autowired - TemperingGlassInfoMapper temperingMapper; - - @Override - public List<TemperingGlassInfo> selectWaitingGlass() { - //鑾峰彇绛夊緟杩涚倝涓殑鐜荤拑淇℃伅 - QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); - //wrapper.eq("state",1); - wrapper.in("state",1,0); - return temperingMapper.selectList(wrapper); - } - - @Override - public List<TemperingGlassInfo> selectIntoGlass(int layoutId) { - //鑾峰彇杩涚倝涓殑鐜荤拑淇℃伅 - QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); - wrapper.eq("state",2) - .eq("tempering_layout_id", layoutId) - .orderByAsc("tempering_layout_id","tempering_feed_sequence"); - return temperingMapper.selectList(wrapper); - } - - @Override - public List<TemperingGlassInfo> selectOutGlass() { - //鑾峰彇鍑虹倝涓殑鐜荤拑淇℃伅 - QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>(); - wapper.eq("state", 3) - .orderByAsc("tempering_layout_id","tempering_feed_sequence"); - return temperingMapper.selectList(wapper); - } - - @Override - public List<TemperingGlassInfo> selectOverGlass() { - //鑾峰彇杩囨棆杞彴鏈�澶х殑閽㈠寲鐗堝浘id - QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>(); - wapper.select("top 1 *").eq("state", 4) - .orderByDesc("tempering_layout_id"); - //鏍规嵁鏈�澶х殑鐗堝浘id鏄剧ず閽㈠寲鍚庣殑鐗堝浘淇℃伅 - TemperingGlassInfo glassinfo= temperingMapper.selectOne(wapper); - QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); - wrapper.eq("tempering_layout_id",glassinfo.getTemperingLayoutId()); - return temperingMapper.selectList(wrapper); - } - - @Override - public List<TemperingGlassInfo> selectLayoutId() { - QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); - wrapper.select("distinct tempering_layout_id") - .eq("state",2) - .orderByAsc("tempering_layout_id"); - return temperingMapper.selectList(wrapper); - } -} 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 new file mode 100644 index 0000000..a7da6ff --- /dev/null +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java @@ -0,0 +1,112 @@ +package com.mes.temperingglass.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +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; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author zhoush + * @since 2024-04-07 + */ +@Service +@DS("salve_hangzhoumes") +public class TemperingGlassInfoServiceImpl extends MPJBaseServiceImpl<TemperingGlassInfoMapper, TemperingGlassInfo> implements TemperingGlassInfoService { + @Autowired + TemperingGlassInfoMapper temperingMapper; + + @Override + public List<TemperingGlassInfo> selectWaitingGlass() { + //鑾峰彇绛夊緟杩涚倝涓殑鐜荤拑淇℃伅 + QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); + wrapper.select("Top 1 *").eq("state",1); + TemperingGlassInfo glass=temperingMapper.selectOne(wrapper); + QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>(); + glassinfo.eq("engineer_id",glass.getEngineerId()) + .eq("tempering_layout_id", glass.getTemperingLayoutId()); + return temperingMapper.selectList(glassinfo); + } + + @Override + public List<TemperingGlassInfo> selectIntoGlass(TemperingGlassInfo temperingGlassInfo) { + //鑾峰彇杩涚倝涓殑鐜荤拑淇℃伅 + QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); + wrapper.eq("tempering_layout_id", temperingGlassInfo.getTemperingLayoutId()) + .eq("engineer_id", temperingGlassInfo.getEngineerId()) + .orderByAsc("tempering_layout_id","tempering_feed_sequence"); + return temperingMapper.selectList(wrapper); + } + + @Override + public List<TemperingGlassInfo> selectOutGlass() { + //鑾峰彇鍑虹倝涓殑鐜荤拑淇℃伅 + QueryWrapper<TemperingGlassInfo> wrap = new QueryWrapper<>(); + wrap.select("Top 1 *").eq("state",3); + TemperingGlassInfo glass=temperingMapper.selectOne(wrap); + //鏍规嵁宸ョ▼鍙峰拰鐗堝浘鑾峰彇鏁版嵁 + QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>(); + wapper.eq("engineer_id",glass.getEngineerId()) + .eq("tempering_layout_id", glass.getTemperingLayoutId()) + .orderByAsc("tempering_layout_id","tempering_feed_sequence"); + return temperingMapper.selectList(wapper); + } + + @Override + public List<TemperingGlassInfo> selectOverGlass() { + //鑾峰彇杩囨棆杞彴鏈�澶х殑閽㈠寲鐗堝浘id + QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>(); + wapper.select("Top 1 *").eq("state", 4) + .orderByDesc("tempering_layout_id,engineer_id"); + //鏍规嵁鏈�澶х殑鐗堝浘id鏄剧ず閽㈠寲鍚庣殑鐗堝浘淇℃伅 + TemperingGlassInfo glassinfo= temperingMapper.selectOne(wapper); + if (glassinfo == null) { + return null; // 鐩存帴杩斿洖null锛岃〃绀烘病鏈夋壘鍒扮鍚堟潯浠剁殑璁板綍 + } + QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); + wrapper.eq("tempering_layout_id",glassinfo.getTemperingLayoutId()) + .eq("engineer_id",glassinfo.getEngineerId()); + + return temperingMapper.selectList(wrapper); + } + + @Override + public List<TemperingGlassInfo> selectLayoutId() { + QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); + wrapper.select("distinct tempering_layout_id,engineer_id") + .eq("state",2) + .orderByAsc("tempering_layout_id"); + return temperingMapper.selectList(wrapper); + } + + @Override + public List<TemperingGlassInfo> selectTaskType() { + QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); + wrapper.select("state") + .groupBy("state"); + return temperingMapper.selectList(wrapper); + } + + @Override + public Integer updateTemperingState(TemperingGlassInfo temperingGlassInfo) { + UpdateWrapper<TemperingGlassInfo> wrapper = new UpdateWrapper<>(); + wrapper.eq("glass_id",temperingGlassInfo.getGlassId()) + .lt("state",5) + .set("state", temperingGlassInfo.getState());; + if (temperingMapper.update(null,wrapper) > 0) { + return 200; + }else { + return 100; + } + } +} diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java index 32812b3..45bf01e 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java @@ -66,6 +66,7 @@ s7PLC.writeUInt16(address, data); result = true; } catch (Exception ex) { + System.out.println("鍚憄lc鍐欏懡浠よ繃绋嬩腑鍙戠敓寮傚父锛屽師鍥犱负锛�" + ex.getMessage()); reStartS7client(); } finally { tryCount -= 1; diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java index 11ce5dd..480921c 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java @@ -119,9 +119,32 @@ public void sendMessage(String message) { try { // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message); - this.session.getBasicRemote().sendText(message); + if(this.session.isOpen()){ + int maxChunkSize = 50000; // 瀹氫箟鏈�澶х殑鍒嗗潡澶у皬 + int length = message.length(); + if(length>50000){ + int chunks = (int) Math.ceil((double) length / maxChunkSize); + //鍒嗗潡鍙戦�佹秷鎭� + for (int i = 0; i < chunks; i++) { + int startIndex = i * maxChunkSize; + int endIndex = Math.min(startIndex + maxChunkSize, length); + String chunk = message.substring(startIndex, endIndex); + + // 鍒ゆ柇鏄惁鏄渶鍚庝竴鍧楁秷鎭� + boolean isLastChunk = (i == chunks - 1); + if(isLastChunk==true){ + chunk+="<END>"; + } + // 鍙戦�佸垎鍧楁秷鎭紝骞朵紶閫掓槸鍚︽槸鏈�鍚庝竴鍧楁秷鎭殑鏍囪瘑 + this.session.getBasicRemote().sendText(chunk); + } + }else{ + this.session.getBasicRemote().sendText(message); + } + + } } catch (Exception e) { - log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e); + log.error("鍙戦�佹秷鎭粰瀹㈡埛绔け璐ワ細{}", e.getMessage(), e); } } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java index 2384256..582dafe 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java @@ -1,16 +1,15 @@ package com.mes.work_assignment.controller; -import cn.hutool.core.date.DateTime; -import com.mes.damage.service.DamageService; import com.mes.utils.Result; +import com.mes.work_assignment.entity.WorkAssignment; import com.mes.work_assignment.service.WorkAssignmentService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import java.util.List; /** * <p> @@ -20,17 +19,24 @@ * @author wu * @since 2024-07-01 */ +@Api(description = "鍊肩彮淇℃伅") @RestController -@RequestMapping("/work_assignment/work-assignment") +@RequestMapping("/work_assignment") public class WorkAssignmentController { @Autowired private WorkAssignmentService workAssignmentService; @ApiOperation("鍊肩彮鏁版嵁鏌ヨ") - @GetMapping("/selectWorkAssignment") + @PostMapping("/selectWorkAssignment") public Result selectWorkAssignment(int line,String workingProcedure) { return Result.build(200,"鏌ヨ鎴愬姛",workAssignmentService.selectWorkAssignment(line,workingProcedure)); } + @ApiOperation("鍊肩彮鏁版嵁淇敼") + @PostMapping("/updateWorkAssignment") + public Result updateWorkAssignment(@RequestBody List<WorkAssignment> workAssignmentList) { + workAssignmentService.saveOrUpdateBatch(workAssignmentList); + return Result.build(200,"淇敼鎴愬姛",1); + } } diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java index e713455..c5acc6b 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java @@ -1,5 +1,6 @@ package com.mes.work_assignment.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.mes.work_assignment.entity.WorkAssignment; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -11,6 +12,7 @@ * @author wu * @since 2024-07-01 */ +@DS("hangzhoumes") public interface WorkAssignmentMapper extends BaseMapper<WorkAssignment> { } diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java index b1ef2d6..ae06d40 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java @@ -2,7 +2,6 @@ import com.github.yulichang.base.MPJBaseMapper; import com.mes.menu.entity.SysMenu; -import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -14,7 +13,7 @@ * @author zhoush * @since 2024-04-11 */ -@Mapper + public interface SysMenuMapper extends MPJBaseMapper<SysMenu> { List<String> selectPermsByUserId(long parseLong); diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java index 036e737..f752b45 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java @@ -33,15 +33,19 @@ @ApiOperation("鏂板瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�") @PostMapping("/saveRole") // @PreAuthorize("hasAuthority('sys:role:save')") - public Result<SysRole> saveRole(@Validated @RequestBody SysRoleVO sysRoleVO) { - return Result.success(sysRoleService.saveRole(sysRoleVO)); + public Result<SysRoleVO> saveRole(@Validated @RequestBody SysRoleVO sysRoleVO) { + //return Result.success(sysRoleService.saveRole(sysRoleVO)); + sysRoleService.saveRole(sysRoleVO); + return Result.build(200,"鏂板鎴愬姛",sysRoleVO); } @ApiOperation("缂栬緫瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�") @PostMapping("/updateRole") // @PreAuthorize("hasAuthority('sys:role:save')") - public Result<String> updateRole(@Validated @RequestBody SysRoleVO sysRoleVO) { - return Result.success(sysRoleService.updateRole(sysRoleVO)); + public Result<SysRoleVO> updateRole(@Validated @RequestBody SysRoleVO sysRoleVO) { + // return Result.success(sysRoleService.updateRole(sysRoleVO)); + sysRoleService.updateRole(sysRoleVO); + return Result.build(200,"鏂板鎴愬姛",sysRoleVO); } @ApiOperation("鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�") diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java index d9251c1..bf1bf6d 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java @@ -2,7 +2,6 @@ import com.github.yulichang.base.MPJBaseMapper; import com.mes.role.entity.SysRole; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -12,7 +11,6 @@ * @author zhoush * @since 2024-04-11 */ -@Mapper public interface SysRoleMapper extends MPJBaseMapper<SysRole> { } diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java index 451d7fe..0cfc7df 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.role.entity.SysRoleMenu; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -12,7 +11,7 @@ * @author zhoush * @since 2024-04-11 */ -@Mapper + public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> { } diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java index 3201d55..a787182 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java @@ -117,10 +117,21 @@ roleMenu.setMenuId(menu.getId()); return roleMenu; }).collect(Collectors.toList()); + // 浣跨敤娴佸鐞嗚彍鍗曞垪琛紝鎻愬彇 children 鐨� id锛屽苟璁剧疆鍒� SysRoleMenu 涓� + List<SysRoleMenu> childrenList = menuList.stream() + .flatMap(menu -> menu.getChildren().stream()) // 鎵佸钩鍖栧鐞� children 鍒楄〃 + .map(child -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(child.getId()); // 璁剧疆 child 鐨� id 鍒� menuId + return roleMenu; + }) + .collect(Collectors.toList()); log.info("娓呯┖瑙掕壊鏉冮檺琛ㄤ腑璇ヨ鑹蹭俊鎭�"); // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑 sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId)); sysRoleMenuService.saveBatch(roleMenuList); + sysRoleMenuService.saveBatch(childrenList); // 鍒犻櫎缂撳瓨 sysUserService.clearUserAuthorityInfoByRoleId(roleId); return "success"; diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java index 6f13e7c..e897e65 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java @@ -43,7 +43,6 @@ @ApiOperation("閫�鍑虹櫥褰�") @PostMapping("/logout") -// @PreAuthorize("hasRole('ROLE_admin')") @PreAuthorize("hasAuthority('xt:yh')") public Result<String> logout() { return Result.success(sysUserService.logout()); @@ -61,10 +60,9 @@ @PostMapping("/updateUser") // @PreAuthorize("hasAuthority('sys:user:update')") public Result<List<SysUserVO>> updateUser(@Validated @RequestBody SysUserVO sysUser) { - //return Result.success(sysUserService.updateUser(sysUser)); sysUserService.updateUser(sysUser); GeneralRequest request=new GeneralRequest(); - request.setKey(""); + //request.setKey(""); return Result.success(sysUserService.listByUserName(request)); //鏇存敼浜嗕慨鏀逛箣鍚庤繑鍥炴墍鏈夌敤鎴峰垪琛� } diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java index f3e2f25..b9c491c 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java @@ -1,8 +1,8 @@ package com.mes.userinfo.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.github.yulichang.base.MPJBaseMapper; import com.mes.userinfo.entity.SysUser; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -12,7 +12,7 @@ * @author zhoush * @since 2024-04-11 */ -@Mapper +@DS("hangzhoumes") public interface SysUserMapper extends MPJBaseMapper<SysUser> { } diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java index cfd9a6f..697ca74 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java @@ -2,7 +2,6 @@ import com.github.yulichang.base.MPJBaseMapper; import com.mes.userinfo.entity.SysUserRole; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -12,7 +11,7 @@ * @author zhoush * @since 2024-04-11 */ -@Mapper + public interface SysUserRoleMapper extends MPJBaseMapper<SysUserRole> { } diff --git a/hangzhoumesParent/gateway/src/main/resources/application.yml b/hangzhoumesParent/gateway/src/main/resources/application.yml index 3ddd26b..a369150 100644 --- a/hangzhoumesParent/gateway/src/main/resources/application.yml +++ b/hangzhoumesParent/gateway/src/main/resources/application.yml @@ -47,6 +47,14 @@ filters: - StripPrefix=2 + + - id: glassStorage + uri: lb://glassStorage + predicates: + - Path=/api/glassStorage/** + filters: + - StripPrefix=2 + # - id: unLoadGlass # uri: lb://unLoadGlass # predicates: diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java index f52662f..73b2bd4 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java @@ -25,12 +25,7 @@ */ EdgStorageCage selectNearestEmpty(int currentSlot, boolean flag); - /** - * 鏌ヨ绗煎唴绌烘牸 - * @return - */ List<EdgStorageCage> selectCacheEmpty(); - /** * 鏌ヨ绗煎唴鍑虹墖椤哄簭璇︽儏 * @return @@ -45,11 +40,19 @@ /** * 淇敼鐞嗙墖绗间俊鎭� + * * @param edgStorageCage * @return */ boolean updateEdgStorageCage(EdgStorageCage edgStorageCage); + /** + * 鏇存柊鐞嗙墖绗艰鎯呬俊鎭� + * + * @param edgStorageCageId + * @param edgStorageCageDetails + * @return + */ boolean updateEdgStorageCageDetails(int edgStorageCageId, EdgStorageCageDetails edgStorageCageDetails); } 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 301ef23..b4c28b8 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 @@ -15,6 +15,8 @@ import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper; import com.mes.edgstoragecage.mapper.EdgStorageCageMapper; import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; +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.mapper.OptimizeDetailMapper; @@ -53,6 +55,8 @@ @Autowired EdgStorageCageMapper edgStorageCageMapper; + @Autowired + GlassInfoMapper glassInfoMapper; @Autowired TaskCacheService taskCacheService; @@ -77,12 +81,20 @@ log.info("鍓嶇浼犻�掓暟鎹笉鍏�:{}",arguments); return false; } - int state=controlsId==200?3:2; + int state; + if(controlsId==200||controlsId==201){ + state=controlsId==200?3:2; + }else if (controlsId==300||controlsId==301){ + state=controlsId==300?3:2; + }else{ + log.info("鍓嶇浼犻�掔姸鎬佷笉鍚堟硶:{}",arguments); + return false; + } - List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId)); - if (edgStorageCageDetails.size() == 1) { - EdgStorageCageDetails item = edgStorageCageDetails.get(0); - item.setState(controlsId); + List<GlassInfo> GlassInfos = glassInfoMapper.selectList(new MPJLambdaQueryWrapper<GlassInfo>() + .selectAll(GlassInfo.class) + .eq(GlassInfo::getGlassId, glassId)); + if (GlassInfos.size() == 1) { Damage damage =new Damage(); damage.setGlassId(glassId); damage.setLine(line); @@ -90,9 +102,18 @@ damage.setRemark(""); damage.setStatus(state);//201鐮存崯锛�200鎷胯蛋 =銆嬬牬鎹熻〃 2鐮存崯 3 鎷胯蛋 damageService.insertDamage(damage); - baseMapper.update(item, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId)); - return true; + }else{ + return false; } + List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>() + .selectAll(EdgStorageCageDetails.class) + .eq(EdgStorageCageDetails::getGlassId, glassId)); + if (edgStorageCageDetails.size() == 1) { + EdgStorageCageDetails item = edgStorageCageDetails.get(0); + item.setState(controlsId); + baseMapper.update(item, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId)); + } + // Sql鐗堟湰 // List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId)); // if (edgStorageCageDetails.size() == 1) { @@ -101,7 +122,7 @@ // baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId)); // return true; // } - return false; + return true; } /** 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 40e35b2..ce367b3 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 @@ -5,7 +5,9 @@ import cn.hutool.json.JSONObject; 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.github.yulichang.query.MPJQueryWrapper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.common.S7object; import com.mes.common.config.Const; import com.mes.device.PlcParameterObject; @@ -128,27 +130,6 @@ } Date endDate = new Date(); log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime()); - } - - public void plcToHomeEdgTask() { - // log.info("鎺ㄦ暟鎹�"); - // jsonObject.append("params", new short[] { 30, 40, }); -// ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home"); -// if (sendwServer != null) { -// for (WebSocketServer webserver : sendwServer) { -// webserver.sendMessage(jsonObject.toString()); -// if (webserver != null) { -// -// List<String> messages = webserver.getMessages(); -// -// if (!messages.isEmpty()) { -// // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛� -// webserver.clearMessages(); -// } -// } -// -// } -// } } /** @@ -277,6 +258,7 @@ MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>(); wrapper.select("count(t.glass_id), t.width, t.height") .eq("t.state", Const.GLASS_STATE_IN) + .inSql("t.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .groupBy("t.width, t.height"); if (endcell == Const.A10_OUT_TARGET_POSITION) { wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " + @@ -372,8 +354,9 @@ glassList.add(resultDetails); } //鑾峰彇绗煎唴鐜荤拑 - List<EdgStorageCageDetails> details = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>() - .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)); + List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class) + .leftJoin(EdgStorageCage.class, on -> on.eq(EdgStorageCage::getSlot, EdgStorageCageDetails::getSlot).eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)) + .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)); glassList.addAll(details); return glassList; @@ -384,19 +367,20 @@ * * @return */ - private boolean queryMaxMinDiff(int threshold) { + public boolean queryMaxMinDiff(int threshold) { //鑾峰彇绗煎瓙鍐呮渶澶х増鍥緄d鍜屾渶灏忕増鍥緄d鎻掑�硷紝鍒ゆ柇鏄惁澶т簬闃堝�硷紝澶т簬闃堝�肩洿鎺ュ嚭鏈�灏忕増鍥剧幓鐠� QueryWrapper<EdgStorageCageDetails> queryWrapper = new QueryWrapper<>(); queryWrapper.select("max(tempering_layout_id)-min(tempering_layout_id) as diff") - .eq("state", Const.GLASS_STATE_IN); + .eq("state", Const.GLASS_STATE_IN) + .inSql("slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON); List<Object> list = edgStorageCageDetailsService.listObjs(queryWrapper); + //鑾峰彇绗煎唴鐜荤拑鐗堝浘宸�兼槸鍚﹀ぇ浜庨槇鍊� if (CollectionUtil.isNotEmpty(list)) { Long diff = (Long) list.get(0); return diff > threshold; } else { return Boolean.FALSE; } - } /** @@ -411,6 +395,7 @@ .eq(EdgStorageCageDetails::getState, 100) .eq(width != 0, EdgStorageCageDetails::getWidth, width) .eq(height != 0, EdgStorageCageDetails::getHeight, height) + .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId) .orderBy(Boolean.TRUE, sequenceOrder, EdgStorageCageDetails::getTemperingFeedSequence) .last("limit 1")); @@ -446,6 +431,7 @@ .eq("t.glass_id", taskCache.getGlassId()) .ne("t1.glass_id", taskCache.getGlassId()) .eq("t1.state", Const.GLASS_STATE_IN) + .inSql("t1.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .orderByAsc("t1.tempering_layout_id") .orderBy(Boolean.TRUE, sequenceOrder, "t1.tempering_feed_sequence"); List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, mpjLambdaWrapper); @@ -469,7 +455,7 @@ return null; } return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()) -// .inSql(EdgStorageCageDetails::getEngineerId, "select engineer_id from engineering where state = 1") + .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .last(" limit 1 ")); } @@ -513,6 +499,7 @@ MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>(); wrapper.select("count(t.glass_id) as count, t.width, t.height") .eq("t.state", Const.GLASS_STATE_IN) + .inSql("t.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .groupBy("t.width, t.height"); if (endcell == Const.A10_OUT_TARGET_POSITION) { wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " + @@ -601,11 +588,9 @@ log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus); } else { log.info("5銆侀潪鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo); - LambdaQueryWrapper<EdgStorageCageDetails> wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()); - EdgStorageCageDetails updateDetail = new EdgStorageCageDetails(); - updateDetail.setState(Const.GLASS_STATE_OUT); - edgStorageCageDetailsService.update(updateDetail, wrapper); + 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); diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java index 02fa1cc..7fff8e4 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java @@ -3,8 +3,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.mes.common.config.Const; import com.mes.damage.entity.Damage; import com.mes.damage.service.DamageService; +import com.mes.edgstoragecage.entity.EdgStorageCage; import com.mes.edgstoragecage.entity.EdgStorageCageDetails; import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper; import com.mes.glassinfo.entity.GlassInfo; @@ -12,6 +14,7 @@ import com.mes.taskcache.entity.TaskCache; import com.mes.taskcache.mapper.TaskCacheMapper; import com.mes.taskcache.service.TaskCacheService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,6 +31,7 @@ * @author zhoush * @since 2024-04-07 */ +@Slf4j @Service public class TaskCacheServiceImpl extends ServiceImpl<TaskCacheMapper, TaskCache> implements TaskCacheService { @@ -65,10 +69,19 @@ int serialNumber=1; for(TaskCache taskCache1:taskCache){ Map<String,Object> map=new HashMap<>(); - GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>() +// GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>() +// .selectAll(GlassInfo.class) +// .eq(GlassInfo::getGlassId,taskCache1.getGlassId())); + List<GlassInfo> glassInfos=glassInfoMapper.selectJoinList(GlassInfo.class, new MPJLambdaWrapper<GlassInfo>() .selectAll(GlassInfo.class) - .eq(GlassInfo::getGlassId,taskCache1.getGlassId())); - if(glassInfo!=null){ + .innerJoin(EdgStorageCageDetails.class, on -> on + .eq(EdgStorageCageDetails::getGlassId, GlassInfo::getGlassId) + .eq(EdgStorageCageDetails::getEngineerId, GlassInfo::getEngineerId)) + .eq(GlassInfo::getGlassId,taskCache1.getGlassId()) + .eq(EdgStorageCageDetails::getState,Const.GLASS_STATE_IN) + ); + if(glassInfos.size()==1){ + GlassInfo glassInfo=glassInfos.get(0); map.put("Line",line);//绾胯矾 2001 1绾匡紝 2002 2绾� map.put("Width",glassInfo.getWidth());//瀹� map.put("Height",glassInfo.getHeight());//楂� @@ -80,6 +93,9 @@ map.put("FilmsId",glassInfo.getFilmsid());//鑶滅郴 map.put("SerialNumber",serialNumber);//鍑虹墖椤哄簭 result.add(map); + }else if(glassInfos.size()>1){ + log.info("鏁版嵁涓嶇鍚堥�昏緫--纾ㄨ竟闃熷垪glassId閲嶅:",glassInfos); + return new ArrayList<>(); } serialNumber++; } 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 8a15f1b..19a87ce 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java @@ -15,6 +15,7 @@ import com.mes.pp.mapper.OptimizeDetailMapper; import com.mes.taskcache.entity.TaskCache; import com.mes.taskcache.mapper.TaskCacheMapper; +import com.mes.taskcache.service.TaskCacheService; import com.mes.taskcache.service.impl.TaskCacheServiceImpl; import lombok.extern.slf4j.Slf4j; import org.junit.Test; @@ -54,6 +55,9 @@ GlassInfoService glassInfoService; @Autowired CacheGlassTask cacheGlassTask; + + @Autowired + TaskCacheService taskCacheService; @Test public void testFindPath() { @@ -122,8 +126,8 @@ @Test public void testSelectCacheEmpty() { - List<EdgStorageCage> map = edgStorageCageService.selectCacheEmpty(); - log.info("绗煎唴绌烘牸锛歿}", Arrays.asList(map)); +// List<EdgStorageCage> map = edgStorageCageService.selectCacheEmpty(); +// log.info("绗煎唴绌烘牸锛歿}", Arrays.asList(map)); } @Test @@ -135,10 +139,10 @@ @Test public void testidentWorn() { Map<String, String> arguments=new HashMap<>(); - arguments.put("glassId","P24060405|30|1");//鐜荤拑ID - arguments.put("controlsId","200"); //鎷胯蛋锛�200/鐮存崯锛�201 - arguments.put("line","1001"); //绾胯矾锛� - arguments.put("machine","璇嗗埆"); //璁惧鍚嶇О锛� + arguments.put("glassId","P24060403|3|6");//鐜荤拑ID + arguments.put("controlsId","300"); //鎷胯蛋锛�200/鐮存崯锛�201 + arguments.put("line","2001"); //绾胯矾锛� + arguments.put("machine","鍐峰姞宸�"); //璁惧鍚嶇О锛� edgStorageCageDetailsService.identWorn(arguments); log.info("璇嗗埆鍙般�愮牬鎹�/鎷胯蛋銆戯細{}", 1); } @@ -175,4 +179,11 @@ log.info("鍑虹墖浠诲姟锛歿}", Arrays.asList(edgStorageCageDetails)); } + @Test + public void testedgTask() { + List<Map<String,Object>> EdgTasks = taskCacheService.selectEdgInfo("2001"); + + log.info("纾ㄨ竟浠诲姟锛歿}", Arrays.asList(EdgTasks)); + } + } 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 deed23a..3dd6f8f 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 @@ -34,7 +34,11 @@ @PostMapping("/selectBigStorageCageDetails") public Result selectBigStorageCageDetails(@RequestBody Map map) { List<BigStorageCageDetails> bigStorageCageDetails=bigStorageCageDetailsService.selectBigStorageCageDetails(map.get("glassId").toString()); - return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetails); + if (bigStorageCageDetails.size()>0){ + return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetails); + }else{ + return Result.build(200,"鏌ヨ澶辫触锛屾棤姝ょ幓鐠僫d",bigStorageCageDetails); + } } @ApiOperation("鐞嗙墖绗艰鎯呮坊鍔�") @@ -68,10 +72,25 @@ @ApiOperation("鐞嗙墖绗间换鍔″嚭鐗�") @PostMapping("/outBigStorageCageDetails") public Result outBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) { - bigStorageCageDetailsService.outBigStorageCageDetails(bigStorageCageDetails); return Result.build(200,"鍑虹墖娣诲姞鎴愬姛",1); } + @ApiOperation("鎸囧畾閽㈠寲") + @PostMapping("/TemperingGlass") + public Result TemperingGlass(@RequestBody BigStorageCageDetails bigStorageCageDetails) { + boolean result=bigStorageCageDetailsService.TemperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(),bigStorageCageDetails.getEngineerId()); + if(result==true){ + return Result.build(200,"鎸囧畾閽㈠寲鎴愬姛",1); + }else { + return Result.build(200, "宸插瓨鍦ㄩ挗鍖栦换鍔★紝璇风瓑寰呴挗鍖栧畬鎴愬啀鎸囧畾閽㈠寲", 1); + } + } + + @ApiOperation("閽㈠寲鏌ヨ") + @PostMapping("/selectTemperingGlass") + public Result selectTemperingGlass() { + return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetailsService.selectTemperingGlass()); + } } diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java index 9b6ecc4..5a79a88 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java @@ -46,15 +46,26 @@ private Integer slot; /** + * 鏍呮牸鍙� + */ + @ApiModelProperty(value = "鏈�灏忓帤搴�", position = 5) + private Integer minThickness; + /** + * 鏍呮牸鍙� + */ + @ApiModelProperty(value = "鏈�澶у帤搴�", position = 6) + private Integer maxThickness; + + /** * 鍚敤鐘舵�� */ - @ApiModelProperty(value = "鍚敤鐘舵��", position = 5) + @ApiModelProperty(value = "鍚敤鐘舵��", position = 7) private Integer enableState; /** * 鍓╀綑瀹藉害 */ - @ApiModelProperty(value = "鍓╀綑瀹藉害", position = 6) + @ApiModelProperty(value = "鍓╀綑瀹藉害", position = 8) private Integer remainWidth; @ApiModelProperty(hidden = true) diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java index 33fe7f5..e717b46 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java @@ -60,11 +60,6 @@ @ApiModelProperty(value = "鐜荤拑绫诲瀷", position = 8) private Integer glassType; - /** - * 楂� - */ - @ApiModelProperty(value = "楂�", position = 10) - private double height; /** * 鍘氬害 diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java index a2df9ab..465c7a2 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java @@ -22,4 +22,9 @@ * 鐜荤拑鏁伴噺 */ private Integer glassCount; + + /** + * 绗煎瓙鍙� + */ + private Integer deviceId; } diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java index da14719..495b06a 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java @@ -24,7 +24,7 @@ * * @return */ - TemperingLayoutDTO temperingIsAll(); + List<TemperingLayoutDTO> temperingIsAll(); /** * 鑾峰彇姣忎釜閽㈠寲鐗堝浘鍗犵敤鐨勬牸瀛愭暟閲� 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 83d86fe..cab1f09 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 @@ -8,6 +8,7 @@ import com.mes.glassinfo.entity.GlassInfo; import java.util.List; +import java.util.Map; /** * <p> @@ -47,7 +48,7 @@ * * @return */ - TemperingLayoutDTO temperingIsAll(); + List<TemperingLayoutDTO> temperingIsAll(); /** * 鑾峰彇姣忎釜閽㈠寲鐗堝浘鍗犵敤鐨勬牸瀛愭暟閲� @@ -64,4 +65,8 @@ * @return */ List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId); + + boolean TemperingGlass(String temperingLayoutId, String engineerId); + + 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 5b09ac0..01b49c4 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,6 +2,7 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.bigstorage.entity.BigStorageCage; @@ -17,6 +18,8 @@ import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper; import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper; import com.mes.common.config.Const; +import com.mes.damage.entity.Damage; +import com.mes.damage.service.DamageService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.mapper.GlassInfoMapper; import com.mes.temperingglass.entity.TemperingGlassInfo; @@ -53,6 +56,9 @@ private BigStorageCageService bigStorageCageService; @Resource private GlassInfoMapper glassInfoMapper; + + @Resource + private DamageService damageService; @Value("${mes.minCount}") private int minCount; @@ -96,13 +102,14 @@ .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) .isNull(BigStorageCageFeedTask::getTargetSlot); List<BigStorageCageFeedTask> bigStorageCageFeedTaskNoTargetList = bigStorageCageFeedTaskMapper.selectList(feedTaskNoTargetWrapper); - for (BigStorageCageFeedTask bigStorageCageFeedTask:bigStorageCageFeedTaskNoTargetList - ) { - BigStorageCageDetails bigStorageCageDetails=new BigStorageCageDetails(); + for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskNoTargetList + ) { + BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>(); - glassInfoWrapper.eq(GlassInfo::getGlassId,bigStorageCageFeedTask.getGlassId()); - GlassInfo glassInfo= glassInfoMapper.selectOne(glassInfoWrapper); + glassInfoWrapper.eq(GlassInfo::getGlassId, bigStorageCageFeedTask.getGlassId()); + GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper); BeanUtils.copyProperties(glassInfo, bigStorageCageDetails); + bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask); bigStorageCageDetailsList.add(bigStorageCageDetails); } return bigStorageCageDetailsList; @@ -196,14 +203,19 @@ temperingGlassInfoMapper.updateById(temperingGlassInfo); } if (status == 0) { - bigStorageCageDetails.setState(Const.GLASS_STATE_TAKE); - } else { bigStorageCageDetails.setState(Const.GLASS_STATE_DAMAGE); + } else { + bigStorageCageDetails.setState(Const.GLASS_STATE_TAKE); } baseMapper.updateById(bigStorageCageDetails); bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot()); //todo:鎻掑叆鐮存崯鏁版嵁 - + Damage damage = new Damage(); + damage.setGlassId(bigStorageCageDetails.getGlassId()); + damage.setWorkingProcedure("鍐峰姞宸�"); + damage.setRemark("澶х悊鐗囩鐮存崯"); + damage.setStatus(2); + damageService.insertDamage(damage); } //鏌ヨ鐜荤拑淇℃伅 @@ -217,10 +229,13 @@ BeanUtils.copyProperties(glassInfo, bigStorageCageDetails); bigStorageCageDetails.setState(1); bigStorageCageDetails.setGap(glassGap); + List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>(); + bigStorageCageDetailsList.add(bigStorageCageDetails); + return bigStorageCageDetailsList; + } else { + return null; } - List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>(); - bigStorageCageDetailsList.add(bigStorageCageDetails); - return bigStorageCageDetailsList; + } //鐞嗙墖绗艰鎯呮坊鍔� @@ -259,7 +274,7 @@ .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) - .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth()) + .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())) .last("limit 1"); if (glassInfo.getTemperingLayoutId() == 0) { wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight()); @@ -271,6 +286,7 @@ bigStorageDTO = new BigStorageDTO(); bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); bigStorageDTO.setSlot(bigStorageCage.getSlot()); + bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); return bigStorageDTO; } bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() @@ -283,21 +299,42 @@ bigStorageDTO = new BigStorageDTO(); bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); bigStorageDTO.setSlot(bigStorageCage.getSlot()); + bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); + return bigStorageDTO; + } + + //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨 + bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() + .eq(BigStorageCage::getRemainWidth, slotWidth) + .eq(BigStorageCage::getEnableState, Const.SLOT_ON) + .notInSql(BigStorageCage::getDeviceId, + "select distinct device_id from big_storage_cage_details where state in (100,102,103)") + .ge(BigStorageCage::getMaxThickness, glassInfo.getThickness()) + .orderByAsc(BigStorageCage::getDeviceId) + .last("limit 1")); + if (null != bigStorageCage) { + bigStorageDTO = new BigStorageDTO(); + bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); + bigStorageDTO.setSlot(bigStorageCage.getSlot()); + bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); return bigStorageDTO; } bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) + .ge(BigStorageCage::getMaxThickness, glassInfo.getThickness()) + .orderByAsc(BigStorageCage::getDeviceId) .last("limit 1")); Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�"); bigStorageDTO = new BigStorageDTO(); bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); bigStorageDTO.setSlot(bigStorageCage.getSlot()); + bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); return bigStorageDTO; } @Override - public TemperingLayoutDTO temperingIsAll() { + public List<TemperingLayoutDTO> temperingIsAll() { return baseMapper.temperingIsAll(); } @@ -311,4 +348,48 @@ public List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId) { return baseMapper.queryGlassMaxAndMin(engineerId, temperingLayoutId); } + + @Override + public boolean TemperingGlass(String temperingLayoutId, String engineerId) { + LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + temperingGlassInfoLambdaQueryWrapper + .eq(TemperingGlassInfo::getState,Const.TEMPERING_NEW); + List<TemperingGlassInfo> temperingGlassInfoList=temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper); + + if(temperingGlassInfoList.size()==0){ + LambdaQueryWrapper<BigStorageCageDetails> wrapper =new LambdaQueryWrapper<>(); + wrapper.eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId) + .eq(BigStorageCageDetails::getEngineerId,engineerId) + .in(BigStorageCageDetails::getState,Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL); + List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(wrapper); + + for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList + ) { + TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo(); + LambdaQueryWrapper<GlassInfo> glassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + glassInfoLambdaQueryWrapper.eq(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId()); + GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoLambdaQueryWrapper); + + BeanUtils.copyProperties(glassInfo, temperingGlassInfo); + temperingGlassInfo.setAngle((int) glassInfo.getAngle()); + temperingGlassInfo.setState(Const.TEMPERING_NEW); + temperingGlassInfo.setSlot(bigStorageCageDetails.getSlot()); + temperingGlassInfoMapper.insert(temperingGlassInfo); + } + return true; + } else { + return false; + } + + + } + + @Override + public List<Map<String, Object>> selectTemperingGlass(){ + QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>(); + wrapper.select("engineer_id,tempering_layout_id,count(*) as count") + .groupBy("engineer_id,tempering_layout_id"); + List<Map<String, Object>> TemperingGlass = baseMapper.selectMaps(wrapper); + return TemperingGlass; + } } diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java index 7ce8d3f..44e8033 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java @@ -18,6 +18,7 @@ import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -48,6 +49,9 @@ @Resource private GlassInfoService glassInfoService; + + @Value("${mes.glassGap}") + private Integer glassGap; //杩涚墖閫昏緫 @Override @@ -217,15 +221,13 @@ LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper(); bigStorageCageDetailsWrapper .eq(BigStorageCageDetails::getSlot, slot) - .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) - .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL); + .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL); List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper); for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList ) { double widths = bigStorageCageDetails.getWidth(); - double gap = bigStorageCageDetails.getGap(); - width -= widths + gap; + width = width - widths - glassGap; } //淇敼鏍煎瓙鍓╀綑瀹藉害 BigStorageCage bigStorageCage = new BigStorageCage(); @@ -241,7 +243,9 @@ MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails) .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot) - .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL)); + .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL,Const.GLASS_STATE_OUT_ING)) + .orderByAsc(BigStorageCage::getDeviceId) + .orderByAsc(BigStorageCage::getSlot); return bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper); } @@ -252,7 +256,7 @@ MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails) .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot) - .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL)); + .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL,Const.GLASS_STATE_OUT_ING)); List<BigStorageCage> bigStorageCages = bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper); Map<Integer, List<BigStorageCage>> listMap = bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId())); return listMap; @@ -262,7 +266,7 @@ @Override public List<Map<String, Object>> selectBigStorageCageUsage() { QueryWrapper<BigStorageCage> wrapper = new QueryWrapper<>(); - wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) / COUNT(device_id), 2) AS percentage,COUNT(device_id) - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) AS count") + wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) / COUNT(device_id), 2) AS percentage,SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) AS count") .groupBy("device_id"); List<Map<String, Object>> bigStorageCageUsages = baseMapper.selectMaps(wrapper); diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java index b439101..e5279a4 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java @@ -27,10 +27,12 @@ public BigStorageCageOutTask() { } - public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, Integer width, Integer trainNumber, Integer serialNumber, Integer taskState) { + public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, double width, double height, Integer trainNumber, Integer serialNumber, Integer taskState) { this.glassId = glassId; this.startSlot = startSlot; this.endSlot = endSlot; + this.width = width; + this.height = height; this.trainNumber = trainNumber; this.serialNumber = serialNumber; this.taskState = taskState; @@ -60,6 +62,16 @@ */ @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5) private Integer endSlot; + /** + * 鐩爣浣嶇疆 + */ + @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5) + private double width; + /** + * 鐩爣浣嶇疆 + */ + @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5) + private double height; /** * 杞︽ diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java index 85cf462..b8361f4 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java @@ -57,12 +57,17 @@ e.printStackTrace(); } Date startDate = new Date(); - log.info("澶х悊鐗囩璇诲彇plc鏁版嵁寮�濮嬫椂闂达細{}", startDate); byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength()); Date endDate = new Date(); - log.info("澶х悊鐗囩璇诲彇plc鏁版嵁缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); + log.info("澶х悊鐗囩璇诲彇plc鏁版嵁,寮�濮嬫椂闂达細{}锛岀粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", startDate, endDate, endDate.getTime() - startDate.getTime()); if (getplcvlues != null) { PlcMesObject.setPlcParameterList(getplcvlues); + log.info("澶х悊鐗囧綋鍓嶈繘鍗ц浆绔嬬‘璁ゅ瓧涓篸01:{},d04:{},杩涚閫佺墖浠诲姟纭瀛椾负锛歞03:{},d05:{},鍑虹墖浠诲姟纭瀛椾负{}", + PlcMesObject.getPlcParameter("MESToD01").getValue(), + PlcMesObject.getPlcParameter("MESToD04").getValue(), + PlcMesObject.getPlcParameter("MESToD03").getValue(), + PlcMesObject.getPlcParameter("MESToD05").getValue(), + PlcMesObject.getPlcParameter("MESToPLC").getValue()); } } } diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java index e200106..c013e0a 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java @@ -76,6 +76,7 @@ queryDataSource1(); //鏌ヨ浣跨敤鏁版嵁婧�2鏌ヨ鏁版嵁 queryDataSource2(); + ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("slicecage"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { 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 ad16377..1254d27 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 @@ -85,6 +85,13 @@ @Value("${mes.glassGap}") private Integer glassGap; + @Value("${mes.xMaxSize}") + private Integer xMaxSize; + + + private String d01GlassId = ""; + private String d04GlassId = ""; + @Scheduled(fixedDelay = 300) public void plcToHomeEdgScan() { Date startDate = new Date(); @@ -114,11 +121,17 @@ } //鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠�: 鐘舵�佷负0涓嶆搷浣滐紙D01閫佺墖锛�0涓嶆搷浣滐紝1鍏佽閫佺墖锛夛紝璇锋眰瀛椾负1锛� 锛�02鐜荤拑id涓虹┖鎴栬�呭崸杞珛鏈惎鍔級 if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) { - judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); + if (!d01GlassId.equals(d01Id)) { + judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); + d01GlassId = d01Id; + } } // 鐘舵�佷负0涓嶆搷浣滐紙D01閫佺墖锛�0涓嶆搷浣滐紝1鍏佽閫佺墖锛夛紝璇锋眰瀛椾负1锛� 鍗ц浆绔嬫湭鍚姩 if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) { - judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); + if (!d04GlassId.equals(d04Id)) { + judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); + d04GlassId = d04Id; + } } Date endDate = new Date(); log.info("澶х悊鐗囩鎵爜浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); @@ -145,6 +158,7 @@ } LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getTaskType, Const.BIG_STORAGE_IN_RUN) + .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO)) .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP); //鑾峰彇鍙互鍚姩鍗ц浆绔嬬殑浠诲姟绾胯矾 List<BigStorageCageFeedTask> feedTaskList = bigStorageCageFeedTaskService.list(wrapper); @@ -169,7 +183,7 @@ // log.info("涓ゆ潯绾块兘瀛樺湪杩涚墖浠诲姟锛岀粨鏉熶换鍔�"); // return; // } - //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬侀兘涓�2 + //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬佷负1/2 List<Integer> lineList = bigStorageCageFeedTaskService.querySitToUpGlass(); if (CollectionUtils.isEmpty(lineList)) { Date endDate = new Date(); @@ -235,6 +249,11 @@ Date startDate = new Date(); log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate); PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; + String e02State = plcMesObject.getPlcParameter("E02State").getAddress(); + if (REQUEST_WORD.equals(e02State)) { + log.info("鍑虹墖蹇欑锛岀粨鏉熷嚭鐗囦换鍔�"); + return; + } String mesToPLCAddress = plcMesObject.getPlcParameter("MESToPLC").getAddress(); List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW)); Assert.isTrue(CollectionUtils.isEmpty(outingList), "鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�"); @@ -263,23 +282,27 @@ return; } //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈 - TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll(); - if (null != temperingLayoutDTO) { - //鐜荤拑鍒伴綈 + List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll(); + if (CollectionUtils.isNotEmpty(temperingLayoutDTOList)) { + //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑 //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫 - List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class) - .selectAll(GlassInfo.class) - .select("-1 as state") - .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot) - .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId) - .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) - .eq(GlassInfo::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId()) - .eq(GlassInfo::getEngineerId, temperingLayoutDTO.getEngineerId())); - temperingGlassInfoService.saveBatch(temperingGlassInfos); - computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress); - Date endDate = new Date(); - log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); - return; + for (TemperingLayoutDTO item : temperingLayoutDTOList) { + List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class) + .selectAll(GlassInfo.class) + .select("-1 as state") + .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot) + .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId) + .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) + .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId()) + .eq(GlassInfo::getEngineerId, item.getEngineerId())); + if (CollectionUtils.isNotEmpty(temperingGlassInfos)) { + temperingGlassInfoService.saveBatch(temperingGlassInfos); + computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress); + Date endDate = new Date(); + log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); + return; + } + } } //鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟 TemperingLayoutDTO temperingOccupySlot = bigStorageCageDetailsService.queryTemperingOccupySlot(); @@ -294,16 +317,50 @@ List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)); List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(), - slotWidth, 0, 0, 1)).collect(Collectors.toList()); + e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1)).collect(Collectors.toList()); bigStorageCageOutTaskService.saveBatch(outTasks); - S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); - log.info("宸插悜plc鍙戦�佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{}", mesToPLCAddress); + + //鍚憄lc鍐欏叆纭瀛� + int returnData = 0; + int count = 1; + while (returnData == 0) { + log.info("宸插悜plc绗瑊}娆¢�佸崗璁�", count); + S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); + returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0); + log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData); + } Date endDate = new Date(); log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); return; } } } + } + + @Scheduled(fixedDelay = 300) + public void updateOutGlassStateTask() { + Date startDate = new Date(); + log.info("1銆佸ぇ鐞嗙墖绗煎嚭鐗囧畬鎴愬悗鏇存柊澶х悊鐗囩鏁版嵁浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate); + //鍥犱负澶х悊鐗囩鍜屽嚭鐗囦换鍔℃槸涓や釜搴撶殑鏁版嵁锛屾墍浠ヨ鍒嗗紑鏌ユ壘 + List<Object> list = bigStorageCageDetailsService.listObjs(new LambdaQueryWrapper<BigStorageCageDetails>() + .select(BigStorageCageDetails::getGlassId).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)); + if (CollectionUtils.isNotEmpty(list)) { + log.info("2銆佽幏鍙栨墍鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑淇℃伅id:{}", list); + List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList()); + List<Object> outSuccessGlassIdsObj = bigStorageCageOutTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageOutTask>() + .select(BigStorageCageOutTask::getGlassId).in(BigStorageCageOutTask::getGlassId, glassIds).in(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_ALL)); + List<String> outSuccessGlassIds = outSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(outSuccessGlassIds)) { + log.info("3銆佽幏鍙栧嚭鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", outSuccessGlassIdsObj); + bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() + .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds)); + log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlassIdsObj); + } + } + Date endDate = new Date(); + log.info("end:澶х悊鐗囩鍑虹墖瀹屾垚鍚庢洿鏂板ぇ鐞嗙墖绗兼暟鎹换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫浠诲姟", endDate, endDate.getTime() - startDate.getTime()); + return; + } /** @@ -317,7 +374,11 @@ List<BigStorageCageFeedTask> inDamageTaskInfoList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE)); if (CollectionUtils.isNotEmpty(inDamageTaskInfoList)) { + log.info("鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", inDamageTaskInfoList); bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE)); + //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佹洿鏂� + bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() + .set(BigStorageCageDetails::getState, Const.GLASS_STATE_DAMAGE).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()))); //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛� for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) { Damage damage = new Damage(); @@ -328,14 +389,21 @@ damage.setStatus(2); damageService.insertDamage(damage); } + log.info("杩涚墖浠诲姟鎵ц瀹屾垚"); } //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹� List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>() .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE)); if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) { + log.info("鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", outDamageTaskInfoList); bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE)); List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); + //绉婚櫎閽㈠寲涓嬬墖琛ㄦ暟鎹� temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList)); + //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佹洿鏂� + bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() + .set(BigStorageCageDetails::getState, Const.GLASS_STATE_DAMAGE).in(BigStorageCageDetails::getGlassId, glassIdList)); + //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛� for (BigStorageCageOutTask bigStorageCageOutTask : outDamageTaskInfoList) { Damage damage = new Damage(); @@ -346,6 +414,7 @@ damage.setStatus(2); damageService.insertDamage(damage); } + log.info("鍑虹墖浠诲姟鎵ц瀹屾垚"); } Date endDate = new Date(); log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); @@ -377,27 +446,29 @@ Boolean flag = Boolean.TRUE; //2銆佽幏鍙栧崸杞珛 Integer widthFirst = Math.max(edgGlassTaskInfoList.get(0).getWidth() / 10, edgGlassTaskInfoList.get(0).getHeight() / 10); + Integer heightFirst = Math.min(edgGlassTaskInfoList.get(0).getWidth() / 10, edgGlassTaskInfoList.get(0).getHeight() / 10); if (edgGlassTaskInfoList.size() == 1) { if (remainWidth >= widthFirst) { if (glassCount < inCarMaxSize) { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst, heightFirst); } else { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); } } else { flag = Boolean.FALSE; } } else { Integer widthSecond = Math.max(edgGlassTaskInfoList.get(1).getWidth() / 10, edgGlassTaskInfoList.get(1).getHeight() / 10); + Integer heightSecond = Math.min(edgGlassTaskInfoList.get(1).getWidth() / 10, edgGlassTaskInfoList.get(1).getHeight() / 10); if (remainWidth >= widthFirst) { if (remainWidth - widthFirst - glassGap >= widthSecond) { if (glassCount < inCarMaxSize) { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst, heightSecond); } else { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightSecond); } } else { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightSecond); } } else { flag = Boolean.FALSE; @@ -405,7 +476,15 @@ } //鍚憄lc鍙戦�佽繘鐗囩‘璁� if (flag) { - S7object.getinstance().plccontrol.writeWord(mesAddress, 1); + //鍚憄lc鍐欏叆纭瀛� + int returnData = 0; + int count = 1; + while (returnData == 0) { + S7object.getinstance().plccontrol.writeWord(mesAddress, 1); + returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0); + log.info("杩涘崸杞珛绗瑊}娆″彂閫佺‘璁ゅ瓧瀹屾垚锛屽湴鍧�涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesAddress, returnData); + + } } //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔� return flag; @@ -414,13 +493,14 @@ /** * 娣诲姞浠诲姟淇℃伅 */ - private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width) { + private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width, Integer height) { BigStorageCageFeedTask bigStorageCageFeedTask = new BigStorageCageFeedTask(); bigStorageCageFeedTask.setGlassId(glassId); bigStorageCageFeedTask.setTaskState(Const.BIG_STORAGE_IN_NEW); bigStorageCageFeedTask.setLine(line); bigStorageCageFeedTask.setTaskType(taskType); bigStorageCageFeedTask.setWidth(width); + bigStorageCageFeedTask.setHeight(height); bigStorageCageFeedTask.setCreateTime(new Date()); return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask); } @@ -432,7 +512,8 @@ */ public Integer getStartLine() { List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() - .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2 group by line")); + .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2" + + "and (target_slot = 0 or target_slot is null) group by line")); Assert.isFalse(CollectionUtils.isEmpty(taskList), "鍗ц浆绔嬩袱鏉$嚎閮芥病鏈夌幓鐠冭繘鐗囦换鍔�"); Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, BigStorageCageFeedTask::getLine)); @@ -451,6 +532,7 @@ //1銆佽幏鍙栦换鍔¤〃涓殑鎵�鏈夌幓鐠冿紙鎸囧畾绾胯矾涓斿凡缁忚繘鍗ц浆绔嬪畬鎴愶級 List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getLine, line) + .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO)) .in(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP_ALL) .orderByAsc(BigStorageCageFeedTask::getId)); //2銆佸幓绗煎瓙鍐呮煡鎵炬槸鍚﹀彲浠ョ户缁瓨鏀剧殑绗煎瓙 @@ -480,7 +562,7 @@ //2銆佽幏鍙栫洰鏍囨牸瀛愪俊鎭� BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info); //3銆佹洿鏂板ぇ鐞嗙墖绗艰〃鍓╀綑瀹藉害 - bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth()) + bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap) .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot())); //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛� 閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴� e.setTargetSlot(bigStorageDTO.getSlot()); @@ -490,6 +572,8 @@ //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛� cageDetails.setSlot(bigStorageDTO.getSlot()); cageDetails.setState(Const.GLASS_STATE_IN); + cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); + cageDetails.setGap(glassGap); bigStorageCageDetailsService.save(cageDetails); } sendTaskListToPLC(taskList, line); @@ -507,8 +591,13 @@ s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine()); s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot()); } - s7control.writeWord(outLine, 2); - log.info("閫佺墖浠诲姟宸插彂閫佸畬鎴愶紝浠诲姟绾胯矾涓猴細{}锛屽惎鍔ㄥ湴鍧�涓簕},纭瀛椾负{}", line, outLine, 2); + int returnData = 0; + int count = 1; + while (returnData == 0) { + s7control.writeWord(outLine, 2); + returnData = s7control.readWord(outLine, 1).get(0); + log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, outLine, returnData); + } } private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) { @@ -516,17 +605,25 @@ List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>(); //鎵撹溅鍓╀綑灏哄 Integer remainWidth = carWidth; + int maxX = 0; for (T e : list) { - if (bigStorageCageOutTaskList.size() > outCarMaxSize || e.getWidth() > remainWidth) { + if (bigStorageCageOutTaskList.size() >= outCarMaxSize || e.getWidth() > remainWidth) { break; } remainWidth = remainWidth - (int) e.getWidth() - glassGap; if (isTempering) { - bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, - (int) e.getWidth() * 10, 0, 0, 1)); + int minLength = Math.min((int) e.getWidth(), (int) e.getHeight()); + if (maxX + minLength <= xMaxSize) { + bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, + e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1)); + maxX = Math.max(maxX, e.getXCoordinate()); + } else { + break; + } + } else { bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, - (int) e.getWidth() * 10, 0, 0, 1)); + e.getWidth() * 10, e.getHeight(), 0, 0, 1)); } } @@ -536,26 +633,32 @@ List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds); bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() - .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT) + .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) .in(BigStorageCageDetails::getGlassId, glassIds)); //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄 updateSlotRemain(list, glassIds); - S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); - log.info("宸插悜plc鍙戦�佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{}", mesToPLCAddress); + + int returnData = 0; + int count = 1; + while (returnData == 0) { + S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); + returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0); + log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData); + } return Boolean.TRUE; } /** * 鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄 * - * @param list - * @param taskGlassIds + * @param list 绗煎唴鍙互鍑虹鐨勭幓鐠冧俊鎭� + * @param taskGlassIds 鏈浠诲姟鍑哄幓鐨勭幓鐠僫ds * @param <T> */ public <T extends BigStorageCageBaseInfo> void updateSlotRemain(List<T> list, List<String> taskGlassIds) { //鑾峰彇闇�瑕佸嚭鍘伙紙鍖呮嫭寰呭嚭鍘荤殑锛夌殑鎵�鏈夌幓鐠冩牸瀛愬彿 List<Integer> slotList = list.stream().map(T::getSlot).distinct().collect(Collectors.toList()); - //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑涓嬭溅鍑哄幓鐨勭幓鐠冿級 + //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑寰呮湰娆′换鍔$粨鏉熷悗涓嬭溅鍑哄幓鐨勭幓鐠冿級 Map<Integer, Double> slotRemainMap = list.stream().filter(e -> !taskGlassIds.contains(e.getGlassId())) .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap))); if (CollectionUtils.isNotEmpty(slotRemainMap)) { @@ -576,9 +679,12 @@ public Boolean computeIsRun(int line, String glassId) { //鑾峰彇鍗ц浆绔嬪墿浣欏搴� BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line); + if (sitToUpRemainWidth.getGlassCount() == 0) { + return Boolean.FALSE; + } //鑾峰彇鐜荤拑淇℃伅 GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); - return sitToUpRemainWidth.getWidth() < glassInfo.getWidth(); + return sitToUpRemainWidth.getWidth() < Math.max(glassInfo.getWidth(), glassInfo.getHeight()); } } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java index 82d885e..5468375 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java @@ -61,6 +61,7 @@ @Override public boolean saveBatch(List<TemperingGlassInfo> list) { + log.info("闇�瑕侀挗鍖栫殑鐜荤拑涓猴細{}", list); return baseMapper.saveBatch(list); } diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml index d4281e8..d7124b8 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: profiles: - active: prod + active: cz application: name: cacheVerticalGlass mybatis-plus: @@ -16,6 +16,7 @@ minCount: 5 carWidth: 5000 #澶ц溅瀹藉害 slotWidth: 5000 #澶ц溅瀹藉害 - inCarMaxSize: 6 #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲� - outCarMaxSize: 1 #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲� - glassGap: 300 #鐜荤拑闂磋窛 \ No newline at end of file + inCarMaxSize: 2 #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲� + outCarMaxSize: 3 #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲� + glassGap: 1000 #鐜荤拑闂磋窛 + xMaxSize: 2850 \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml index a0f23bf..b49e679 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml @@ -37,10 +37,10 @@ ) T2 INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT FROM BIG_STORAGE_CAGE_DETAILS - WHERE STATE in (100, 101, 102) + WHERE STATE in (100, 101, 102, 103) GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID - AND T2.COUNT = T3.COUNT LIMIT 1 + AND T2.COUNT = T3.COUNT </select> <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO"> diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml index 2776022..c4affcd 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml @@ -33,7 +33,8 @@ ELSE HEIGHT END MAX_LENGTH FROM BIG_STORAGE_CAGE_FEED_TASK - WHERE LINE = 2002 + WHERE LINE = #{line} + AND (target_slot = 0 or target_slot is null) AND TASK_STATE IN (1, 2) ) T </select> 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 65bf9c0..d9a451e 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java @@ -1,7 +1,9 @@ package com.mes; +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; @@ -13,7 +15,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * @Author : zhoush @@ -33,6 +37,67 @@ BigStorageCageDetailsService bigStorageCageDetailsService; @Autowired DamageService damageService; + +// @Autowired +// BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper; + + @Test + public void testInsertSlot() { + List<BigStorageCage> list = new ArrayList(); + for (int j = 1; j <= 5; j++) { + for (int i = 1 + (55 * (j - 1)); i <= 55 * j; i++) { + BigStorageCage cage = new BigStorageCage(); + cage.setDeviceId(j); + cage.setSlot(i); + cage.setMinThickness(4); + cage.setMaxThickness(6); + cage.setEnableState(1); + cage.setRemainWidth(5000); + list.add(cage); + } + } + for (int i = 276; i <= 300; i++) { + BigStorageCage cage = new BigStorageCage(); + cage.setDeviceId(6); + cage.setSlot(i); + cage.setMinThickness(8); + cage.setMaxThickness(12); + cage.setEnableState(1); + cage.setRemainWidth(5000); + list.add(cage); + } + for (int i = 301; i <= 330; i++) { + BigStorageCage cage = new BigStorageCage(); + cage.setDeviceId(7); + cage.setSlot(i); + cage.setMinThickness(8); + cage.setMaxThickness(12); + cage.setEnableState(1); + cage.setRemainWidth(5000); + list.add(cage); + } + for (int i = 331; i <= 355; i++) { + BigStorageCage cage = new BigStorageCage(); + cage.setDeviceId(8); + cage.setSlot(i); + cage.setMinThickness(8); + cage.setMaxThickness(12); + cage.setEnableState(1); + cage.setRemainWidth(5000); + list.add(cage); + } + for (int i = 356; i <= 380; i++) { + BigStorageCage cage = new BigStorageCage(); + cage.setDeviceId(9); + cage.setSlot(i); + cage.setMinThickness(15); + cage.setMaxThickness(19); + cage.setEnableState(1); + cage.setRemainWidth(5000); + list.add(cage); + } + bigStorageCageService.saveBatch(list); + } @Test public void testFindPath() { @@ -96,4 +161,10 @@ damage.setStatus(2); damageService.insertDamage(damage); } + + @Test + public void updateOutGlassStateTask() { + plcStorageCageTask.updateOutGlassStateTask(); + } + } diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java index ecd3ec9..ab8c084 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java @@ -3,8 +3,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.loadposition.entity.LoadPosition; -import org.apache.ibatis.annotations.Mapper; - /** * * @@ -12,7 +10,7 @@ * @since 2024-07-09 14:51:27 * */ -@Mapper + public interface LoadPositionMapper extends BaseMapper<LoadPosition> { } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java index 513aff2..5eb15ee 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.rawusage.entity.RawUsage; -import org.apache.ibatis.annotations.Mapper; /** * * @@ -10,7 +9,7 @@ * @since 2024-07-09 14:51:27 * */ -@Mapper + public interface RawUsageMapper extends BaseMapper<RawUsage> { } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java index f1bda86..cc226f8 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.GetMapping; import java.util.List; +import java.util.Map; /** * @@ -99,4 +100,13 @@ return Result.success(result); } + + @ApiOperation(value = "鏋跺瓙琛ㄦ牸鏌ヨ",notes = "鏋跺瓙琛ㄦ牸鏌ヨ",produces = "application/json") + @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")}) + @GetMapping("/findshelfrack") + public Result findshelfrack() { + List<Map<String, Object>> result = shelfRackService.selectshelf_rack(); + return Result.success(result); + } + } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java index 3570a5a..bea1293 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java @@ -1,8 +1,12 @@ package com.mes.shelfrack.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.yulichang.base.MPJBaseMapper; import com.mes.shelfrack.entity.ShelfRack; -import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + /** * * @@ -10,7 +14,9 @@ * @since 2024-07-09 14:51:27 * */ -@Mapper -public interface ShelfRackMapper extends BaseMapper<ShelfRack> { +public interface ShelfRackMapper extends MPJBaseMapper<ShelfRack> { + + + List<Map<String, Object>> selectshelf_rack(); } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java index d66b35e..bb0bdb0 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; + /** * @author system * @since 2024-07-09 14:51:27 @@ -12,6 +14,6 @@ List<ShelfRack> findList(ShelfRack params); - + List<Map<String, Object>> selectshelf_rack(); } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java index 6c134c8..85d4adc 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java @@ -1,14 +1,20 @@ package com.mes.shelfrack.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.toolkit.JoinWrappers; +import com.mes.common.config.Const; +import com.mes.rawusage.entity.RawUsage; import com.mes.shelfrack.mapper.ShelfRackMapper; import com.mes.shelfrack.entity.ShelfRack; import com.mes.shelfrack.service.ShelfRackService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + import java.util.List; +import java.util.Map; /** * @author system @@ -26,6 +32,29 @@ return shelfRackMapper.selectList(query); } +// +// public void yourMethodName() { +// List<Map<String, Object>> resultList = shelfRackMapper.selectMaps( +// new LambdaQueryWrapper<ShelfRack>() +// .select(ShelfRack::getNumber, RawUsage::getRawType, RawUsage::getRawWidth, +// RawUsage::getRawHeight, RawUsage::getRawThickness, ShelfRack::getModTime, +// ShelfRack::getEnableState, RawUsage::getPieces, RawUsage::getLeftPieces, +// "(datediff(now(), raw_usage.create_time)) as rukuTime", +// "(concat(if(ROUND(raw_usage.left_pieces / #{param1} * 100, 0) < 20, 20, ROUND(raw_usage.left_pieces / #{param1} * 100, 0)), '%')) as bfb") +// .leftJoin(RawUsage.class, RawUsage::getId, ShelfRack::getRawPackageId) +// .orderByAsc(ShelfRack::getNumber) +// ); +// +// // Process resultList as needed +// } + + + + @Override + public List<Map<String, Object>> selectshelf_rack() { + return baseMapper.selectshelf_rack(); + } + } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java index 88b1494..0678559 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java @@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.GetMapping; import java.util.List; +import java.util.Map; +import java.util.Optional; /** * @@ -99,4 +101,14 @@ return Result.success(result); } + + @ApiOperation(value = "浠诲姟鏌ヨ",notes = "浠诲姟鏌ヨ",produces = "application/json") + @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")}) + @GetMapping("/findTasks") + public Result findLatestTasks() { + List<Map<String, Object>> result = storageTaskService.Tasks(); + return Result.success(result); + } + + } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java index 43a8507..f2737a1 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java @@ -2,7 +2,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.storagetask.entity.StorageTask; -import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + /** * * @@ -10,7 +15,10 @@ * @since 2024-07-09 14:51:27 * */ -@Mapper +@Repository public interface StorageTaskMapper extends BaseMapper<StorageTask> { + + List<Map<String, Object>> selectTasks(); + } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml deleted file mode 100644 index 69ad537..0000000 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?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.storagetask.mapper.StorageTaskMapper"> - -</mapper> diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java index e774319..bad474f 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; +import java.util.Optional; + /** * @author system * @since 2024-07-09 14:51:27 @@ -12,5 +15,7 @@ List<StorageTask> findList(StorageTask params); + Map<String, Optional<StorageTask>> findLatestTasks(); + List<Map<String, Object>> Tasks(); } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java index 8709da5..04cb2d7 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java @@ -6,15 +6,21 @@ import com.mes.storagetask.mapper.StorageTaskMapper; import com.mes.storagetask.entity.StorageTask; import com.mes.storagetask.service.StorageTaskService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Optional; /** * @author system * @since 2024-07-09 14:51:27 */ @Service +@Slf4j public class StorageTaskServiceImpl extends ServiceImpl<StorageTaskMapper, StorageTask> implements StorageTaskService { @Autowired @@ -27,5 +33,35 @@ } + public Map<String, Optional<StorageTask>> findLatestTasks() { + Map<String, Optional<StorageTask>> latestTasks = new HashMap<>(); + + // 鏌ヨ鏈�鏂扮殑宸插畬鎴愪换鍔� + LambdaQueryWrapper<StorageTask> completedWrapper = new LambdaQueryWrapper<>(); + completedWrapper.eq(StorageTask::getTaskType, "宸插畬鎴�") + .orderByDesc(StorageTask::getId) + .last("LIMIT 1"); + Optional<StorageTask> latestCompletedTask = Optional.ofNullable(storageTaskMapper.selectOne(completedWrapper)); + latestTasks.put("宸插畬鎴�", latestCompletedTask); + + // 鏌ヨ鏈�鏂扮殑绛夊緟涓换鍔� + LambdaQueryWrapper<StorageTask> pendingWrapper = new LambdaQueryWrapper<>(); + pendingWrapper.eq(StorageTask::getTaskType, "绛夊緟涓�") + .orderByDesc(StorageTask::getId); + Optional<StorageTask> latestPendingTask = Optional.ofNullable(storageTaskMapper.selectOne(pendingWrapper)); + latestTasks.put("绛夊緟涓�", latestPendingTask); + log.info(latestTasks+""); + return latestTasks; + } + + + @Override + public List<Map<String, Object>> Tasks() { + return baseMapper.selectTasks(); + } + + + + } \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml index 3097382..53a3a66 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml @@ -5,7 +5,7 @@ strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�. datasource: hangzhoumes: - url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 + url: jdbc:mysql://127.0.0.1:3306/yiwumes?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver @@ -17,7 +17,7 @@ cloud: nacos: discovery: - server-addr: 127.0.0.1:8848 + server-addr: 10.153.19.150:8848 redis: database: 0 host: 127.0.0.1 diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml index 0c3ff07..782f39a 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml @@ -5,7 +5,7 @@ strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�. datasource: hangzhoumes: - url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 + url: jdbc:mysql://127.0.0.1:3306/yiwumes?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml new file mode 100644 index 0000000..0e13316 --- /dev/null +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml @@ -0,0 +1,16 @@ +<?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.shelfrack.mapper.ShelfRackMapper"> + + + <select id="selectshelf_rack" resultType="java.util.Map"> + <![CDATA[ + SELECT a.number, b.raw_type, b.raw_width, b.raw_height, b.raw_thickness, b.left_pieces, a.mod_time, a.enable_state, b.pieces, + datediff(now(), b.create_time) as rukutime, + concat(if(ROUND(b.left_pieces / b.pieces * 100, 0) < 20, 20, ROUND(b.left_pieces / b.pieces * 100, 0)), '%') as bfb + FROM shelf_rack AS a + LEFT JOIN raw_usage AS b ON a.raw_package_id = b.id + ]]> + </select> + +</mapper> diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml new file mode 100644 index 0000000..9fb2ca0 --- /dev/null +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml @@ -0,0 +1,22 @@ +<?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.storagetask.mapper.StorageTaskMapper"> + + + + <select id="selectTasks" resultType="java.util.Map"> + <![CDATA[ + SELECT d.*, g.raw_thickness, g.color + FROM ( + (SELECT * FROM storage_task AS a WHERE a.task_state = '宸插畬鎴�' ORDER BY a.id DESC LIMIT 1) + UNION ALL + (SELECT * FROM storage_task AS c WHERE c.task_state = '姝e湪宸ヤ綔') + UNION ALL + (SELECT * FROM storage_task AS b WHERE b.task_state = '绛夊緟涓�') + ) AS d + LEFT JOIN shelf_rack AS f ON f.id = d.shelf_rack + LEFT JOIN raw_usage AS g ON g.id = f.raw_package_id + ]]> + </select> + +</mapper> diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java new file mode 100644 index 0000000..4f0bd8b --- /dev/null +++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java @@ -0,0 +1,67 @@ +package mes; + +import com.mes.GlassStorageApplication; +import com.mes.shelfrack.service.ShelfRackService; +import com.mes.storagetask.entity.StorageTask; +import com.mes.storagetask.service.StorageTaskService; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Arrays; + +/** + * @Author : zhoush + * @Date: 2024/3/27 16:37 + * @Description: + */ +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = GlassStorageApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) + +public class GlassStorageModuleApplicationTest { + + + + @Autowired + private StorageTaskService storageTaskService; + @Autowired + private ShelfRackService shelfRackService; + + + @Test + public void testFindPath() { + log.info("瀹屾暣璺緞锛歿}", Arrays.asList("123")); + } + + @Test + public void testCacheGlass() { + // storageTaskService.getBaseMapper().selectById(1); + //StorageTask storageTask=new StorageTask(); +// storageTask.setId(Long.valueOf("1")); +// storageTask.setTaskState("1"); +// storageTaskService.updateById(storageTask); +// storageTaskService.getBaseMapper().deleteById(1); + // storageTaskService.findList(storageTask); + ///storageTaskService.findLatestTasks(); + storageTaskService.Tasks(); + } + @Test + public void selectshelf_rack() { + + shelfRackService.selectshelf_rack(); + } + + + + + + + + + + +} \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java index f020aa3..9bcefd7 100644 --- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java +++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java @@ -52,7 +52,11 @@ */ UpPattenUsage selectSequence(UpPattenUsage upPattenUsage); - + /** + * 鏇存敼涓婄墖鐜荤拑鐘舵�� + * @return UpPattenUsage + */ Boolean updateGlassState(UpPattenUsage upPattenUsage); + } diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java index 9d93d35..409cfb2 100644 --- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java +++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java @@ -66,8 +66,8 @@ List<OptimizeUpPattenUsage> upPattenUsageList = null; if (engineeringId != null) { upPattenUsageList = optimizeProjectMapper.selectJoinList(OptimizeUpPattenUsage.class, new MPJQueryWrapper<OptimizeProject>() - .select("t.project_no,t.glass_type,b.o_width as width,b.o_height as height ,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.stock_number") - .leftJoin("optimize_detail b on t.project_no=b.project_no") + .select("t.project_no,t.glass_type,b.realwidth as width,b.realheight as height ,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.stock_id") + .leftJoin("optimize_layout b on t.project_no=b.project_no") .eq("b.project_no", engineeringId)); } // 鍒涘缓涓�涓� List 鐢ㄤ簬淇濆瓨鏄犲皠鍚庣殑瀹炰綋瀵硅薄 diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/common/S7object.java new file mode 100644 index 0000000..94ae268 --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/common/S7object.java @@ -0,0 +1,60 @@ +package com.mes.common; + +import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; +import com.mes.device.PlcParameterObject; +import com.mes.tools.InitUtil; +import com.mes.tools.S7control; + + +/** + * @Author : zhoush + * @Date: 2024/4/9 15:13 + * @Description: + */ +public class S7object extends Thread { + public S7control plccontrol; // PLC閫氳绫诲疄渚� + private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷 + private String ip = "192.168.20.202"; // plc ip鍦板潃 + private int port = 102; // plc 绔彛鍙� + + + public PlcParameterObject PlcMesObject; + private static volatile S7object instance = null; + + private S7object() { + if (plccontrol == null) { + plccontrol = new S7control(plcType, ip, port, 0, 0); + String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcTemperingGlass.json"; + PlcMesObject = InitUtil.initword(PlcLoadGlass); + } + } + + // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥 + public static S7object getinstance() { + if (instance == null) { + synchronized (S7object.class) { + if (instance == null) { + instance = new S7object(); + } + } + } + return instance; + } + + @Override + public void run() { + while (this != null) { + try { + Thread.sleep(100); + + } catch (InterruptedException e) { + e.printStackTrace(); + } + + byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength()); + if (getplcvlues != null) { + PlcMesObject.setPlcParameterList(getplcvlues); + } + } + } +} diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java index d5d59a5..ea60109 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java @@ -25,7 +25,7 @@ @Autowired private ReportingWorkService reportingWorkService; @Autowired - private OptimizeProjectService optimizeProjectService; + private OptimizeProjectService optimizeProjectService; @Autowired private OrdersService ordersService; /** @@ -34,45 +34,26 @@ */ @Scheduled(fixedDelay = 2000) - public void screenHome(){ + public void screenHome() { JSONObject jsonObject = new JSONObject(); - //姝e湪绛夊緟杩涚墖鐨勭幓鐠� Reportingdamage reportingdamage = new Reportingdamage(); reportingdamage.setReportingWorkTime("2024-05-11"); - //鑾峰彇鍒囧壊淇℃伅 - reportingdamage.setThisProcess("鍒囧壊"); - List<Reportingdamage> cutting = reportingWorkService.selectDamage(reportingdamage); - jsonObject.append("cutting", cutting); - //鑾峰彇纾ㄨ竟淇℃伅 - reportingdamage.setThisProcess("纾ㄨ竟"); - List<Reportingdamage> edging = reportingWorkService.selectDamage(reportingdamage); - jsonObject.append("edging", edging); - //鑾峰彇閽㈠寲淇℃伅 - reportingdamage.setThisProcess("閽㈠寲"); - List<Reportingdamage> tempering = reportingWorkService.selectDamage(reportingdamage); - jsonObject.append("tempering", tempering); - //鑾峰彇澶硅兌淇℃伅 - reportingdamage.setThisProcess("澶硅兌"); - List<Reportingdamage> doubling = reportingWorkService.selectDamage(reportingdamage); - jsonObject.append("doubling", doubling); - //鑾峰彇涓┖淇℃伅 - reportingdamage.setThisProcess("涓┖"); - List<Reportingdamage> hollow = reportingWorkService.selectDamage(reportingdamage); - jsonObject.append("hollow", hollow); - //鑾峰彇鍖呰淇℃伅 - reportingdamage.setThisProcess("鍖呰"); - List<Reportingdamage> packaging = reportingWorkService.selectDamage(reportingdamage); - jsonObject.append("packaging", packaging); + //鎵囧舰鍥惧悇璁惧鐨勫姞宸ョ牬鎹熸暟閲� + List<Reportingdamage> device = reportingWorkService.selectDamage(reportingdamage); + jsonObject.append("device", device); //鑾峰彇娆$牬鏈ˉ淇℃伅 - List<AwaitingRepair>awaitingRepairs = reportingWorkService.selectAwaitingRepair(); + List<AwaitingRepair> awaitingRepairs = reportingWorkService.selectAwaitingRepair(); jsonObject.append("awaitingRepairs", awaitingRepairs); //鑾峰彇姝e湪杩涜鐨勫伐绋� - List<OptimizeProject>optimizeProjects= optimizeProjectService.getDoingTask(); + List<OptimizeProject> optimizeProjects = optimizeProjectService.getDoingTask(); jsonObject.append("DoingTask", optimizeProjects); //鑾峰彇褰撳墠璁㈠崟 - List<Orders>orders=ordersService.selectOrders(); + List<Orders> orders = ordersService.selectOrders(); jsonObject.append("orders", orders); + /*鐜板満瑙勫垝鍥炬樉绀�*/ + + ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("screen"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java index 3f108b5..f7e63e5 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java @@ -1,6 +1,6 @@ package com.mes.job; import cn.hutool.json.JSONObject; -import com.mes.temperingglass.service.TemperingAgoService; +import com.mes.temperingglass.service.TemperingGlassInfoService; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; @@ -19,7 +19,7 @@ public class PlcTemperingGlassTask { @Autowired - private TemperingAgoService temperingAgoService; + private TemperingGlassInfoService temperingAgoService; /** * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級 * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃� @@ -34,18 +34,21 @@ //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId(); //杩涚倝涓殑鐜荤拑 - List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0).getTemperingLayoutId()); - jsonObject.append("intoGlass", intoGlass); - //杩涚倝涓殑绗簩涓増鍥� - if (layoutId.size() > 1) { - List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1).getTemperingLayoutId()); - jsonObject.append("intoGlass2", intoGlass2); + if(!layoutId.isEmpty()) { + List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0)); + jsonObject.append("intoGlass", intoGlass); + //杩涚倝涓殑绗簩涓増鍥� + if (layoutId.size() > 1) { + List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1)); + jsonObject.append("intoGlass2", intoGlass2); + } } //鍑虹倝鍚庣殑鐜荤拑 List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass(); jsonObject.append("outGlass", outGlass); //杩囨棆杞彴閽㈠寲鍚庣殑鐜荤拑 List<TemperingGlassInfo> overGlass = temperingAgoService.selectOverGlass(); + jsonObject.append("overGlass", overGlass); ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingGlass"); @@ -59,5 +62,23 @@ } } } + @Scheduled(fixedDelay = 1000) + public void temperingIsRun(){ + JSONObject jsonObject = new JSONObject(); + //姝e湪杩涜鐨勪换鍔� + List<TemperingGlassInfo>temperingTaskType=temperingAgoService.selectTaskType(); + jsonObject.append("temperingTaskType", temperingTaskType); + ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("isRun"); + if (sendwServer != null) { + for (WebSocketServer webserver : sendwServer) { + if (webserver != null) { + webserver.sendMessage(jsonObject.toString()); + } else { + log.info("Home is closed"); + } + } + } + } + } \ No newline at end of file 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 new file mode 100644 index 0000000..8646b79 --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java @@ -0,0 +1,80 @@ +package com.mes.job; + +import cn.smallbun.screw.core.util.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mes.common.S7object; +import com.mes.common.config.Const; +import com.mes.device.PlcParameterObject; +import com.mes.temperingglass.entity.TemperingGlassInfo; +import com.mes.temperingglass.service.TemperingGlassInfoService; +import com.mes.temperingrecord.entity.TemperingRecord; +import com.mes.temperingrecord.service.TemperingRecordService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author : zhoush + * @Date: 2024/7/17 12:47 + * @Description: + */ +@Component +@Slf4j +public class TemperingTask { + + @Autowired + private TemperingRecordService temporalRecordService; + + @Autowired + private TemperingGlassInfoService temporaryGlassInfoService; + private static final String ALONE_STATE = "0"; + + + @Scheduled(fixedDelay = 1000) + public void temperingGlassBefore() { + Date startDate = new Date(); + log.info("鏈浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate); + PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; + String state = plcParameterObject.getPlcParameter("state").getValue(); +// 褰撳墠杩炵嚎鐘舵�佷负 + if (ALONE_STATE.equals(state)) { + log.info("褰撳墠閽㈠寲鐐夎繛绾挎ā寮忎负锛歿},涓嶆墽琛岃浠诲姟", state); + return; + } + //灏嗙‘璁ゅ瓧缃负0 + S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 0); + + //todo:鑾峰彇閽㈠寲鐗堝浘涓姸鎬佷负2鐨勶紙杩涚倝瀹屾垚鐨勭幓鐠冧俊鎭級 涓斾笉瀛樺湪閽㈠寲璁板綍琛ㄥ唴鐨� + List<Object> temperRecordIdListObj = temporalRecordService.listObjs(new QueryWrapper<TemperingRecord>().select("distinct tempering_layout_id")); + + List<String> temperRecordIdList = temperRecordIdListObj.stream().map(String::valueOf).collect(Collectors.toList()); + List<TemperingGlassInfo> list = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>() + .eq(TemperingGlassInfo::getState, Const.TEMPERING_START).notIn(TemperingGlassInfo::getTemperingLayoutId, temperRecordIdList)); + if (CollectionUtils.isEmpty(list)) { + log.info("褰撳墠绯荤粺娌℃湁闇�瑕侀挗鍖栫殑鐜荤拑淇℃伅"); + return; + } + List<Integer> temperingLayoutIdList = list.stream().map(TemperingGlassInfo::getTemperingLayoutId).distinct().collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(temperRecordIdList)) { + temperingLayoutIdList.removeAll(temperRecordIdList); + } + if (CollectionUtils.isEmpty(temperingLayoutIdList)) { + log.info("褰撳墠鐜荤拑鏈夋鍦ㄩ挗鍖栫殑浠诲姟"); + } +// 鑾峰彇閽㈠寲涓嬬墖琛ㄧ姸鎬佷负2鐨勭幓鐠冧俊鎭� + + //瀹屾垚浠诲姟灏嗙‘璁ゅ瓧缃负1 + S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 1); + } + + @Scheduled(fixedDelay = 1000) + public void temperingGlassAfter() { + + } +} diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java index 3496554..73cc34b 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java @@ -1,13 +1,13 @@ package com.mes.temperingglass.controller; -import com.mes.temperingglass.service.TemperingAgoService; +import com.mes.damage.entity.Damage; +import com.mes.damage.service.DamageService; +import com.mes.temperingglass.service.TemperingGlassInfoService; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.utils.Result; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -22,12 +22,14 @@ public class TemperingGlassInfoController { @Autowired - private TemperingAgoService temperingAgoService; + private TemperingGlassInfoService temperingGlassInfoService; + @Autowired + private DamageService damageService; @ApiOperation("鏌ヨ閽㈠寲绛夌墖涓殑鐗堝浘淇℃伅,鐘舵�佷负1鐨勪负宸插埌,鐘舵�佷负0鐨勪负绛夊緟涓�") @GetMapping("/selectWaitingGlass") // 鏌ヨ閽㈠寲绛夌墖涓殑鐗堝浘淇℃伅,鐘舵�佷负1鐨勪负宸插埌,鐘舵�佷负0鐨勪负绛夊緟涓� public Result <List<TemperingGlassInfo>> selectWaitingGlass() { - List<TemperingGlassInfo> glass = temperingAgoService.selectWaitingGlass(); + List<TemperingGlassInfo> glass = temperingGlassInfoService.selectWaitingGlass(); log.info("绛夊緟涓殑鐜荤拑淇℃伅{}",glass); return Result.build(200, "", glass); } @@ -41,10 +43,24 @@ @ApiOperation("//閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅銆�") @GetMapping("/selectOutGlass") //閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅 public Result <List<TemperingGlassInfo>> selectOutGlass() { - List<TemperingGlassInfo> glass = temperingAgoService.selectOutGlass(); + List<TemperingGlassInfo> glass = temperingGlassInfoService.selectOutGlass(); log.info("閽㈠寲鍑虹倝鍚庣殑鐜荤拑淇℃伅{}",glass); return Result.build(200, "", glass); } + @ApiOperation("//閽㈠寲鐮存崯") + @PostMapping("/updateTemperingState") //閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅 + public Result <Integer> updateTemperingState(@RequestBody Damage damage) { + damageService.insertDamage(damage); + TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo(); + if(damage.getStatus()==2){ + temperingGlassInfo.setState(5); + + } + temperingGlassInfo.setGlassId(damage.getGlassId()); + int result=temperingGlassInfoService.updateTemperingState(temperingGlassInfo); + return Result.build(200, "鐮存崯鎴愬姛", result); + } + } diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java new file mode 100644 index 0000000..ea8b73b --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java @@ -0,0 +1,20 @@ +package com.mes.temperingrecord.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author zhoush + * @since 2024-07-17 + */ +@RestController +@RequestMapping("/temperingRecord") +public class TemperingRecordController { + +} + diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java new file mode 100644 index 0000000..0049269 --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java @@ -0,0 +1,77 @@ +package com.mes.temperingrecord.entity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author zhoush + * @since 2024-07-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class TemperingRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 宸ョ▼id + */ + private String engineerId; + /** + * 閽㈠寲鐗堝浘 + */ + private Integer temperingLayoutId; + + /** + * 鐜荤拑鏉愯川(鑶滅郴0.鐧界幓1.鍗曢摱2.鍙岄摱3涓夐摱 4.瓒呯櫧5.鐑弽灏�) + */ + private Integer glassType; + + /** + * 閽㈠寲绫诲瀷锛�1.鍏ㄩ挗:2.鍗婇挗锛� + */ + private Integer temperingType; + + /** + * 鍘氬害锛堝帤搴�*10) + */ + private Double thickness; + + /** + * 瑁呰浇鐜� + */ + private Double loadingRate; + + /** + * 闈㈢Н宸� + */ + private Double areaDifference; + + /** + * 鐢熶骇鑰楁椂 + */ + private String productionTime; + + /** + * 鍔犵儹鑳借�� + */ + private String heatEnergy; + + /** + * 鍐峰嵈鑳借�� + */ + private String coolEnergy; + + /** + * 鏄惁瀹屾垚(plc鑾峰彇闈�1锛氬弬鏁颁笉瀛樺湪锛�2銆佸尮閰嶅畬鎴愶紱3銆佸尮閰嶈秴鏃讹級 + */ + private Integer state; + + +} diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java new file mode 100644 index 0000000..d12a20a --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java @@ -0,0 +1,16 @@ +package com.mes.temperingrecord.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mes.temperingrecord.entity.TemperingRecord; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author zhoush + * @since 2024-07-17 + */ +public interface TemperingRecordMapper extends BaseMapper<TemperingRecord> { + +} diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml similarity index 67% rename from hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml index 719ef59..73d8f85 100644 --- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml @@ -1,5 +1,5 @@ -<?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.shelfrack.mapper.ShelfRackMapper"> - -</mapper> +<?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.tempering_record.mapper.TemperingRecordMapper"> + +</mapper> diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java new file mode 100644 index 0000000..daeb9a4 --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java @@ -0,0 +1,16 @@ +package com.mes.temperingrecord.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mes.temperingrecord.entity.TemperingRecord; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author zhoush + * @since 2024-07-17 + */ +public interface TemperingRecordService extends IService<TemperingRecord> { + +} diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java new file mode 100644 index 0000000..ea39a21 --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java @@ -0,0 +1,20 @@ +package com.mes.temperingrecord.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mes.temperingrecord.entity.TemperingRecord; +import com.mes.temperingrecord.mapper.TemperingRecordMapper; +import com.mes.temperingrecord.service.TemperingRecordService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author zhoush + * @since 2024-07-17 + */ +@Service +public class TemperingRecordServiceImpl extends ServiceImpl<TemperingRecordMapper, TemperingRecord> implements TemperingRecordService { + +} diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml index 34f72c9..2a02763 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml @@ -10,7 +10,7 @@ password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver salve_hangzhoumes: - url: jdbc:sqlserver://192.168.20.24:1433;databasename=hangzhoumes + url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml index 18d4c7e..ae0d119 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml @@ -4,8 +4,18 @@ primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�. datasource: +# hangzhoumes: +# url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 +# username: root +# password: beibo.123/ +# driver-class-name: com.mysql.cj.jdbc.Driver +# salve_hangzhoumes: +# url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes +# username: sa +# password: beibo.123/ +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hangzhoumes: - url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 + url: jdbc:mysql:127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver @@ -15,12 +25,12 @@ password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver pp: - url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8 + url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver sd: - url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8 + url: jdbc:mysql://127.0.0.1:3306/sd?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml index 3fc6fbb..697a608 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml @@ -1,7 +1,7 @@ spring: datasource: dynamic: - primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster + primary: salve_hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�. datasource: hangzhoumes: @@ -28,6 +28,8 @@ nacos: discovery: server-addr: 10.153.19.150:8848 + application: + name: temperingGlass redis: database: 0 host: 10.153.19.150 diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json new file mode 100644 index 0000000..3abe9a6 --- /dev/null +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json @@ -0,0 +1,132 @@ +{ + "plcAddressBegin": "DB88.0", + "plcAddressLenght": "58", + "dataType": "word", + "parameteInfor": [ + { + "codeId": "confirmationWord", + "addressIndex": "0", + "addressLenght": "2" + }, + { + "codeId": "temperingLayoutId", + "addressIndex": "2", + "addressLenght": "2" + }, + { + "codeId": "filmsid", + "addressIndex": "4", + "addressLenght": "2" + }, + { + "codeId": "temperingType", + "addressIndex": "6", + "addressLenght": "2" + }, + { + "codeId": "thickness", + "addressIndex": "8", + "addressLenght": "2" + }, + { + "codeId": "loadingRate", + "addressIndex": "10", + "addressLenght": "2" + }, + { + "codeId": "areaDifference", + "addressIndex": "12", + "addressLenght": "2" + }, + { + "codeId": "state", + "addressIndex": "22", + "addressLenght": "2" + }, + { + "codeId": "deviceState", + "addressIndex": "24", + "addressLenght": "2" + }, + { + "codeId": "resultState", + "addressIndex": "26", + "addressLenght": "2" + }, + { + "codeId": "loadSpeed", + "addressIndex": "28", + "addressLenght": "2" + }, + { + "codeId": "downSpeed", + "addressIndex": "30", + "addressLenght": "2" + }, + { + "codeId": "load1", + "addressIndex": "32", + "addressLenght": "2" + }, + { + "codeId": "heat1", + "addressIndex": "34", + "addressLenght": "2" + }, + { + "codeId": "heat2", + "addressIndex": "36", + "addressLenght": "2" + }, + { + "codeId": "cool1", + "addressIndex": "38", + "addressLenght": "2" + }, + { + "codeId": "cool2", + "addressIndex": "40", + "addressLenght": "2" + }, + { + "codeId": "downId", + "addressIndex": "42", + "addressLenght": "2" + }, + { + "codeId": "productionTime", + "addressIndex": "44", + "addressLenght": "2" + }, + { + "codeId": "heatEnergy", + "addressIndex": "46", + "addressLenght": "2" + }, + { + "codeId": "coolEnergy", + "addressIndex": "48", + "addressLenght": "2" + }, + { + "codeId": "temperatureUp1", + "addressIndex": "50", + "addressLenght": "2" + }, + { + "codeId": "temperatureDown1", + "addressIndex": "52", + "addressLenght": "2" + }, + { + "codeId": "temperatureUp2", + "addressIndex": "54", + "addressLenght": "2" + }, + { + "codeId": "temperatureDown2", + "addressIndex": "56", + "addressLenght": "2" + } + ] +} \ No newline at end of file diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/test/java/com/mes/TemperingApplicationTest.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/test/java/com/mes/TemperingApplicationTest.java index d6edffc..c567a90 100644 --- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/test/java/com/mes/TemperingApplicationTest.java +++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/test/java/com/mes/TemperingApplicationTest.java @@ -1,7 +1,7 @@ package com.mes; import com.mes.temperingglass.entity.TemperingGlassInfo; -import com.mes.temperingglass.service.TemperingAgoService; +import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; @@ -23,13 +23,21 @@ public class TemperingApplicationTest { @Autowired - private TemperingAgoService temperingAgoService; + private TemperingGlassInfoService temperingAgoService; @Test public void testFindPa() { - List<TemperingGlassInfo> glass = temperingAgoService.selectIntoGlass(12); - log.info("杩涚倝涓殑鐜荤拑锛歿}", Arrays.asList(glass)); + List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId(); + if(!layoutId.isEmpty()) { + List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0)); + log.info("宸插嚭涓殑鐜荤拑锛歿}", Arrays.asList(intoGlass)); + //杩涚倝涓殑绗簩涓増鍥� + if (layoutId.size() > 1) { + List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1)); + log.info("宸插嚭涓殑鐜荤拑锛歿}", Arrays.asList(intoGlass2)); + } + } } @Test public void testFindPa2() { @@ -45,16 +53,6 @@ @Test public void testFindPa4() { List<TemperingGlassInfo> glass = temperingAgoService.selectOverGlass(); - log.info("绛夊緟涓殑鐜荤拑锛歿}", Arrays.asList(glass)); - } - @Test - public void testFindPa5() { - List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId(); - //杩涚倝涓殑鐜荤拑 - log.info("鐗堝浘id锛歿}", Arrays.asList(layoutId.get(0).getTemperingLayoutId())); - List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0).getTemperingLayoutId()); - log.info("鐜荤拑鐗堝浘id锛歿}", Arrays.asList(intoGlass)); - List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1).getTemperingLayoutId()); - log.info("鐜荤拑鐗堝浘id锛歿}", Arrays.asList(intoGlass2)); + log.info("閽㈠寲鍚庣殑鐜荤拑锛歿}", Arrays.asList(glass)); } } diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java index 327b48e..50991e4 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java @@ -2,7 +2,6 @@ import com.github.yulichang.base.MPJBaseMapper; import com.mes.downstorage.entity.DownStorageCageDetails; -import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -12,7 +11,7 @@ * @author zhoush * @since 2024-03-27 */ -@Mapper + public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> { DownStorageCageDetails getGlassInfoMaxCount(); diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java index 504a70d..18e1259 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java @@ -95,6 +95,7 @@ .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot) .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN)) .isNull(DownStorageCageDetails::getSlot) + .eq(DownStorageCage::getEnableState, Const.SLOT_ON) .last("order by abs(t.slot - " + currentSlot + ") asc limit 2") ); if (flag && CollectionUtil.isNotEmpty(emptyList)) { @@ -151,11 +152,20 @@ @Override public boolean updateDownStorageCage(DownStorageCage downStorageCage) { DownStorageCage downItem = baseMapper.selectById(downStorageCage.getId()); - downItem.setEnableState(downStorageCage.getEnableState()); - baseMapper.updateById(downItem); - return true; + if (downItem != null) { + downItem.setEnableState(downStorageCage.getEnableState()); + int rowsAffected = baseMapper.updateById(downItem); + if (rowsAffected > 0) { + return true; + } else { + return false; + } + } else { + return false; + } } + /** * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆� * diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java index 75bcc83..2c548c5 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java @@ -2,14 +2,9 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.github.yulichang.base.MPJBaseMapper; import com.mes.downworkstation.entity.DownWorkstation; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; - -import java.util.List; /** * <p> @@ -19,7 +14,7 @@ * @author zhoush * @since 2024-03-27 */ -@Mapper + @Repository @InterceptorIgnore(tenantLine = "true") diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java index b9b2df0..0098390 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.downworkstation.entity.DownWorkstation; import com.mes.downworkstation.entity.DownWorkstationTask; -import org.mapstruct.Mapper; import java.util.List; @@ -18,7 +17,7 @@ */ @DS("salve_hangzhoumes") -@Mapper + public interface DownWorkstationTaskMapper extends BaseMapper<DownWorkstationTask> { List<DownWorkstationTask> selectList(); diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java index 3d8482d..cbcb1ff 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java @@ -10,7 +10,6 @@ import com.mes.downglassinfo.mapper.DownGlassInfoMapper; import com.mes.downglassinfo.service.DownGlassInfoService; import com.mes.downglassinfo.service.DownGlassTaskService; -import com.mes.downstorage.entity.DownStorageCage; import com.mes.downworkstation.entity.DownWorkstation; import com.mes.downworkstation.entity.DownWorkstationTask; import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo; @@ -35,7 +34,7 @@ @Autowired private DownWorkstationMapper downWorkstationMapper; - @Autowired(required=false) + @Autowired(required = false) private DownWorkstationTaskMapper downWorkstationTaskMapper; @Autowired private DownGlassInfoService downGlassInfoService; @@ -68,7 +67,7 @@ //宸ヤ綅鏄剧ず @Override - public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start,int end) { + public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start, int end) { MPJQueryWrapper<DownWorkstation> queryWrapper = new MPJQueryWrapper<>(); queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight") .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id") @@ -77,8 +76,8 @@ ; - List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper); - // List<DownWorkstionAndDownGlassinfo> workstationList = null; + List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper); + // List<DownWorkstionAndDownGlassinfo> workstationList = null; List<Map<String, Object>> result = new ArrayList<>(); for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) { Map<String, Object> rack = new HashMap<>(); @@ -95,7 +94,7 @@ List<DownGlassInfo> downGlassInfoList = downGlassInfoMapper.selectList(glassInfoQueryWrapper); - if (!downGlassInfoList.isEmpty()) { + if (!downGlassInfoList.isEmpty()) { item.put("downGlassInfoList", downGlassInfoList); @@ -104,7 +103,7 @@ rack.put("item", item); result.add(rack); } - log.info("result"+(result)); + log.info("result" + (result)); return result; // 杩斿洖鏈�缁堢粨鏋� } @@ -142,13 +141,13 @@ @Override - public void updateFlowCardIdAndCount(String flowCardId, int workstationId,int layer) { - int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId,layer); + public void updateFlowCardIdAndCount(String flowCardId, int workstationId, int layer) { + int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId, layer); QueryWrapper<Damage> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("process_id", flowCardId); queryWrapper.eq("technology_number", layer); - int otherNumber=damageservice.count(queryWrapper); + int otherNumber = damageservice.count(queryWrapper); UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>(); updateWrapper.set("total_quantity", glassInfoCount) .set("flow_card_id", flowCardId) @@ -170,9 +169,6 @@ baseMapper.update(new DownWorkstation(), updateWrapper); } - - - @Override @@ -197,10 +193,21 @@ @Override public boolean updateDownWorkstationstate(DownWorkstation downWorkstation) { + DownWorkstation downWork = baseMapper.selectById(downWorkstation.getId()); - downWork.setEnableState(downWorkstation.getEnableState()); - baseMapper.updateById(downWork); - return true; + + if (downWork != null) { + + downWork.setEnableState(downWorkstation.getEnableState()); + + baseMapper.updateById(downWork); + + return true; + } else { + + return false; + } } + } 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 0dcc65a..13d4b6e 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 @@ -77,7 +77,7 @@ private Integer minHeight; - @Scheduled(fixedDelay = 3000) + @Scheduled(fixedDelay = 300) public void plcHomeEdgTask() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue(); @@ -161,7 +161,7 @@ if (CollectionUtils.isNotEmpty(list)) { log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫"); //缁戝畾娴佺▼鍗� - downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), glassInfo.getLayer(), list.get(0).getWorkstationId()); + downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer()); checkFlag = Boolean.TRUE; } } @@ -241,9 +241,14 @@ return Boolean.FALSE; } Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE; - if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) { - return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId); + if (!flag08) { + generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId); + } else { + if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) { + return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId); + } } + return Boolean.TRUE; } @@ -304,7 +309,7 @@ if (CollectionUtils.isNotEmpty(workList)) { List<DownWorkstation> downWorkstationList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() .eq(DownWorkstation::getEnableState, Const.SLOT_ON).in(DownWorkstation::getWorkstationId, workList)); - log.info("鏋跺瓙琚鐢紝鏃犳硶鍑虹墖钀芥灦"); +// log.info("鏋跺瓙琚鐢紝鏃犳硶鍑虹墖钀芥灦"); if (CollectionUtils.isEmpty(downWorkstationList)) { log.info("绗煎瓙琚鐢紝鏃犳硶璧版満姊拌噦涓嬬墖"); //璧颁汉宸ヤ笅鐗� @@ -312,18 +317,33 @@ list = tempList.stream().filter(item -> item.getWidth() > maxWidth || item.getHeight() > maxHeight).collect(Collectors.toList()); } } else { + //鑾峰彇鍙惤鏋剁殑鐨勬灦瀛愪俊鎭紙鍖呮嫭绌烘灦瀛愶級 List<DownWorkstation> workstationsIsNotBind = downWorkstationList.stream().filter(item -> null == (item.getFlowCardId())).collect(Collectors.toList()); - Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream().collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); + //灏嗘灦瀛愮殑娴佺▼鍗″彿鍙婂眰鏁颁綔涓簁ey if (CollectionUtils.isEmpty(workstationsIsNotBind)) { log.info("涓嶅瓨鍦ㄦ湭缁戝畾娴佺▼鍗℃灦瀛�"); //绛涢�夊嚭瀵瑰簲鏋跺瓙宸茬粦瀹氭祦绋嬪崱鍙笅鐗囩殑鐜荤拑 + Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream() + .filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); } else { - log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�"); + log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�"); + //鑾峰彇绂佺敤鏋跺瓙鐨勬祦绋嬪彿锛屽皢绗煎唴缁戝畾鏋跺瓙涓旀灦瀛愯绂佺敤鐨勬祦绋嬪崱淇℃伅 + List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6); + List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList()); + List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() + .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF))); + //鑾峰彇琚鐢ㄧ殑娴佺▼鍗′俊鎭� + if (CollectionUtils.isEmpty(downWorkstationOffList)) { + list = tempList; + } else { + Map<String, List<DownWorkstation>> listOffMap = downWorkstationOffList.stream().filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); + list = tempList.stream().filter(item -> !listOffMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); + } isEmptyShelf = Boolean.TRUE; //todo:濡傛灉绂佺敤鏋跺瓙宸茬粦瀹氭祦绋嬪崱锛屽洜涓烘椂闂翠笉纭畾锛岀瀛愬唴鐨勭幓鐠冨彲閲嶆柊缁戝畾鏂版灦瀛� // list = tempList.stream().filter(item -> !listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); - list = tempList; + } } } else { @@ -360,7 +380,8 @@ break loop; } //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠� - List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); + List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())) + .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(noDownLoadList)) { //鏄惁鏈夌┖鏋跺瓙 // List<DownWorkstation> emptyShelfList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() @@ -451,14 +472,18 @@ } Integer endCell = null; - if (!isBind) { + if (isBind) { //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗� DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>() .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1")); if (null != emptyDownWorkstation) { log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱"); - downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), downStorageCageDetails.getLayer(), emptyDownWorkstation.getWorkstationId()); + downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer()); endCell = emptyDownWorkstation.getWorkstationId(); + //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓� + //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛� + downStorageCageDetails.setState(Const.GLASS_STATE_OUT); + downStorageCageDetailsService.save(downStorageCageDetails); } else { log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�"); return Boolean.FALSE; @@ -467,14 +492,15 @@ DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>() .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer())); endCell = workstation.getWorkstationId(); - } - //鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬� - if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>() - .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) { - log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�"); - } else { - log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�"); - return Boolean.FALSE; + + if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>() + .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) { + log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�"); +// return Boolean.TRUE; + } else { + log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�"); + return Boolean.FALSE; + } } //鏇存柊钀芥灦鐜荤拑鏁伴噺 if (endCell == 7) { @@ -488,6 +514,8 @@ //鐢熸垚浠诲姟淇℃伅 DownGlassInfo downGlassInfo = new DownGlassInfo(); BeanUtils.copyProperties(downStorageCageDetails, downGlassInfo); + //todo锛氳惤鏋剁墖搴� + downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer())); downGlassInfoService.save(downGlassInfo); //鐢熸垚浠诲姟淇℃伅 GlassInfo glassInfo = new GlassInfo(); diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml index 1930840..32bca1a 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml @@ -38,7 +38,7 @@ order by count desc limit 1 </select> <select id="queryMaxSequence" resultType="java.lang.Integer"> - SELECT max(sequence) + 1 as sequence + SELECT COALESCE(max(sequence) + 1, 0) as sequence FROM down_glass_info WHERE flow_card_id = #{flowCardId} AND layer = #{layer} diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java index 395722b..4029a6e 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java @@ -12,6 +12,7 @@ import com.mes.downstorage.service.impl.DownStorageCageDetailsServiceImpl; import com.mes.downstorage.service.impl.DownStorageCageServiceImpl; +import com.mes.downworkstation.entity.DownWorkstation; import com.mes.downworkstation.service.DownWorkstationService; import com.mes.downworkstation.service.impl.DownWorkstationServiceImpl; import com.mes.glassinfo.service.impl.GlassInfoServiceImpl; @@ -190,6 +191,28 @@ //downGlassTaskService.getUnloadingTaskState(); } + @Test + public void updateDownWorkstationstate() { + + DownWorkstation downWorkstation= new DownWorkstation(); + + downWorkstation.setId(1); + downWorkstation.setEnableState(0); + downWorkstationServiceImpl.updateDownWorkstationstate(downWorkstation); + } + + + @Test + public void updateDownstate() { + + DownStorageCage downStorageCage= new DownStorageCage(); + + downStorageCage.setId(1); + downStorageCage.setEnableState(0); + downStorageCageServiceImpl.updateDownStorageCage(downStorageCage); + } + + /* @Test public void updateDownStorageCage() { -- Gitblit v1.8.0