From 16f4bb3c28fc85cffcc511718c903ada9fdab134 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期五, 26 十二月 2025 16:59:45 +0800
Subject: [PATCH] 调用mes导入工程参数修改,Excel表数据流程卡号一致;增加读取层号/工程号方法; 工程号一致覆盖更新

---
 mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java |   87 ++++++++++++++++++++++---------------------
 1 files changed, 44 insertions(+), 43 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
index b49102b..fcc73ee 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
@@ -27,6 +27,7 @@
 import javax.annotation.PreDestroy;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.stream.Collectors;
 
 /**
  * 澶ц溅璁惧閫昏緫澶勭悊鍣�
@@ -137,7 +138,7 @@
             Map<String, Object> params,
             Map<String, Object> logicParams) {
 
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         log.info("鎵ц澶ц溅璁惧鎿嶄綔: deviceId={}, deviceName={}, operation={}", 
             deviceId, deviceConfig.getDeviceName(), operation);
 
@@ -288,7 +289,7 @@
             Map<String, Object> logicParams) {
         
         VehicleTask task = new VehicleTask();
-        task.setTaskId(generateTaskId(deviceConfig.getDeviceId()));
+        task.setTaskId(generateTaskId(String.valueOf(deviceConfig.getId())));
         task.setTaskName("澶ц溅璁惧-" + operation);
         task.setOperation(operation);
         
@@ -364,7 +365,7 @@
         Boolean triggerRequest = (Boolean) params.getOrDefault("triggerRequest", autoFeed);
 
         List<GlassInfo> plannedGlasses = planGlassLoading(glassInfos, vehicleCapacity, glassGap,
-                deviceConfig.getDeviceId());
+                String.valueOf(deviceConfig.getId()));
         if (plannedGlasses == null) {
             // 鐜荤拑娌℃湁闀垮害鏃惰繑鍥瀗ull琛ㄧず閿欒
             return DevicePlcVO.OperationResult.builder()
@@ -436,7 +437,7 @@
         // 濡傛灉鎵ц鎴愬姛锛屾洿鏂颁綅缃俊鎭埌鐘舵��
         if (Boolean.TRUE.equals(result.getSuccess())) {
             VehicleStatus status = statusManager.getOrCreateVehicleStatus(
-                deviceConfig.getDeviceId(), deviceConfig.getDeviceName());
+                String.valueOf(deviceConfig.getId()), deviceConfig.getDeviceName());
             if (positionCode != null || positionValue != null) {
                 VehiclePosition position = new VehiclePosition(positionCode, positionValue);
                 status.setCurrentPosition(position);
@@ -521,15 +522,15 @@
         
         // 閲嶇疆鏃讹紝娓呴櫎浠诲姟骞舵仮澶嶄负绌洪棽鐘舵�侊紝鍋滄鐩戞帶
         if (Boolean.TRUE.equals(result.getSuccess())) {
-            statusManager.clearVehicleTask(deviceConfig.getDeviceId());
-            statusManager.updateVehicleStatus(deviceConfig.getDeviceId(), VehicleState.IDLE);
-            stopStateMonitoring(deviceConfig.getDeviceId());
+            statusManager.clearVehicleTask(String.valueOf(deviceConfig.getId()));
+            statusManager.updateVehicleStatus(String.valueOf(deviceConfig.getId()), VehicleState.IDLE);
+            stopStateMonitoring(String.valueOf(deviceConfig.getId()));
             handleStopTaskMonitor(deviceConfig);
             handleStopIdleMonitor(deviceConfig);
             updateDeviceOnlineStatus(deviceConfig, true);
         } else {
             // 鍗充究閲嶇疆澶辫触锛屼篃灏濊瘯鍋滄鍐呴儴鐩戞帶锛岄伩鍏嶄换鍔″彇娑堝悗浠嶇劧鍙嶅鍐橮LC
-            stopStateMonitoring(deviceConfig.getDeviceId());
+            stopStateMonitoring(String.valueOf(deviceConfig.getId()));
             handleStopTaskMonitor(deviceConfig);
             handleStopIdleMonitor(deviceConfig);
         }
@@ -636,15 +637,15 @@
         
         // 娓呯┖鍚庯紝鎭㈠涓虹┖闂茬姸鎬侊紝鍋滄鐩戞帶
         if (Boolean.TRUE.equals(result.getSuccess())) {
-            statusManager.clearVehicleTask(deviceConfig.getDeviceId());
-            statusManager.updateVehicleStatus(deviceConfig.getDeviceId(), VehicleState.IDLE);
-            stopStateMonitoring(deviceConfig.getDeviceId());
+            statusManager.clearVehicleTask(String.valueOf(deviceConfig.getId()));
+            statusManager.updateVehicleStatus(String.valueOf(deviceConfig.getId()), VehicleState.IDLE);
+            stopStateMonitoring(String.valueOf(deviceConfig.getId()));
             handleStopTaskMonitor(deviceConfig);
             handleStopIdleMonitor(deviceConfig);
             updateDeviceOnlineStatus(deviceConfig, true);
         } else {
             // 鍐欏叆澶辫触涔熷皾璇曞仠姝㈢洃鎺э紝閬垮厤浠诲姟鍙栨秷鍚庝粛鏃ц繍琛�
-            stopStateMonitoring(deviceConfig.getDeviceId());
+            stopStateMonitoring(String.valueOf(deviceConfig.getId()));
             handleStopTaskMonitor(deviceConfig);
             handleStopIdleMonitor(deviceConfig);
         }
@@ -661,7 +662,7 @@
             deviceStatusService.updateDeviceOnlineStatus(deviceConfig.getId(), status);
         } catch (Exception e) {
             log.warn("鍚屾璁惧鍦ㄧ嚎鐘舵�佸埌鏁版嵁搴撳け璐�: deviceId={}, online={}, error={}",
-                    deviceConfig.getDeviceId(), online, e.getMessage());
+                    String.valueOf(deviceConfig.getId()), online, e.getMessage());
         }
     }
 
@@ -869,7 +870,7 @@
      * 瀹氭湡妫�鏌ュぇ杞︾殑 state1~6锛屽綋妫�娴嬪埌 state=1 鏃惰嚜鍔ㄥ崗璋冨崸杞珛璁惧
      */
     private void startStateMonitoring(DeviceConfig deviceConfig, Map<String, Object> logicParams) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         
         // 濡傛灉宸茬粡鍦ㄧ洃鎺э紝鍏堝仠姝㈡棫鐨勭洃鎺т换鍔�
         stopStateMonitoring(deviceId);
@@ -940,7 +941,7 @@
      * 妫�鏌ュぇ杞︾姸鎬佸苟鍗忚皟鍗ц浆绔嬭澶囷紙鍐呴儴鏂规硶锛岀敱鐩戞帶绾跨▼璋冪敤锛�
      */
     private void checkAndCoordinateState(DeviceConfig deviceConfig) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         List<String> alreadyCoordinated = coordinatedStates.get(deviceId);
         if (alreadyCoordinated == null) {
             alreadyCoordinated = new CopyOnWriteArrayList<>();
@@ -1228,7 +1229,7 @@
             Map<String, Object> params,
             Map<String, Object> logicParams) {
         
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         
         // 鍋滄鏃х殑鐩戞帶浠诲姟
         handleStopIdleMonitor(deviceConfig);
@@ -1286,7 +1287,7 @@
      * 鍋滄绌洪棽鐩戞帶
      */
     private DevicePlcVO.OperationResult handleStopIdleMonitor(DeviceConfig deviceConfig) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         ScheduledFuture<?> future = idleMonitoringTasks.remove(deviceId);
         if (future != null && !future.isCancelled()) {
             future.cancel(false);
@@ -1307,7 +1308,7 @@
             Map<String, Object> params,
             Map<String, Object> logicParams) {
         
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         PlcClient plcClient = getPlcClient(deviceConfig);
         if (plcClient == null) {
             return DevicePlcVO.OperationResult.builder()
@@ -1506,8 +1507,8 @@
             // 濡傛灉鏈夊璁惧浠诲姟涓婁笅鏂囷紝鍒欒褰曟湰娆ES涓嬪彂鐨勭幓鐠僆D鍒楄〃鍒颁笂涓嬫枃锛屼緵鍒嗘壒鏍¢獙浣跨敤
             if (params != null) {
                 Object ctxObj = params.get("_taskContext");
-                if (ctxObj instanceof com.mes.task.model.TaskExecutionContext) {
-                    com.mes.task.model.TaskExecutionContext ctx = (com.mes.task.model.TaskExecutionContext) ctxObj;
+                if (ctxObj instanceof TaskExecutionContext) {
+                    TaskExecutionContext ctx = (TaskExecutionContext) ctxObj;
                     List<String> batchIds = new ArrayList<>();
                     for (GlassTaskInfo g : glasses) {
                         if (g != null && g.glassId != null && !g.glassId.isEmpty()) {
@@ -1552,7 +1553,7 @@
             String taskType = isOutbound ? "鍑虹墖" : "杩涚墖";
             String glassIds = glasses.stream()
                     .map(g -> g.glassId)
-                    .collect(java.util.stream.Collectors.joining(","));
+                    .collect(Collectors.joining(","));
             log.info("MES{}浠诲姟宸插垱寤�: deviceId={}, glassCount={}, glassIds=[{}], 璧峰浣嶇疆={}鏍�, 鐩爣浣嶇疆={}鏍�, 璺濈{}鏍�->{}鏍�, gotime={}ms({}绉�), cartime={}ms({}绉�)", 
                     taskType, deviceId, glasses.size(), glassIds,
                     firstGlass.startPosition, firstGlass.targetPosition,
@@ -1700,7 +1701,7 @@
      */
     private Integer getCurrentPosition(DeviceConfig deviceConfig, Map<String, Object> logicParams) {
         // 浠庣姸鎬佺鐞嗗櫒鑾峰彇
-        VehicleStatus status = statusManager.getVehicleStatus(deviceConfig.getDeviceId());
+        VehicleStatus status = statusManager.getVehicleStatus(String.valueOf(deviceConfig.getId()));
         if (status != null && status.getCurrentPosition() != null) {
             return status.getCurrentPosition().getPositionValue();
         }
@@ -1791,7 +1792,7 @@
             Map<String, Object> params,
             Map<String, Object> logicParams) {
         
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         
         // 鍋滄鏃х殑鐩戞帶浠诲姟
         handleStopTaskMonitor(deviceConfig);
@@ -1832,7 +1833,7 @@
                                       MesTaskInfo taskInfo,
                                       Map<String, Object> logicParams) {
         
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         PlcClient plcClient = getPlcClient(deviceConfig);
         if (plcClient == null) {
             return;
@@ -1886,7 +1887,7 @@
                 if (taskInfo.brokenGlassIndices != null && taskInfo.brokenGlassIndices.contains(i)) {
                     updateStateIfNeeded(deviceConfig, plcClient, stateValues, stateField, 8, taskInfo);
                     log.info("鐜荤拑鏍囪涓虹牬鎹�: deviceId={}, stateField={}, glassIndex={}", 
-                            deviceConfig.getDeviceId(), stateField, i);
+                            String.valueOf(deviceConfig.getId()), stateField, i);
                     continue;
                 }
                 
@@ -1894,7 +1895,7 @@
                 if (elapsed >= state3TimeoutTime && (currentState == null || currentState < 2)) {
                     updateStateIfNeeded(deviceConfig, plcClient, stateValues, stateField, 3, taskInfo);
                     log.warn("浠诲姟瓒呮椂鏈畬鎴�: deviceId={}, stateField={}, elapsed={}ms, expectedTime={}ms", 
-                            deviceConfig.getDeviceId(), stateField, elapsed, state2Time);
+                            String.valueOf(deviceConfig.getId()), stateField, elapsed, state2Time);
                     continue;
                 }
                 
@@ -1971,7 +1972,7 @@
         // 娉ㄦ剰锛氬鏋滃綋鍓峴tate宸茬粡鏄�3锛堟湭瀹屾垚锛夋垨8锛堢牬鎹燂級锛屼笉鍐嶆洿鏂�
         if (currentState != null && (currentState == 3 || currentState == 8)) {
             log.debug("浠诲姟鐘舵�佸凡涓哄紓甯哥姸鎬侊紝涓嶅啀鏇存柊: deviceId={}, stateField={}, currentState={}, targetState={}", 
-                    deviceConfig.getDeviceId(), stateField, currentState, targetState);
+                    String.valueOf(deviceConfig.getId()), stateField, currentState, targetState);
             return false;
         }
         
@@ -1983,12 +1984,12 @@
                 plcClient.writeData(payload);
                 
                 log.info("浠诲姟鐘舵�佸凡鏇存柊鍒癙LC: deviceId={}, stateField={}, currentState={}, targetState={}", 
-                        deviceConfig.getDeviceId(), stateField, currentState, targetState);
+                        String.valueOf(deviceConfig.getId()), stateField, currentState, targetState);
                 // 杩斿洖true琛ㄧず鐘舵�佸彂鐢熶簡鍙樺寲
                 return true;
             } catch (Exception e) {
                 log.error("鍐欏叆PLC state瀛楁澶辫触: deviceId={}, stateField={}, targetState={}, error={}", 
-                        deviceConfig.getDeviceId(), stateField, targetState, e.getMessage());
+                        String.valueOf(deviceConfig.getId()), stateField, targetState, e.getMessage());
                 return false;
             }
         }
@@ -2066,11 +2067,11 @@
                     .map(g -> g.glassId)
                     .collect(java.util.stream.Collectors.joining(","));
             log.info("宸茬粰MES姹囨姤({}浠诲姟): deviceId={}, glassCount={}, glassIds=[{}]", 
-                    taskType, deviceConfig.getDeviceId(), taskInfo.glasses.size(), glassIds);
+                    taskType, String.valueOf(deviceConfig.getId()), taskInfo.glasses.size(), glassIds);
             
             // 澶氳澶囦换鍔″満鏅笅锛屼笉鍦ㄨ繖閲岄樆濉炵瓑寰匨ES纭锛岀敱浠诲姟寮曟搸瀹氭椂璋冪敤checkMesConfirm
         } catch (Exception e) {
-            log.error("缁橫ES姹囨姤寮傚父: deviceId={}", deviceConfig.getDeviceId(), e);
+            log.error("缁橫ES姹囨姤寮傚父: deviceId={}", String.valueOf(deviceConfig.getId()), e);
         }
     }
 
@@ -2081,7 +2082,7 @@
     public DevicePlcVO.OperationResult checkMesConfirm(DeviceConfig deviceConfig,
                                                        Map<String, Object> params,
                                                        Map<String, Object> logicParams) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         PlcClient plcClient = getPlcClient(deviceConfig);
         if (plcClient == null) {
             return DevicePlcVO.OperationResult.builder()
@@ -2166,9 +2167,9 @@
                 } catch (Exception e) {
                     log.warn("MES纭瓒呮椂鏃舵竻绌轰换鍔$姸鎬佸け璐�: deviceId={}, error={}", deviceId, e.getMessage());
                 }
-                statusManager.updateVehicleStatus(deviceConfig.getDeviceId(), VehicleState.ERROR);
-                statusManager.clearVehicleTask(deviceConfig.getDeviceId());
-                currentTasks.remove(deviceConfig.getDeviceId());
+                statusManager.updateVehicleStatus(String.valueOf(deviceConfig.getId()), VehicleState.ERROR);
+                statusManager.clearVehicleTask(String.valueOf(deviceConfig.getId()));
+                currentTasks.remove(String.valueOf(deviceConfig.getId()));
                 handleStopTaskMonitor(deviceConfig);
 
                 return DevicePlcVO.OperationResult.builder()
@@ -2195,11 +2196,11 @@
 
                 // 浠诲姟瀹屾垚锛屾仮澶嶄负绌洪棽鐘舵��
                 statusManager.updateVehicleStatus(
-                        deviceConfig.getDeviceId(), VehicleState.IDLE);
-                statusManager.clearVehicleTask(deviceConfig.getDeviceId());
+                        String.valueOf(deviceConfig.getId()), VehicleState.IDLE);
+                statusManager.clearVehicleTask(String.valueOf(deviceConfig.getId()));
 
                 // 绉婚櫎浠诲姟璁板綍锛堝鏋滄湁锛�
-                currentTasks.remove(deviceConfig.getDeviceId());
+                currentTasks.remove(String.valueOf(deviceConfig.getId()));
 
                 // 鍋滄浠诲姟鐩戞帶
                 handleStopTaskMonitor(deviceConfig);
@@ -2209,7 +2210,7 @@
                 payload.put("plcRequest", 1);
                 plcClient.writeData(payload);
 
-                log.info("MES浠诲姟宸茬‘璁ゅ畬鎴�: deviceId={}", deviceConfig.getDeviceId());
+                log.info("MES浠诲姟宸茬‘璁ゅ畬鎴�: deviceId={}", String.valueOf(deviceConfig.getId()));
                 String taskType = (taskInfo != null && taskInfo.isOutbound) ? "鍑虹墖" : "杩涚墖";
                 return DevicePlcVO.OperationResult.builder()
                         .success(true)
@@ -2233,7 +2234,7 @@
                     .data(data)
                     .build();
         } catch (Exception e) {
-            log.error("妫�鏌ES纭鐘舵�佸紓甯�: deviceId={}", deviceConfig.getDeviceId(), e);
+            log.error("妫�鏌ES纭鐘舵�佸紓甯�: deviceId={}", String.valueOf(deviceConfig.getId()), e);
             return DevicePlcVO.OperationResult.builder()
                     .success(false)
                     .message("妫�鏌ES纭鐘舵�佸紓甯�: " + e.getMessage())
@@ -2249,7 +2250,7 @@
     private DevicePlcVO.OperationResult handleMarkBroken(DeviceConfig deviceConfig,
                                                          Map<String, Object> params,
                                                          Map<String, Object> logicParams) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         MesTaskInfo taskInfo = currentTasks.get(deviceId);
         if (taskInfo == null) {
             return DevicePlcVO.OperationResult.builder()
@@ -2341,7 +2342,7 @@
             payload.put("plcReport", 0);
             plcClient.writeData(payload);
         } catch (Exception e) {
-            log.error("娓呯┖浠诲姟鐘舵�佸紓甯�: deviceId={}", deviceConfig.getDeviceId(), e);
+            log.error("娓呯┖浠诲姟鐘舵�佸紓甯�: deviceId={}", String.valueOf(deviceConfig.getId()), e);
         }
     }
 
@@ -2349,7 +2350,7 @@
      * 鍋滄浠诲姟鐩戞帶
      */
     private DevicePlcVO.OperationResult handleStopTaskMonitor(DeviceConfig deviceConfig) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         ScheduledFuture<?> future = taskMonitoringTasks.remove(deviceId);
         if (future != null && !future.isCancelled()) {
             future.cancel(false);

--
Gitblit v1.8.0