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/workstation/transfer/handler/HorizontalTransferLogicHandler.java |   68 +++++++++++++++------------------
 1 files changed, 31 insertions(+), 37 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/workstation/transfer/handler/HorizontalTransferLogicHandler.java b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/workstation/transfer/handler/HorizontalTransferLogicHandler.java
index b5d7d50..909861f 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/workstation/transfer/handler/HorizontalTransferLogicHandler.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/workstation/transfer/handler/HorizontalTransferLogicHandler.java
@@ -9,9 +9,9 @@
 import com.mes.device.vo.DevicePlcVO;
 import com.mes.interaction.workstation.base.WorkstationBaseHandler;
 import com.mes.interaction.workstation.config.WorkstationLogicConfig;
-import com.mes.s7.enhanced.EnhancedS7Serializer;
-import com.mes.s7.provider.S7SerializerProvider;
-import com.mes.service.PlcDynamicDataService;
+import com.mes.plc.client.PlcClient;
+import com.mes.plc.factory.PlcClientFactory;
+import com.mes.task.model.TaskExecutionContext;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -32,9 +32,8 @@
 @Component
 public class HorizontalTransferLogicHandler extends WorkstationBaseHandler {
 
-    private final PlcDynamicDataService plcDynamicDataService;
     private final GlassInfoService glassInfoService;
-    private final S7SerializerProvider s7SerializerProvider;
+    private final PlcClientFactory plcClientFactory;
     
     @Autowired(required = false)
     private DeviceGlassInfoMapper glassInfoMapper;
@@ -57,13 +56,13 @@
 
     @Autowired
     public HorizontalTransferLogicHandler(DevicePlcOperationService devicePlcOperationService,
-                                         PlcDynamicDataService plcDynamicDataService,
                                          @Qualifier("deviceGlassInfoService") GlassInfoService glassInfoService,
-                                         S7SerializerProvider s7SerializerProvider) {
+                                         PlcClientFactory plcClientFactory) {
         super(devicePlcOperationService);
-        this.plcDynamicDataService = plcDynamicDataService;
         this.glassInfoService = glassInfoService;
-        this.s7SerializerProvider = s7SerializerProvider;
+        this.plcClientFactory = plcClientFactory;
+        // 璁剧疆 PlcClientFactory 鍒板熀绫�
+        this.setPlcClientFactory(plcClientFactory);
     }
 
     @Override
@@ -115,11 +114,11 @@
             Map<String, Object> logicParams,
             Map<String, Object> params) {
         
-        String deviceId = deviceConfig.getDeviceId();
-        EnhancedS7Serializer serializer = s7SerializerProvider.getSerializer(deviceConfig);
-        if (serializer == null) {
+        String deviceId = String.valueOf(deviceConfig.getId());
+        PlcClient plcClient = getPlcClient(deviceConfig);
+        if (plcClient == null) {
             return buildResult(deviceConfig, "checkAndProcess", false, 
-                    "鑾峰彇PLC搴忓垪鍖栧櫒澶辫触");
+                    "鑾峰彇PLC瀹㈡埛绔け璐�");
         }
 
         try {
@@ -184,7 +183,7 @@
 
             // 6. 鍐欏叆PLC锛堝皾璇曚粠浠诲姟鍙傛暟涓幏鍙栧崸杞珛缂栧彿锛�
             DevicePlcVO.OperationResult writeResult = writeBatchToPlc(
-                    deviceConfig, batch, serializer, logicParams, params);
+                    deviceConfig, batch, plcClient, logicParams, params);
             
             if (!Boolean.TRUE.equals(writeResult.getSuccess())) {
                 return writeResult;
@@ -194,16 +193,15 @@
             try {
                 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> batchGlassIds = batch.stream()
                                 .map(GlassInfo::getGlassId)
                                 .filter(Objects::nonNull)
                                 .collect(Collectors.toList());
                         if (!batchGlassIds.isEmpty()) {
                             ctx.getSharedData().put("transferReadyGlassIds",
-                                    new java.util.ArrayList<>(batchGlassIds));
+                                    new ArrayList<>(batchGlassIds));
                             log.info("鍗ц浆绔嬪凡杈撳嚭鎵规鐜荤拑鍒颁换鍔′笂涓嬫枃: deviceId={}, glassIds={}",
                                     deviceConfig.getId(), batchGlassIds);
                         }
@@ -261,12 +259,10 @@
             // 浠庨厤缃腑鑾峰彇workLine锛岀敤浜庤繃婊わ紙閰嶇疆涓槸Integer绫诲瀷锛�
             Integer workLine = getLogicParam(logicParams, "workLine", null);
             
-            // 鏌ヨ鏈�杩�2鍒嗛挓鍐呯殑鐜荤拑璁板綍锛堟墿澶ф椂闂寸獥鍙o紝纭繚涓嶉仐婕忥級
-            Date twoMinutesAgo = new Date(System.currentTimeMillis() - 120000);
-            
+            // 鏌ヨstate=1鐨勭幓鐠冭褰曪紙宸叉壂鐮佷氦浜掑畬鎴愶紝绛夊緟鍗ц浆绔嬪鐞嗭級
             LambdaQueryWrapper<GlassInfo> wrapper = new LambdaQueryWrapper<>();
             wrapper.in(GlassInfo::getStatus, GlassInfo.Status.PENDING, GlassInfo.Status.ACTIVE)
-                   .ge(GlassInfo::getCreatedTime, twoMinutesAgo)
+                   .eq(GlassInfo::getState, 1) // 鍙煡璇tate=1鐨勭幓鐠冿紙宸叉壂鐮佸畬鎴愶級
                    .orderByDesc(GlassInfo::getCreatedTime)
                    .last("LIMIT 20"); // 闄愬埗鏌ヨ鏁伴噺锛岄伩鍏嶈繃澶�
             
@@ -403,7 +399,7 @@
     private DevicePlcVO.OperationResult writeBatchToPlc(
             DeviceConfig deviceConfig,
             List<GlassInfo> batch,
-            EnhancedS7Serializer serializer,
+            PlcClient plcClient,
             Map<String, Object> logicParams,
             Map<String, Object> params) {
         
@@ -419,19 +415,16 @@
         // 鍐欏叆鐜荤拑鏁伴噺
         payload.put("plcGlassCount", count);
         
-        // 鍐欏叆鍗ц浆绔嬬紪鍙凤紙浼樺厛浠庝换鍔″弬鏁拌幏鍙栵紝鍏舵浠庤澶囬厤缃幏鍙栵級
-        Integer inPosition = null;
+        // 鍐欏叆鍗ц浆绔嬬紪鍙凤紙浼樺厛浠庝换鍔″弬鏁拌幏鍙栵紝鍏舵浠庤澶囬厤缃幏鍙栵紝鐩存帴鍐欏叆缂栧彿锛屼笉杩涜浣嶇疆鏄犲皠锛�
+        Object inPosition = null;
         if (params != null) {
             try {
                 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;
-                    Object positionObj = ctx.getParameters().getExtra() != null 
+                    inPosition = ctx.getParameters().getExtra() != null 
                             ? ctx.getParameters().getExtra().get("inPosition") : null;
-                    if (positionObj instanceof Number) {
-                        inPosition = ((Number) positionObj).intValue();
-                    }
                 }
             } catch (Exception e) {
                 log.debug("浠庝换鍔″弬鏁拌幏鍙栧崸杞珛缂栧彿澶辫触: deviceId={}", deviceConfig.getId(), e);
@@ -442,6 +435,7 @@
             inPosition = getLogicParam(logicParams, "inPosition", null);
         }
         if (inPosition != null) {
+            // 鐩存帴鍐欏叆缂栧彿鏈韩锛屼笉杩涜浣嶇疆鏄犲皠杞崲
             payload.put("inPosition", inPosition);
             log.info("鍐欏叆鍗ц浆绔嬬紪鍙�: deviceId={}, inPosition={}", deviceConfig.getId(), inPosition);
         } else {
@@ -452,7 +446,7 @@
         payload.put("plcRequest", 1);
         
         try {
-            plcDynamicDataService.writePlcData(deviceConfig, payload, serializer);
+            plcClient.writeData(payload);
             log.info("鎵规宸插啓鍏LC: deviceId={}, glassCount={}, inPosition={}", 
                     deviceConfig.getId(), count, inPosition);
             return buildResult(deviceConfig, "writeBatchToPlc", true, 
@@ -488,7 +482,7 @@
             WorkstationLogicConfig config,
             Map<String, Object> logicParams) {
         
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         
         // 鍋滄鏃х殑鐩戞帶浠诲姟
         handleStopMonitor(deviceConfig);
@@ -519,7 +513,7 @@
      * 鍋滄鐩戞帶浠诲姟
      */
     private DevicePlcVO.OperationResult handleStopMonitor(DeviceConfig deviceConfig) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         ScheduledFuture<?> future = monitorTasks.remove(deviceId);
         if (future != null && !future.isCancelled()) {
             future.cancel(false);
@@ -532,7 +526,7 @@
      * 娓呯┖缂撳啿闃熷垪
      */
     private DevicePlcVO.OperationResult handleClearBuffer(DeviceConfig deviceConfig) {
-        String deviceId = deviceConfig.getDeviceId();
+        String deviceId = String.valueOf(deviceConfig.getId());
         glassBuffer.remove(deviceId);
         lastScanTime.remove(deviceId);
         log.info("宸叉竻绌虹紦鍐查槦鍒�: deviceId={}", deviceId);
@@ -544,9 +538,9 @@
      */
     private DevicePlcVO.OperationResult handleClearPlc(DeviceConfig deviceConfig) {
         try {
-            EnhancedS7Serializer serializer = s7SerializerProvider.getSerializer(deviceConfig);
-            if (serializer == null) {
-                return buildResult(deviceConfig, "clearPlc", false, "鑾峰彇PLC搴忓垪鍖栧櫒澶辫触");
+            PlcClient plcClient = getPlcClient(deviceConfig);
+            if (plcClient == null) {
+                return buildResult(deviceConfig, "clearPlc", false, "鑾峰彇PLC瀹㈡埛绔け璐�");
             }
             
             Map<String, Object> payload = new HashMap<>();
@@ -558,7 +552,7 @@
             payload.put("plcRequest", 0);
             payload.put("inPosition", 0);
             
-            plcDynamicDataService.writePlcData(deviceConfig, payload, serializer);
+            plcClient.writeData(payload);
             log.info("鍗ц浆绔嬩富浣撴竻绌篜LC瀛楁瀹屾垚: deviceId={}", deviceConfig.getId());
             return buildResult(deviceConfig, "clearPlc", true, "宸叉竻绌哄崸杞珛涓讳綋PLC瀛楁");
         } catch (Exception e) {

--
Gitblit v1.8.0