From 8d58c40af40493bd5f066cbfdb1ffd9f113c22fc Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期三, 03 九月 2025 16:37:21 +0800
Subject: [PATCH] 1.前端推数据使用了最新的webSokect客户现场总是掉线,修改为接口方式 2.设备交互整体增加异常处理以及PLC连接方式改为短连接

---
 JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst                    |    3 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java                                  |   50 
 UI-Project/src/views/ManualReporting/manualReporting.vue                                                                                |  162 ++-
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineDispensing.java                         |    6 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineThread.java                             |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original                                 |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineEdging.java                             |    6 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java                          |  194 ++-
 UI-Project/src/views/FlipSlice/flipSlice.vue                                                                                            |  423 ++++---
 UI-Project/src/views/Lamination/lamination.vue                                                                                          |  110 +
 UI-Project/src/views/SilkScreen/SilkScreen.vue                                                                                          |  102 +
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java                                                            |    1 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml                                            |   16 
 UI-Project/package.json                                                                                                                 |    1 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst |   24 
 UI-Project/src/views/Marking/marking.vue                                                                                                |   87 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java                                         |   38 
 UI-Project/config.js                                                                                                                    |    8 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java                               |    6 
 UI-Project/src/views/Rotate/rotate.vue                                                                                                  |  122 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml                                                |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java                            |  102 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst   |   24 
 UI-Project/src/utils/constants.js                                                                                                       |    4 
 UI-Project/src/views/Cleaning/cleaning.vue                                                                                              |  136 +-
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java                                         |   48 
 UI-Project/src/views/GlueDispenser/glueDispenser.vue                                                                                    |   98 +
 UI-Project/src/views/MechanicalArm/mechanicalArm.vue                                                                                    |  567 ++++++----
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java                                         |   23 
 UI-Project/src/views/Edging/edging.vue                                                                                                  |  126 +
 /dev/null                                                                                                                               |   78 -
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java                         |   78 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineSilkScreen.java                         |    7 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java                   |   14 
 JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original                                                                         |    0 
 JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst                      |    3 
 UI-Project/package-lock.json                                                                                                            |   92 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java                             |  195 ++-
 38 files changed, 1,757 insertions(+), 1,229 deletions(-)

diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
index 8385a74..917dd3d 100644
--- a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
@@ -293,7 +293,6 @@
         if (s7PLC == null) {
             return null;
         }
-        // List<String> addresslist = GetAddressList(address, count, 16);
         byte[] bytes = null;
         try {
             bytes = s7PLC.readByte(address, count);
diff --git a/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 314e2ba..e76a642 100644
--- a/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -4,15 +4,16 @@
 com\mes\device\PlcBitInfo.class
 com\mes\device\PlcBitObject.class
 com\mes\utils\MD5.class
-com\mes\tools\WebSocketServer.class
 com\mes\common\config\Const.class
 com\mes\service\PlcAgreement.class
 com\mes\tools\DatabaseDesignDocUtil.class
+com\mes\websocket\WebSocketServer.class
 com\mes\utils\Result.class
 com\mes\common\config\MybatisPlusConfig.class
 com\mes\common\exception\ServiceException.class
 com\mes\service\ModbusTcp.class
 com\mes\utils\ResponseUtil.class
+com\mes\websocket\WebSocketUtils.class
 com\mes\common\handler\MyMetaObjectHandler.class
 com\mes\device\PlcParameterObject.class
 com\mes\entity\request\GeneralRequest.class
diff --git a/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 6ca42b8..940796b 100644
--- a/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,4 +1,3 @@
-D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\WebSocketServer.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\service\ModbusTcp.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\handler\MyMetaObjectHandler.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\Swagger2Config.java
@@ -11,11 +10,13 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\HexUtil.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\CodeGet.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\MybatisPlusConfig.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\websocket\WebSocketServer.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\service\PlcAgreement.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\HexConversion.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\Const.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\entity\request\GeneralRequest.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\device\PlcBitInfo.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\websocket\WebSocketUtils.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\ResponseUtil.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\ResultCodeEnum.java
 D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\device\PlcParameterInfo.java
diff --git a/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original b/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original
index c4fe093..4cb2340 100644
--- a/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original
+++ b/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original
Binary files differ
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
index 0357a7a..4339a36 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -46,29 +46,29 @@
         List<Machine> machineDispensing =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩鐐硅兌鏈�").eq(Machine::getState,"寮�宸�"));
         List<Machine> machineListRotate =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鏃嬭浆鍙�").eq(Machine::getState,"寮�宸�"));
         List<Machine> machineListLamination =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩璐磋啘鏈�").eq(Machine::getState,"寮�宸�"));
-        for (Machine item:machineListLoad){
-            new MachineLoad(item,primitiveTaskMapper,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
-        }
-        for (Machine item:machineListEdging){
-            new MachineEdging(item,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
-        }
-        for (Machine item:machineListFlipSlice){
-            new MachineFlipSlice(item,machineMapper,taskingService).start();
-        }
-        for (Machine item:machineListMarking){
-            new MachineMarking(item,machineMapper,taskingService).start();
-        }
-        for (Machine item:machineListSilkScreen){
-            new MachineSilkScreen(item,machineMapper,taskingService).start();
-        }
-        for (Machine item:machineDispensing){
-            new MachineDispensing(item,machineMapper,taskingService).start();
-        }
-        for (Machine item:machineListRotate){
-            new MachineRotate(item,machineMapper,taskingService).start();
-        }
-        for (Machine item:machineListLamination){
-            new MachineLamination(item,machineMapper,taskingService).start();
-        }
+//        for (Machine item:machineListLoad){
+//            new MachineLoad(item,primitiveTaskMapper,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
+//        }
+//        for (Machine item:machineListEdging){
+//            new MachineEdging(item,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
+//        }
+//        for (Machine item:machineListFlipSlice){
+//            new MachineFlipSlice(item,machineMapper,taskingService).start();
+//        }
+//        for (Machine item:machineListMarking){
+//            new MachineMarking(item,machineMapper,taskingService).start();
+//        }
+//        for (Machine item:machineListSilkScreen){
+//            new MachineSilkScreen(item,machineMapper,taskingService).start();
+//        }
+//        for (Machine item:machineDispensing){
+//            new MachineDispensing(item,machineMapper,taskingService).start();
+//        }
+//        for (Machine item:machineListRotate){
+//            new MachineRotate(item,machineMapper,taskingService).start();
+//        }
+//        for (Machine item:machineListLamination){
+//            new MachineLamination(item,machineMapper,taskingService).start();
+//        }
     }
 }
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectFlipSlice.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectFlipSlice.java
deleted file mode 100644
index 4333aa8..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectFlipSlice.java
+++ /dev/null
@@ -1,75 +0,0 @@
-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 : yanzhixin
- * @Date: 2024/4/9 15:13
- * @Description:
- */
-public class S7objectFlipSlice extends Thread {
-    public S7control plccontrol; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "10.36.164.120"; // plc ip鍦板潃
-    private int port = 102; // plc 绔彛鍙�
-
-
-    public PlcParameterObject PlcMesObject;
-    private static volatile S7objectFlipSlice instance = null;
-
-    private S7objectFlipSlice() {
-        if (plccontrol == null) {
-            plccontrol = new S7control(plcType, ip, port, 0, 0);
-            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcFlipSlice.json";
-//            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheGlass.json").getPath();
-            System.out.println("Load Glass File: " + PlcLoadGlass);
-            PlcMesObject = InitUtil.initword(PlcLoadGlass);
-        }
-    }
-
-    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
-    public static S7objectFlipSlice getinstance() {
-        if (instance == null) {
-            synchronized (S7objectFlipSlice.class) {
-                if (instance == null) {
-                    instance = new S7objectFlipSlice();
-                }
-            }
-        }
-        return instance;
-    }
-
-    @Override
-    public void run() {
-        while (this != null) {
-            try {
-                Thread.sleep(100);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
-            int maxRead=1092;
-            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
-                    (PlcMesObject.getPlcAddressLength()/maxRead):
-                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
-            for (int i = 0; i <size ; i++) {
-                int begin=i*maxRead;
-                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
-                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
-                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
-                System.arraycopy(getplcvlues,0,resultValues,begin,length);
-            }
-            if (resultValues != null) {
-                PlcMesObject.setPlcParameterList(resultValues);
-            }
-//            byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
-//            if (getplcvlues != null) {
-//                PlcMesObject.setPlcParameterList(getplcvlues);
-//            }
-        }
-    }
-}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
index 139d6f6..fea75a5 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
@@ -3,7 +3,6 @@
 import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
 import com.mes.device.PlcParameterInfo;
 import com.mes.device.PlcParameterObject;
-import com.mes.service.ModbusTcp;
 import com.mes.tools.InitUtil;
 import com.mes.tools.S7control;
 import lombok.extern.slf4j.Slf4j;
@@ -17,14 +16,15 @@
  * @Description:
  */
 @Slf4j
-public class S7objectMachine extends Thread {
+public class S7objectMachine{
     public S7control plccontrol; // PLC閫氳绫诲疄渚�
     private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
     private String ip = ""; // plc ip鍦板潃
     private int port = 102; // plc 绔彛鍙�
     private String plcFileName=""; // json鍚嶇О
     public PlcParameterObject PlcMesObject;
-    public S7objectMachine(String ip,int port,String plcFileName,EPlcType plcType) {
+
+    public S7objectMachine(String ip, int port, String plcFileName, EPlcType plcType) {
         initialize(ip,port,plcFileName,plcType);
         if (plccontrol == null) {
             plccontrol = new S7control(this.plcType, this.ip, this.port, 0, 0);
@@ -51,34 +51,26 @@
         }
         log.info(logInfo);
     }
-    @Override
-    public void run() {
-        while (this != null) {
-            try {
-                Thread.sleep(100);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
+    public void readData() {
+        try {
+            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
+            int maxRead=1092;
+            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
+                    (PlcMesObject.getPlcAddressLength()/maxRead):
+                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
+            for (int i = 0; i <size ; i++) {
+                int begin=i*maxRead;
+                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
+                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
+                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
+                System.arraycopy(getplcvlues,0,resultValues,begin,length);
             }
-            try {
-                byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
-                int maxRead=1092;
-                int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
-                        (PlcMesObject.getPlcAddressLength()/maxRead):
-                        (PlcMesObject.getPlcAddressLength()/maxRead+1);
-                for (int i = 0; i <size ; i++) {
-                    int begin=i*maxRead;
-                    int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
-                    String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
-                    byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
-                    System.arraycopy(getplcvlues,0,resultValues,begin,length);
-                }
-                if (resultValues != null) {
-                    PlcMesObject.setPlcParameterList(resultValues);
-                }
-            } catch (Exception e) {
-                //log.info("寮傚父:ip:{},port:{}",this.ip,this.port);
+            if (resultValues != null) {
+                PlcMesObject.setPlcParameterList(resultValues);
             }
-
+        } catch (Exception e) {
+            PlcMesObject=null;
+            log.info("寮傚父:ip:{},port:{},閿欒{}",this.ip,this.port,e.getMessage());
         }
     }
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMarking.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMarking.java
deleted file mode 100644
index 47b6879..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMarking.java
+++ /dev/null
@@ -1,78 +0,0 @@
-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;
-
-import java.util.List;
-
-
-/**
- * @Author : yanzhixin
- * @Date: 2024/4/9 15:13
- * @Description:
- */
-public class S7objectMarking extends Thread {
-    public S7control plccontrol; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "10.36.164.40"; // plc ip鍦板潃
-    private int port = 102; // plc 绔彛鍙�
-
-
-    public PlcParameterObject PlcMesObject;
-    private static volatile S7objectMarking instance = null;
-
-    private S7objectMarking() {
-        if (plccontrol == null) {
-            plccontrol = new S7control(plcType, ip, port, 0, 0);
-            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcMarking.json";
-//            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheGlass.json").getPath();
-            System.out.println("Load Glass File: " + PlcLoadGlass);
-            PlcMesObject = InitUtil.initword(PlcLoadGlass);
-        }
-    }
-
-    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
-    public static S7objectMarking getinstance() {
-        if (instance == null) {
-            synchronized (S7objectMarking.class) {
-                if (instance == null) {
-                    instance = new S7objectMarking();
-                }
-            }
-        }
-        return instance;
-    }
-
-    @Override
-    public void run() {
-        while (this != null) {
-            try {
-                Thread.sleep(100);
-
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
-            int maxRead=1092;
-            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
-                    (PlcMesObject.getPlcAddressLength()/maxRead):
-                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
-            for (int i = 0; i <size ; i++) {
-                int begin=i*maxRead;
-                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
-                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
-                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
-                System.arraycopy(getplcvlues,0,resultValues,begin,length);
-            }
-            if (resultValues != null) {
-                PlcMesObject.setPlcParameterList(resultValues);
-            }
-//            byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
-//            if (getplcvlues != null) {
-//                PlcMesObject.setPlcParameterList(getplcvlues);
-//            }
-        }
-    }
-}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java
index fb1ab1d..5bced79 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java
@@ -62,8 +62,8 @@
     private List<Machine> machineListLamination;
 
     //鏈烘鎵�
-    @Scheduled(fixedDelay = 500)
-    public void MarkingTasks() {
+    //@Scheduled(fixedDelay = 500)
+    public void loadTasks() {
         try {
             machineListLoad = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "涓婄墖"));
             JSONObject jsonObject = new JSONObject();
@@ -92,7 +92,7 @@
     }
 
     //纾ㄨ竟鏈�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void edgingTasks() {
         try {
             machineListEdging = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "纾ㄨ竟"));
@@ -113,7 +113,7 @@
     }
 
     //缈荤墖鍙�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void flipSliceTasks() {
         try {
             machineListFlipSlice = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "缈荤墖"));
@@ -135,7 +135,7 @@
     }
 
     //鎵撴爣鏈�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void markingTasks() {
         try {
             machineListMarking = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "鑷姩鎵撴爣鏈�"));
@@ -157,7 +157,7 @@
     }
 
     //涓濆嵃鏈�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void silkScreenTasks() {
         try {
             machineListSilkScreen = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "鑷姩涓濆嵃鏈�"));
@@ -178,7 +178,7 @@
     }
 
     //鐐硅兌鏈�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void glueDispenserTasks() {
         try {
             machineListGlueDispenser = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "鑷姩鐐硅兌鏈�"));
@@ -199,7 +199,7 @@
     }
 
     //鏃嬭浆鍙�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void rotateTasks() {
         try {
             machineListRotate = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "鏃嬭浆鍙�"));
@@ -220,7 +220,7 @@
     }
 
     //璐磋啘鏈�
-    @Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 500)
     public void laminationTasks() {
         try {
             machineListLamination = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "鑷姩璐磋啘鏈�"));
@@ -242,7 +242,7 @@
 
 
     //鎶ュ伐椤甸潰鏌ヨ
-    @Scheduled(fixedDelay = 1000)
+    //@Scheduled(fixedDelay = 1000)
     public void manualReporting() {
         try {
             machineListScanQrCode = machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName, "璇嗗埆鎶ュ伐"));
@@ -271,7 +271,7 @@
     }
 
     //绾夸笅鐜荤拑鏌ヨ
-    @Scheduled(fixedDelay = 1000)
+    //@Scheduled(fixedDelay = 1000)
     public void downLineTask() {
         try {
             JSONObject jsonObject = new JSONObject();
@@ -292,7 +292,6 @@
         } catch (Exception ex) {
             log.info("{}鍙戦�佹暟鎹け璐ワ細{}", "rawGlassStorage", ex.getMessage());
         }
-
     }
 //    public void webSocketServer(JSONObject jsonObject) {
 //        try {
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java
index 1c4d7d0..ab86444 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java
@@ -32,27 +32,35 @@
     public S7objectMachine s7objectMachine;
 
     //@Scheduled(fixedDelay = 500)
-    public void cleaning() {
+    public void cleaning() throws Exception {
         //纾ㄨ竟绾块�熷害  10.36.164.200
         Long machineId=8L;
         Machine machine=machineMapper.selectById(machineId);
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcCleaning", EPlcType.S200_SMART);
-            s7objectMachine.start();
-        }
+        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(),machine.getPort(),"PlcCleaning", EPlcType.S200_SMART);
+        s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
         PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-        PlcParameterInfo edgSpeed =plcParameterObject.getPlcParameter("edgSpeed");//纾ㄨ竟鏈洪�熷害
-        PlcParameterInfo thinness =plcParameterObject.getPlcParameter("thinness");//鍘氬害
-        if (machine.getIsLog()>0){
-            s7objectMachine.consoleLogInfo();
+        if (plcParameterObject == null) {
+            s7objectMachine.plccontrol.closeS7client();
+            return;
         }
-        int edgSpeedInt=0;
-        int edgThinnessInt=0;
-        if(!(edgSpeedInt+"").equals(edgSpeed.getValue())||!(edgThinnessInt+"").equals(thinness.getValue())){
-            //缁欐竻娲楁満鍣ㄥ彂閫佺(杈规満閫熷害
-            S7objectCleaning.getinstance().plccontrol.writeWord(edgSpeed.getAddress(), edgSpeedInt);
-            S7objectCleaning.getinstance().plccontrol.writeWord(thinness.getAddress(), edgThinnessInt);
+        try {
+            PlcParameterInfo edgSpeed =plcParameterObject.getPlcParameter("edgSpeed");//纾ㄨ竟鏈洪�熷害
+            PlcParameterInfo thinness =plcParameterObject.getPlcParameter("thinness");//鍘氬害
+            if (machine.getIsLog()>0){
+                s7objectMachine.consoleLogInfo();
+            }
+            int edgSpeedInt=0;
+            int edgThinnessInt=0;
+            if(!(edgSpeedInt+"").equals(edgSpeed.getValue())||!(edgThinnessInt+"").equals(thinness.getValue())){
+                //缁欐竻娲楁満鍣ㄥ彂閫佺(杈规満閫熷害
+                S7objectCleaning.getinstance().plccontrol.writeWord(edgSpeed.getAddress(), edgSpeedInt);
+                S7objectCleaning.getinstance().plccontrol.writeWord(thinness.getAddress(), edgThinnessInt);
+            }
+        }catch (Exception e) {
+            s7objectMachine.plccontrol.closeS7client();
+            log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
         }
+
     }
     //@Scheduled(fixedDelay = 1000)
     public void cleaningTask() {
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java
index 917fd58..26d12aa 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java
@@ -2,12 +2,11 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.mes.md.entity.KBBTJPDrawingBP;
-import com.mes.md.entity.PrimitiveTask;
-import com.mes.md.entity.TaskingLog;
+import com.mes.md.entity.*;
 import com.mes.md.mapper.KBBTJPDrawingBPMapper;
 import com.mes.md.mapper.TaskingLogMapper;
 import com.mes.md.service.KBBTJPDrawingBPService;
+import com.mes.md.service.LineConfigurationService;
 import com.mes.md.service.PrimitiveTaskService;
 import com.mes.md.service.TaskingLogService;
 import com.mes.utils.Result;
@@ -42,12 +41,15 @@
     TaskingLogService taskingLogService;
     @Autowired
     TaskingLogMapper taskingLogMapper;
+    @Autowired
+    LineConfigurationService lineConfigurationService;
 
     @ApiOperation("鏌ヨ褰撳墠璁惧锛屾湭瀹屽伐鐘舵�佺殑绾夸笂浠诲姟")
-    @PostMapping("/selectPrimitiveTask")
+    @PostMapping("/findMachineTask")
     @ResponseBody
-    public Result findMachineTask(@RequestBody PrimitiveTask primitiveTask) {
-        List<PrimitiveTask> list =primitiveTaskService.selectPrimitiveTask(primitiveTask);
+    public Result findMachineTask(@RequestBody Machine machine) {
+        LineConfiguration lineConfiguration = lineConfigurationService.machineLineConfiguration(machine);
+        List<PrimitiveTask> list =primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
         return Result.build(200,"鎴愬姛",list);
     }
 
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineDispensing.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineDispensing.java
index cf2d6bf..b41de5f 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineDispensing.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineDispensing.java
@@ -29,7 +29,7 @@
         this.taskingService = taskingService;
     }
 
-    public void plcStart() {
+    public void plcStart()throws Exception {
         Machine machine = machineMapper.selectById(thisMachine.getId());
         String fileName = machine.getFileName();
         ModbusTcp modbusTcp1 = new ModbusTcp(machine.getIp(), machine.getPort(), fileName);
@@ -223,12 +223,14 @@
 
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            }catch (Exception e) {
+                throw new RuntimeException(e);
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineEdging.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineEdging.java
index 68f44f0..b2e43ba 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineEdging.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineEdging.java
@@ -48,7 +48,7 @@
         this.lineConfigurationService = lineConfigurationService;
     }
 
-    public void plcStart() {
+    public void plcStart() throws Exception{
         Machine machine=machineMapper.selectById(thisMachine.getId());
         ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName());
         try {
@@ -325,12 +325,14 @@
     }
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java
index 948210d..902d5ee 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java
@@ -14,136 +14,142 @@
 import java.util.*;
 
 @Slf4j
-public class MachineFlipSlice extends Thread{
+public class MachineFlipSlice extends Thread {
 
 
     private MachineMapper machineMapper;
     private TaskingService taskingService;
-    private S7objectMachine s7objectMachine;
     public static int thinness = 40;
     public static int edgSpeed = 40;
-    //public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
     public Machine thisMachine;
 
-    public MachineFlipSlice(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+    public MachineFlipSlice(Machine machine, MachineMapper machineMapper, TaskingService taskingService) {
         this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
 
-    public void plcStart() {
-        //Long machineId=26L;
-        Machine machine=machineMapper.selectById(thisMachine.getId());
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200);
-            s7objectMachine.start();
-        }
+    public void plcStart() throws Exception {
+        Machine machine = machineMapper.selectById(thisMachine.getId());
+        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
+        s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
         PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-        PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
-        PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
-        PlcParameterInfo plcRequestType =plcParameterObject.getPlcParameter("plcRequestType");//PLC璇锋眰
-
-        PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
-        PlcParameterInfo mesSendId =plcParameterObject.getPlcParameter("mesSendID");//鍙戦�両D
-        PlcParameterInfo length =plcParameterObject.getPlcParameter("length");//闀�
-        PlcParameterInfo width =plcParameterObject.getPlcParameter("width");//瀹�
-        PlcParameterInfo mesSendType =plcParameterObject.getPlcParameter("mesSendType");//  鎵爜1   涓嶆壂鐮�2
-
-        String scan_id="";
-        if (machine.getIsLog()>0){
-            s7objectMachine.consoleLogInfo();
-        }
-        if ("0".equals(plcRequestType.getValue())&&!"0".equals(mesSendType.getValue())) {
-            //鍙戦�佸瓧缃�0
-            log.info("1.鍙戦�佺被鍨嬪瓧缃浂,娓呴櫎涓婃鍙戦�佺殑绫诲瀷鏁版嵁{}->0",mesSendType.getValue());
-            s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0);
-
+        if (plcParameterObject == null) {
+            s7objectMachine.plccontrol.closeS7client();
             return;
         }
-        if ("0".equals(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) {
-            //鍙戦�佸瓧缃�0
-            int finishCount=taskingService.finishMachineTask(machine);
-            nullMachine(machine);
-            log.info("2.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
-                    ,finishCount
-                    ,length.getValue()
-                    ,width.getValue()
-                    ,mesSendId.getValue()
-                    ,mesSend.getValue());
-            s7objectMachine.plccontrol.writeWord(length.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(width.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
-            return;
-        }
-        if ("1".equals(plcRequestType.getValue())&&"0".equals(mesSendType.getValue())) {
-            //鍙戦�佺被鍨�   1鎵爜  2涓嶆壂鐮�
-            int type=machine.getMode()==1?2:1;
-            log.info("3.鍙戦�佺被鍨嬫暟鎹�0->{}",mesSendType.getValue());
-            s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type);
-            return;
-        }
-        List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-        if(("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())
-                &&"寮�宸�".equals(machine.getState())
-                &&taskingCount.size()<machine.getMaxTaskCount())){
-            Tasking tasking;
-            if(machine.getMode()==1){
-                //鏍囧噯妯″紡
-                tasking=taskingService.startMachineTask(machine);
-            }else{
-                //瀹氬埗妯″紡
-                String PlcRequestID_=plcRequestID.getValue();
-                //String PlcRequestID_=",,46403118";
-                scan_id= PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",")+1);
-                tasking=taskingService.startScanIdMachineTask(machine,scan_id);//涓嶇椤哄簭锛岀洿鎺ユ壘浠庣(杈规満鎵爜鍚庡埌缈荤墖鍙扮殑鏁版嵁
+        try {
+            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
+            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
+            PlcParameterInfo plcRequestType = plcParameterObject.getPlcParameter("plcRequestType");//PLC璇锋眰
+
+            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
+            PlcParameterInfo mesSendId = plcParameterObject.getPlcParameter("mesSendID");//鍙戦�両D
+            PlcParameterInfo length = plcParameterObject.getPlcParameter("length");//闀�
+            PlcParameterInfo width = plcParameterObject.getPlcParameter("width");//瀹�
+            PlcParameterInfo mesSendType = plcParameterObject.getPlcParameter("mesSendType");//  鎵爜1   涓嶆壂鐮�2
+
+            String scan_id = "";
+            if (machine.getIsLog() > 0) {
+                s7objectMachine.consoleLogInfo();
             }
-            if(tasking!=null){
-                log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{}"
-                        ,tasking.getGlassId(),tasking.getProgramId()
-                        ,tasking.getLength().intValue(),tasking.getWidth().intValue(),1);
-                s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue());
-                s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue());
-                s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString());
-                s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
-                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                String sendRecord=df.format(new Date())+"  "+
-                        tasking.getGlassId()+"-"+
-                        tasking.getLength()+"-"+
-                        tasking.getWidth();
-                if (sendRecords.size()>7){
-                    sendRecords.remove(0);
-                }
-                Map sendContentMap=new HashMap();
-                sendContentMap.put("sendContent",sendRecord);
-                sendRecords.add(sendContentMap);
-                nullMachine(machine);
+            if ("0".equals(plcRequestType.getValue()) && !"0".equals(mesSendType.getValue())) {
+                //鍙戦�佸瓧缃�0
+                log.info("1.鍙戦�佺被鍨嬪瓧缃浂,娓呴櫎涓婃鍙戦�佺殑绫诲瀷鏁版嵁{}->0", mesSendType.getValue());
+                s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0);
+
                 return;
-            }else if(!scan_id.isEmpty()){
-                taskingService.scanMachineAdd(machine,scan_id);
             }
-        }else if("0".equals(plcRequest.getValue())){
-            nullMachine(machine);
+            if ("0".equals(plcRequest.getValue()) && !"0".equals(mesSend.getValue())) {
+                //鍙戦�佸瓧缃�0
+                int finishCount = taskingService.finishMachineTask(machine);
+                nullMachine(machine);
+                log.info("2.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
+                        , finishCount
+                        , length.getValue()
+                        , width.getValue()
+                        , mesSendId.getValue()
+                        , mesSend.getValue());
+                s7objectMachine.plccontrol.writeWord(length.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(width.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
+                return;
+            }
+            if ("1".equals(plcRequestType.getValue()) && "0".equals(mesSendType.getValue())) {
+                //鍙戦�佺被鍨�   1鎵爜  2涓嶆壂鐮�
+                int type = machine.getMode() == 1 ? 2 : 1;
+                log.info("3.鍙戦�佺被鍨嬫暟鎹�0->{}", mesSendType.getValue());
+                s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type);
+                return;
+            }
+            List<Tasking> taskingCount = taskingService.findMachineWorkStateTask(machine, "姝e湪宸ヤ綔");
+            if (("1".equals(plcRequest.getValue()) && "0".equals(mesSend.getValue())
+                    && "寮�宸�".equals(machine.getState())
+                    && taskingCount.size() < machine.getMaxTaskCount())) {
+                Tasking tasking;
+                if (machine.getMode() == 1) {
+                    //鏍囧噯妯″紡
+                    tasking = taskingService.startMachineTask(machine);
+                } else {
+                    //瀹氬埗妯″紡
+                    String PlcRequestID_ = plcRequestID.getValue();
+                    //String PlcRequestID_=",,46403118";
+                    scan_id = PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",") + 1);
+                    tasking = taskingService.startScanIdMachineTask(machine, scan_id);//涓嶇椤哄簭锛岀洿鎺ユ壘浠庣(杈规満鎵爜鍚庡埌缈荤墖鍙扮殑鏁版嵁
+                }
+                if (tasking != null) {
+                    log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{}"
+                            , tasking.getGlassId(), tasking.getProgramId()
+                            , tasking.getLength().intValue(), tasking.getWidth().intValue(), 1);
+                    s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue());
+                    s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue());
+                    s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString());
+                    s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
+                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String sendRecord = df.format(new Date()) + "  " +
+                            tasking.getGlassId() + "-" +
+                            tasking.getLength() + "-" +
+                            tasking.getWidth();
+                    if (sendRecords.size() > 7) {
+                        sendRecords.remove(0);
+                    }
+                    Map sendContentMap = new HashMap();
+                    sendContentMap.put("sendContent", sendRecord);
+                    sendRecords.add(sendContentMap);
+                    nullMachine(machine);
+                    return;
+                } else if (!scan_id.isEmpty()) {
+                    taskingService.scanMachineAdd(machine, scan_id);
+                }
+            } else if ("0".equals(plcRequest.getValue())) {
+                nullMachine(machine);
+            }
+        } catch (Exception e) {
+            s7objectMachine.plccontrol.closeS7client();
+            log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
         }
-
     }
 
 
     public void nullMachine(Machine machine) {
-        if (!"".equals(machine.getRemark())){
+        if (!"".equals(machine.getRemark())) {
             machine.setRemark("");
             machineMapper.updateById(machine);
         }
     }
+
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            } catch (Exception e) {
+                log.info("{}", e.getMessage());
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java
index 325f2b7..154c8b2 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java
@@ -15,69 +15,72 @@
 import java.util.Map;
 
 @Slf4j
-public class MachineLamination extends Thread{
+public class MachineLamination extends Thread {
 
 
     private MachineMapper machineMapper;
     private TaskingService taskingService;
     private S7objectMachine s7objectMachine;
     public Machine thisMachine;
-    public MachineLamination(Machine machine, MachineMapper machineMapper, TaskingService taskingService){
+
+    public MachineLamination(Machine machine, MachineMapper machineMapper, TaskingService taskingService) {
         this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
 
-    public void plcStart() {
-            Machine machine=machineMapper.selectById(thisMachine.getId());
-            if (s7objectMachine==null){
-                s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200);
-                s7objectMachine.start();
-            }
-            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-            PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
-            PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
-            PlcParameterInfo lengthOutOfService =plcParameterObject.getPlcParameter("length");//闀�
-            PlcParameterInfo widthOutOfService =plcParameterObject.getPlcParameter("width");//瀹�
-            PlcParameterInfo markingMode =plcParameterObject.getPlcParameter("thickness");//鍘氬害
+    public void plcStart()throws Exception {
+        Machine machine = machineMapper.selectById(thisMachine.getId());
 
-            PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
-            PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
-            PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
-            if (machine.getIsLog()>0){
+        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
+        s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
+        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
+        if (plcParameterObject == null) {
+            s7objectMachine.plccontrol.closeS7client();
+            return;
+        }
+        try {
+            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
+            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
+            PlcParameterInfo lengthOutOfService = plcParameterObject.getPlcParameter("length");//闀�
+            PlcParameterInfo widthOutOfService = plcParameterObject.getPlcParameter("width");//瀹�
+            PlcParameterInfo markingMode = plcParameterObject.getPlcParameter("thickness");//鍘氬害
+
+            PlcParameterInfo plcReport = plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
+            PlcParameterInfo mesConfirm = plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
+            PlcParameterInfo mesConfirmID = plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
+            if (machine.getIsLog() > 0) {
                 s7objectMachine.consoleLogInfo();
             }
-            if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) {
+            if ("0".equals(plcRequest.getValue()) && "1".equals(mesSend.getValue())) {
                 //鍙戦�佸瓧缃�0
-                log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{}",mesSend.getValue());
+                log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{}", mesSend.getValue());
                 s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
                 return;
             }
-            if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) {
+            if ("0".equals(plcReport.getValue()) && "1".equals(mesConfirm.getValue())) {
                 log.info("2.纭瀛楃疆闆�");
                 //鍙戦�佸瓧缃�0
                 s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 0);
                 return;
             }
-            if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){
-
-
-                int finishCount=taskingService.finishMachineTask(machine);
+            if ("1".equals(plcReport.getValue()) && "0".equals(mesConfirm.getValue())) {
+                int finishCount = taskingService.finishMachineTask(machine);
                 log.info("3銆佷换鍔″畬鎴�");
-                if(finishCount>0){//鏈変换鍔�
+                if (finishCount > 0) {//鏈変换鍔�
                     s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 1);
                     return;
                 }
                 return;
             }
-            List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-            if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())
-                    &&"寮�宸�".equals(machine.getState())
-                    &&taskingCount.size()<machine.getMaxTaskCount()){
+            List<Tasking> taskingCount = taskingService.findMachineWorkStateTask(machine, "姝e湪宸ヤ綔");
+            if ("1".equals(plcRequest.getValue()) && "0".equals(mesSend.getValue())
+                    && "寮�宸�".equals(machine.getState())
+                    && taskingCount.size() < machine.getMaxTaskCount()) {
 
-                Tasking tasking=taskingService.startMachineTask(machine);
-                if(tasking!=null){
-                    log.info("4銆佸彂閫佹暟鎹�:{},{},{}",tasking.getLength().intValue(),tasking.getWidth().intValue(),1);
+                Tasking tasking = taskingService.startMachineTask(machine);
+                if (tasking != null) {
+                    log.info("4銆佸彂閫佹暟鎹�:{},{},{}", tasking.getLength().intValue(), tasking.getWidth().intValue(), 1);
                     s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());//x
                     s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y
 
@@ -85,16 +88,23 @@
                     return;
                 }
             }
+        } catch (Exception e) {
+            s7objectMachine.plccontrol.closeS7client();
+            log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
         }
+
+    }
 
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            } catch (Exception e) {
+                log.info("{}", e.getMessage());
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
index c5ae0d7..0d341b9 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
@@ -47,7 +47,7 @@
         this.lineConfigurationService = lineConfigurationService;
     }
 
-    public void plcStart() {
+    public void plcStart() throws Exception{
         ModbusTcp modbusTcp1 = null;
         try {
             Machine machine = machineMapper.selectById(thisMachine.getId());
@@ -168,12 +168,14 @@
 
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            }catch (Exception e) {
+                throw new RuntimeException(e);
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
index 50af765..80482aa 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
@@ -14,7 +14,7 @@
 import java.util.*;
 
 @Slf4j
-public class MachineMarking extends Thread{
+public class MachineMarking extends Thread {
 
 
     private MachineMapper machineMapper;
@@ -25,46 +25,47 @@
     //public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
     public Machine thisMachine;
-    public MachineMarking(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+
+    public MachineMarking(Machine machine, MachineMapper machineMapper, TaskingService taskingService) {
         this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
 
-    public void plcStart() {
-            //Long machineId=12L;
-            Machine machine=machineMapper.selectById(thisMachine.getId());
-//            S7objectMachine s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500);
-//            s7objectMachine.start();
-            if (s7objectMachine==null){
-                s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1500);
-                s7objectMachine.start();
-            }
-            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-            PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
-            PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
-            PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
-            PlcParameterInfo isMark =plcParameterObject.getPlcParameter("isMark");//鍙戦�両D銆�0 涓嶆墦鏍囷紝1鏍囧噯妯″紡锛�2瀹氬埗妯″紡銆�
-            PlcParameterInfo drawingMark =plcParameterObject.getPlcParameter("drawingMark");//鎵撴爣鍥剧焊鍦板潃
-            PlcParameterInfo lengthOutOfService =plcParameterObject.getPlcParameter("length(OutOfService)");//闀�
-            PlcParameterInfo widthOutOfService =plcParameterObject.getPlcParameter("width(OutOfService)");//瀹�
-            PlcParameterInfo markingMode =plcParameterObject.getPlcParameter("markingMode");//
+    public void plcStart()throws Exception {
+        Machine machine = machineMapper.selectById(thisMachine.getId());
+        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1500);
+        s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
+        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
+        if (plcParameterObject == null) {
+            s7objectMachine.plccontrol.closeS7client();
+            return;
+        }
+        try {
+            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
+            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
+            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
+            PlcParameterInfo isMark = plcParameterObject.getPlcParameter("isMark");//鍙戦�両D銆�0 涓嶆墦鏍囷紝1鏍囧噯妯″紡锛�2瀹氬埗妯″紡銆�
+            PlcParameterInfo drawingMark = plcParameterObject.getPlcParameter("drawingMark");//鎵撴爣鍥剧焊鍦板潃
+            PlcParameterInfo lengthOutOfService = plcParameterObject.getPlcParameter("length(OutOfService)");//闀�
+            PlcParameterInfo widthOutOfService = plcParameterObject.getPlcParameter("width(OutOfService)");//瀹�
+            PlcParameterInfo markingMode = plcParameterObject.getPlcParameter("markingMode");//
 
-            PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
-            PlcParameterInfo plcReportID =plcParameterObject.getPlcParameter("plcReportID");//姹囨姤ID
-            PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
-            PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
-            if (machine.getIsLog()>0){
+            PlcParameterInfo plcReport = plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
+            PlcParameterInfo plcReportID = plcParameterObject.getPlcParameter("plcReportID");//姹囨姤ID
+            PlcParameterInfo mesConfirm = plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
+            PlcParameterInfo mesConfirmID = plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
+            if (machine.getIsLog() > 0) {
                 s7objectMachine.consoleLogInfo();
             }
-            if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) {
+            if ("0".equals(plcRequest.getValue()) && "1".equals(mesSend.getValue())) {
                 //鍙戦�佸瓧缃�0
                 log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
-                        ,markingMode.getValue()
-                        ,isMark.getValue()
-                        ,lengthOutOfService.getValue()
-                        ,widthOutOfService.getValue()
-                        ,mesSend.getValue());
+                        , markingMode.getValue()
+                        , isMark.getValue()
+                        , lengthOutOfService.getValue()
+                        , widthOutOfService.getValue()
+                        , mesSend.getValue());
                 //S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(),"");
                 s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), 0);
                 s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), 0);
@@ -73,34 +74,34 @@
                 s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
                 return;
             }
-            if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) {
+            if ("0".equals(plcReport.getValue()) && "1".equals(mesConfirm.getValue())) {
                 log.info("2.纭瀛楃疆闆�");
                 //鍙戦�佸瓧缃�0
                 s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 0);
                 return;
             }
-            if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){
-                int finishCount=taskingService.finishMachineTask(machine);
+            if ("1".equals(plcReport.getValue()) && "0".equals(mesConfirm.getValue())) {
+                int finishCount = taskingService.finishMachineTask(machine);
                 log.info("3銆佷换鍔″畬鎴�");
-                if(finishCount>0){//鏈変换鍔�
+                if (finishCount > 0) {//鏈変换鍔�
                     s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 1);
                     return;
                 }
                 return;
             }
-            List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-            if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())&& !plcRequestID.getValue().isEmpty()
-                    &&"寮�宸�".equals(machine.getState())
-                    &&taskingCount.size()<machine.getMaxTaskCount()){
-                Tasking tasking=taskingService.startMachineTask(machine);
-                if(tasking!=null){
+            List<Tasking> taskingCount = taskingService.findMachineWorkStateTask(machine, "姝e湪宸ヤ綔");
+            if ("1".equals(plcRequest.getValue()) && "0".equals(mesSend.getValue()) && !plcRequestID.getValue().isEmpty()
+                    && "寮�宸�".equals(machine.getState())
+                    && taskingCount.size() < machine.getMaxTaskCount()) {
+                Tasking tasking = taskingService.startMachineTask(machine);
+                if (tasking != null) {
                     //妯″紡锛�1瀹氬埗  0 鎵归噺      鏄惁鎵撴爣锛�0涓嶆墦鏍�   1鎵撴爣
-                    int isMark_=(tasking.getDrawingMarking()==null||tasking.getDrawingMarking().isEmpty())?0:1;
-                    int isMarkingMode_="瀹氬埗".equals(tasking.getTaskType()) ?1:0;
+                    int isMark_ = (tasking.getDrawingMarking() == null || tasking.getDrawingMarking().isEmpty()) ? 0 : 1;
+                    int isMarkingMode_ = "瀹氬埗".equals(tasking.getTaskType()) ? 1 : 0;
                     log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{},{}"
-                            ,tasking.getProgramId()
-                            ,tasking.getLength().intValue(),tasking.getWidth().intValue(),isMark_,isMarkingMode_,1);
-                    if(isMark_==1){
+                            , tasking.getProgramId()
+                            , tasking.getLength().intValue(), tasking.getWidth().intValue(), isMark_, isMarkingMode_, 1);
+                    if (isMark_ == 1) {
                         s7objectMachine.plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId());
                     }
                     s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y
@@ -111,16 +112,23 @@
                     return;
                 }
             }
+        } catch (Exception e) {
+            s7objectMachine.plccontrol.closeS7client();
+            log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
         }
+
+    }
 
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            } catch (Exception e) {
+                log.info("{}", e.getMessage());
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
index d93d27d..68abf6d 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
@@ -14,7 +14,7 @@
 import java.util.*;
 
 @Slf4j
-public class MachineRotate extends Thread{
+public class MachineRotate extends Thread {
 
 
     private MachineMapper machineMapper;
@@ -24,112 +24,121 @@
     public List<Map> sendRecords = new ArrayList<>();
     public Machine thisMachine;
 
-    public MachineRotate(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+    public MachineRotate(Machine machine, MachineMapper machineMapper, TaskingService taskingService) {
         this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
-    public void plcStart() {
+
+    public void plcStart() throws Exception {
         //鏃嬭浆鍙�
-        //Long machineId=20L;
-        Machine machine=machineMapper.selectById(thisMachine.getId());
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200);
-            s7objectMachine.start();
-        }
+        Machine machine = machineMapper.selectById(thisMachine.getId());
+        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
+        s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
         PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-        PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
-        PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
-        PlcParameterInfo plcRequestType =plcParameterObject.getPlcParameter("plcRequestType");//PLC璇锋眰
-
-        PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
-        PlcParameterInfo mesSendId =plcParameterObject.getPlcParameter("mesSendID");//鍙戦�両D
-        PlcParameterInfo length =plcParameterObject.getPlcParameter("length");//闀�
-        PlcParameterInfo width =plcParameterObject.getPlcParameter("width");//瀹�
-        PlcParameterInfo rotateType =plcParameterObject.getPlcParameter("rotateType");//鏃嬭浆绫诲瀷
-
-        PlcParameterInfo mesSendType =plcParameterObject.getPlcParameter("mesSendType");//  鎵爜1   涓嶆壂鐮�2
-        String scan_id="";
-        if (machine.getIsLog()>0){
-            s7objectMachine.consoleLogInfo();
-        }
-        if ("0".equals(plcRequestType.getValue())&&!"0".equals(mesSendType.getValue())) {
-            //鍙戦�佸瓧缃�0
-            log.info("1.鍙戦�佺被鍨嬪瓧缃浂,娓呴櫎涓婃鍙戦�佺殑绫诲瀷鏁版嵁{}->0",mesSendType.getValue());
-            s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0);
+        if (plcParameterObject == null) {
+            s7objectMachine.plccontrol.closeS7client();
             return;
         }
-        if ("0".equals(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) {
-            //鍙戦�佸瓧缃�0
-            int finishCount=taskingService.finishMachineTask(machine);
-            nullMachine(machine);
-            log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
-                    ,finishCount
-                    ,length.getValue()
-                    ,width.getValue()
-                    ,mesSendId.getValue()
-                    ,mesSend.getValue());
-            s7objectMachine.plccontrol.writeWord(length.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(width.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
+        try {
 
-            return;
-        }
-        if ("1".equals(plcRequestType.getValue())&&"0".equals(mesSendType.getValue())) {
-            //鍙戦�佺被鍨�   1鎵爜  2涓嶆壂鐮�
-            int type=machine.getMode()==1?2:1;
-            log.info("3.鍙戦�佺被鍨嬫暟鎹�0->{}",mesSendType.getValue());
-            s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type);
-            return;
-        }
-        List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-        if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())
-                &&"寮�宸�".equals(machine.getState())
-                &&taskingCount.size()<machine.getMaxTaskCount()){
-            Tasking tasking;
-            if(machine.getMode()==1){
-                //鏍囧噯妯″紡
-                tasking=taskingService.startMachineTask(machine);
-            }else{
-                //瀹氬埗妯″紡
-                String PlcRequestID_=plcRequestID.getValue();
-                scan_id= PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",")+1);
-                //鏍囪褰撳墠宸ュ簭 浠ュ墠鐨勭幓鐠� 鐩存帴鍒板綋鍓嶅伐搴�
-                tasking=taskingService.startScanIdMachineTask(machine,scan_id);//涓嶇椤哄簭锛岀洿鎺ユ壘浠庣炕鐗囧彴鎵爜鍚庡埌鏃嬭浆鍙扮殑鏁版嵁
+            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
+            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
+            PlcParameterInfo plcRequestType = plcParameterObject.getPlcParameter("plcRequestType");//PLC璇锋眰
+
+            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
+            PlcParameterInfo mesSendId = plcParameterObject.getPlcParameter("mesSendID");//鍙戦�両D
+            PlcParameterInfo length = plcParameterObject.getPlcParameter("length");//闀�
+            PlcParameterInfo width = plcParameterObject.getPlcParameter("width");//瀹�
+            PlcParameterInfo rotateType = plcParameterObject.getPlcParameter("rotateType");//鏃嬭浆绫诲瀷
+
+            PlcParameterInfo mesSendType = plcParameterObject.getPlcParameter("mesSendType");//  鎵爜1   涓嶆壂鐮�2
+            String scan_id = "";
+            if (machine.getIsLog() > 0) {
+                s7objectMachine.consoleLogInfo();
             }
-            if(tasking!=null){
-                log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{}"
-                        ,tasking.getGlassId(),tasking.getProgramId()
-                        ,tasking.getLength().intValue(),tasking.getWidth().intValue(),1);
-                s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue());
-                s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue());
-                s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString());
-                s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), machine.getRotateMode());
-                s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
-                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                String sendRecord=df.format(new Date())+"  "+
-                        tasking.getGlassId()+"-"+
-                        tasking.getLength()+"-"+
-                        tasking.getWidth();
-                if (sendRecords.size()>7){
-                    sendRecords.remove(0);
-                }
+            if ("0".equals(plcRequestType.getValue()) && !"0".equals(mesSendType.getValue())) {
+                //鍙戦�佸瓧缃�0
+                log.info("1.鍙戦�佺被鍨嬪瓧缃浂,娓呴櫎涓婃鍙戦�佺殑绫诲瀷鏁版嵁{}->0", mesSendType.getValue());
+                s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0);
+                return;
+            }
+            if ("0".equals(plcRequest.getValue()) && !"0".equals(mesSend.getValue())) {
+                //鍙戦�佸瓧缃�0
+                int finishCount = taskingService.finishMachineTask(machine);
                 nullMachine(machine);
-                Map sendContentMap=new HashMap();
-                sendContentMap.put("sendContent",sendRecord);
-                sendRecords.add(sendContentMap);
-            }else if(!scan_id.isEmpty()){
-                taskingService.scanMachineAdd(machine,scan_id);
+                log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
+                        , finishCount
+                        , length.getValue()
+                        , width.getValue()
+                        , mesSendId.getValue()
+                        , mesSend.getValue());
+                s7objectMachine.plccontrol.writeWord(length.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(width.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), 0);
+                s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
+
+                return;
             }
-        }else if("0".equals(plcRequest.getValue())){
-            nullMachine(machine);
+            if ("1".equals(plcRequestType.getValue()) && "0".equals(mesSendType.getValue())) {
+                //鍙戦�佺被鍨�   1鎵爜  2涓嶆壂鐮�
+                int type = machine.getMode() == 1 ? 2 : 1;
+                log.info("3.鍙戦�佺被鍨嬫暟鎹�0->{}", mesSendType.getValue());
+                s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type);
+                return;
+            }
+            List<Tasking> taskingCount = taskingService.findMachineWorkStateTask(machine, "姝e湪宸ヤ綔");
+            if ("1".equals(plcRequest.getValue()) && "0".equals(mesSend.getValue())
+                    && "寮�宸�".equals(machine.getState())
+                    && taskingCount.size() < machine.getMaxTaskCount()) {
+                Tasking tasking;
+                if (machine.getMode() == 1) {
+                    //鏍囧噯妯″紡
+                    tasking = taskingService.startMachineTask(machine);
+                } else {
+                    //瀹氬埗妯″紡
+                    String PlcRequestID_ = plcRequestID.getValue();
+                    scan_id = PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",") + 1);
+                    //鏍囪褰撳墠宸ュ簭 浠ュ墠鐨勭幓鐠� 鐩存帴鍒板綋鍓嶅伐搴�
+                    tasking = taskingService.startScanIdMachineTask(machine, scan_id);//涓嶇椤哄簭锛岀洿鎺ユ壘浠庣炕鐗囧彴鎵爜鍚庡埌鏃嬭浆鍙扮殑鏁版嵁
+                }
+                if (tasking != null) {
+                    log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{}"
+                            , tasking.getGlassId(), tasking.getProgramId()
+                            , tasking.getLength().intValue(), tasking.getWidth().intValue(), 1);
+                    s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue());
+                    s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue());
+                    s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString());
+                    s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), machine.getRotateMode());
+                    s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
+                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String sendRecord = df.format(new Date()) + "  " +
+                            tasking.getGlassId() + "-" +
+                            tasking.getLength() + "-" +
+                            tasking.getWidth();
+                    if (sendRecords.size() > 7) {
+                        sendRecords.remove(0);
+                    }
+                    nullMachine(machine);
+                    Map sendContentMap = new HashMap();
+                    sendContentMap.put("sendContent", sendRecord);
+                    sendRecords.add(sendContentMap);
+                } else if (!scan_id.isEmpty()) {
+                    taskingService.scanMachineAdd(machine, scan_id);
+                }
+            } else if ("0".equals(plcRequest.getValue())) {
+                nullMachine(machine);
+            }
+        } catch (Exception e) {
+            s7objectMachine.plccontrol.closeS7client();
+            log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
         }
 
     }
+
     public void nullMachine(Machine machine) {
-        if (!"".equals(machine.getRemark())){
+        if (!"".equals(machine.getRemark())) {
             machine.setRemark("");
             machineMapper.updateById(machine);
         }
@@ -137,12 +146,14 @@
 
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            }catch (Exception e) {
+                log.info("{}", e.getMessage());
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineSilkScreen.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineSilkScreen.java
index a7fc9e1..c6c6d23 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineSilkScreen.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineSilkScreen.java
@@ -28,7 +28,7 @@
         this.taskingService = taskingService;
     }
 
-    public void plcStart() {
+    public void plcStart() throws Exception{
             Machine machine=machineMapper.selectById(thisMachine.getId());
             String fileName=machine.getFileName();
             ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),fileName);
@@ -192,7 +192,6 @@
             } catch (Exception e) {
                 log.info("浜や簰閫昏緫閿欒");
             }
-
             modbusTcp1.close();
             //log.info("鏃犲彲鎵ц鐨勬潯浠�");
         }
@@ -200,12 +199,14 @@
 
     @Override
     public void run() {
-        while (this != null) {
+        while (true) {
             try {
                 Thread.sleep(1000);
                 plcStart();
             } catch (InterruptedException e) {
                 e.printStackTrace();
+            }catch (Exception e) {
+                throw new RuntimeException(e);
             }
         }
     }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineThread.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineThread.java
index ac2b1b8..eaa9c2f 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineThread.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineThread.java
@@ -43,22 +43,6 @@
     public Long machineId = 2L;
     public List<Map> sendRecords = new ArrayList<>();
 
-//    public void plcStart1(PlcAgreement plcAgreement,String zuKey) {
-//        //閫昏緫缁� 锛氳姹傜粍锛屽畬鎴愮粍锛屽叾浠栫粍
-//        //List<Map<String,String>> map=new ArrayList<>();//閫昏緫缁�
-//        Map<String,Map<String,Map<String,String>>> map=new HashMap<>();//璇锋眰閫昏緫缁�
-
-//        Map<String,Map<String,String>> zuMap=map.get(zuKey);
-//
-//        for(String key:map.keySet()){
-//            boolean istrue=false;
-//            if(plcAgreement.getPlcParameter(key).getValueString()==map.get(key)){
-//                istrue=true;
-//            }
-//            map.put(key,plcAgreement.getPlcParameter(key).getValueString());
-//        }
-//
-//    }
 
     public void plcStart() {
         Machine machine=machineMapper.selectById(machineId);
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml
index c5aea94..bbe1e48 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml
@@ -9,16 +9,16 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-#        salve_JomooKBB:
-#          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
-#          username: sa
-#          password: beibo.123/
-#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
         salve_JomooKBB:
-          url: jdbc:sqlserver://172.18.19.85:1433;databasename=JomooKBB
-          username: thok
-          password: jomoo@123
+          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
+          username: sa
+          password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#        salve_JomooKBB:
+#          url: jdbc:sqlserver://172.18.19.85:1433;databasename=JomooKBB
+#          username: thok
+#          password: jomoo@123
+#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
   cloud:
     nacos:
       discovery:
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml
index c5aea94..bbe1e48 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml
@@ -9,16 +9,16 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-#        salve_JomooKBB:
-#          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
-#          username: sa
-#          password: beibo.123/
-#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
         salve_JomooKBB:
-          url: jdbc:sqlserver://172.18.19.85:1433;databasename=JomooKBB
-          username: thok
-          password: jomoo@123
+          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
+          username: sa
+          password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#        salve_JomooKBB:
+#          url: jdbc:sqlserver://172.18.19.85:1433;databasename=JomooKBB
+#          username: thok
+#          password: jomoo@123
+#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
   cloud:
     nacos:
       discovery:
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original
index c25bc15..f0eec53 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original
Binary files differ
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index e2390b9..2b469c8 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,11 +1,15 @@
 com\mes\energy\entity\EnergyConsumption.class
 com\mes\md\mapper\TaskingMapper.class
 com\mes\md\entity\Machine.class
+com\mes\plannedAmount\service\impl\PlannedAmountImpl.class
+com\mes\quantity\service\QuantityService.class
+com\mes\yield\controller\YieldController.class
 com\mes\md\mapper\RoleMapper.class
 com\mes\md\service\TaskingLogService.class
 com\mes\md\mapper\KBBTProgramsDeviceStatusLogBPMapper.class
 com\mes\md\service\impl\ProjectServiceImpl.class
 com\mes\md\service\impl\OrderOriginalPieceServiceImpl.class
+com\mes\plannedAmount\controller\PlannedAmountController.class
 com\mes\md\service\AccountService.class
 com\mes\DeviceInteractionModuleApplication.class
 com\mes\md\service\ProjectService.class
@@ -21,11 +25,15 @@
 com\mes\md\mapper\KBBTJPDrawingBPMapper.class
 com\mes\md\controller\GlassInfoController.class
 com\mes\md\service\KBBTProgramsOperationLogBPService.class
+com\mes\yield\service\impl\YieldServiceImpl.class
 com\mes\md\mapper\PageMapper.class
 com\mes\md\service\ProjectLogService.class
 com\mes\md\entity\Project.class
+com\mes\quantity\controller\QuantityController.class
+com\mes\quantity\entity\Quantity.class
 com\mes\md\mapper\PrimitiveTaskMapper.class
 com\mes\md\service\impl\EdgeGrindingLogServiceImpl.class
+com\mes\yield\mapper\YieldMapper.class
 com\mes\job\AddTask.class
 com\mes\md\entity\KBBTProgramsOperationLogBP.class
 com\mes\md\entity\LineConfiguration.class
@@ -37,9 +45,11 @@
 com\mes\edgstoragecage\service\EdgStorageCageService.class
 com\mes\common\CommunicationProtocol.class
 com\mes\md\entity\Line.class
+com\mes\utilization\service\impl\UtilizationServiceImpl.class
 com\mes\plcTaskThread\MachineEdging.class
 com\mes\md\entity\EdgeGrindingLog.class
 com\mes\md\service\OrderOriginalPieceService.class
+com\mes\yield\service\YieldService.class
 com\mes\md\service\impl\GlassInfoServiceImpl.class
 com\mes\mechanicalMonitor\service\MechanicalMonitorService.class
 com\mes\plcTaskThread\MachineSilkScreen.class
@@ -53,6 +63,7 @@
 com\mes\md\mapper\WorkTaskDetailMapper.class
 com\mes\md\service\LineService.class
 com\mes\md\service\impl\PageServiceImpl.class
+com\mes\quantity\mapper\QuantityMapper.class
 com\mes\md\entity\TaskingLog.class
 com\mes\md\service\impl\WorkTaskDetailServiceImpl.class
 com\mes\md\service\impl\TaskLogServiceImpl.class
@@ -62,6 +73,7 @@
 com\mes\md\service\LineConfigurationService.class
 com\mes\md\entity\GlassInfo.class
 com\mes\md\service\GlassInfoService.class
+com\mes\utilization\entity\Utilization.class
 com\mes\md\entity\Page.class
 com\mes\job\PLCCleaning.class
 com\mes\md\controller\RoleController.class
@@ -74,6 +86,7 @@
 com\mes\md\controller\OrderOriginalPieceController.class
 com\mes\md\controller\ProjectController.class
 com\mes\md\entity\ProjectLog.class
+com\mes\yield\entity\Yield.class
 com\mes\md\service\EdgeGrindingLogService.class
 com\mes\AppRunnerConfig.class
 com\mes\plcTaskThread\MachineFlipSlice.class
@@ -98,12 +111,16 @@
 com\mes\md\service\impl\KBBTJPDrawingBPServiceImpl.class
 com\mes\md\mapper\ProjectMapper.class
 com\mes\energy\service\EnergyConsumptionService.class
+com\mes\common\S7objectMachine3.class
 com\mes\md\controller\EquipmentLogController.class
 com\mes\md\controller\TaskingLogController.class
+com\mes\plannedAmount\mapper\PlannedAmountMapper.class
 com\mes\common\SmbTool.class
 com\mes\md\mapper\ProjectLogMapper.class
+com\mes\plannedAmount\service\PlannedAmountService.class
 com\mes\plcTaskThread\MachineMarking.class
 com\mes\md\mapper\OrderOriginalPieceMapper.class
+com\mes\plannedAmount\entity\PlannedAmount.class
 com\mes\edgstoragecage\entity\EdgStorageCageDetails.class
 com\mes\md\service\impl\RoleServiceImpl.class
 com\mes\md\controller\MachineController.class
@@ -112,7 +129,7 @@
 com\mes\md\service\impl\LineServiceImpl.class
 com\mes\md\mapper\LineMapper.class
 com\mes\md\mapper\EdgeGrindingLogMapper.class
-com\mes\common\S7objectMarking.class
+com\mes\utilization\service\UtilizationService.class
 com\mes\md\entity\KBBTProgramsDeviceOlnlineLogBP.class
 com\mes\md\entity\PrimitiveTask.class
 com\mes\mechanicalMonitor\controller\MechanicalMonitorController.class
@@ -122,11 +139,11 @@
 com\mes\job\MachineTask.class
 com\mes\md\entity\Menu.class
 com\mes\md\service\impl\LineConfigurationServiceImpl.class
+com\mes\plcTaskThread\MachineDispensing.class
 com\mes\common\S7object.class
 com\mes\md\mapper\MenuMapper.class
 com\mes\md\service\RoleMenuService.class
 com\mes\edgstoragecage\service\impl\EdgStorageCageServiceImpl.class
-com\mes\common\S7objectFlipSlice.class
 com\mes\edgstoragecage\mapper\EdgStorageCageMapper.class
 com\mes\energy\service\impl\EnergyConsumptionServiceImpl.class
 com\mes\md\service\impl\ProjectLogServiceImpl.class
@@ -134,11 +151,14 @@
 com\mes\md\service\TaskingService.class
 com\mes\plcTaskThread\MachineThread.class
 com\mes\md\service\RoleService.class
+com\mes\quantity\service\impl\QuantityServiceImpl.class
 com\mes\md\service\MachineService.class
 com\mes\md\service\PageService.class
+com\mes\utilization\controller\UtilizationController.class
 com\mes\md\controller\ProjectLogController.class
 com\mes\md\mapper\GlassInfoMapper.class
 com\mes\md\service\impl\KBBTProgramsOperationLogBPServiceImpl.class
 com\mes\md\entity\Tasking.class
+com\mes\utilization\mapper\UtilizationMapper.class
 com\mes\mechanicalMonitor\service\impl\MechanicalMonitorServiceImpl.class
 com\mes\md\service\impl\MachineServiceImpl.class
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 838ebb4..ab3093d 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,5 +1,6 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\LineConfiguration.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\mapper\EdgStorageCageMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\quantity\service\QuantityService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\CommunicationProtocol.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\DeviceInteractionModuleApplication.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Role.java
@@ -9,9 +10,11 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\MenuController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectLogMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\GlassInfoServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\yield\controller\YieldController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\WorkTaskDetailController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTProgramsOperationLogBPMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\MachineTask.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plannedAmount\service\PlannedAmountService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineThread.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\WorkTaskDetailServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\AccountService.java
@@ -23,12 +26,16 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Project.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\PrimitiveTaskServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\service\EdgStorageCageService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\quantity\entity\Quantity.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\EdgeGrindingLog.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTLensSortingMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plannedAmount\entity\PlannedAmount.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskingController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskLogServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskingServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\yield\mapper\YieldMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\LineConfigurationService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\utilization\service\impl\UtilizationServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\AppRunnerConfig.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\AccountMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectMapper.java
@@ -51,7 +58,6 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\energy\entity\EnergyConsumption.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Page.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\mechanicalMonitor\entity\MechanicalMonitor.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectFlipSlice.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineLoad.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCCleaning.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\TaskingLog.java
@@ -60,8 +66,8 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\MachineController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\entity\EdgStorageCageDetails.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineFlipSlice.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plannedAmount\controller\PlannedAmountController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\ProjectLogController.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectMarking.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\WorkTaskDetail.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\energy\service\impl\EnergyConsumptionServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTProgramsDeviceOlnlineLogBPMapper.java
@@ -77,21 +83,26 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\LineMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTLensSorting.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineLamination.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\utilization\controller\UtilizationController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\ProjectLog.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTJPDrawingBP.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\PageService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineMarking.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTProgramsOperationLogBP.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plannedAmount\service\impl\PlannedAmountImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\mechanicalMonitor\service\impl\MechanicalMonitorServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\quantity\controller\QuantityController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\TaskLog.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\GlassInfo.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\OrderOriginalPieceMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\RoleController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\tcpIp.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\WorkTaskDetailService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\quantity\service\impl\QuantityServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\RoleService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\energy\controller\EnergyConsumptionController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\MachineServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\yield\service\impl\YieldServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\mechanicalMonitor\service\MechanicalMonitorService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\entity\EdgStorageCage.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\PrimitiveTaskMapper.java
@@ -103,6 +114,8 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineRotate.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\EdgeGrindingLogService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\PrimitiveTaskService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plannedAmount\mapper\PlannedAmountMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\yield\entity\Yield.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7object.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\EdgeGrindingLogServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\ProjectServiceImpl.java
@@ -113,10 +126,13 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\RoleMenuMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\EquipmentLogMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\EquipmentLog.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\utilization\mapper\UtilizationMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\LineConfigurationMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\LineServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTProgramsDeviceStatusLogBPMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\AccountController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineDispensing.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\utilization\entity\Utilization.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTProgramsDeviceStatusLogBP.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\MenuService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Menu.java
@@ -133,12 +149,16 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskingLogService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\mechanicalMonitor\controller\MechanicalMonitorController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\KBBTProgramsOperationLogBPServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectMachine3.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\ProjectLogServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\TaskingMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\OrderOriginalPieceController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\utilization\service\UtilizationService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectCleaning.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\quantity\mapper\QuantityMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\KBBTProgramsOperationLogBPService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineEdging.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\PrimitiveTask.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\EquipmentLogController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\RoleServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\yield\service\YieldService.java
diff --git a/UI-Project/config.js b/UI-Project/config.js
index 2fd0f18..a653f48 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,13 +1,13 @@
 export default {
 
-  // serverUrl: "localhost:88/api",
-  // serverUrl2: "localhost:88"
+  serverUrl: "localhost:88/api",
+  serverUrl2: "localhost:88"
 
   // serverUrl: "10.36.164.253:88/api",
   //  serverUrl2: "10.36.164.253:88"
 
-  serverUrl: "10.36.164.200:88/api",
-  serverUrl2: "10.36.164.200:88"
+  // serverUrl: "10.36.164.200:88/api",
+  // serverUrl2: "10.36.164.200:88"
 
     // serverUrl2: "127.0.0.1:88"npm
 
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index 160ac61..a7239a7 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -28,6 +28,7 @@
         "vue-print-nb": "^1.7.5",
         "vue-router": "^4.2.4",
         "vue3-print-nb": "^0.1.4",
+        "vxe-pc-ui": "^4.9.14",
         "vxe-table": "^4.5.15",
         "xe-utils": "^3.5.14",
         "xlsx": "^0.18.5"
@@ -546,6 +547,18 @@
         }
       }
     },
+    "node_modules/@vxe-ui/core": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/@vxe-ui/core/-/core-4.2.11.tgz",
+      "integrity": "sha512-Cv0XKTGgFD+CD2MGixxM+k60Y3tFEJYErQj59tuPd0y0HuSFc7sQk0fuXdbcNgxZxtAi4zX3nsDk3kY+/HeAgQ==",
+      "dependencies": {
+        "dom-zindex": "^1.0.6",
+        "xe-utils": "^3.7.8"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
     "node_modules/acorn": {
       "version": "8.12.0",
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
@@ -834,9 +847,9 @@
       "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
     },
     "node_modules/dom-zindex": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
-      "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.6.tgz",
+      "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA=="
     },
     "node_modules/echarts": {
       "version": "5.6.0",
@@ -2057,6 +2070,14 @@
         "vue": "^3.0.5"
       }
     },
+    "node_modules/vxe-pc-ui": {
+      "version": "4.9.14",
+      "resolved": "https://registry.npmmirror.com/vxe-pc-ui/-/vxe-pc-ui-4.9.14.tgz",
+      "integrity": "sha512-YtpLUU6x43UQnjPBMqgewAYdC9w5FGC/ZHO3ZiYl3fWt+HACkJgreJzgfX4z0QkzLdp/6vmDS4rvnH9vpdNmrw==",
+      "dependencies": {
+        "@vxe-ui/core": "^4.2.11"
+      }
+    },
     "node_modules/vxe-table": {
       "version": "4.5.15",
       "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
@@ -2118,9 +2139,9 @@
       }
     },
     "node_modules/xe-utils": {
-      "version": "3.5.14",
-      "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.14.tgz",
-      "integrity": "sha512-Xq6mS8dWwHBQsQUEBXcZYSaBV0KnNLoVWd0vRRDI3nKpbNxfs/LSCK0W21g1edLFnXYfKqg7hh5dakr3RtYY0A=="
+      "version": "3.7.8",
+      "resolved": "https://registry.npmmirror.com/xe-utils/-/xe-utils-3.7.8.tgz",
+      "integrity": "sha512-V/k6B/ASYir6yLYhp62DnM17po9u1N9mou/rn4if5WoFCsAO49JpCiVpkDpwCv4zxGfWmhWgzmz4FytWF+pDVw=="
     },
     "node_modules/xlsx": {
       "version": "0.18.5",
@@ -2561,6 +2582,15 @@
         }
       }
     },
+    "@vxe-ui/core": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/@vxe-ui/core/-/core-4.2.11.tgz",
+      "integrity": "sha512-Cv0XKTGgFD+CD2MGixxM+k60Y3tFEJYErQj59tuPd0y0HuSFc7sQk0fuXdbcNgxZxtAi4zX3nsDk3kY+/HeAgQ==",
+      "requires": {
+        "dom-zindex": "^1.0.6",
+        "xe-utils": "^3.7.8"
+      }
+    },
     "acorn": {
       "version": "8.12.0",
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
@@ -2770,9 +2800,9 @@
       "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
     },
     "dom-zindex": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
-      "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.6.tgz",
+      "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA=="
     },
     "echarts": {
       "version": "5.6.0",
@@ -3156,6 +3186,7 @@
         "vue-print-nb": "^1.7.5",
         "vue-router": "^4.2.4",
         "vue3-print-nb": "^0.1.4",
+        "vxe-pc-ui": "*",
         "vxe-table": "^4.5.15",
         "xe-utils": "^3.5.14",
         "xlsx": "^0.18.5"
@@ -3532,6 +3563,15 @@
             }
           }
         },
+        "@vxe-ui/core": {
+          "version": "4.2.11",
+          "resolved": "https://registry.npmmirror.com/@vxe-ui/core/-/core-4.2.11.tgz",
+          "integrity": "sha512-Cv0XKTGgFD+CD2MGixxM+k60Y3tFEJYErQj59tuPd0y0HuSFc7sQk0fuXdbcNgxZxtAi4zX3nsDk3kY+/HeAgQ==",
+          "requires": {
+            "dom-zindex": "^1.0.6",
+            "xe-utils": "^3.7.8"
+          }
+        },
         "acorn": {
           "version": "8.12.0",
           "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
@@ -3741,9 +3781,9 @@
           "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
         },
         "dom-zindex": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
-          "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
+          "version": "1.0.6",
+          "resolved": "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.6.tgz",
+          "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA=="
         },
         "echarts": {
           "version": "5.6.0",
@@ -4551,6 +4591,14 @@
             "vue": "^3.0.5"
           }
         },
+        "vxe-pc-ui": {
+          "version": "4.9.14",
+          "resolved": "https://registry.npmmirror.com/vxe-pc-ui/-/vxe-pc-ui-4.9.14.tgz",
+          "integrity": "sha512-YtpLUU6x43UQnjPBMqgewAYdC9w5FGC/ZHO3ZiYl3fWt+HACkJgreJzgfX4z0QkzLdp/6vmDS4rvnH9vpdNmrw==",
+          "requires": {
+            "@vxe-ui/core": "^4.2.11"
+          }
+        },
         "vxe-table": {
           "version": "4.5.15",
           "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
@@ -4596,9 +4644,9 @@
           }
         },
         "xe-utils": {
-          "version": "3.5.14",
-          "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.14.tgz",
-          "integrity": "sha512-Xq6mS8dWwHBQsQUEBXcZYSaBV0KnNLoVWd0vRRDI3nKpbNxfs/LSCK0W21g1edLFnXYfKqg7hh5dakr3RtYY0A=="
+          "version": "3.7.8",
+          "resolved": "https://registry.npmmirror.com/xe-utils/-/xe-utils-3.7.8.tgz",
+          "integrity": "sha512-V/k6B/ASYir6yLYhp62DnM17po9u1N9mou/rn4if5WoFCsAO49JpCiVpkDpwCv4zxGfWmhWgzmz4FytWF+pDVw=="
         },
         "xlsx": {
           "version": "0.18.5",
@@ -5108,6 +5156,14 @@
         "vue": "^3.0.5"
       }
     },
+    "vxe-pc-ui": {
+      "version": "4.9.14",
+      "resolved": "https://registry.npmmirror.com/vxe-pc-ui/-/vxe-pc-ui-4.9.14.tgz",
+      "integrity": "sha512-YtpLUU6x43UQnjPBMqgewAYdC9w5FGC/ZHO3ZiYl3fWt+HACkJgreJzgfX4z0QkzLdp/6vmDS4rvnH9vpdNmrw==",
+      "requires": {
+        "@vxe-ui/core": "^4.2.11"
+      }
+    },
     "vxe-table": {
       "version": "4.5.15",
       "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
@@ -5153,9 +5209,9 @@
       }
     },
     "xe-utils": {
-      "version": "3.5.14",
-      "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.14.tgz",
-      "integrity": "sha512-Xq6mS8dWwHBQsQUEBXcZYSaBV0KnNLoVWd0vRRDI3nKpbNxfs/LSCK0W21g1edLFnXYfKqg7hh5dakr3RtYY0A=="
+      "version": "3.7.8",
+      "resolved": "https://registry.npmmirror.com/xe-utils/-/xe-utils-3.7.8.tgz",
+      "integrity": "sha512-V/k6B/ASYir6yLYhp62DnM17po9u1N9mou/rn4if5WoFCsAO49JpCiVpkDpwCv4zxGfWmhWgzmz4FytWF+pDVw=="
     },
     "xlsx": {
       "version": "0.18.5",
diff --git a/UI-Project/package.json b/UI-Project/package.json
index 1dfb52a..d157e48 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -28,6 +28,7 @@
     "vue-print-nb": "^1.7.5",
     "vue-router": "^4.2.4",
     "vue3-print-nb": "^0.1.4",
+    "vxe-pc-ui": "^4.9.14",
     "vxe-table": "^4.5.15",
     "xe-utils": "^3.5.14",
     "xlsx": "^0.18.5"
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index 4c965ef..025b336 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,4 +1,4 @@
-//  export const WebSocketHost = "localhost";
+  export const WebSocketHost = "localhost";
 //  export const WebSocketHost = "10.36.164.253";
- export const WebSocketHost = "10.36.164.200";
+ //export const WebSocketHost = "10.36.164.200";
  export const host = "88";
\ No newline at end of file
diff --git a/UI-Project/src/views/Cleaning/cleaning.vue b/UI-Project/src/views/Cleaning/cleaning.vue
index a8b4c4a..c1d779b 100644
--- a/UI-Project/src/views/Cleaning/cleaning.vue
+++ b/UI-Project/src/views/Cleaning/cleaning.vue
@@ -15,66 +15,94 @@
 const loadData = ref([]);
 const findMachine = ref([]);
 const machineId=7;//褰撳墠椤甸潰鐨勮澶嘔D
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/cleaning`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  // console.log(data);
-};
-onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
+
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+};
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
+};
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
+onUnmounted(() => {
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-
-
-  //浣跨敤鎺ュ彛鏂瑰紡灞曠ず鏁版嵁
-  //load();
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 
-// //鑾峰彇鏁版嵁
-// const load = async() => {
-//   //鑾峰彇璁惧浠诲姟鏁版嵁
-//   try {
-//     const response = await request.post('/deviceInteraction/tasking/findMachineTask',
-//     {
-//       "id": 11
-//     }); // 鏇挎崲涓轰綘鐨凙PI绔偣  
-//     if (response.code === 200) {
-//       loadData.value.findTaskingData= response.data;
-//     } else {
-//       ElMessage.warning(res.msg)
-//     }
-//   } catch (error) {
-//     // console.error('Error fetching rects :', error);  
-//   }
-//   //鑾峰彇璁惧鐘舵��
-//   try {
-//     const response = await request.post('/deviceInteraction/machine/findMachine',
-//     {
-//       "id": 11
-//     }); // 鏇挎崲涓轰綘鐨凙PI绔偣  
-//     if (response.code === 200) {
-//       findMachine.value= response.data;
-//     } else {
-//       ElMessage.warning(res.msg)
-//     }
-//   } catch (error) {
-//     // console.error('Error fetching rects :', error);  
-//   }
-// }
 //淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
 const workStatus = async(row,state) => {
   let url;
diff --git a/UI-Project/src/views/Edging/edging.vue b/UI-Project/src/views/Edging/edging.vue
index 20edac0..752c951 100644
--- a/UI-Project/src/views/Edging/edging.vue
+++ b/UI-Project/src/views/Edging/edging.vue
@@ -25,62 +25,100 @@
 const pageParams=userInfo.user.menus[0].pages[1].params;
 const pageParamsJson=JSON.parse(pageParams);
 const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
+
+
+
 console.log(machineId);
 var errorScanId;
 var errorOpen=false;
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-let socketDownLineTask = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/edgingTask`;
-const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
 
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  sendRecords.value = dataJson.sendRecords[0].reverse();
-  
-  if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
-    //鏈夋暟鎹氨寮圭獥 
-    if(errorOpen){
-      ElMessageBox.close();
-    }
-    errorScanId=findMachine.value.remark.toString();
-    errorInfoFuntion(findMachine.value.remark.toString());
-    errorOpen=true;
-    
-  }else if(findMachine.value.remark.toString()==""&&errorOpen){
-    ElMessageBox.close();
-    errorOpen=false;
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-   
 };
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
-  // console.log(data);
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
 };
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
 onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-  if (socketDownLineTask) {
-    closeWebSocket(socketDownLineTask);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
+
 //鎶ヨ鎻愮ず
 const errorInfoFuntion = async (info) => {
   let infoScancode=info;
diff --git a/UI-Project/src/views/FlipSlice/flipSlice.vue b/UI-Project/src/views/FlipSlice/flipSlice.vue
index 804ac8d..c035cac 100644
--- a/UI-Project/src/views/FlipSlice/flipSlice.vue
+++ b/UI-Project/src/views/FlipSlice/flipSlice.vue
@@ -26,81 +26,124 @@
 const pageParams=userInfo.user.menus[0].pages[2].params;
 const pageParamsJson=JSON.parse(pageParams);
 const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
+
+
 console.log(machineId);
 //const machineId = 26;//褰撳墠椤甸潰鐨勮澶嘔D
 var errorScanId;
 var errorOpen=false;
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-let socketDownLineTask = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/flipSlice`;
-const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+          "id": machineId
+        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
 
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  sendRecords.value = dataJson.sendRecords[0].reverse();
-  if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
-    //鏈夋暟鎹氨寮圭獥 
-    if(errorOpen){
-      ElMessageBox.close();
-    }
-    errorScanId=findMachine.value.remark.toString();
-    errorInfoFuntion(findMachine.value.remark.toString());
-    errorOpen=true;
-  }else if(findMachine.value.remark.toString()==""&&errorOpen){
-    ElMessageBox.close();
-    errorOpen=false;
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-   
 };
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
-  // console.log(data);
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
 };
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
 onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-  if (socketDownLineTask) {
-    closeWebSocket(socketDownLineTask);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
+
+
+
+
+
+
 //鎶ヨ鎻愮ず
 const errorInfoFuntion = async (info) => {
   let infoScancode=info;
   ElMessageBox.confirm(
-    infoScancode,
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sureStart'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      infoScancode,
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sureStart'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
+      .then(() => {
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
 const workStatus = async (row, state) => {
@@ -115,199 +158,199 @@
     return;
   }
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //寮�濮嬩慨鏀�
-      request.post(url,
-        {
-          "id": machineId
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //寮�濮嬩慨鏀�
+        request.post(url,
+            {
+              "id": machineId
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 
 }
 
 //寮�宸�/鏆傚仠
 const machineStatus = async (state) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/machine/updateMachineState",
-        {
-          "id": machineId,
-          "state": state
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/machine/updateMachineState",
+            {
+              "id": machineId,
+              "state": state
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //瀹氬埗/鏍囧噯
 const machineMode = async (mode) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/machine/toggleModeMachine",
-        {
-          "id": machineId,
-          "mode": mode
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/machine/toggleModeMachine",
+            {
+              "id": machineId,
+              "mode": mode
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //鐮存崯
 const damagedTask = async (row) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/tasking/damagedTask",
-        {
-          "glassId": row.glassId
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/tasking/damagedTask",
+            {
+              "glassId": row.glassId
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //涓嬬嚎(鎷胯蛋)
 const glassDownLine = async (row) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/tasking/glassDownLine",
-        {
-          "glassId": row.glassId,
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/tasking/glassDownLine",
+            {
+              "glassId": row.glassId,
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 const topLineShow = async () => {
-  blind.value = true; 
+  blind.value = true;
 }
 //涓婄嚎
 const topLine = async (row) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓婄嚎鎺ュ彛
-      request.post("/deviceInteraction/tasking/glassTopLine",
-        {
-          "glassId": row.glassId,
-          "lineConfigurationId": machineId
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓婄嚎鎺ュ彛
+        request.post("/deviceInteraction/tasking/glassTopLine",
+            {
+              "glassId": row.glassId,
+              "lineConfigurationId": machineId
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {n
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
-const handleDialogClose = () => {  
-    
+const handleDialogClose = () => {
+
 }
 </script>
 <template>
@@ -316,7 +359,7 @@
       {{ $t('machine.flipSlice') }}
     </div>
     <el-dialog v-model="blind" top="30vh" style="text-align: center;" @close="handleDialogClose">
-        <!-- 绾夸笅鐜荤拑 -->
+      <!-- 绾夸笅鐜荤拑 -->
       <el-table :data="downLineTask" stripe :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
         <!-- <el-table-column type="selection" min-width="30" /> -->
         <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" />
@@ -330,7 +373,7 @@
         <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="70">
           <template #default="scope">
             <el-button size="mini" link type="primary" plain @click="topLine(scope.row)">{{
-              $t('functionState.topLine') }}</el-button>
+                $t('functionState.topLine') }}</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -340,13 +383,13 @@
     <div id="search">
       <!-- 鍔熻兘 -->
       <el-button :type="(findMachine['state'] == '鏆傚仠' ? 'danger' : 'success')" id="ButtonMachineStatus"
-        @click="machineStatus((findMachine['state'] == '鏆傚仠' ? '寮�宸�' : '鏆傚仠'))">{{ findMachine['state'] == '寮�宸�' ?
+                 @click="machineStatus((findMachine['state'] == '鏆傚仠' ? '寮�宸�' : '鏆傚仠'))">{{ findMachine['state'] == '寮�宸�' ?
           $t('functionState.start') : $t('functionState.stop') }}</el-button>
 
       <el-button :type="(findMachine['mode'] == '瀹氬埗' ? 'danger' : 'success')" id="ButtonMachineMode"
-        @click="machineMode((findMachine['mode'] == 0 ? 1 : 0))">{{ findMachine['mode'] == 0 ?
-         $t('functionState.modeD') : $t('functionState.modeB') }}</el-button>
-         
+                 @click="machineMode((findMachine['mode'] == 0 ? 1 : 0))">{{ findMachine['mode'] == 0 ?
+          $t('functionState.modeD') : $t('functionState.modeB') }}</el-button>
+
       <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.topLine') }}</el-button>
       <!-- <el-button type="primary" id="searchButton" @click="downLine('涓嬬嚎')">涓嬬嚎</el-button>
       <el-button type="primary" id="searchButton" @click="workStatus('鐮存崯')">鐮存崯</el-button>
@@ -355,8 +398,8 @@
     <div id="main-body">
       <!-- 琛ㄦ牸鍐呭 -->
       <el-table :data="loadData" stripe style="height:260px"
-        :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
-        :cell-style="{ textAlign: 'center' }">
+                :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
+                :cell-style="{ textAlign: 'center' }">
         <!-- <el-table-column type="selection" min-width="30" /> -->
         <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" />
         <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" />
@@ -371,13 +414,13 @@
         <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
           <template #default="scope">
             <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '閲嶅彂')">{{
-              $t('functionState.anew') }}</el-button>
+                $t('functionState.anew') }}</el-button>
             <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '瀹屽伐')">{{
-              $t('functionState.finish') }}</el-button>
+                $t('functionState.finish') }}</el-button>
             <el-button size="mini" link type="primary" plain @click="damagedTask(scope.row)">{{ $t('functionState.lose')
               }}</el-button>
             <el-button size="mini" link type="primary" plain @click="glassDownLine(scope.row)">{{
-              $t('functionState.downLine') }}</el-button>
+                $t('functionState.downLine') }}</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -391,8 +434,8 @@
       </div> -->
       <div style="width: 30%;min-width: 300px; height: 460px;float: left;padding: 20px;;">
         <el-table :data="sendRecords" stripe
-          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }"
-          :cell-style="{ textAlign: 'center' }">
+                  :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }"
+                  :cell-style="{ textAlign: 'center' }">
           <el-table-column prop="sendContent" :label="$t('glassInfo.sendContent')" />
         </el-table>
       </div>
@@ -467,6 +510,6 @@
   height:10px;
   border-radius: 50%;
   display: block;
-  margin-left: 10px; 
+  margin-left: 10px;
 }
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/GlueDispenser/glueDispenser.vue b/UI-Project/src/views/GlueDispenser/glueDispenser.vue
index 92fe088..d56c87c 100644
--- a/UI-Project/src/views/GlueDispenser/glueDispenser.vue
+++ b/UI-Project/src/views/GlueDispenser/glueDispenser.vue
@@ -24,50 +24,82 @@
 const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
 const pageParams=userInfo.user.menus[0].pages[8].params;
 const pageParamsJson=JSON.parse(pageParams);
-console.log(pageParams);
-console.log(userInfo.user);
+
 
 const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
 console.log(machineId);
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-let socketDownLineTask = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/glueDispenser`;
-const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
 
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+      }
+    });
 
-  sendRecords.value = dataJson.sendRecords[0].reverse();
-   
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
+  }
 };
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
-  // console.log(data);
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
 };
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
 onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-  if (socketDownLineTask) {
-    closeWebSocket(socketDownLineTask);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 //鎶ヨ鎻愮ず
 const errorInfoFuntion = async (info) => {
diff --git a/UI-Project/src/views/Lamination/lamination.vue b/UI-Project/src/views/Lamination/lamination.vue
index 73f211d..77aa2e2 100644
--- a/UI-Project/src/views/Lamination/lamination.vue
+++ b/UI-Project/src/views/Lamination/lamination.vue
@@ -31,44 +31,92 @@
 //const machineId = 21;//褰撳墠椤甸潰鐨勮澶嘔D
 var errorScanId;
 var errorOpen=false;
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-let socketDownLineTask = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/lamination`;
-const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
 
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  sendRecords.value = dataJson.sendRecords[0].reverse();
-   
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
+  }
 };
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
-  // console.log(data);
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
 };
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
 onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-  if (socketDownLineTask) {
-    closeWebSocket(socketDownLineTask);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 //鎶ヨ鎻愮ず
 const errorInfoFuntion = async (info) => {
diff --git a/UI-Project/src/views/ManualReporting/manualReporting.vue b/UI-Project/src/views/ManualReporting/manualReporting.vue
index c7c992c..662c7cf 100644
--- a/UI-Project/src/views/ManualReporting/manualReporting.vue
+++ b/UI-Project/src/views/ManualReporting/manualReporting.vue
@@ -16,7 +16,7 @@
 const blind = ref(false)
 const errorInfo = ref(true)
 const loadData = ref([]);
-const taskinggoruby = ref([]);
+
 const findMachine = ref([]);
 const sendRecords = ref([]);
 const downLineTask = ref([]);
@@ -31,57 +31,122 @@
 console.log(machineId);
 var errorScanId;
 var errorOpen=false;
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-let socketDownLineTask = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/manualReporting`;
-const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  //taskinggoruby.value = data.taskinggoruby[0];
-  //loadData.value =getDataSort(data.taskingList[0]);
-  const dataJson = data[""+machineId][0];
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  
-  if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
-    //鏈夋暟鎹氨寮圭獥 
-    if(errorOpen){
-      ElMessageBox.close();
+// 鍒嗙粍鍚庣殑缁熻鏁版嵁
+const taskingGroupBy = ref([]);
+// 鍒嗙粍骞剁粺璁$殑鏂规硶
+const groupAndCount = () => {
+  // 鍒涘缓涓�涓复鏃跺璞$敤浜庡垎缁勮鏁�
+  const groupMap = {};
+  // 閬嶅巻鍘熷鏁版嵁
+  loadData.value.forEach(item => {
+    // 鐢熸垚鍞竴鐨勫垎缁勯敭锛堢粍鍚堜笁涓瓧娈碉級
+    const groupKey = `${item.scanId || ''}-${item.batchNumber || ''}-${item.taskType || ''}`;
+    // 妫�鏌ヨ鍒嗙粍鏄惁宸插瓨鍦�
+    if (groupMap[groupKey]) {
+      // 宸插瓨鍦ㄥ垯鏁伴噺+1
+      groupMap[groupKey].reportCount++;
+    } else {
+      // 涓嶅瓨鍦ㄥ垯鍒涘缓鏂板垎缁�
+      groupMap[groupKey] = {
+        scanId: item.scanId,
+        batchNumber: item.batchNumber,
+        taskType: item.taskType,
+        taskQuantity: item.taskQuantity,
+        reportCount:1
+
+      };
     }
-    errorScanId=findMachine.value.remark.toString();
-    errorInfoFuntion(findMachine.value.remark.toString());
-    errorOpen=true;
-  }else if(findMachine.value.remark.toString()==""&&errorOpen){
-    ElMessageBox.close();
-    errorOpen=false;
+  });
+  console.log(taskingGroupBy.value);
+  // 灏嗗璞¤浆鎹负鏁扮粍
+  taskingGroupBy.value = Object.values(groupMap);
+};
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+        groupAndCount();
+      }
+    });
+
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-   
 };
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
-  // console.log(data);
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
 };
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
 onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-  if (socketDownLineTask) {
-    closeWebSocket(socketDownLineTask);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 //鎶ヨ鎻愮ず
 const errorInfoFuntion = async (info) => {
@@ -362,7 +427,7 @@
 
     <div id="main-body" style="min-height:240px;">
       <!-- 琛ㄦ牸鍐呭 -->
-      <el-table :data="taskinggoruby" stripe
+      <el-table :data="taskingGroupBy" stripe
         :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
         :cell-style="{ textAlign: 'center' }">
         <!-- <el-table-column type="selection" min-width="30" /> -->
@@ -383,13 +448,6 @@
         <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" />
         <el-table-column prop="taskQuantity" :label="$t('glassInfo.taskQuantity')" />
         <el-table-column prop="reportCount" :label="$t('glassInfo.reportCount')" />
-        
-        <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
-          <template #default="scope">
-            <el-button size="mini" link type="primary" plain @click="damagedTask(scope.row)">{{ $t('functionState.lose')
-              }}</el-button>
-          </template>
-        </el-table-column>
       </el-table>
     </div>
 
diff --git a/UI-Project/src/views/Marking/marking.vue b/UI-Project/src/views/Marking/marking.vue
index bba4efb..49771e2 100644
--- a/UI-Project/src/views/Marking/marking.vue
+++ b/UI-Project/src/views/Marking/marking.vue
@@ -24,31 +24,78 @@
 const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
 console.log(machineId);
 //const machineId=12;//褰撳墠椤甸潰鐨勮澶嘔D
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/marking`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
 
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  sendRecords.value = dataJson.sendRecords[0];
-};
-onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+      }
+    });
+
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+};
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
+};
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
+onUnmounted(() => {
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 //淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
 const workStatus = async(row,state) => {
diff --git a/UI-Project/src/views/MechanicalArm/mechanicalArm.vue b/UI-Project/src/views/MechanicalArm/mechanicalArm.vue
index a173998..219468b 100644
--- a/UI-Project/src/views/MechanicalArm/mechanicalArm.vue
+++ b/UI-Project/src/views/MechanicalArm/mechanicalArm.vue
@@ -1,13 +1,14 @@
 <!--  涓婄墖鏈�  -->
 <script setup>
 import request from "@/utils/request";
-import { ElMessage, ElMessageBox } from "element-plus";
-import { computed, reactive, ref, onMounted, onBeforeUnmount, onUnmounted } from 'vue'
-import { useI18n } from 'vue-i18n'
-import { WebSocketHost, host } from '@/utils/constants'
-import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import {ElMessage, ElMessageBox} from "element-plus";
+import {computed, reactive, ref, onMounted, onBeforeUnmount, onUnmounted} from 'vue'
+import {useI18n} from 'vue-i18n'
+import {WebSocketHost, host} from '@/utils/constants'
+import {initializeWebSocket, closeWebSocket} from '@/utils/WebSocketService';
+
 let language = ref(localStorage.getItem('lang') || 'zh')
-const { t } = useI18n()
+const {t} = useI18n()
 const requestData = reactive({
   account: '',
   password: '',
@@ -24,12 +25,121 @@
 const scanCodeOld = ref([]);
 const searchs = ref();
 
-const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
-const pageParams=userInfo.user.menus[0].pages[0].params;
-const pageParamsJson=JSON.parse(pageParams);
+const userInfo = JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams = userInfo.user.menus[0].pages[0].params;
+const pageParamsJson = JSON.parse(pageParams);
 const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
 console.log(machineId);
 var errorScanId;
+
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 宸查鍙栫殑浠诲姟鏁版嵁
+    request.post("/deviceInteraction/primitiveTask/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value = responseData;
+      }
+    });
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛銆愬凡棰嗗彇鐨勪换鍔℃暟鎹�戝け璐ワ細', err);
+  }
+  try {
+    // 鍙鍙栫殑浠诲姟鏁版嵁
+    request.post("/deviceInteraction/primitiveTask/findKBBTJPDrawingBP").then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findPrimitiveTask.value = responseData;
+      }
+    });
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛銆愬彲棰嗗彇鐨勪换鍔℃暟鎹細瀹㈡埛琛ㄣ�戝け璐ワ細', err);
+  }
+  try {
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine", {
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value = responseData;
+        if (Object.keys(findMachine.value).length === 0) {
+          if (findMachine.value.mode == "1") {
+            modevalue.value = {
+              value: '1',
+              label: '鏍囧噯',
+            };
+          } else if (findMachine.value.mode == "2") {
+            modevalue.value = {
+              value: '2',
+              label: '瀹氬埗',
+            };
+          } else if (findMachine.value.mode == "3") {
+            modevalue.value = {
+              value: '3',
+              label: '鎵嬪姩',
+            };
+          }
+        }
+      }
+    });
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触銆愯澶囨暟鎹�戯細', err);
+  }
+
+};
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
+};
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
+onUnmounted(() => {
+  clearTimer();
+});
+
+onMounted(async () => {
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+});
+
+
 //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
 let socket = null;
 let socketDownLineTask = null;
@@ -38,25 +148,24 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 
 
-
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+  let dataJson = data["" + machineId][0];
 
   loadData.value = dataJson.findPrimitiveTasking[0];
   findPrimitiveTask.value = dataJson.findPrimitiveTask[0];
   findMachine.value = dataJson.machine[0];
-  if(findMachine.value.mode=="1"){
+  if (findMachine.value.mode == "1") {
     modevalue.value = {
-    value: '1',
-    label: '鏍囧噯',
-  };
-  }else if(findMachine.value.mode=="2"){
+      value: '1',
+      label: '鏍囧噯',
+    };
+  } else if (findMachine.value.mode == "2") {
     modevalue.value = {
       value: '2',
       label: '瀹氬埗',
     };
-  }else if(findMachine.value.mode=="3"){
+  } else if (findMachine.value.mode == "3") {
     modevalue.value = {
       value: '3',
       label: '鎵嬪姩',
@@ -87,40 +196,8 @@
   socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
   //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
   socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  
+
 });
-//鎶ヨ鎻愮ず
-const errorInfoFuntion = async (info) => {
-  let infoScancode = '鎵爜ID锛�' + info.scanId + '  ' + info.scanCode;
-  ElMessageBox.confirm(
-    infoScancode,
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sureStart'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
-  )
-    .then(() => {
-      //閲嶆柊琛ュ崟
-      request.post("/deviceInteraction/tasking/glassAgainTopLine",
-        {
-          "scanId": info.scanId,
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
-          if (res.code === 200) {
-            ElMessage.success(res.message);
-          } else {
-            ElMessage.warning(res.message)
-          }
-        })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
-      })
-    })
-}
 //淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
 const workStatus = async (row, state) => {
   let url;
@@ -134,161 +211,161 @@
     return;
   }
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //寮�濮嬩慨鏀�
-      request.post(url,
-        {
-          "id": machineId
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //寮�濮嬩慨鏀�
+        request.post(url,
+            {
+              "id": machineId
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 
 }
 
 //瀹氬埗/鏍囧噯
 const machineMode = async (mode) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/machine/toggleModeMachine",
-        {
-          "id": machineId,
-          "mode": mode
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/machine/toggleModeMachine",
+            {
+              "id": machineId,
+              "mode": mode
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //寮�宸�/鏆傚仠
 const machineStatus = async (state) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/machine/updateMachineState",
-        {
-          "id": machineId,
-          "state": state
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/machine/updateMachineState",
+            {
+              "id": machineId,
+              "state": state
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //鐮存崯
 const damagedTask = async (row) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/tasking/damagedTask",
-        {
-          "glassId": row.glassId
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/tasking/damagedTask",
+            {
+              "glassId": row.glassId
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 //涓嬬嚎(鎷胯蛋)
 const glassDownLine = async (row) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //涓嬬嚎鎺ュ彛
-      request.post("/deviceInteraction/tasking/glassDownLine",
-        {
-          "glassId": row.glassId,
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //涓嬬嚎鎺ュ彛
+        request.post("/deviceInteraction/tasking/glassDownLine",
+            {
+              "glassId": row.glassId,
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 const topLineShow = async () => {
   blind.value = true;
@@ -296,22 +373,22 @@
 //棰嗗彇浠诲姟/缁撴潫浠诲姟
 const startOrStopTask = async (row, line, isWorking) => {
   ElMessageBox.confirm(
-    t('functionState.tips'),
-    t('delivery.prompt'),
-    {
-      confirmButtonText: t('functionState.sure'),
-      cancelButtonText: t('functionState.cancel'),
-      type: 'warning',
-    }
+      t('functionState.tips'),
+      t('delivery.prompt'),
+      {
+        confirmButtonText: t('functionState.sure'),
+        cancelButtonText: t('functionState.cancel'),
+        type: 'warning',
+      }
   )
-    .then(() => {
-      //棰嗗彇浠诲姟
-      request.post("/deviceInteraction/primitiveTask/startOrStopPrimitiveTasking",
-        {
-          "id": row.id,
-          "getLine": line,
-          "isWorking": isWorking
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
+      .then(() => {
+        //棰嗗彇浠诲姟
+        request.post("/deviceInteraction/primitiveTask/startOrStopPrimitiveTasking",
+            {
+              "id": row.id,
+              "getLine": line,
+              "isWorking": isWorking
+            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
           if (res.code === 200) {
             ElMessage.success(res.message);
           } else {
@@ -319,13 +396,13 @@
             ElMessage.warning(res.message)
           }
         })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: t('functionState.cancel'),
       })
-    })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: t('functionState.cancel'),
+        })
+      })
 }
 const handleDialogClose = () => {
 
@@ -338,10 +415,10 @@
 }
 
 const filterTableData = computed(() =>
-  loadData.value.filter(
-    (data) =>
-      !searchs.value || data.scanId.toLowerCase().includes(searchs.value.toLowerCase())
-  )
+    loadData.value.filter(
+        (data) =>
+            !searchs.value || data.scanId.toLowerCase().includes(searchs.value.toLowerCase())
+    )
 )
 
 //涓嬫媺妗嗘ā寮忛�夋嫨
@@ -364,45 +441,45 @@
 
 const modeShow = async () => {
   blindMode.value = true;
-  blindModeNumberLocal.value=findMachine.taskCount;
+  blindModeNumberLocal.value = findMachine.taskCount;
 }
 //妯″紡閫夋嫨鏃惰繘琛屽鐞�
 const modeChange = async () => {
-  let mode=modevalue.value;
+  let mode = modevalue.value;
   request.post("/deviceInteraction/machine/toggleModeMachine",
-        {
-          "id": machineId,
-          "mode": mode
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
-          if (res.code === 200) {
-            ElMessage.success(res.message);
-          } else {
-            ElMessage.warning(res.message)
-          }
-        })
-  if(modevalue.value=='3'){
+      {
+        "id": machineId,
+        "mode": mode
+      }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+    if (res.code === 200) {
+      ElMessage.success(res.message);
+    } else {
+      ElMessage.warning(res.message)
+    }
+  })
+  if (modevalue.value == '3') {
     //褰撴槸鎵嬪姩妯″紡鏃跺脊绐楁彁绀� 璁剧疆涓婄墖鏁伴噺
     blindMode.value = true;
   }
-  
+
 }
 
 //鎻愪氦淇敼鎵嬪姩妯″紡鐨勫惛鐗囨暟閲�
 const fetchSubmit = async () => {
   //鎵爜鍥炶溅鎻愪氦
   request.post("/deviceInteraction/machine/manualOperationTask",
-        {
-          "id": machineId,
-          "taskCount": blindModeNumberLocal.value,
-          "finshCount": 0
-        }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
-          if (res.code === 200) {
-            ElMessage.success(res.message);
-          } else {
-            ElMessage.warning(res.message)
-          }
-        })
-        blindMode.value = false;
+      {
+        "id": machineId,
+        "taskCount": blindModeNumberLocal.value,
+        "finshCount": 0
+      }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+    if (res.code === 200) {
+      ElMessage.success(res.message);
+    } else {
+      ElMessage.warning(res.message)
+    }
+  })
+  blindMode.value = false;
 }
 </script>
 <template>
@@ -414,24 +491,26 @@
       <!-- 鏈鍙栫殑鏍囧噯浠诲姟 -->
 
       <el-table :data="findPrimitiveTask" stripe style="height:660px"
-        :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
-        :cell-style="{ textAlign: 'center' }">
+                :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
+                :cell-style="{ textAlign: 'center' }">
         <!-- <el-table-column type="selection" min-width="30" /> -->
 
-        <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" />
-        <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" />
-        <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" />
-        <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" />
-        <el-table-column prop="length" :label="$t('glassInfo.length')" />
-        <el-table-column prop="width" :label="$t('glassInfo.width')" />
-        <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" />
-        <el-table-column prop="taskQuantity" :label="$t('glassInfo.taskQuantity')" />
-        <el-table-column prop="reportCount" :label="$t('glassInfo.reportCount')" />
-        <el-table-column prop="workState" :label="$t('glassInfo.workState')" />
+        <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30"/>
+        <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')"/>
+        <el-table-column prop="taskType" :label="$t('glassInfo.taskType')"/>
+        <el-table-column prop="scanId" :label="$t('glassInfo.scanId')"/>
+        <el-table-column prop="length" :label="$t('glassInfo.length')"/>
+        <el-table-column prop="width" :label="$t('glassInfo.width')"/>
+        <el-table-column prop="thickness" :label="$t('glassInfo.thickness')"/>
+        <el-table-column prop="taskQuantity" :label="$t('glassInfo.taskQuantity')"/>
+        <el-table-column prop="reportCount" :label="$t('glassInfo.reportCount')"/>
+        <el-table-column prop="workState" :label="$t('glassInfo.workState')"/>
         <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="70">
           <template #default="scope">
             <el-button size="small" link type="primary" plain @click="startOrStopTask(scope.row, findMachine.id, 1)">{{
-              $t('functionState.getTask') }}</el-button>
+                $t('functionState.getTask')
+              }}
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -444,15 +523,16 @@
       </div>
       <div>
         鎵嬪姩杈撳叆涓婄墖鏁伴噺锛�
-        <el-input v-model="blindModeNumberLocal" style="width: 200px;" type="Number" id="blindMode" @keyup.enter="fetchSubmit"></el-input>
-        
+        <el-input v-model="blindModeNumberLocal" style="width: 200px;" type="Number" id="blindMode"
+                  @keyup.enter="fetchSubmit"></el-input>
+
       </div>
       <!-- <div>
         <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">纭</el-button>
         <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">鍙栨秷</el-button>
       </div> -->
     </el-dialog>
-    <hr />
+    <hr/>
     <br>
     <div id="search">
       <!-- 鍔熻兘 -->
@@ -460,33 +540,40 @@
       <div class="flex flex-wrap gap-4 items-center">
         涓婄墖鏈鸿繍琛屾ā寮�:
         <el-select v-model="modevalue" @change="modeChange" placeholder="璇烽�夋嫨妯″紡" size="large" style="width: 220px">
-          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
         </el-select>
-        
+
         <span>
-          <span @click="modeShow" style="margin-left: 40px;">{{ findMachine.mode=="3"? ("涓婄墖鏁伴噺锛�"+findMachine.taskCount):"" }}</span>
-          <span style="margin-left: 40px;">{{ findMachine.mode=="3"? ("宸插畬鎴愭暟閲忥細"+findMachine.finshCount):"" }}</span>
+          <span @click="modeShow" style="margin-left: 40px;">{{
+              findMachine.mode == "3" ? ("涓婄墖鏁伴噺锛�" + findMachine.taskCount) : ""
+            }}</span>
+          <span style="margin-left: 40px;">{{
+              findMachine.mode == "3" ? ("宸插畬鎴愭暟閲忥細" + findMachine.finshCount) : ""
+            }}</span>
         </span>
-        
-        
+
+
       </div>
       <br>
       <el-button :type="(findMachine['state'] == '鏆傚仠' ? 'danger' : 'success')" id="ButtonMachineStatus"
-        @click="machineStatus((findMachine['state'] == '鏆傚仠' ? '寮�宸�' : '鏆傚仠'))">{{ findMachine['state'] == '寮�宸�' ?
-        $t('functionState.start') : $t('functionState.stop') }}</el-button>
+                 @click="machineStatus((findMachine['state'] == '鏆傚仠' ? '寮�宸�' : '鏆傚仠'))">{{
+          findMachine['state'] == '寮�宸�' ?
+              $t('functionState.start') : $t('functionState.stop')
+        }}
+      </el-button>
       <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.getTask') }}</el-button>
     </div>
 
     <div id="main-body" style="min-height:240px;">
       <!-- 琛ㄦ牸鍐呭 -->
       <el-table :data="filterTableData" stripe style="height:260px"
-        :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
-        :cell-style="{ textAlign: 'center' }">
+                :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
+                :cell-style="{ textAlign: 'center' }">
 
         <!-- <el-table-column type="selection" min-width="30" /> -->
-        <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" />
-        <el-table-column prop="batchNumber" sortable :label="$t('glassInfo.batchNumber')" />
-        <el-table-column prop="taskType" sortable :label="$t('glassInfo.taskType')" />
+        <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30"/>
+        <el-table-column prop="batchNumber" sortable :label="$t('glassInfo.batchNumber')"/>
+        <el-table-column prop="taskType" sortable :label="$t('glassInfo.taskType')"/>
         <el-table-column prop="scanId" :label="$t('glassInfo.scanId')">
           <template #header>
             <div>
@@ -496,30 +583,32 @@
                 <el-input v-model="searchs" type="primary" id="ReportSubmission" @keyup.enter="fetchData"></el-input>
                 <template #reference>
                   <el-icon>
-                    <Filter />
+                    <Filter/>
                   </el-icon>
                 </template>
               </el-popover>
               <el-icon>
-                <CaretTop />
+                <CaretTop/>
               </el-icon>
               <el-icon>
-                <CaretBottom />
+                <CaretBottom/>
               </el-icon>
               <!-- <el-input v-model="searchs" type="primary" id="ReportSubmission" @keyup.enter="fetchData"></el-input> -->
               <!-- <el-input size="small" placeholder="Type to search" /> -->
             </div>
           </template>
         </el-table-column>
-        <el-table-column prop="length" sortable :label="$t('glassInfo.length')" />
-        <el-table-column prop="width" sortable :label="$t('glassInfo.width')" />
-        <el-table-column prop="thickness" sortable :label="$t('glassInfo.thickness')" />
-        <el-table-column prop="taskQuantity" sortable :label="$t('glassInfo.taskQuantity')" />
-        <el-table-column prop="isWorking" sortable :label="$t('glassInfo.isWorking')" />
+        <el-table-column prop="length" sortable :label="$t('glassInfo.length')"/>
+        <el-table-column prop="width" sortable :label="$t('glassInfo.width')"/>
+        <el-table-column prop="thickness" sortable :label="$t('glassInfo.thickness')"/>
+        <el-table-column prop="taskQuantity" sortable :label="$t('glassInfo.taskQuantity')"/>
+        <el-table-column prop="isWorking" sortable :label="$t('glassInfo.isWorking')"/>
         <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
           <template #default="scope">
             <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">{{
-              $t('functionState.stopTask') }}</el-button>
+                $t('functionState.stopTask')
+              }}
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -533,9 +622,9 @@
       </div> -->
       <div style="width: 30%;min-width: 300px; height: 460px;float: left;padding: 20px;;">
         <el-table :data="sendRecords" stripe
-          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }"
-          :cell-style="{ textAlign: 'center' }">
-          <el-table-column prop="sendContent" :label="$t('glassInfo.sendContent')" />
+                  :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }"
+                  :cell-style="{ textAlign: 'center' }">
+          <el-table-column prop="sendContent" :label="$t('glassInfo.sendContent')"/>
         </el-table>
       </div>
       <div style="clear锛歜oth"></div>
diff --git a/UI-Project/src/views/Rotate/rotate.vue b/UI-Project/src/views/Rotate/rotate.vue
index e961aeb..c9cc309 100644
--- a/UI-Project/src/views/Rotate/rotate.vue
+++ b/UI-Project/src/views/Rotate/rotate.vue
@@ -29,57 +29,93 @@
 //const machineId = 20;//褰撳墠椤甸潰鐨勮澶嘔D
 var errorScanId;
 var errorOpen=false;
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-let socketDownLineTask = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/rotate`;
-const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
 
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  sendRecords.value = dataJson.sendRecords[0].reverse();
-  
-  if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
-    //鏈夋暟鎹氨寮圭獥 
-    if(errorOpen){
-      ElMessageBox.close();
-    }
-    errorScanId=findMachine.value.remark.toString();
-    errorInfoFuntion(findMachine.value.remark.toString());
-    errorOpen=true;
-  }else if(findMachine.value.remark.toString()==""&&errorOpen){
-    ElMessageBox.close();
-    errorOpen=false;
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
+
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-   
 };
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
-  // console.log(data);
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
 };
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
 onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-  if (socketDownLineTask) {
-    closeWebSocket(socketDownLineTask);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 //鎶ヨ鎻愮ず
 const errorInfoFuntion = async (info) => {
diff --git a/UI-Project/src/views/SilkScreen/SilkScreen.vue b/UI-Project/src/views/SilkScreen/SilkScreen.vue
index d81ebe3..807c85c 100644
--- a/UI-Project/src/views/SilkScreen/SilkScreen.vue
+++ b/UI-Project/src/views/SilkScreen/SilkScreen.vue
@@ -24,30 +24,92 @@
 const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
 console.log(machineId);
 //const machineId=14;//褰撳墠椤甸潰鐨勮澶嘔D
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/silkScreenTask`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  let dataJson = data[""+machineId][0];
-  loadData.value = dataJson.taskingList[0];
-  findMachine.value = dataJson.machine[0];
-  sendRecords.value = dataJson.sendRecords[0];
-};
-onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
+// 鏂板锛氬畾鏃朵换鍔D锛堢敤浜庢竻闄ゅ畾鏃跺櫒锛�
+const timerId = ref(null);
+/**
+ * 鍗曟鎺ュ彛璇锋眰鍑芥暟
+ * 浣滅敤锛氳皟鐢ㄥ悗绔帴鍙o紝鑾峰彇鏁版嵁鍚庝氦缁� handleMessage 澶勭悊
+ */
+const fetchMachineData = async () => {
+  try {
+    // 浠诲姟鏁版嵁
+    request.post("/deviceInteraction/tasking/findMachineTask",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        loadData.value =responseData;
+      }
+    });
+
+    // 璁惧鏁版嵁
+    request.post("/deviceInteraction/machine/findMachine",{
+      "id": machineId
+    }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣
+      if (res.code === 200) {
+        // 鍋囪鍚庣杩斿洖鐨勬暟鎹牸寮忎笌 handleMessage 棰勬湡涓�鑷�
+        const responseData = res.data || {};
+        findMachine.value =responseData;
+        if (Object.keys(findMachine.value).length === 0){
+          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
+            //鏈夋暟鎹氨寮圭獥
+            if(errorOpen){
+              ElMessageBox.close();
+            }
+            errorScanId=findMachine.value.remark.toString();
+            errorInfoFuntion(findMachine.value.remark.toString());
+            errorOpen=true;
+          }else if(findMachine.value.remark.toString()==""&&errorOpen){
+            ElMessageBox.close();
+            errorOpen=false;
+          }
+        }
+      }
+    });
+
+    // 绾夸笅鏁版嵁
+  } catch (err) {
+    console.error('瀹氭椂璇锋眰鍚庣鎺ュ彛澶辫触锛�', err);
   }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+};
+
+/**
+ * 鍚姩瀹氭椂鍣�
+ * @param {number} interval - 瀹氭椂闂撮殧锛堟绉掞紝榛樿500ms锛屼笌鍚庣浠诲姟棰戠巼瀵归綈锛�
+ */
+const startTimer = (interval = 500) => {
+  // 鍏堟竻闄ゅ凡鏈夊畾鏃跺櫒锛堥伩鍏嶉噸澶嶅垱寤猴級
+  if (timerId.value) clearInterval(timerId.value);
+  // 绔嬪嵆鎵ц涓�娆★紙閬垮厤棣栨绛夊緟闂撮殧锛�
+  fetchMachineData();
+  // 鍒涘缓鏂板畾鏃跺櫒
+  timerId.value = setInterval(() => {
+    fetchMachineData();
+  }, interval);
+};
+
+/**
+ * 娓呴櫎瀹氭椂鍣紙閬垮厤鍐呭瓨娉勬紡锛�
+ */
+const clearTimer = () => {
+  if (timerId.value) {
+    clearInterval(timerId.value);
+    timerId.value = null; // 閲嶇疆ID
+  }
+};
+
+// 缁勪欢鍗歌浇鏃舵竻闄ゅ畾鏃跺櫒锛堝叧閿細閬垮厤缁勪欢閿�姣佸悗瀹氭椂鍣ㄤ粛杩愯锛�
+onUnmounted(() => {
+  clearTimer();
 });
 
 onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  startTimer(500); // 500ms 闂撮殧锛堝彲鏍规嵁涓氬姟璋冩暣锛屽1000ms锛�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+  // //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
+  // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 });
 //淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
 const workStatus = async(row,state) => {

--
Gitblit v1.8.0