From 67cbfd8f7c2ed9598eef92470313f3cf31028ea1 Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期二, 11 三月 2025 08:39:33 +0800
Subject: [PATCH] 2.13-3-7号  现场标注线调试更改

---
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original                                 |    0 
 UI-Project/src/views/Lamination/lamination.vue                                                                                          |  412 ++++++++
 UI-Project/src/views/SilkScreen/SilkScreen.vue                                                                                          |   15 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/LineConfigurationServiceImpl.java            |   52 +
 JiuMuMesParent/JsonFile/PlcMarking.json                                                                                                 |    2 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java                      |    4 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MachineController.java                         |   16 
 UI-Project/package.json                                                                                                                 |    8 
 UI-Project/src/views/Marking/marking.vue                                                                                                |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java                                         |    4 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java                               |   42 
 JiuMuMesParent/JsonFile/PlcLoad.json                                                                                                    |    4 
 UI-Project/src/views/Rotate/rotate.vue                                                                                                  |   54 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java                                 |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java                  |    2 
 UI-Project/src/views/KanbanDisplay/kanbanDisplay.vue                                                                                    |  193 ++++
 JiuMuMesParent/JsonFile/PlcLoad2.json                                                                                                   |  134 ++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java                                         |   42 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java                                                          |    2 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java                                      |    5 
 UI-Project/src/views/GlueDispenser/glueDispenser.vue                                                                                    |  443 ++++++--
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java                                         |  339 ++++--
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java                         |  101 ++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineSilkScreen.java                         |    9 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MachineService.java                               |   12 
 JiuMuMesParent/JsonFile/PlcSilkScreen.json                                                                                              |    1 
 JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original                                                                         |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java                      |    9 
 UI-Project/src/router/index.js                                                                                                          |   65 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/KBBTProgramsOperationLogBP.java                    |    9 
 UI-Project/src/views/ManualReporting/manualReporting.vue                                                                                |   19 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineThread.java                             |   18 
 JiuMuMesParent/JsonFile/PlcLamination.json                                                                                              |   86 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineEdging.java                             |   31 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java                          |   14 
 UI-Project/src/views/FlipSlice/flipSlice.vue                                                                                            |   15 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/LineConfigurationService.java                     |    2 
 UI-Project/src/utils/request.js                                                                                                         |    3 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MachineServiceImpl.java                      |   31 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst |   25 
 UI-Project/config.js                                                                                                                    |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java                            |   34 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Machine.java                                       |   41 
 UI-Project/src/lang/zh.js                                                                                                               |    2 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst   |   25 
 UI-Project/src/utils/constants.js                                                                                                       |    9 
 UI-Project/src/views/MechanicalArm/mechanicalArm.vue                                                                                    |   91 +
 UI-Project/src/views/Edging/edging.vue                                                                                                  |   15 
 /dev/null                                                                                                                               |  321 ------
 UI-Project/src/main.js                                                                                                                  |    9 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java                   |    5 
 UI-Project/package-lock.json                                                                                                            |   46 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java                             |   14 
 53 files changed, 2,064 insertions(+), 809 deletions(-)

diff --git a/JiuMuMesParent/JsonFile/PlcLamination.json b/JiuMuMesParent/JsonFile/PlcLamination.json
new file mode 100644
index 0000000..b30baf0
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcLamination.json
@@ -0,0 +1,86 @@
+{
+   "plcAddressBegin":"DB44.0",
+   "plcAddressLenght":"22",
+   "dataType":"word",
+   "parameteInfor":[
+       {
+         "codeId": "plcRequest",
+         "addressIndex": "0",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+       {
+         "codeId": "plcReport",
+         "addressIndex": "2",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+       {
+         "codeId": "mesSend",
+         "addressIndex": "4",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+
+       {
+         "codeId": "mesSendID",
+         "addressIndex": "6",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+       {
+         "codeId": "length",
+         "addressIndex": "8",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+     {
+       "codeId": "width",
+       "addressIndex": "10",
+       "addressLenght": "2",
+       "ratio": "1",
+       "unit": ""
+     },
+     {
+       "codeId": "thickness",
+       "addressIndex": "12",
+       "addressLenght": "2",
+       "ratio": "1",
+       "unit": ""
+     },
+       {
+         "codeId": "mesConfirm",
+         "addressIndex": "14",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+       {
+         "codeId": "mesConfirmID",
+         "addressIndex": "16",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+       {
+         "codeId": "alarmStatus",
+         "addressIndex": "18",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       },
+       {
+         "codeId": "machineStatusWord",
+         "addressIndex": "20",
+         "addressLenght": "2",
+         "ratio": "1",
+         "unit": ""
+       }
+
+   ]
+}
diff --git a/JiuMuMesParent/JsonFile/PlcLoad.json b/JiuMuMesParent/JsonFile/PlcLoad.json
index 9b7feb1..9bc560c 100644
--- a/JiuMuMesParent/JsonFile/PlcLoad.json
+++ b/JiuMuMesParent/JsonFile/PlcLoad.json
@@ -5,14 +5,14 @@
    "parameterInfo":[
        {
          "codeId": "plcRequest",
-         "addressIndex": "2",
+         "addressIndex": "0",
          "addressLength": "2",
          "type": "word",
          "unit": ""
        },
        {
          "codeId": "plcRequestID",
-         "addressIndex": "4",
+         "addressIndex": "2",
          "addressLength": "2",
          "type": "word",
          "unit": ""
diff --git a/JiuMuMesParent/JsonFile/PlcLoad2.json b/JiuMuMesParent/JsonFile/PlcLoad2.json
new file mode 100644
index 0000000..9b7feb1
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcLoad2.json
@@ -0,0 +1,134 @@
+{
+   "plcAddressBegin":"0000",
+   "plcAddressLength":"50",
+   "requestHead":"000100000006010300000032",
+   "parameterInfo":[
+       {
+         "codeId": "plcRequest",
+         "addressIndex": "2",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "plcRequestID",
+         "addressIndex": "4",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "plcReport",
+         "addressIndex": "10",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "plcReportID",
+         "addressIndex": "12",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "mesSend",
+         "addressIndex": "20",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "mesSendCount",
+         "addressIndex": "22",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "mesConfirm",
+         "addressIndex": "40",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "alarmStatus",
+         "addressIndex": "62",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "alarmWord1",
+         "addressIndex": "64",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "alarmWord2",
+         "addressIndex": "66",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "alarmWord3",
+         "addressIndex": "68",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "machineStatusWord",
+         "addressIndex": "70",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "inputOrOut2",
+         "addressIndex": "72",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "inputOrOut3",
+         "addressIndex": "74",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "inputOrOut4",
+         "addressIndex": "76",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "inputOrOut5",
+         "addressIndex": "78",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "inputOrOut6",
+         "addressIndex": "80",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       },
+       {
+         "codeId": "inputOrOut7",
+         "addressIndex": "82",
+         "addressLength": "2",
+         "type": "word",
+         "unit": ""
+       }
+     ]
+
+}
diff --git a/JiuMuMesParent/JsonFile/PlcMarking.json b/JiuMuMesParent/JsonFile/PlcMarking.json
index 1645ce4..3436006 100644
--- a/JiuMuMesParent/JsonFile/PlcMarking.json
+++ b/JiuMuMesParent/JsonFile/PlcMarking.json
@@ -67,7 +67,7 @@
          "unit": ""
        },
        {
-         "codeId": "mesSend",
+         "codeId": "standby27",
          "addressIndex": "22",
          "addressLenght": "2",
          "ratio": "1",
diff --git a/JiuMuMesParent/JsonFile/PlcSilkScreen.json b/JiuMuMesParent/JsonFile/PlcSilkScreen.json
index 8c0bd10..948f9ce 100644
--- a/JiuMuMesParent/JsonFile/PlcSilkScreen.json
+++ b/JiuMuMesParent/JsonFile/PlcSilkScreen.json
@@ -52,6 +52,7 @@
          "type": "word",
          "unit": ""
        },
+
        {
          "codeId": "width",
          "addressIndex": "26",
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
index 0d053ca..335a30a 100644
--- a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
@@ -46,7 +46,7 @@
     public void connect(){
         try {
             this.socket=new Socket(Ip,Port);
-            this.socket.setSoTimeout(2000);
+            this.socket.setSoTimeout(1000);
         }catch (Exception e) {
             log.info("The IP address of the host cannot be determined:{}",e.getMessage());
         }
diff --git a/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original b/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original
index 6a6876c..f60a0b1 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 98f963b..ce70431 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -1,8 +1,10 @@
 package com.mes;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.mes.common.*;
-import com.mes.job.PLCLoad;
+import com.mes.md.entity.Machine;
 import com.mes.md.mapper.MachineMapper;
+import com.mes.md.mapper.PrimitiveTaskMapper;
 import com.mes.md.mapper.TaskingMapper;
 import com.mes.md.service.LineConfigurationService;
 import com.mes.md.service.PrimitiveTaskService;
@@ -15,6 +17,8 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
 @Component
@@ -31,14 +35,38 @@
     PrimitiveTaskService primitiveTaskService;
     @Resource
     LineConfigurationService lineConfigurationService;
+    @Resource
+    PrimitiveTaskMapper primitiveTaskMapper;
     @Override
     public void run(ApplicationArguments args) throws Exception {
         // TODO Auto-generated method stub
-        new MachineLoad(taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
-        new MachineEdging(taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
-        new MachineFlipSlice(machineMapper,taskingService).start();
-        new MachineMarking(machineMapper,taskingService).start();
-        new MachineSilkScreen(machineMapper,taskingService).start();
-        new MachineRotate(machineMapper,taskingService).start();
+        List<Machine> machineListLoad =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"涓婄墖").eq(Machine::getState,"寮�宸�"));
+        List<Machine> machineListEdging =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"纾ㄨ竟").eq(Machine::getState,"寮�宸�"));
+        List<Machine> machineListFlipSlice =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"缈荤墖").eq(Machine::getState,"寮�宸�"));
+        List<Machine> machineListMarking =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩鎵撴爣鏈�").eq(Machine::getState,"寮�宸�"));
+        List<Machine> machineListSilkScreen =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: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/job/MachineTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MachineTask.java
index 680d651..073b79d 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
@@ -1,18 +1,19 @@
 package com.mes.job;
 
 import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.S7objectFlipSlice;
 import com.mes.common.S7objectMachine;
 import com.mes.common.S7objectMarking;
 import com.mes.device.PlcParameterInfo;
 import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
+import com.mes.md.entity.*;
 import com.mes.md.mapper.GlassInfoMapper;
 import com.mes.md.mapper.MachineMapper;
 import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.service.TaskingService;
+import com.mes.md.service.*;
 import com.mes.tools.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鑷姩鎵撴爣鏈�
@@ -41,128 +43,231 @@
     @Autowired
     TaskingService taskingService;
     @Autowired
+    ProjectService projectService;
+    @Autowired
+    PrimitiveTaskService primitiveTaskService;
+    @Autowired
+    KBBTJPDrawingBPService kBBTJPDrawingBPService;
+    @Autowired
+    LineConfigurationService lineConfigurationService;
+    @Autowired
     private GlassInfoMapper glassInfoMapper;
-    public int a =1;
-    public S7objectMachine s7objectMachine;
+    public List<Map> sendRecords = new ArrayList<>();
+    private List<Machine> machineListLoad;
+    private List<Machine> machineListEdging;
+    private List<Machine> machineListFlipSlice;
+    private List<Machine> machineListMarking;
+    private List<Machine> machineListSilkScreen;
+    private List<Machine> machineListRotate;
+    private List<Machine> machineListGlueDispenser;
+    private List<Machine> machineListScanQrCode;
+    private List<Machine> machineListLamination;
 
-    //@Scheduled(fixedDelay = 1000)
-    public void plcMachineTask() {
-        Long machineId=12L;
-        Machine machine=machineMapper.selectById(machineId);
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", 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");//
-
-        PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
-        PlcParameterInfo plcReportID =plcParameterObject.getPlcParameter("plcReportID");//姹囨姤ID
-        PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
-        PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
-
-        String str=S7objectMarking.getinstance().plccontrol.readString("DB14.30");
-
-        //String width=S7objectMarking.getinstance().plccontrol.readWord(widthOutOfService.getAddress());
-        log.info("plcRequest:{},plcRequestID:{},mesSend:{},mesSendID:{},drawingMark:{}," +
-                        "plcReport:{},plcReportID:{},mesConfirm:{},mesConfirmID:{}"
-                ,plcRequest.getValue(),plcRequestID.getValue(),mesSend.getValue(),isMark.getValue(),drawingMark.getValue(),
-                plcReport.getValue(),plcReportID.getValue(),mesConfirm.getValue(),mesConfirmID.getValue());
-        if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) {
-            //鍙戦�佸瓧缃�0
-            log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
-                    ,markingMode.getValue()
-                    ,isMark.getValue()
-                    ,lengthOutOfService.getValue()
-                    ,widthOutOfService.getValue()
-                    ,mesSend.getValue());
-            //S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(),"");
-            S7objectMarking.getinstance().plccontrol.writeWord(markingMode.getAddress(), 0);
-            S7objectMarking.getinstance().plccontrol.writeWord(lengthOutOfService.getAddress(), 0);
-            S7objectMarking.getinstance().plccontrol.writeWord(widthOutOfService.getAddress(), 0);
-            S7objectMarking.getinstance().plccontrol.writeWord(isMark.getAddress(), 0);
-            S7objectMarking.getinstance().plccontrol.writeWord(mesSend.getAddress(), 0);
-            return;
-        }
-        if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) {
-            log.info("2.纭瀛楃疆闆�");
-            //鍙戦�佸瓧缃�0
-            S7objectMarking.getinstance().plccontrol.writeWord(mesConfirm.getAddress(), 0);
-            return;
-        }
-        if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){
-            int finishCount=taskingService.finishMachineTask(machine);
-            log.info("3銆佷换鍔″畬鎴�");
-            if(finishCount>0){//鏈変换鍔�
-                S7objectMarking.getinstance().plccontrol.writeWord(mesConfirm.getAddress(), 1);
-                return;
-            }
-        }
-        if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())&& !plcRequestID.getValue().isEmpty()&&"寮�宸�".equals(machine.getState())){
-            Tasking tasking;
-            if("0".equals(plcRequestID.getValue())){
-                //鏍囧噯妯″紡
-                tasking=taskingService.startMachineTask(machine);
-            }else{
-                //瀹氬埗妯″紡
-                tasking=taskingService.startMachineTask(machine,plcRequestID.getValue());
-            }
-            //log.info("4銆佸彂閫佷换鍔�  璁惧鐘舵��:{},  鏁版嵁锛歿},",machine,tasking);
-            if(tasking!=null){
-                //妯″紡锛�1瀹氬埗  0 鎵归噺      鏄惁鎵撴爣锛�0涓嶆墦鏍�   1鎵撴爣
-                int isMark_=tasking.getDrawingMarking()==null?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){
-                    S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId());
-                }
-                //S7objectMarking.getinstance().plccontrol.writeUInt32 (mesSendID.getAddress(), 2);
-                S7objectMarking.getinstance().plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());
-                S7objectMarking.getinstance().plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());
-                S7objectMarking.getinstance().plccontrol.writeWord(isMark.getAddress(), isMark_);
-                S7objectMarking.getinstance().plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_);
-                S7objectMarking.getinstance().plccontrol.writeWord(mesSend.getAddress(), 1);
-                return;
-            }
-        }
-        //log.info("鏃犲彲鎵ц鐨勬潯浠�");
-
-    }
-    //@Scheduled(fixedDelay = 1000)
-    public void markingTasks() {
+    //鏈烘鎵�
+    @Scheduled(fixedDelay = 500)
+    public void MarkingTasks() {
+        machineListLoad =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"涓婄墖"));
         JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(11L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("marking");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
+        jsonObject.append("sessionMapName", "loadTask");
+        for (Machine machine : machineListLoad) {
+            JSONObject jsonObjectItem = new JSONObject();
+            //鏍囧噯妯″紡  鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
+            LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
+            //姝ょ嚎璺凡棰嗗彇鐨勪换鍔�
+            List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
+            //姝ょ嚎璺湭棰嗗彇鐨勪换鍔�  鏈湴
+            //List<PrimitiveTask> findPrimitiveTask=primitiveTaskService.findPrimitiveTaskNotFinish();
+            //姝ょ嚎璺湭棰嗗彇鐨勪换鍔�  瀹㈡埛鏁版嵁搴�
+            List<KBBTJPDrawingBP> list =kBBTJPDrawingBPService.notReceiveKBBTJPDrawingBP();
+            jsonObjectItem.append("findPrimitiveTask", list);
+            jsonObjectItem.append("findPrimitiveTasking", findPrimitiveTasking);
+            //jsonObject.append("findPrimitiveTask", findPrimitiveTask);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+    //纾ㄨ竟鏈�
+    @Scheduled(fixedDelay = 500)
+    public void edgingTasks() {
+        machineListEdging =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"纾ㄨ竟"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "edgingTask");
+        for (Machine machine : machineListEdging) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
 
+    //缈荤墖鍙�
+    @Scheduled(fixedDelay = 500)
+    public void flipSliceTasks() {
+        machineListFlipSlice =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"缈荤墖"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "flipSlice");
+        for (Machine machine : machineListFlipSlice) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+
+    //鎵撴爣鏈�
+    @Scheduled(fixedDelay = 500)
+    public void markingTasks() {
+        machineListMarking =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩鎵撴爣鏈�"));
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "marking");
+        for (Machine machine : machineListMarking) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+
+    //涓濆嵃鏈�
+    @Scheduled(fixedDelay = 500)
+    public void silkScreenTasks() {
+        machineListSilkScreen =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩涓濆嵃鏈�"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "silkScreenTask");
+        for (Machine machine : machineListSilkScreen) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+    //鐐硅兌鏈�
+    //@Scheduled(fixedDelay = 500)
+    public void glueDispenserTasks() {
+        machineListGlueDispenser =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩鐐硅兌鏈�"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "glueDispenser");
+        for (Machine machine : machineListGlueDispenser) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+    //鏃嬭浆鍙�
+    @Scheduled(fixedDelay = 500)
+    public void rotateTasks() {
+        machineListRotate =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鏃嬭浆鍙�"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "rotate");
+        for (Machine machine : machineListRotate) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+    //璐磋啘鏈�
+    @Scheduled(fixedDelay = 500)
+    public void laminationTasks() {
+        machineListLamination =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"鑷姩璐磋啘鏈�"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "lamination");
+        for (Machine machine : machineListLamination) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingService.findMachineTask(machine);
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObjectItem.append("sendRecords", sendRecords);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+        this.webSocketServer(jsonObject);
+    }
+
+
+    //鎶ュ伐椤甸潰鏌ヨ
+    @Scheduled(fixedDelay = 1000)
+    public void manualReporting() {
+
+        machineListScanQrCode =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"璇嗗埆鎶ュ伐"));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sessionMapName", "manualReporting");
+        for (Machine machine : machineListScanQrCode) {
+            JSONObject jsonObjectItem = new JSONObject();
+            List<Tasking> taskingList=taskingMapper.selectJoinList(Tasking.class,new MPJLambdaWrapper<Tasking>()
+                    .selectAll(Tasking.class)
+                    .innerJoin(LineConfiguration.class,LineConfiguration::getId,Tasking::getLineConfigurationId)
+                    .innerJoin(Machine.class,Machine::getId,LineConfiguration::getMachineId)
+                    .eq(LineConfiguration::getMachineId,machine.getId())
+                    .eq(Tasking::getGlassState,"姝e父")
+                    .eq(Tasking::getState,"绾夸笂")
+                    .ne(Tasking::getWorkState,"瀹屽伐")
+                    .orderByDesc(Tasking::getOperationRecordTime));
+            jsonObjectItem.append("taskingList", taskingList);
+            jsonObjectItem.append("machine", machine);
+            jsonObject.append(machine.getId().toString(), jsonObjectItem);
+        }
+
+        this.webSocketServer(jsonObject);
+    }
+    //绾夸笅鐜荤拑鏌ヨ
+    @Scheduled(fixedDelay = 1000)
+    public void downLineTask() {
+        JSONObject jsonObject = new JSONObject();
+        List<Tasking> downLineTask=taskingService.findDownLineTask();
+        jsonObject.append("sessionMapName", "downLineTask");
+        jsonObject.append("downLineTask", downLineTask);
+        this.webSocketServer(jsonObject);
+    }
+
+
+    public void webSocketServer(JSONObject jsonObject) {
+        try {
+            String sessionMapName=jsonObject.getJSONArray("sessionMapName").get(0).toString();
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(sessionMapName);
+            if (sendwServer != null) {
+                for (WebSocketServer webserver : sendwServer) {
+                    if (webserver != null) {
+                        try {
+                            webserver.sendMessage(jsonObject.toString());
+                            List<String> messages = webserver.getMessages();
+                            if (!messages.isEmpty()) {
+                                // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                                webserver.clearMessages();
+                            }
+                        }catch (Exception e) {
+
+                        }
+                    } else {
+                        log.info("Home is closed");
                     }
-                } else {
-                    log.info("Home is closed");
                 }
             }
+        }catch (Exception e) {
+
         }
+
     }
 
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java
deleted file mode 100644
index d18c97b..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.github.s7connector.api.DaveArea;
-import com.github.s7connector.api.S7Connector;
-import com.github.s7connector.api.factory.S7ConnectorFactory;
-import com.github.s7connector.impl.serializer.converter.StringConverter;
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.mes.common.S7object;
-import com.mes.common.S7objectFlipSlice;
-import com.mes.common.S7objectMachine;
-import com.mes.common.S7objectMarking;
-import com.mes.device.PlcParameterInfo;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.GlassInfoMapper;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.service.TaskingService;
-import com.mes.service.ModbusTcp;
-import com.mes.service.PlcAgreement;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import sun.nio.cs.ext.GBK;
-
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * 鑷姩鎵撴爣鏈�
- * @Author : yanzhxiin
- * @Date: 2024/8/20 11:19
- * @Description:
- */
-@Component
-@Slf4j
-public class MarkingTask {
-
-    public static String engineerId = "";
-
-    @Autowired
-    TaskingMapper taskingMapper;
-    @Autowired
-    MachineMapper machineMapper;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    private GlassInfoMapper glassInfoMapper;
-
-    public S7objectMachine s7objectMachine;
-
-    public List<Map> sendRecords = new ArrayList<>();
-
-    //@Scheduled(fixedDelay = 1000)
-    public void plcMarkingTask() {
-        Long machineId=12L;
-        Machine machine=machineMapper.selectById(machineId);
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500);
-            s7objectMachine.start();
-        }
-        //PlcParameterObject plcParameterObject = S7objectMarking.getinstance().PlcMesObject;
-        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");//
-
-        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())) {
-            //鍙戦�佸瓧缃�0
-            log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
-                    ,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);
-            s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(isMark.getAddress(), 0);
-            s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
-            return;
-        }
-        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);
-            log.info("3銆佷换鍔″畬鎴�");
-            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){
-                //妯″紡锛�1瀹氬埗  0 鎵归噺      鏄惁鎵撴爣锛�0涓嶆墦鏍�   1鎵撴爣
-                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){
-                    s7objectMachine.plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId());
-                }
-                //S7objectMarking.getinstance().plccontrol.writeUInt32 (mesSendID.getAddress(), 2);
-                s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());
-                s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());
-                s7objectMachine.plccontrol.writeWord(isMark.getAddress(), isMark_);
-                s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_);
-                s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
-
-                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                String sendRecord=df.format(new Date())+"  "+
-                        tasking.getScanId()+"-"+
-                        tasking.getProgramId()+"-"+
-                        tasking.getLength()+"-"+
-                        tasking.getWidth()+"-"+
-                        isMark_+"-"+
-                        isMarkingMode_;
-                if (sendRecords.size()>7){
-                    sendRecords.remove(0);
-                }
-                Map sendContentMap=new HashMap();
-                sendContentMap.put("sendContent",sendRecord);
-                sendRecords.add(sendContentMap);
-                return;
-            }
-        }
-        //log.info("鏃犲彲鎵ц鐨勬潯浠�");
-
-    }
-    @Scheduled(fixedDelay = 500)
-    public void markingTasks() {
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(12L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        jsonObject.append("sendRecords", sendRecords);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("marking");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-        }
-    }
-
-}
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 e4d6039..3c04855 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
@@ -51,8 +51,8 @@
         if (machine.getIsLog()>0){
             s7objectMachine.consoleLogInfo();
         }
-        int edgSpeedInt=PLCEdging.edgSpeed;
-        int edgThinnessInt=PLCEdging.thinness;
+        int edgSpeedInt=0;
+        int edgThinnessInt=0;
         if(!(edgSpeedInt+"").equals(edgSpeed.getValue())||!(edgThinnessInt+"").equals(thinness.getValue())){
             //缁欐竻娲楁満鍣ㄥ彂閫佺(杈规満閫熷害
             S7objectCleaning.getinstance().plccontrol.writeWord(edgSpeed.getAddress(), edgSpeedInt);
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCEdging.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCEdging.java
deleted file mode 100644
index 95460bb..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCEdging.java
+++ /dev/null
@@ -1,342 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.mes.common.S7object;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.LineConfiguration;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.PrimitiveTask;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.service.*;
-import com.mes.service.ModbusTcp;
-import com.mes.service.PlcAgreement;
-import com.mes.service.PlcParameter;
-import com.mes.tools.WebSocketServer;
-import com.mes.utils.HexUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Socket;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCEdging {
-
-    @Autowired
-    TaskingMapper taskingMapper;
-    @Autowired
-    MachineMapper machineMapper;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    ProjectService projectService;
-
-    @Autowired
-    PrimitiveTaskService primitiveTaskService;
-    @Autowired
-    KBBTJPDrawingBPService kBBTJPDrawingBPService;
-    @Autowired
-    LineConfigurationService lineConfigurationService;
-    public static int thinness = 40;
-    public static int edgSpeed = 40;
-    public static Long machineId1 = 5L;
-    public static Long machineId2 = 6L;
-    public List<Map> sendRecords = new ArrayList<>();
-
-    //@Scheduled(fixedDelay = 1000)
-    public void plcEdging() {
-        Machine machine=machineMapper.selectById(machineId2);
-        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcEdging");
-        try {
-            modbusTcp1.connect();
-            PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement("PlcEdging");
-            if(!modbusTcp1.read(plcAgreement)){
-                log.info("閫氳璇诲彇鏂版暟鎹け璐�");
-                modbusTcp1.close();
-                return;
-            }
-            PlcParameter inputOrOut2 =plcAgreement.getPlcParameter("inputOrOut2");
-            edgSpeed=inputOrOut2.getValueInt();
-
-            PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
-            PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
-
-
-            PlcParameter plcReport =plcAgreement.getPlcParameter("plcReport");//姹囨姤瀛�
-            PlcParameter plcReportID =plcAgreement.getPlcParameter("plcReportID");//姹囨姤ID
-            PlcParameter plcReport2 =plcAgreement.getPlcParameter("plcReport2");//鎵嬪姩姹囨姤瀛�
-            PlcParameter plcReportID2 =plcAgreement.getPlcParameter("plcReportID2");//鎵嬪姩姹囨姤ID
-
-            PlcParameter mesConfirm =plcAgreement.getPlcParameter("mesConfirm");//纭瀛�
-            PlcParameter mesConfirmID =plcAgreement.getPlcParameter("mesConfirmID");//纭ID
-            PlcParameter mesConfirm2 =plcAgreement.getPlcParameter("mesConfirm2");//鎵嬪姩纭瀛�
-            PlcParameter mesConfirmID2 =plcAgreement.getPlcParameter("mesConfirmID2");//鎵嬪姩纭ID
-            if (machine.getIsLog()>0){
-                modbusTcp1.consoleLogInfo(plcAgreement);
-            }
-            if (0==plcRequest.getValueInt()&&1==mesSend.getValueInt()) {
-                log.info("1.鍙戦�佸瓧缃浂");
-                //鍙戦�佸瓧缃�0
-                String send= HexUtil.intTo2ByteHex(0);
-                modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                log.info("鍙戦�佸瓧 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if (0==plcReport.getValueInt()&&0!=mesConfirm.getValueInt()) {
-                log.info("2.纭瀛楃疆闆�");
-                //鍙戦�佸瓧缃�0
-                String send=HexUtil.intTo2ByteHex(0);
-                modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                log.info("浠诲姟瀹屾垚 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if (0==plcReport2.getValueInt()&&0!=mesConfirm2.getValueInt()) {
-                log.info("2.纭瀛楃疆闆�");
-                //鍙戦�佸瓧缃�0
-                String send=HexUtil.intTo2ByteHex(0);
-                modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                log.info("浠诲姟瀹屾垚 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if(1==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
-                int finishCount=taskingService.finishMachineTask(machine);
-                log.info("3銆佷换鍔″畬鎴�");
-                if(finishCount>0) {//鏈変换鍔�
-                    String send = HexUtil.intTo2ByteHex(1);
-                    modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
-                    log.info("浠诲姟瀹屾垚 鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                String send = HexUtil.intTo2ByteHex(1);
-                modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
-                log.info("浠诲姟瀹屾垚 寮傚父鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if(4==plcReport2.getValueInt()&&0==mesConfirm2.getValueInt()){
-                int finishCount=taskingService.glassDownLineOne(machine);
-                if(finishCount>0){//鏈変换鍔�
-                    log.info("4銆佷汉宸ユ嬁璧�");
-                    String send=HexUtil.intTo2ByteHex(4);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                    log.info("浜哄伐鎷胯蛋鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                String send=HexUtil.intTo2ByteHex(4);
-                modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                log.info("浜哄伐鎷胯蛋寮傚父 鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if(2==plcReport2.getValueInt()&&0==mesConfirm2.getValueInt()){
-                int finishCount=taskingService.loseMachineTask(machine);
-                if(finishCount>0){//鏈変换鍔�
-                    log.info("2銆侀噸鍙�");
-                    String send=HexUtil.intTo2ByteHex(2);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                    log.info("閲嶅彂鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }else{
-                    log.info("2銆佸紓甯搁噸鍙�");
-                    String send=HexUtil.intTo2ByteHex(2);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                    log.info("寮傚父閲嶅彂鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-            }
-
-            if(3==plcReport2.getValueInt()&&0==mesConfirm2.getValueInt()){
-                int finishCount=taskingService.finishMachineTask(machine);
-                if(finishCount>0){//鏈変换鍔�
-                    log.info("3銆佽澶囦笂浜哄伐鐐圭牬鎹�");
-                    String send=HexUtil.intTo2ByteHex(3);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                    log.info("浜哄伐鐐圭牬鎹熷彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }else{
-                    //鏄惁鑷姩娓呴櫎鐮存崯
-                    log.info("3銆佹棤鏁堢牬鎹� 锛堟病鏈夋壘鍒版ID鐨勭幓鐠冿級");
-                    String send=HexUtil.intTo2ByteHex(3);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()/2));
-                    log.info("鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm2.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-            }
-            List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-
-            if((1==plcRequest.getValueInt()&&0==mesSend.getValueInt())
-                    &&"寮�宸�".equals(machine.getState())
-                    &&taskingCount.size()<machine.getMaxTaskCount()){
-                Machine loadMachine=machineMapper.selectById(2L);
-                Tasking tasking;
-                String scan_id="";
-                if(loadMachine.getMode()==1){
-                    //鏍囧噯妯″紡  鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
-                    LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
-                    List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
-                    //娣诲姞鏁版嵁:
-                    for(PrimitiveTask primitiveTask:findPrimitiveTasking){
-                        List<Tasking> taskingTopList=taskingMapper.selectList(new QueryWrapper<Tasking>().lambda()
-                                .eq(Tasking::getScanId,primitiveTask.getScanId())
-                        );
-                        //浠诲姟鏁�>宸蹭笂鏁伴噺
-                        if(taskingTopList.size()<primitiveTask.getTaskQuantity()){
-                            Tasking taskingAdd=primitiveTaskService.convertListTasking(primitiveTask,lineConfiguration.getId());
-                            Integer taskSequence=1;
-                            if (machine.getTodayCount()>0&&machine.getTodayCount()<5000){
-                                taskSequence=machine.getTodayCount()+1;
-                            }else{
-                                taskSequence=1;
-                            }
-                            machine.setTodayCount(taskSequence);
-                            taskingAdd.setTaskSequence(taskSequence);
-                            machineMapper.updateById(machine);
-                            taskingMapper.insert(taskingAdd);
-                        }
-                        break;
-                    }
-                    tasking=taskingService.startMachineTask(machine);
-                }else{
-                    //瀹氬埗妯″紡
-                    String PlcRequestID_=clientTCPSocket();
-                    //String PlcRequestID_=",,46607221";
-                    if (PlcRequestID_==null||PlcRequestID_.lastIndexOf(",")<0){
-                        modbusTcp1.close();
-                        errorMachine(machine,("鎵笉鍒扮爜:"+PlcRequestID_));
-                        return;
-                    }
-                    scan_id= PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",")+1);
-                    tasking=taskingService.startMachineTask(machine,scan_id);
-                }
-                if(tasking!=null){
-                    log.info("4銆佸彂閫佷换鍔�  浠诲姟鏁版嵁锛歿}, 璁惧鐘舵��:{}, ",machine,tasking);
-                    String send=
-                            HexUtil.intTo2ByteHex(1)+
-                                    HexUtil.intTo2ByteHex(tasking.getGlassId().intValue())+
-                                    HexUtil.intTo2ByteHex(((Double)(tasking.getLength()*10)).intValue())+
-                                    HexUtil.intTo2ByteHex(((Double)(tasking.getWidth()*10)).intValue())+
-                                    HexUtil.intTo2ByteHex(((Double)(tasking.getThickness()*10)).intValue());
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                    log.info("鍙戦�佷换鍔″彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
-                    modbusTcp1.close();
-                    errorMachine(machine,"");
-                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    String sendRecord=df.format(new Date())+"  "+
-                            tasking.getGlassId()+"-"+
-                            tasking.getWidth()+"-"+
-                            tasking.getLength()+"-"+
-                            tasking.getThickness();
-                    if (sendRecords.size()>7){
-                        sendRecords.remove(0);
-                    }
-                    Map sendContentMap=new HashMap();
-                    sendContentMap.put("sendContent",sendRecord);
-                    sendRecords.add(sendContentMap);
-                    return;
-                }else if(!scan_id.isEmpty()){
-                    taskingService.scanMachineAdd(machine,scan_id);
-                    modbusTcp1.close();
-                    return;
-                }
-            }
-            //}
-
-        } catch (Exception e) {
-            log.info("浜や簰閫昏緫閿欒");
-        }
-
-        modbusTcp1.close();
-        //log.info("鏃犲彲鎵ц鐨勬潯浠�");
-    }
-
-
-    public void errorMachine(Machine machine,String error) {
-        if (!error.equals(machine.getRemark())){
-            machine.setRemark(error);
-            machineMapper.updateById(machine);
-        }
-    }
-    public String clientTCPSocket() {
-        try {
-            Machine machine=machineMapper.selectById(4L);
-            Socket clientSocket = new Socket(machine.getIp(), machine.getPort());
-            try {
-                // 鍒涘缓杈撳叆娴佸拰杈撳嚭娴�
-                InputStream inputStream = clientSocket.getInputStream();
-                OutputStream outputStream = clientSocket.getOutputStream();
-                // 鍙戦�佸惎鍔ㄥ懡浠�
-                String message = "start";
-                outputStream.write(message.getBytes());
-                // 璇诲彇鏈嶅姟鍣ㄥ搷搴旂殑鏁版嵁
-                byte[] buffer = new byte[1024];
-                int bytesRead = inputStream.read(buffer);
-                String receivedMessage = new String(buffer, 0, bytesRead);
-                System.out.println("鏀跺埌鎵爜鏋繑鍥炲唴瀹癸細" + receivedMessage);
-                // 鍏抽棴杩炴帴
-                String message2 = "stop";
-                outputStream.write(message2.getBytes());
-                clientSocket.close();
-                return receivedMessage;
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            clientSocket.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return "";
-    }
-    @Scheduled(fixedDelay = 500)
-    public void EdgingTasks() {
-
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(6L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        jsonObject.append("sendRecords", sendRecords);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("edgingTask");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
-
-                    }
-
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java
deleted file mode 100644
index 4ef775a..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.mes.common.S7object;
-import com.mes.common.S7objectFlipSlice;
-import com.mes.common.S7objectMachine;
-import com.mes.common.S7objectMarking;
-import com.mes.device.PlcParameterInfo;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.service.ProjectService;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCFlipSlice {
-
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    MachineMapper machineMapper;
-
-    public S7objectMachine s7objectMachine;
-
-    @Autowired
-    ProjectService projectService;
-
-    public List<Map> sendRecords = new ArrayList<>();
-
-    //@Scheduled(fixedDelay = 1000)
-    public void plcFlipSlice() {
-        Long machineId=26L;
-        Machine machine=machineMapper.selectById(machineId);
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcFlipSlice", EPlcType.S1200);
-            s7objectMachine.start();
-        }
-        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(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) {
-            //鍙戦�佸瓧缃�0
-            int finishCount=taskingService.finishMachineTask(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(mesSend.getAddress(), 0);
-            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;
-            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.getGlassId().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);
-            }
-        }
-
-    }
-
-    public void nullMachine(Machine machine) {
-        if (!"".equals(machine.getRemark())){
-            machine.setRemark("");
-            machineMapper.updateById(machine);
-        }
-    }
-    @Scheduled(fixedDelay = 500)
-    public void flipSliceTask() {
-        //鑾峰彇鎶ヨ鐘舵��
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(26L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        jsonObject.append("sendRecords", sendRecords);
-        ArrayList<WebSocketServer> sendServer = WebSocketServer.sessionMap.get("flipSlice");
-        if (sendServer != null) {
-            for (WebSocketServer webserver : sendServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
-
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-    @Scheduled(fixedDelay = 1000)
-    public void downLineTask() {
-        //绾夸笅浠诲姟
-        JSONObject jsonObject = new JSONObject();
-        List<Tasking> downLineTask=taskingService.findDownLineTask();
-        jsonObject.append("downLineTask", downLineTask);
-        ArrayList<WebSocketServer> sendServer = WebSocketServer.sessionMap.get("downLineTask");
-        if (sendServer != null) {
-            for (WebSocketServer webserver : sendServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCLoad.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCLoad.java
deleted file mode 100644
index f393547..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCLoad.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.mes.md.entity.*;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.mapper.PrimitiveTaskMapper;
-import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.service.*;
-import com.mes.service.ModbusTcp;
-import com.mes.service.PlcAgreement;
-import com.mes.service.PlcParameter;
-import com.mes.tools.WebSocketServer;
-import com.mes.utils.HexUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Socket;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCLoad {
-
-    @Autowired
-    TaskingMapper taskingMapper;
-    @Autowired
-    MachineMapper machineMapper;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    ProjectService projectService;
-    @Autowired
-    PrimitiveTaskService primitiveTaskService;
-    @Autowired
-    KBBTJPDrawingBPService kBBTJPDrawingBPService;
-    @Autowired
-    LineConfigurationService lineConfigurationService;
-
-    public static Long machineId1 = 1L;
-    public static Long machineId2 = 2L;
-    public ModbusTcp modbusTcp2 = new ModbusTcp();
-    public List<Map> sendRecords = new ArrayList<>();
-    @Autowired
-    private PrimitiveTaskMapper primitiveTaskMapper;
-
-
-    //@Scheduled(fixedDelay = 1000)
-    public void plcLoad() {
-        Machine machine=machineMapper.selectById(machineId2);
-        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcLoad");
-        modbusTcp1.connect();
-        PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement("PlcLoad");
-        try {
-            if(!modbusTcp1.read(plcAgreement)){
-                log.info("閫氳璇诲彇鏂版暟鎹け璐�");
-                modbusTcp1.close();
-                return;
-            }
-            PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
-            PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
-            PlcParameter mesSendCount =plcAgreement.getPlcParameter("mesSendCount");//鍙戦�佹暟閲�
-
-            PlcParameter plcReport =plcAgreement.getPlcParameter("plcReport");//姹囨姤瀛�
-            PlcParameter plcReportID =plcAgreement.getPlcParameter("plcReportID");//姹囨姤ID
-            PlcParameter mesConfirm =plcAgreement.getPlcParameter("mesConfirm");//纭瀛�
-            PlcParameter mesConfirmID =plcAgreement.getPlcParameter("mesConfirmID");//纭ID
-            if (machine.getIsLog()>0){
-                modbusTcp1.consoleLogInfo(plcAgreement);
-            }
-            if (0==plcRequest.getValueInt()&&1==mesSend.getValueInt()) {
-                //鍙戦�佸瓧缃�0
-                String send= HexUtil.intTo2ByteHex(0);
-                modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                log.info("1.鍙戦�佸瓧缃浂 鍙戦�佸瓧 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if (0==plcReport.getValueInt()&&0!=mesConfirm.getValueInt()) {
-                //纭瀛楃疆闆�
-                String send=HexUtil.intTo2ByteHex(0);
-                modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                log.info("2.纭瀛楃疆闆� 浠诲姟瀹屾垚 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
-            List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
-
-            if(1==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
-                for(PrimitiveTask primitiveTask:findPrimitiveTasking){
-                    log.info("鏈烘鎵嬩换鍔″畬鎴� 鍘熷鏁伴噺锛歿}  鏈鏁伴噺:{}", primitiveTask.getReportCount(), plcReportID.getValueInt());
-                    if (plcReportID.getValueInt()>0){
-                        primitiveTask.setReportCount(primitiveTask.getReportCount()+ plcReportID.getValueInt());
-                        primitiveTaskMapper.updateById(primitiveTask);
-                    }
-                    String send = HexUtil.intTo2ByteHex(1);
-                    modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/ 2));
-                    log.info("浠诲姟瀹屾垚 鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                log.info("3銆佷换鍔″畬鎴�:"+plcReportID.getValueString());
-                String send = HexUtil.intTo2ByteHex(1);
-                modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
-                log.info("浠诲姟瀹屾垚 寮傚父鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                modbusTcp1.close();
-                return;
-            }
-            if((1==plcRequest.getValueInt()&&0==mesSend.getValueInt())
-                    &&"寮�宸�".equals(machine.getState())){
-                int loadCount=0;
-                if(machine.getMode()==1){
-                    //鏍囧噯妯″紡  鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
-                    for(PrimitiveTask primitiveTask:findPrimitiveTasking){
-//                        //浠诲姟鏁�>宸蹭笂鏁伴噺
-//                        List<Tasking> taskingTopList=taskingMapper.selectList(new QueryWrapper<Tasking>().lambda()
-//                                .eq(Tasking::getScanId,primitiveTask.getScanId())
-//                        );
-                        loadCount=primitiveTask.getTaskQuantity()-primitiveTask.getReportCount();
-                        loadCount=(loadCount>0?loadCount:0);
-
-                        break;
-                    }
-                    //loadCount=taskingCount.size();
-                }else{
-                    //瀹氬埗妯″紡
-                    loadCount=1;
-                }
-                if(loadCount>0){
-                    log.info("4銆佸彂閫佷换鍔�  浠诲姟鏁版嵁锛歿}, 璁惧鐘舵��:{}, ",loadCount,machine);
-                    String send=HexUtil.intTo2ByteHex(1)+ HexUtil.intTo2ByteHex(loadCount);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                    log.info("鍙戦�佷换鍔″彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                    modbusTcp1.close();
-                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    String sendRecord=df.format(new Date())+"  "+"1  "+ loadCount;
-                    if (sendRecords.size()>7){
-                        sendRecords.remove(0);
-                    }
-                    Map sendContentMap=new HashMap();
-                    sendContentMap.put("sendContent",sendRecord);
-                    sendRecords.add(sendContentMap);
-                    return;
-                }
-            }
-        } catch (Exception e) {
-            log.info("浜や簰閫昏緫閿欒");
-        }
-        modbusTcp1.close();
-        //log.info("鏃犲彲鎵ц鐨勬潯浠�");
-    }
-    @Scheduled(fixedDelay = 500)
-    public void loadTasks() {
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(machineId2);
-
-
-        //鏍囧噯妯″紡  鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
-        LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
-        //姝ょ嚎璺凡棰嗗彇鐨勪换鍔�
-        List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
-        //姝ょ嚎璺湭棰嗗彇鐨勪换鍔�  鏈湴
-        //List<PrimitiveTask> findPrimitiveTask=primitiveTaskService.findPrimitiveTaskNotFinish();
-        //姝ょ嚎璺湭棰嗗彇鐨勪换鍔�  瀹㈡埛鏁版嵁搴�
-        List<KBBTJPDrawingBP> list =kBBTJPDrawingBPService.notReceiveKBBTJPDrawingBP();
-        jsonObject.append("findPrimitiveTask", list);
-        jsonObject.append("findPrimitiveTasking", findPrimitiveTasking);
-        //jsonObject.append("findPrimitiveTask", findPrimitiveTask);
-        jsonObject.append("machine", machine);
-        jsonObject.append("sendRecords", sendRecords);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadTask");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
-
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCManualReporting.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCManualReporting.java
deleted file mode 100644
index 536d353..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCManualReporting.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.mes.common.S7object;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.LineConfiguration;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.PrimitiveTask;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.service.PrimitiveTaskService;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCManualReporting {
-
-    PlcParameterObject plcParameterObject =null;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    TaskingMapper taskingMapper;
-    @Autowired
-    MachineMapper machineMapper;
-    @Autowired
-    PrimitiveTaskService primitiveTaskService;
-
-    @Scheduled(fixedDelay = 500)
-    public void manualReporting() {
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(24L);
-        List<Tasking> taskingList=taskingMapper.selectJoinList(Tasking.class,new MPJLambdaWrapper<Tasking>()
-                .selectAll(Tasking.class)
-                .innerJoin(LineConfiguration.class,LineConfiguration::getId,Tasking::getLineConfigurationId)
-                .innerJoin(Machine.class,Machine::getId,LineConfiguration::getMachineId)
-                .eq(LineConfiguration::getMachineId,machine.getId())
-                .eq(Tasking::getGlassState,"姝e父")
-                .eq(Tasking::getState,"绾夸笂")
-                .ne(Tasking::getWorkState,"瀹屽伐")
-                .orderByDesc(Tasking::getOperationRecordTime));
-
-        //List<PrimitiveTask> taskingList = primitiveTaskService.selectPrimitiveTask(new PrimitiveTask());
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("manualReporting");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
-
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCMechanicalArm.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCMechanicalArm.java
deleted file mode 100644
index 87791d4..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCMechanicalArm.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.mes.common.S7object;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCMechanicalArm {
-
-    PlcParameterObject plcParameterObject =null;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    MachineMapper machineMapper;
-//    @Scheduled(fixedDelay = 500)
-    public void plcEdging() {
-        //鏈烘鑷傝姹備俊鍙�
-        String request = plcParameterObject.getPlcParameter("request").getValue();
-        if (!Objects.equals(request, "")){
-            //褰撴満姊拌噦璇锋眰淇″彿涓�1鐨勬椂鍊�,//鍒ゆ柇褰撳墠浠诲姟鏄畾鍒惰繕鏄爣鍑�
-            String status = plcParameterObject.getPlcParameter("Status").getValue();
-                boolean tasking = taskingService.insertTasking(status);
-                if(tasking){
-                    S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("overGlass").getAddress(), Integer.parseInt("1"));
-                    //鍙戦�佷笂鐗囧畬姣�
-                }
-        }
-
-
-    }
-    //@Scheduled(fixedDelay = 1000)
-    public void mechanicalAmWeb() {
-        //鑾峰彇褰撳墠浠诲姟琛ㄦ渶鏂扮殑涓�鍧椾换鍔$姸鎬�
-        //鑾峰彇鎶ヨ鐘舵��
-        JSONObject jsonObject = new JSONObject();
-//        String warning = plcParameterObject.getPlcParameter("warning").getValue();
-//        if (!Objects.equals(warning, "0")) {
-//            //log.info("鎶ヨ淇℃伅锛�"+warning);
-//            jsonObject.append("warning", warning);
-//        }
-        Machine machine=machineMapper.selectById(1L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("mechanicalArm");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCRotate.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCRotate.java
deleted file mode 100644
index 46e75a4..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCRotate.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.mes.common.S7objectMachine;
-import com.mes.device.PlcParameterInfo;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.service.ProjectService;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCRotate {
-
-    PlcParameterObject plcParameterObject =null;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    MachineMapper machineMapper;
-
-    public S7objectMachine s7objectMachine;
-
-    @Autowired
-    ProjectService projectService;
-
-    public List<Map> sendRecords = new ArrayList<>();
-
-    //@Scheduled(fixedDelay = 1000)
-    public void plcRotate() {
-        //鏃嬭浆鍙�
-        Long machineId=20L;
-        Machine machine=machineMapper.selectById(machineId);
-
-        if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcRotate", EPlcType.S1200);
-            s7objectMachine.start();
-        }
-        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-        PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
-        PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
-        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");//鏃嬭浆绫诲瀷
-        String scan_id="";
-        if (machine.getIsLog()>0){
-            s7objectMachine.consoleLogInfo();
-        }
-        if ("0".equals(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) {
-            //鍙戦�佸瓧缃�0
-            int finishCount=taskingService.finishMachineTask(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);
-            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.getGlassId().toString());
-                s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), 1);
-                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);
-            }
-        }
-
-    }
-    public void nullMachine(Machine machine) {
-        if (!"".equals(machine.getRemark())){
-            machine.setRemark("");
-            machineMapper.updateById(machine);
-        }
-    }
-    @Scheduled(fixedDelay = 500)
-    public void rotateTask() {
-        //鑾峰彇鎶ヨ鐘舵��
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(20L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        jsonObject.append("sendRecords", sendRecords);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("rotate");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
-
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRVerify.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRVerify.java
deleted file mode 100644
index b8849cf..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRVerify.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.mes.common.S7object;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Tasking;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCScanQRVerify {
-
-    PlcParameterObject plcParameterObject =null;
-    @Autowired
-    TaskingService taskingService;
-    //@Scheduled(fixedDelay = 500)
-    public void plcScanQrVerify() {
-        //鑾峰彇褰撳墠浠诲姟琛ㄦ渶鏂扮殑涓�鍧椾换鍔$姸鎬�
-        //鎵爜纭绾跨▼
-        String scanId = plcParameterObject.getPlcParameter("scanId").getValue();
-        Tasking tasking =new Tasking();
-        tasking.setScanId(scanId);
-        if(!Objects.equals(scanId, "")){
-            //鏇存柊浠诲姟琛ㄧ姸鎬�
-           boolean result = taskingService.updateTaskingState(tasking);
-           if (result){
-               //娣诲姞鎴愬姛鏃跺彂閫佽繃鐗囦俊鍙�
-               S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("scan").getAddress(), Integer.parseInt("1"));
-           }
-        }else {
-            //鎵爜澶辫触鏃跺彂閫佽鍛婏紝浜岀淮鐮佹秷澶�
-            S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("deficiency").getAddress(), Integer.parseInt("1"));
-            log.info("鏍囧噯妯″紡鎵弿浜岀淮鐮侊細鏃�");
-        }
-
-    }
-    //@Scheduled(fixedDelay = 1000)
-    public void scanQrCode() {
-        //鑾峰彇褰撳墠浠诲姟琛ㄦ渶鏂扮殑涓�鍧椾换鍔$姸鎬�
-        //鑾峰彇鎶ヨ鐘舵��
-        String warning = plcParameterObject.getPlcParameter("warning").getValue();
-        JSONObject jsonObject = new JSONObject();
-        if (!Objects.equals(warning, "0")) {
-            //log.info("鎶ヨ淇℃伅锛�"+warning);
-            jsonObject.append("warning", warning);
-        }
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ScanQrVerify");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRWorks.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRWorks.java
deleted file mode 100644
index 8702c78..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRWorks.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.mes.common.S7object;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Tasking;
-import com.mes.md.service.PrimitiveTaskService;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCScanQRWorks {
-
-    PlcParameterObject plcParameterObject =null;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    PrimitiveTaskService primitiveTaskService;
-    //@Scheduled(fixedDelay = 500)
-    public void plcScanQrVerify() {
-        //鏍规嵁鎵弿鍒扮殑瀹氬埗浜岀淮鐮佸皢鐘舵�佹洿鏂板埌鏁版嵁搴撲腑
-        //鎵爜鎶ュ伐绾跨▼
-        String scanId = plcParameterObject.getPlcParameter("scanId").getValue();
-        Tasking tasking =new Tasking();
-        if(!Objects.equals(scanId, "")){
-            //鏇存柊浠诲姟琛ㄧ姸鎬�
-           boolean result = primitiveTaskService.updateReportCount(scanId);
-           if (result){
-               //娣诲姞鎴愬姛鏃跺彂閫佽繃鐗囦俊鍙�
-               S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("scan").getAddress(), Integer.parseInt("1"));
-           }
-        }else {
-            //鎵爜澶辫触鏃跺彂閫佽鍛婏紝浜岀淮鐮佹秷澶�
-            S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("deficiency").getAddress(), Integer.parseInt("1"));
-            log.info("鏍囧噯妯″紡鎵弿浜岀淮鐮侊細鏃�");
-        }
-
-    }
-    //@Scheduled(fixedDelay = 1000)
-    public void scanQrCode() {
-        //鑾峰彇褰撳墠浠诲姟琛ㄦ渶鏂扮殑涓�鍧椾换鍔$姸鎬�
-        //鑾峰彇鎶ヨ鐘舵��
-        String warning = plcParameterObject.getPlcParameter("warning").getValue();
-        JSONObject jsonObject = new JSONObject();
-        if (!Objects.equals(warning, "0")) {
-            //log.info("鎶ヨ淇℃伅锛�"+warning);
-            jsonObject.append("warning", warning);
-        }
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ScanQrVerify");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQrCodesReport.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQrCodesReport.java
deleted file mode 100644
index d82f4a8..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQrCodesReport.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.mes.job;
-import cn.hutool.json.JSONObject;
-import com.mes.common.S7object;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.service.PrimitiveTaskService;
-import com.mes.md.service.TaskingService;
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import com.mes.device.PlcParameterObject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author SNG-010
- */
-@Component
-@Slf4j
-public class PLCScanQrCodesReport {
-
-    PlcParameterObject plcParameterObject =null;
-    @Autowired
-    TaskingService taskingService;
-    @Autowired
-    MachineMapper machineMapper;
-    @Autowired
-    PrimitiveTaskService primitiveTaskService;
-    //@Scheduled(fixedDelay = 500)
-    public void pLCScanQR() {
-        //鑾峰彇褰撳墠浠诲姟琛ㄦ渶鏂扮殑涓�鍧椾换鍔$姸鎬�
-        //鎵爜绾跨▼
-        String scanId = plcParameterObject.getPlcParameter("scanId").getValue();
-        if(!Objects.equals(scanId, "")){
-           boolean result = primitiveTaskService.updateReportCount(scanId);
-           if (result){
-               //娣诲姞鎴愬姛鏃跺彂閫佽繃鐗囦俊鍙�
-               S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("scan").getAddress(), Integer.parseInt("1"));
-           }
-            log.info("鎵弿瀹氬埗浜岀淮鐮侊細"+scanId);
-        }else {
-            log.info("鏍囧噯妯″紡鎵弿浜岀淮鐮侊細鏃�");
-        }
-
-    }
-    //@Scheduled(fixedDelay = 1000)
-    public void scanQrCode() {
-        //鑾峰彇褰撳墠浠诲姟琛ㄦ渶鏂扮殑涓�鍧椾换鍔$姸鎬�
-        JSONObject jsonObject = new JSONObject();
-        //鑾峰彇鎶ヨ鐘舵��
-        Machine machine=machineMapper.selectById(23L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("scanQrCodesReport");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/SilkScreenTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/SilkScreenTask.java
deleted file mode 100644
index 1538ef1..0000000
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/SilkScreenTask.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package com.mes.job;
-
-import cn.hutool.json.JSONObject;
-import com.mes.common.S7object;
-import com.mes.common.S7objectMarking;
-import com.mes.device.PlcParameterObject;
-import com.mes.md.entity.Machine;
-import com.mes.md.entity.Tasking;
-import com.mes.md.mapper.MachineMapper;
-import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.service.TaskingService;
-import com.mes.service.ModbusTcp;
-import com.mes.service.PlcAgreement;
-import com.mes.service.PlcParameter;
-import com.mes.tools.WebSocketServer;
-import com.mes.utils.HexUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import static cn.hutool.core.io.FileUtil.writeString;
-
-/**
- * 鑷姩涓濆嵃鏈�
- * @Author :
- * @Date: 2024/8/20 11:19
- * @Description:
- */
-@Component
-@Slf4j
-public class SilkScreenTask {
-
-    @Autowired
-    TaskingMapper taskingMapper;
-    @Autowired
-    MachineMapper machineMapper;
-    @Autowired
-    TaskingService taskingService;
-    public static Long machineId1 = 13L;
-    public static Long machineId2 = 14L;
-    //public ModbusTcp modbusTcp1 = null;
-    public ModbusTcp modbusTcp2 = new ModbusTcp();
-    public List<Map> sendRecords = new ArrayList<>();
-    //@Scheduled(fixedDelay = 1000)
-    public void plcSilkScreenTask() {
-        Machine machine=machineMapper.selectById(machineId2);
-        String fileName="PlcSilkScreen";
-        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),fileName);
-        modbusTcp1.connect();
-        PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement(fileName);
-        try {
-            //while(true){
-                if(!modbusTcp1.read(plcAgreement)){
-                    log.info("閫氳璇诲彇鏂版暟鎹け璐�");
-                    modbusTcp1.close();
-                    return;
-                }
-                PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
-                PlcParameter plcRequestID =plcAgreement.getPlcParameter("plcRequestID");//璇锋眰ID
-                PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
-                PlcParameter mesSendID =plcAgreement.getPlcParameter("mesSendID");//鍙戦�両D
-                PlcParameter length =plcAgreement.getPlcParameter("length");//闀�
-                PlcParameter width =plcAgreement.getPlcParameter("width");//瀹�
-                PlcParameter thickness =plcAgreement.getPlcParameter("thickness");//鍘�
-                PlcParameter X =plcAgreement.getPlcParameter("X");//X
-                PlcParameter Y =plcAgreement.getPlcParameter("Y");//Y
-                //PlcParameter isSilkScreen =plcAgreement.getPlcParameter("isSilkScreen");//鏄惁涓濆嵃
-
-                PlcParameter plcReport =plcAgreement.getPlcParameter("plcReport");//姹囨姤瀛�
-                PlcParameter plcReportID =plcAgreement.getPlcParameter("plcReportID");//姹囨姤ID
-                PlcParameter mesConfirm =plcAgreement.getPlcParameter("mesConfirm");//纭瀛�
-                PlcParameter mesConfirmID =plcAgreement.getPlcParameter("mesConfirmID");//纭ID
-                PlcParameter machineStatusWord =plcAgreement.getPlcParameter("machineStatusWord");
-                if (machine.getIsLog()>0){
-                    modbusTcp1.consoleLogInfo(plcAgreement);
-                }
-
-                if (0==plcRequest.getValueInt()&&1==mesSend.getValueInt()) {
-                    log.info("1.鍙戦�佸瓧缃浂");
-                    //鍙戦�佸瓧缃�0
-                    String send=HexUtil.intTo2ByteHex(0);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                    log.info("鍙戦�佸瓧 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                if (0==plcReport.getValueInt()&&0!=mesConfirm.getValueInt()) {
-                    log.info("2.纭瀛楃疆闆�");
-                    //鍙戦�佸瓧缃�0
-                    String send=HexUtil.intTo2ByteHex(0);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                    log.info("浠诲姟瀹屾垚 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                if(1==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
-                    int finishCount=taskingService.finishMachineTask(machine);
-                    log.info("3銆佷换鍔″畬鎴�");
-                    if(finishCount>0) {//鏈変换鍔�
-                        String send = HexUtil.intTo2ByteHex(1);
-                        modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
-                        log.info("浠诲姟瀹屾垚 鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                        modbusTcp1.close();
-                        return;
-                    }
-                    String send = HexUtil.intTo2ByteHex(1);
-                    modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
-                    log.info("浠诲姟瀹屾垚 寮傚父鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                if(4==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
-                    int finishCount=taskingService.glassDownLineOne(machine);
-                    if(finishCount>0){//鏈変换鍔�
-                        log.info("4銆佷汉宸ユ嬁璧�");
-                        String send=HexUtil.intTo2ByteHex(4);
-                        modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                        log.info("浜哄伐鎷胯蛋鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                        modbusTcp1.close();
-                        return;
-                    }
-                    String send=HexUtil.intTo2ByteHex(4);
-                    modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                    log.info("浜哄伐鎷胯蛋寮傚父 鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                    modbusTcp1.close();
-                    return;
-                }
-                if(2==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
-                    int finishCount=taskingService.loseMachineTask(machine);
-                    if(finishCount>0){//鏈変换鍔�
-                        log.info("2銆侀噸鍙�");
-                        String send=HexUtil.intTo2ByteHex(2);
-                        modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                        log.info("閲嶅彂鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                        modbusTcp1.close();
-                        return;
-                    }else{
-                        log.info("2銆佸紓甯搁噸鍙�");
-                        String send=HexUtil.intTo2ByteHex(2);
-                        modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                        log.info("寮傚父閲嶅彂鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                        modbusTcp1.close();
-                        return;
-                    }
-                }
-
-                if(3==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
-                    int finishCount=taskingService.finishMachineTask(machine);
-                    if(finishCount>0){//鏈変换鍔�
-                        log.info("3銆佽澶囦笂浜哄伐鐐圭牬鎹�");
-                        String send=HexUtil.intTo2ByteHex(3);
-                        modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                        log.info("浜哄伐鐐圭牬鎹熷彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                        modbusTcp1.close();
-                        return;
-                    }else{
-                        //鏄惁鑷姩娓呴櫎鐮存崯
-                        log.info("3銆佹棤鏁堢牬鎹� 锛堟病鏈夋壘鍒版ID鐨勭幓鐠冿級");
-                        String send=HexUtil.intTo2ByteHex(3);
-                        modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
-                        log.info("鍙戦�佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
-                        modbusTcp1.close();
-                        //modbusTcp1.close();
-                        return;
-                    }
-                }
-                List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-                if((1==plcRequest.getValueInt()&&0==mesSend.getValueInt())
-                        &&"寮�宸�".equals(machine.getState())
-                        &&taskingCount.size()<machine.getMaxTaskCount()){
-                    Tasking tasking=taskingService.startMachineTask(machine);
-                    if(tasking!=null){
-                        log.info("4銆佸彂閫佷换鍔�  浠诲姟鏁版嵁锛歿}, 璁惧鐘舵��:{}, ",machine,tasking);
-                        String send=
-                                HexUtil.intTo2ByteHex(1)+
-                                        HexUtil.intTo2ByteHex(tasking.getTaskSequence().intValue())+
-                                        HexUtil.intTo2ByteHex(((Double)(tasking.getWidth()*10)).intValue())+
-                                        HexUtil.intTo2ByteHex(((Double)(tasking.getLength()*10)).intValue())+
-                                        HexUtil.intTo2ByteHex(tasking.getThickness().intValue())+
-                                        HexUtil.intTo2ByteHex(((Double)(tasking.getSilkScreenX()*10)).intValue())+
-                                        HexUtil.intTo2ByteHex(((Double)(tasking.getSilkScreenY()*10)).intValue())+
-                                        HexUtil.intTo2ByteHex(tasking.getIsSilkScreen());//鏄惁涓濆嵃锛� 0涓濆嵃 1涓嶄笣鍗�
-                        modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
-                        log.info("鍙戦�佷换鍔″彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
-                        modbusTcp1.close();
-                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                        String sendRecord=df.format(new Date())+"  "+
-                                tasking.getGlassId()+"-"+
-                                tasking.getWidth()+"-"+
-                                tasking.getLength()+"-"+
-                                tasking.getThickness()+"-"+
-                                tasking.getSilkScreenX()+"-"+
-                                tasking.getSilkScreenX()+"-"+
-                                tasking.getSilkScreenY()+"-"+
-                                tasking.getIsSilkScreen();
-                        if (sendRecords.size()>7){
-                            sendRecords.remove(0);
-                        }
-                        Map sendContentMap=new HashMap();
-                        sendContentMap.put("sendContent",sendRecord);
-                        sendRecords.add(sendContentMap);
-                        return;
-                    }
-                }
-            //}
-
-        } catch (Exception e) {
-            log.info("浜や簰閫昏緫閿欒");
-        }
-
-        modbusTcp1.close();
-        //log.info("鏃犲彲鎵ц鐨勬潯浠�");
-    }
-
-    @Scheduled(fixedDelay = 500)
-    public void SilkScreenTasks() {
-        JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(14L);
-        List<Tasking> taskingList=taskingService.findMachineTask(machine);
-        jsonObject.append("taskingList", taskingList);
-        jsonObject.append("machine", machine);
-        jsonObject.append("sendRecords", sendRecords);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("silkScreenTask");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    try {
-                        webserver.sendMessage(jsonObject.toString());
-                        List<String> messages = webserver.getMessages();
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }catch (Exception e) {
-
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-        }
-    }
-
-}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MachineController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MachineController.java
index aba6571..9fad5fa 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MachineController.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MachineController.java
@@ -50,5 +50,21 @@
         int count =machineService.toggleModeMachine(machine);
         return Result.build(200,"淇敼鎴愬姛锛�"+count,count);
     }
+
+    @ApiOperation("褰撳墠鏃嬭浆妯″紡 銆�1鏃嬭浆/2涓嶆棆杞��")
+    @PostMapping("/toggleModeRotate")
+    @ResponseBody
+    public Result toggleModeRotate(@RequestBody Machine machine) {
+        int count =machineService.toggleModeRotate(machine);
+        return Result.build(200,"淇敼鎴愬姛锛�"+count,count);
+    }
+
+    @ApiOperation("[鎵嬪姩涓婄墖妯″紡]  淇敼鏁伴噺")
+    @PostMapping("/manualOperationTask")
+    @ResponseBody
+    public Result manualOperationTask(@RequestBody Machine machine) {
+        int count =machineService.manualOperationTask(machine);
+        return Result.build(200,"淇敼鎴愬姛锛�"+count,count);
+    }
 }
 
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/KBBTProgramsOperationLogBP.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/KBBTProgramsOperationLogBP.java
index 949411e..2a5f5f2 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/KBBTProgramsOperationLogBP.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/KBBTProgramsOperationLogBP.java
@@ -173,10 +173,11 @@
     @TableField(value="[operation record_time]")
     private Date operationRecordTime;
 
-//    /**
-//     * 鎿嶄綔鑰�
-//     */
-//    private String operationRecord;
+    /**
+     * 鎿嶄綔鑰�
+     */
+    @TableField(value="operationRecord")
+    private String operationRecord;
 
     /**
      * 鎿嶄綔绫诲瀷   銆愬紑濮�/缁撴潫銆�
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Machine.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Machine.java
index d7c1942..b1d0147 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Machine.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Machine.java
@@ -31,6 +31,10 @@
      * 璁惧鍚嶇О
      */
     private String name;
+    /**
+     * 鍗忚鏂囦欢鍚嶇О
+     */
+    private String fileName;
 
     /**
      * 璁惧IP
@@ -71,15 +75,34 @@
      */
     private Integer todayCount;
 
-//    /**
-//     * 寮�鏈虹姸鎬�
-//     */
-//    private String statePowerOn;
-//
-//    /**
-//     * 鑱旀満鐘舵��
-//     */
-//    private String stateOnLine;
+    /**
+     * 寮�鏈虹姸鎬�
+     */
+    private String statePowerOn;
+
+    /**
+     * 鑱旀満鐘舵��
+     */
+    private String stateOnLine;
+
+    /**
+     * 鎵嬪姩浠诲姟鏁伴噺
+     */
+    private int taskCount;
+
+    /**
+     * 鎵嬪姩浠诲姟瀹屾垚鏁伴噺
+     */
+    private int finshCount;
+
+    /**
+     * 鏃嬭浆妯″紡   1 鏃嬭浆  2 涓嶆棆杞�
+     */
+    private int rotateMode;
+
+    /**
+     *
+     */
 
 
 
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java
index 1bafab2..1086153 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java
@@ -177,4 +177,9 @@
      */
     private Integer unusualCount;
 
+    /**
+     * 涓婄墖鏁伴噺
+     */
+    private Integer loadCount;
+
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java
index 46bbcaf..3956ee7 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java
@@ -46,5 +46,10 @@
      */
     private Integer menuSequence;
 
+    /**
+     * 椤甸潰鍙傛暟锛氱敤浜庢帶鍒跺悓椤甸潰灞曠ず涓嶅悓鏁版嵁
+     */
+    private String params;
+
 
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/LineConfigurationService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/LineConfigurationService.java
index 77c3f2d..93d28b3 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/LineConfigurationService.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/LineConfigurationService.java
@@ -15,4 +15,6 @@
  */
 public interface LineConfigurationService extends MPJBaseService<LineConfiguration> {
     LineConfiguration machineLineConfiguration(Machine machine);
+    LineConfiguration machineLineConfigurationBefore(Machine machine);
+    LineConfiguration machineLineConfigurationAfter(Machine machine);
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MachineService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MachineService.java
index 1a93a1d..de856f9 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MachineService.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MachineService.java
@@ -18,9 +18,21 @@
      * @return
      */
     int openOrCloseMachine(Machine machine);
+
+    /**
+     * @param machine 娣诲姞鎵嬪姩涓婄墖浠诲姟
+     * @return
+     */
+    int manualOperationTask(Machine machine);
     /**
      * @param machine 鍒囨崲璁惧妯″紡锛氾紙涓婄墖锛氥��1瀹氬埗/2鏍囧噯銆戯級,鍏朵粬璁惧鏆傛椂娌℃湁妯″紡
      * @return
      */
     int toggleModeMachine(Machine machine);
+
+    /**
+     * @param machine 鍒囨崲鏃嬭浆妯″紡锛氾紙鏃嬭浆锛氥��1鏃嬭浆/2涓嶆棆杞�戯級
+     * @return
+     */
+    int toggleModeRotate(Machine machine);
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java
index 7723716..ea7c0ef 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java
@@ -47,6 +47,7 @@
                 .selectAs(RoleMenu::getMenuId,"menu_id")
                 .selectAs(RoleMenu::getPageId,"page_id")
                 .selectAs(RoleMenu::getMenuSequence,"remark")
+                .selectAs(RoleMenu::getParams,"params")
                 .selectAs(Menu::getMenuName,"menu_name")
                 .selectAs(Menu::getMenuNumber,"menu_number")
                 .selectAs(Menu::getRemark,"menu_remark")
@@ -85,6 +86,7 @@
                     page.put("page_number",item.get("page_number"));
                     page.put("page_url",item.get("page_url"));
                     page.put("menu_sequence",item.get("menu_sequence"));
+                    page.put("params",item.get("params"));
                     thisPages.add(page);
                     thisMenu.put("pages",thisPages);
                     thisMenus.set(index,thisMenu);
@@ -106,6 +108,7 @@
                     page.put("page_number",item.get("page_number"));
                     page.put("page_url",item.get("page_url"));
                     page.put("menu_sequence",item.get("menu_sequence"));
+                    page.put("params",item.get("params"));
                     thisPages.add(page);
                     thisMenu.put("pages",thisPages);
                     thisMenus.add(thisMenu);
@@ -127,6 +130,7 @@
                     page.put("page_number",item.get("page_number"));
                     page.put("page_url",item.get("page_url"));
                     page.put("menu_sequence",item.get("menu_sequence"));
+                    page.put("params",item.get("params"));
                     pages.add(page);
                     menu.put("pages",pages);
                     menus.add(menu);
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/LineConfigurationServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/LineConfigurationServiceImpl.java
index 731749e..a38036c 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/LineConfigurationServiceImpl.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/LineConfigurationServiceImpl.java
@@ -24,6 +24,11 @@
 @Service
 public class LineConfigurationServiceImpl extends MPJBaseServiceImpl<LineConfigurationMapper, LineConfiguration> implements LineConfigurationService {
 
+
+    /**
+     * @param machine 褰撳墠璁惧閰嶇疆
+     * @return
+     */
     @Override
     public LineConfiguration machineLineConfiguration(Machine machine){
         List<LineConfiguration> machineLineConfiguration=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
@@ -34,4 +39,51 @@
         }
         return machineLineConfiguration.get(0);
     }
+    /**
+     * @param machine 褰撳墠璁惧鐨勪笂涓�璁惧閰嶇疆
+     * @return
+     */
+    @Override
+    public LineConfiguration machineLineConfigurationBefore(Machine machine){
+        List<LineConfiguration> machineLineConfiguration=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
+                .selectAll(LineConfiguration.class)
+                .eq(LineConfiguration::getMachineId,machine.getId()));
+        if(!machineLineConfiguration.isEmpty()){
+            List<LineConfiguration> machineLineConfigurationBefore=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
+                    .selectAll(LineConfiguration.class)
+                    .eq(LineConfiguration::getLineId,machineLineConfiguration.get(0).getLineId())
+                    .eq(LineConfiguration::getIsStart,1)
+                    .lt(LineConfiguration::getProcessSequence,machineLineConfiguration.get(0).getProcessSequence())
+                    .orderByDesc(LineConfiguration::getProcessSequence));
+            if (!machineLineConfigurationBefore.isEmpty()){
+                return machineLineConfigurationBefore.get(0);
+            }
+
+        }
+        return null;
+
+    }
+    /**
+     * @param machine 褰撳墠璁惧鐨勪笅涓�璁惧閰嶇疆
+     * @return
+     */
+    @Override
+    public LineConfiguration machineLineConfigurationAfter(Machine machine){
+        List<LineConfiguration> machineLineConfiguration=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
+                .selectAll(LineConfiguration.class)
+                .eq(LineConfiguration::getMachineId,machine.getId()));
+        if(!machineLineConfiguration.isEmpty()){
+            List<LineConfiguration> machineLineConfigurationBefore=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
+                    .selectAll(LineConfiguration.class)
+                    .eq(LineConfiguration::getLineId,machineLineConfiguration.get(0).getLineId())
+                    .eq(LineConfiguration::getIsStart,1)
+                    .gt(LineConfiguration::getProcessSequence,machineLineConfiguration.get(0).getProcessSequence())
+                    .orderByAsc(LineConfiguration::getProcessSequence));
+            if (!machineLineConfigurationBefore.isEmpty()){
+                return machineLineConfigurationBefore.get(0);
+            }
+
+        }
+        return null;
+    }
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MachineServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MachineServiceImpl.java
index 3be9111..7fa8e0d 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MachineServiceImpl.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MachineServiceImpl.java
@@ -32,9 +32,22 @@
         }
         return 0;
     }
-
     /**
-     * @param machine 鍒囨崲璁惧妯″紡锛氾紙涓婄墖锛氥��1瀹氬埗/2鏍囧噯銆戯級,鍏朵粬璁惧鏆傛椂娌℃湁妯″紡
+     * @param machine 娣诲姞鎵嬪姩涓婄墖浠诲姟
+     * @return
+     */
+    @Override
+    public int manualOperationTask(Machine machine){
+        Machine oldmachine=baseMapper.selectById(machine);
+        if(!Objects.isNull(oldmachine)){
+            oldmachine.setTaskCount(machine.getTaskCount());
+            oldmachine.setFinshCount(machine.getFinshCount());
+            return baseMapper.updateById(oldmachine);
+        }
+        return 0;
+    }
+    /**
+     * @param machine 鍒囨崲璁惧妯″紡锛氾紙涓婄墖锛氥��1瀹氬埗/2鏍囧噯/3鎵嬪姩銆戯紝缈荤墖锛氥��1瀹氬埗/2鏍囧噯銆� 鏃嬭浆锛氥��1瀹氬埗/2鏍囧噯銆戯級,鍏朵粬璁惧鏆傛椂娌℃湁妯″紡
      * @return
      */
     @Override
@@ -47,5 +60,19 @@
         return 0;
     }
 
+    /**
+     * @param machine 鍒囨崲鏃嬭浆妯″紡锛氾紙鏃嬭浆锛氥��1鏃嬭浆/2涓嶆棆杞�戯級
+     * @return
+     */
+    @Override
+    public int toggleModeRotate(Machine machine){
+        Machine oldmachine=baseMapper.selectById(machine);
+        if(!Objects.isNull(oldmachine)){
+            oldmachine.setRotateMode(machine.getRotateMode());
+            return baseMapper.updateById(oldmachine);
+        }
+        return 0;
+    }
+
 
 }
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java
index 8e2fedc..fbdfe0d 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java
@@ -60,6 +60,7 @@
                 newData.setScanId(item.getScanId());
                 newData.setProgramId(item.getProgramId());
                 newData.setBatchNumber(item.getBatchNumber() == null ? "" : item.getBatchNumber());
+                newData.setLineConfigurationId(item.getLineConfigurationId());
                 newData.setTaskType(item.getTaskType());
                 newData.setLength(item.getLength());
                 newData.setWidth(item.getWidth());
@@ -77,6 +78,10 @@
                 newData.setR_3_2(item.getR_3_2());
                 newData.setR_4_1(item.getR_4_1());
                 newData.setR_4_2(item.getR_4_2());
+                newData.setSilkScreenY(item.getSilkScreenY());
+                newData.setOperationRecord(item.getOperationRecord());
+                newData.setOperationMode(item.getOperationMode());
+                newData.setOperationRecordTime(item.getOperationRecordTime());
                 newData.setCreateDate(new Date());
                 kBBTProgramsOperationLogBPMapper.insert(newData);
                 return newData;
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java
index 15f267f..68cd9ce 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java
@@ -238,6 +238,7 @@
                     .eq(Tasking::getScanId,scan_id)
                     .eq(Tasking::getGlassState,"姝e父")
                     .eq(Tasking::getState,"绾夸笂")
+                    .ne(Tasking::getWorkState,"瀹屽伐")
                     .le(LineConfiguration::getProcessSequence,machineLineConfiguration.get(0).getProcessSequence())
                     .orderByAsc(Tasking::getTaskSequence));
             if(!list.isEmpty()){
@@ -325,11 +326,12 @@
     @Override
     public int finishMachineTask(Machine machine) {
         List<Tasking> list=this.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-        //褰撳墠璁惧鐨勭嚎璺厤缃�
+        //鏌ヨ褰撳墠璁惧绾胯矾閰嶇疆
         List<LineConfiguration> machineLineConfiguration=lineConfigurationMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
                 .selectAll(LineConfiguration.class)
                 .eq(LineConfiguration::getMachineId,machine.getId()));
         if(!machineLineConfiguration.isEmpty()){
+            //褰撳墠璁惧瀛樺湪绾胯矾閰嶇疆锛屾煡璇㈠綋鍓嶈澶� 鍦ㄧ嚎璺厤缃〃涓殑涓嬩竴璁惧
             List<LineConfiguration> listLineConfiguration=lineConfigurationMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>()
                     .selectAll(LineConfiguration.class)
                     .eq(LineConfiguration::getLineId,machineLineConfiguration.get(0).getLineId())
@@ -338,12 +340,16 @@
                     .orderByAsc(LineConfiguration::getProcessSequence)
                     .orderByAsc(LineConfiguration::getPrioritySequence)
             );
+
             if(!list.isEmpty()){
+                //鏍囪浠诲姟鐘舵��
                 Tasking tasking=list.get(0);
                 LineConfiguration thisLineConfiguration=lineConfigurationMapper.selectById(tasking.getLineConfigurationId());
                 tasking.setOperationRecord(thisLineConfiguration.getRemark()+thisLineConfiguration.getLineId());
                 tasking.setOperationRecordTime(new Date());
                 tasking.setOperationMode("缁撴潫");
+                //listLineConfiguration涓嶆槸绌�,琛ㄧず褰撳墠璁惧閰嶇疆鍏崇郴涓湁涓嬩竴璁惧
+                // 鍚﹀垯琛ㄧず鏃犱笅涓�宸ュ簭锛屽嵆褰撳墠宸ュ簭涓烘渶鍚庝竴宸ュ簭 鏍囪鐘舵�佸畬宸�
                 if (!listLineConfiguration.isEmpty()){
                     tasking.setLineConfigurationId(listLineConfiguration.get(0).getId());
                     tasking.setWorkState("绛夊緟");
@@ -352,7 +358,6 @@
                 else{
                     tasking.setWorkState("瀹屽伐");
                     return baseMapper.updateById(tasking);
-                    //return this.stopTasking(tasking);
                 }
 
             }
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 eec1556..3070099 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
@@ -36,10 +36,11 @@
     LineConfigurationService lineConfigurationService;
     public static int thinness = 40;
     public static int edgSpeed = 40;
-    public static Long machineId = 6L;
+    //public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
-
-    public MachineEdging(TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){
+    public Machine thisMachine;
+    public MachineEdging(Machine machine,TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){
+        this.thisMachine = machine;
         this.taskingMapper = taskingMapper;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
@@ -48,8 +49,8 @@
     }
 
     public void plcStart() {
-        Machine machine=machineMapper.selectById(machineId);
-        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcEdging");
+        Machine machine=machineMapper.selectById(thisMachine.getId());
+        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName());
         try {
             modbusTcp1.connect();
             PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement("PlcEdging");
@@ -63,7 +64,6 @@
 
             PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
             PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
-
 
             PlcParameter plcReport =plcAgreement.getPlcParameter("plcReport");//姹囨姤瀛�
             PlcParameter plcReportID =plcAgreement.getPlcParameter("plcReportID");//姹囨姤ID
@@ -195,13 +195,15 @@
             if(((1==plcRequest.getValueInt()&&0==mesSend.getValueInt())
                     &&"寮�宸�".equals(machine.getState())
                     &&taskingCount.size()<machine.getMaxTaskCount())){
-                Machine loadMachine=machineMapper.selectById(2L);
+                //Machine loadMachine=machineMapper.selectById(2L);
+                LineConfiguration lineConfigurationBefore=lineConfigurationService.machineLineConfigurationBefore(machine);
+                Machine loadMachine=machineMapper.selectById(lineConfigurationBefore.getMachineId());
                 Tasking tasking;
                 String scan_id="";
                 if(loadMachine.getMode()==1){
                     //鏍囧噯妯″紡  鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
-                    LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
-                    List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
+                    //LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
+                    List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfigurationBefore.getLineId());
                     //娣诲姞鏁版嵁:
                     for(PrimitiveTask primitiveTask:findPrimitiveTasking){
                         List<Tasking> taskingTopList=taskingMapper.selectList(new QueryWrapper<Tasking>().lambda()
@@ -209,6 +211,7 @@
                         );
                         //浠诲姟鏁�>宸蹭笂鏁伴噺
                         if(taskingTopList.size()<primitiveTask.getTaskQuantity()){
+                            LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
                             Tasking taskingAdd=primitiveTaskService.convertListTasking(primitiveTask,lineConfiguration.getId());
                             Integer taskSequence=1;
                             if (machine.getTodayCount()>0&&machine.getTodayCount()<5000){
@@ -226,7 +229,9 @@
                     tasking=taskingService.startMachineTask(machine);
                 }else{
                     //瀹氬埗妯″紡
-                    String PlcRequestID_=clientTCPSocket();
+                    LineConfiguration lineConfigurationAfter=lineConfigurationService.machineLineConfigurationBefore(machine);
+                    Machine scanMachine=machineMapper.selectById(lineConfigurationAfter.getMachineId());
+                    String PlcRequestID_=clientTCPSocket(scanMachine);
                     //String PlcRequestID_=",,46408889";
                     if (PlcRequestID_==null||PlcRequestID_.lastIndexOf(",")<0){
                         modbusTcp1.close();
@@ -267,6 +272,8 @@
                     modbusTcp1.close();
                     return;
                 }
+            }else if(0==plcRequest.getValueInt()){
+                errorMachine(machine,"");
             }
             //}
 
@@ -285,9 +292,9 @@
             machineMapper.updateById(machine);
         }
     }
-    public String clientTCPSocket() {
+    public String clientTCPSocket(Machine machine) {
         try {
-            Machine machine=machineMapper.selectById(4L);
+            //Machine machine=machineMapper.selectById(4L);
             Socket clientSocket = new Socket(machine.getIp(), machine.getPort());
             try {
                 clientSocket.setSoTimeout(1000);
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 54d93cc..948210d 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
@@ -22,19 +22,21 @@
     private S7objectMachine s7objectMachine;
     public static int thinness = 40;
     public static int edgSpeed = 40;
-    public static Long machineId = 6L;
+    //public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
+    public Machine thisMachine;
 
-    public MachineFlipSlice(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(machineId);
+        //Long machineId=26L;
+        Machine machine=machineMapper.selectById(thisMachine.getId());
         if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcFlipSlice", EPlcType.S1200);
+            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200);
             s7objectMachine.start();
         }
         PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
@@ -121,6 +123,8 @@
             }else if(!scan_id.isEmpty()){
                 taskingService.scanMachineAdd(machine,scan_id);
             }
+        }else if("0".equals(plcRequest.getValue())){
+            nullMachine(machine);
         }
 
     }
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
new file mode 100644
index 0000000..325f2b7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java
@@ -0,0 +1,101 @@
+package com.mes.plcTaskThread;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.common.S7objectMachine;
+import com.mes.device.PlcParameterInfo;
+import com.mes.device.PlcParameterObject;
+import com.mes.md.entity.Machine;
+import com.mes.md.entity.Tasking;
+import com.mes.md.mapper.MachineMapper;
+import com.mes.md.service.TaskingService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+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){
+        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");//鍘氬害
+
+            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())) {
+                //鍙戦�佸瓧缃�0
+                log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{}",mesSend.getValue());
+                s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
+                return;
+            }
+            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);
+                log.info("3銆佷换鍔″畬鎴�");
+                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()){
+
+                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
+
+                    s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
+                    return;
+                }
+            }
+        }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(1000);
+                plcStart();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
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 cc0b073..d72f449 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
@@ -34,10 +34,12 @@
     PrimitiveTaskMapper primitiveTaskMapper;
 
     LineConfigurationService lineConfigurationService;
-
-    public Long machineId = 2L;
+    public Machine thisMachine;
+    //public Long machineId = 2L;
     public List<Map> sendRecords = new ArrayList<>();
-    public MachineLoad(TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){
+    public MachineLoad(Machine machine,PrimitiveTaskMapper primitiveTaskMapper,TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){
+        this.thisMachine = machine;
+        this.primitiveTaskMapper = primitiveTaskMapper;
         this.taskingMapper = taskingMapper;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
@@ -45,15 +47,23 @@
         this.lineConfigurationService = lineConfigurationService;
     }
     public void plcStart() {
-        Machine machine=machineMapper.selectById(machineId);
-        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcLoad");
+        Machine machine=machineMapper.selectById(thisMachine.getId());
+        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName());
         modbusTcp1.connect();
         PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement("PlcLoad");
         try {
             if(!modbusTcp1.read(plcAgreement)){
                 log.info("閫氳璇诲彇鏂版暟鎹け璐�");
+                if(!"鍏虫満".equals(machine.getStatePowerOn())){
+                    machine.setStatePowerOn("鍏虫満");
+                    machineMapper.updateById(machine);
+                }
                 modbusTcp1.close();
                 return;
+            }
+            if(!"寮�鏈�".equals(machine.getStatePowerOn())){
+                machine.setStatePowerOn("寮�鏈�");
+                machineMapper.updateById(machine);
             }
             PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
             PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
@@ -90,10 +100,13 @@
                         LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
                         List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
                         for(PrimitiveTask primitiveTask:findPrimitiveTasking){
-                            primitiveTask.setReportCount(primitiveTask.getReportCount()+plcReportID.getValueInt());
+                            primitiveTask.setLoadCount(primitiveTask.getLoadCount()+1);
                             primitiveTaskMapper.updateById(primitiveTask);
                             break;
                         }
+                    }else if(machine.getMode()==3){
+                        machine.setFinshCount(machine.getFinshCount()+plcReportID.getValueInt());
+                        machineMapper.updateById(machine);
                     }
                     String send = HexUtil.intTo2ByteHex(1);
                     modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/ 2));
@@ -115,21 +128,18 @@
                     LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
                     List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
                     for(PrimitiveTask primitiveTask:findPrimitiveTasking){
-                        //浠诲姟鏁�>宸蹭笂鏁伴噺
-                        List<Tasking> taskingTopList=taskingMapper.selectList(new QueryWrapper<Tasking>().lambda()
-                                .eq(Tasking::getScanId,primitiveTask.getScanId())
-                                .eq(Tasking::getState,"绾夸笂")
-                                .eq(Tasking::getGlassState,"姝e父")
-                        );
-                        if (primitiveTask.getTaskQuantity()>primitiveTask.getReportCount()){
-                            loadCount=primitiveTask.getTaskQuantity()-taskingTopList.size();
-                            loadCount=(loadCount>0?loadCount:0);
+                        //浠诲姟鏁�-宸蹭笂鏁伴噺>0  杩斿洖1
+                        if((primitiveTask.getTaskQuantity()-primitiveTask.getLoadCount())>0){
+                            loadCount=1;
                         }
                         break;
                     }
-                }else{
+                }else if(machine.getMode()==2){
                     //瀹氬埗妯″紡
                     loadCount=1;
+                }else if (machine.getMode()==3){
+                    loadCount=machine.getTaskCount()-machine.getFinshCount();
+                    loadCount=(loadCount>0?1:0);
                 }
                 if(loadCount>0){
                     log.info("4銆佸彂閫佷换鍔�  浠诲姟鏁版嵁锛歿}, 璁惧鐘舵��:{}, ",loadCount,machine);
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 d3924bf..50af765 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
@@ -22,19 +22,22 @@
     private S7objectMachine s7objectMachine;
     public static int thinness = 40;
     public static int edgSpeed = 40;
-    public static Long machineId = 6L;
+    //public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
-
-    public MachineMarking(MachineMapper machineMapper, TaskingService taskingService){
+    public Machine thisMachine;
+    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(machineId);
+            //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(),"PlcMarking", EPlcType.S1500);
+                s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1500);
                 s7objectMachine.start();
             }
             PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
@@ -100,26 +103,11 @@
                     if(isMark_==1){
                         s7objectMachine.plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId());
                     }
-                    s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());
-                    s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());
+                    s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y
+                    s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());//x
                     s7objectMachine.plccontrol.writeWord(isMark.getAddress(), isMark_);
                     s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_);
                     s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
-
-                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    String sendRecord=df.format(new Date())+"  "+
-                            tasking.getScanId()+"-"+
-                            tasking.getProgramId()+"-"+
-                            tasking.getLength()+"-"+
-                            tasking.getWidth()+"-"+
-                            isMark_+"-"+
-                            isMarkingMode_;
-                    if (sendRecords.size()>7){
-                        sendRecords.remove(0);
-                    }
-                    Map sendContentMap=new HashMap();
-                    sendContentMap.put("sendContent",sendRecord);
-                    sendRecords.add(sendContentMap);
                     return;
                 }
             }
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 166c340..d93d27d 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
@@ -22,17 +22,19 @@
     private S7objectMachine s7objectMachine;
     public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
+    public Machine thisMachine;
 
-    public MachineRotate(MachineMapper machineMapper, TaskingService taskingService){
+    public MachineRotate(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+        this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
     public void plcStart() {
         //鏃嬭浆鍙�
-        Long machineId=20L;
-        Machine machine=machineMapper.selectById(machineId);
+        //Long machineId=20L;
+        Machine machine=machineMapper.selectById(thisMachine.getId());
         if (s7objectMachine==null){
-            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcRotate", EPlcType.S1200);
+            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200);
             s7objectMachine.start();
         }
         PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
@@ -104,7 +106,7 @@
                 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(), 1);
+                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())+"  "+
@@ -121,6 +123,8 @@
             }else if(!scan_id.isEmpty()){
                 taskingService.scanMachineAdd(machine,scan_id);
             }
+        }else if("0".equals(plcRequest.getValue())){
+            nullMachine(machine);
         }
 
     }
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 a3f152a..a7fc9e1 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
@@ -21,15 +21,16 @@
     private TaskingService taskingService;
     public static Long machineId = 14L;
     public List<Map> sendRecords = new ArrayList<>();
-
-    public MachineSilkScreen(MachineMapper machineMapper, TaskingService taskingService){
+    public Machine thisMachine;
+    public MachineSilkScreen(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+        this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
 
     public void plcStart() {
-            Machine machine=machineMapper.selectById(machineId);
-            String fileName="PlcSilkScreen";
+            Machine machine=machineMapper.selectById(thisMachine.getId());
+            String fileName=machine.getFileName();
             ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),fileName);
             modbusTcp1.connect();
             PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement(fileName);
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 c6a1041..ac2b1b8 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
@@ -13,6 +13,7 @@
 import com.mes.service.PlcParameter;
 import com.mes.utils.HexUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.protocol.HTTP;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -42,6 +43,23 @@
     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);
         ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcLoad");
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java
index cc89e77..8822899 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java
@@ -170,7 +170,7 @@
     public void testSaoMa() {
         try {
 // 鍒涘缓TCP瀹㈡埛绔苟杩炴帴鍒版湇鍔″櫒
-            String serverAddress = "192.168.1.8";
+            String serverAddress = "10.36.164.19";
             int serverPort = 2001;
             Socket clientSocket = new Socket(serverAddress, serverPort);
             // 鍒涘缓杈撳叆娴佸拰杈撳嚭娴�
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 55892de..5863740 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 41a1f51..e447bb9 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,16 +1,16 @@
 com\mes\md\mapper\TaskingMapper.class
 com\mes\md\entity\Machine.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\md\service\AccountService.class
 com\mes\DeviceInteractionModuleApplication.class
-com\mes\job\PLCScanQRVerify.class
 com\mes\md\service\ProjectService.class
 com\mes\md\service\WorkTaskDetailService.class
 com\mes\common\S7objectMachine.class
 com\mes\md\service\impl\EquipmentLogServiceImpl.class
-com\mes\job\PLCRotate.class
 com\mes\md\controller\WorkTaskDetailController.class
 com\mes\md\controller\MenuController.class
 com\mes\md\entity\OrderOriginalPiece.class
@@ -18,12 +18,14 @@
 com\mes\md\service\MenuService.class
 com\mes\md\mapper\KBBTJPDrawingBPMapper.class
 com\mes\md\controller\GlassInfoController.class
+com\mes\md\service\KBBTProgramsOperationLogBPService.class
 com\mes\md\mapper\PageMapper.class
 com\mes\md\service\ProjectLogService.class
 com\mes\md\entity\Project.class
 com\mes\md\mapper\PrimitiveTaskMapper.class
 com\mes\md\service\impl\EdgeGrindingLogServiceImpl.class
 com\mes\job\AddTask.class
+com\mes\md\entity\KBBTProgramsOperationLogBP.class
 com\mes\md\entity\LineConfiguration.class
 com\mes\edgstoragecage\controller\EdgStorageCageController.class
 com\mes\edgstoragecage\entity\EdgStorageCage.class
@@ -40,6 +42,7 @@
 com\mes\plcTaskThread\MachineSilkScreen.class
 com\mes\md\entity\EquipmentLog.class
 com\mes\md\service\KBBTJPDrawingBPService.class
+com\mes\md\mapper\KBBTProgramsDeviceOlnlineLogBPMapper.class
 com\mes\plcTaskThread\MachineRotate.class
 com\mes\md\controller\PrimitiveTaskController.class
 com\mes\md\controller\RoleMenuController.class
@@ -47,8 +50,10 @@
 com\mes\md\mapper\WorkTaskDetailMapper.class
 com\mes\md\service\LineService.class
 com\mes\md\service\impl\PageServiceImpl.class
+com\mes\md\entity\TaskingLog.class
 com\mes\md\service\impl\WorkTaskDetailServiceImpl.class
 com\mes\md\service\impl\TaskLogServiceImpl.class
+com\mes\md\mapper\TaskingLogMapper.class
 com\mes\md\controller\EdgeGrindingLogController.class
 com\mes\md\service\LineConfigurationService.class
 com\mes\md\entity\GlassInfo.class
@@ -56,7 +61,6 @@
 com\mes\md\entity\Page.class
 com\mes\job\PLCCleaning.class
 com\mes\md\controller\RoleController.class
-com\mes\job\MarkingTask.class
 com\mes\md\mapper\MachineMapper.class
 com\mes\md\mapper\AccountMapper.class
 com\mes\common\S7objectCleaning.class
@@ -68,33 +72,31 @@
 com\mes\md\entity\ProjectLog.class
 com\mes\md\service\EdgeGrindingLogService.class
 com\mes\AppRunnerConfig.class
-com\mes\job\PLCFlipSlice.class
 com\mes\plcTaskThread\MachineFlipSlice.class
 com\mes\md\controller\TaskingController.class
 com\mes\md\controller\AccountController.class
 com\mes\md\service\TaskLogService.class
-com\mes\job\SilkScreenTask.class
+com\mes\md\mapper\KBBTProgramsOperationLogBPMapper.class
 com\mes\md\service\PrimitiveTaskService.class
 com\mes\plcTaskThread\MachineLoad.class
 com\mes\md\entity\Account.class
-com\mes\job\PLCScanQRWorks.class
+com\mes\md\service\impl\TaskingLogServiceImpl.class
 com\mes\md\service\impl\MenuServiceImpl.class
 com\mes\md\controller\PageController.class
 com\mes\md\entity\TaskLog.class
 com\mes\md\mapper\LineConfigurationMapper.class
+com\mes\md\entity\KBBTProgramsDeviceStatusLogBP.class
 com\mes\md\mapper\EquipmentLogMapper.class
-com\mes\job\PLCMechanicalArm.class
 com\mes\md\entity\RoleMenu.class
 com\mes\md\controller\TaskLogController.class
 com\mes\md\service\impl\TaskingServiceImpl.class
 com\mes\md\entity\KBBTLensSorting.class
 com\mes\md\service\impl\KBBTJPDrawingBPServiceImpl.class
 com\mes\md\mapper\ProjectMapper.class
-com\mes\job\PLCScanQrCodesReport.class
 com\mes\md\controller\EquipmentLogController.class
+com\mes\md\controller\TaskingLogController.class
 com\mes\common\SmbTool.class
 com\mes\md\mapper\ProjectLogMapper.class
-com\mes\job\PLCManualReporting.class
 com\mes\plcTaskThread\MachineMarking.class
 com\mes\md\mapper\OrderOriginalPieceMapper.class
 com\mes\edgstoragecage\entity\EdgStorageCageDetails.class
@@ -106,7 +108,9 @@
 com\mes\md\mapper\LineMapper.class
 com\mes\md\mapper\EdgeGrindingLogMapper.class
 com\mes\common\S7objectMarking.class
+com\mes\md\entity\KBBTProgramsDeviceOlnlineLogBP.class
 com\mes\md\entity\PrimitiveTask.class
+com\mes\plcTaskThread\MachineLamination.class
 com\mes\job\MachineTask.class
 com\mes\md\entity\Menu.class
 com\mes\md\service\impl\LineConfigurationServiceImpl.class
@@ -124,8 +128,7 @@
 com\mes\md\service\MachineService.class
 com\mes\md\service\PageService.class
 com\mes\md\controller\ProjectLogController.class
-com\mes\job\PLCEdging.class
-com\mes\job\PLCLoad.class
 com\mes\md\mapper\GlassInfoMapper.class
+com\mes\md\service\impl\KBBTProgramsOperationLogBPServiceImpl.class
 com\mes\md\entity\Tasking.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 4349bae..7c5205f 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
@@ -2,8 +2,6 @@
 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\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\job\PLCEdging.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\MarkingTask.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Role.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Tasking.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\service\impl\EdgStorageCageServiceImpl.java
@@ -12,11 +10,11 @@
 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\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\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
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCScanQRWorks.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTJPDrawingBPMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\AccountServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\MenuServiceImpl.java
@@ -30,15 +28,14 @@
 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\job\PLCLoad.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\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\job\SilkScreenTask.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskingService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\GlassInfoMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\WorkTaskDetailMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskingLogController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Line.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\MachineMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\EdgeGrindingLogMapper.java
@@ -48,20 +45,21 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\MenuMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\KBBTJPDrawingBPService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\SmbTool.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCRotate.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTProgramsDeviceOlnlineLogBP.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\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
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\ProjectLogService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineSilkScreen.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCScanQRVerify.java
 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\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\md\mapper\KBBTProgramsDeviceOlnlineLogBPMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskLogController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskLogService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\RoleMenu.java
@@ -71,13 +69,14 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\EquipmentLogServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\RoleMenuService.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\AddTask.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCMechanicalArm.java
 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\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\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
@@ -89,6 +88,8 @@
 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
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\MachineService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskingLogServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\TaskingLogMapper.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\EdgeGrindingLogController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Account.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineRotate.java
@@ -103,12 +104,12 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\OrderOriginalPieceService.java
 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\job\PLCFlipSlice.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\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\job\PLCScanQrCodesReport.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\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
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\LineService.java
@@ -120,11 +121,13 @@
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\GlassInfoController.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\OrderOriginalPieceServiceImpl.java
 D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\ProjectService.java
+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\md\service\impl\KBBTProgramsOperationLogBPServiceImpl.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\common\S7objectCleaning.java
-D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCManualReporting.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
diff --git a/UI-Project/config.js b/UI-Project/config.js
index 2be14ad..2fd0f18 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,18 +1,15 @@
 export default {
 
-  serverUrl: "localhost:88/api",
-  serverUrl2: "localhost:88"
+  // serverUrl: "localhost:88/api",
+  // serverUrl2: "localhost:88"
 
-  // serverUrl: "10.36.164.200:88/api",
-  // serverUrl2: "10.36.164.200:88"
-//  serverUrl: "10.153.19.29:88/api",
- //serverUrl: "10.36.164.201:88/api",
+  // serverUrl: "10.36.164.253:88/api",
+  //  serverUrl2: "10.36.164.253:88"
 
-//  serverUrl: "127.0.0.1:88/api",
-  // serverUrl2: "10.153.19.29:88"
-  //serverUrl2: "10.36.164.201:88"
+  serverUrl: "10.36.164.200:88/api",
+  serverUrl2: "10.36.164.200:88"
 
-    // serverUrl2: "127.0.0.1:88"
+    // serverUrl2: "127.0.0.1:88"npm
 
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index 8553155..160ac61 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -12,7 +12,7 @@
         "@vue-macros/reactivity-transform": "^0.3.23",
         "axios": "^1.6.8",
         "chart.js": "^4.4.3",
-        "echarts": "^5.5.1",
+        "echarts": "^5.6.0",
         "element-plus": "^2.8.2",
         "moment": "^2.30.1",
         "northglass-mes": "file:",
@@ -839,12 +839,12 @@
       "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
     },
     "node_modules/echarts": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
-      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
+      "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
       "dependencies": {
         "tslib": "2.3.0",
-        "zrender": "5.6.0"
+        "zrender": "5.6.1"
       }
     },
     "node_modules/element-plus": {
@@ -2181,9 +2181,9 @@
       }
     },
     "node_modules/zrender": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
-      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+      "version": "5.6.1",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
+      "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
       "dependencies": {
         "tslib": "2.3.0"
       }
@@ -2775,12 +2775,12 @@
       "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
     },
     "echarts": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
-      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
+      "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
       "requires": {
         "tslib": "2.3.0",
-        "zrender": "5.6.0"
+        "zrender": "5.6.1"
       }
     },
     "element-plus": {
@@ -3137,7 +3137,7 @@
         "@vue-macros/reactivity-transform": "^0.3.23",
         "axios": "^1.6.8",
         "chart.js": "^4.4.3",
-        "echarts": "^5.5.1",
+        "echarts": "^5.6.0",
         "element-plus": "^2.8.2",
         "http-proxy-middleware": "^3.0.0",
         "moment": "^2.30.1",
@@ -3746,12 +3746,12 @@
           "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
         },
         "echarts": {
-          "version": "5.5.1",
-          "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
-          "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+          "version": "5.6.0",
+          "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
+          "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
           "requires": {
             "tslib": "2.3.0",
-            "zrender": "5.6.0"
+            "zrender": "5.6.1"
           }
         },
         "element-plus": {
@@ -4647,9 +4647,9 @@
           }
         },
         "zrender": {
-          "version": "5.6.0",
-          "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
-          "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+          "version": "5.6.1",
+          "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
+          "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
           "requires": {
             "tslib": "2.3.0"
           }
@@ -5204,9 +5204,9 @@
       }
     },
     "zrender": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
-      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+      "version": "5.6.1",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
+      "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
       "requires": {
         "tslib": "2.3.0"
       }
diff --git a/UI-Project/package.json b/UI-Project/package.json
index 6f20cb0..1dfb52a 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -3,16 +3,16 @@
   "version": "0.0.0",
   "private": true,
   "scripts": {
-  "dev": "vite --host 0.0.0.0",
-  "build": "vite build",
-  "serve": "vite preview --host 0.0.0.0"
+    "dev": "vite --host 0.0.0.0",
+    "build": "vite build",
+    "serve": "vite preview --host 0.0.0.0"
   },
   "dependencies": {
     "@element-plus/icons-vue": "^2.3.1",
     "@vue-macros/reactivity-transform": "^0.3.23",
     "axios": "^1.6.8",
     "chart.js": "^4.4.3",
-    "echarts": "^5.5.1",
+    "echarts": "^5.6.0",
     "element-plus": "^2.8.2",
     "moment": "^2.30.1",
     "northglass-mes": "file:",
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index 22d9855..920b358 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -189,6 +189,8 @@
         modeB :'鏍囧噯',
         bound:'缁戝畾',
         reporting:'鎶ュ伐',
+        rotate:'鏃嬭浆',
+        notRotate:'涓嶆棆杞�',
         reportingcount:'鎶ュ伐鏁伴噺',
 
     }
diff --git a/UI-Project/src/main.js b/UI-Project/src/main.js
index bec7957..cb42b7c 100644
--- a/UI-Project/src/main.js
+++ b/UI-Project/src/main.js
@@ -10,18 +10,23 @@
 import VXETable from 'vxe-table'
 import 'vxe-table/lib/style.css'
 import i18n from '@/lang'
-// import Echarts from "vue-echarts"
-import * as echarts from "echarts"
+import Echarts from "vue-echarts"
+import * as echarts from "echarts";
 // echarts.registerMap('china', china)
 // Vue.prototype.$echarts = echarts
 // app.component("v-chart", Echarts)
 // app.config.globalProperties.$echarts = echarts
 import * as ElementPlusIconsVue from '@element-plus/icons-vue'
 
+
 const app = createApp(App)
+app.component('v-chart', echarts)
+//app.config.globalProperties.$echarts = echarts
+
 for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
   app.component(key, component)
 }
+
 const pinia = createPinia()
 pinia.use(piniaPluginPersistedstate )
 app.use(VXETable)
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index d43385c..8df1372 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -63,6 +63,19 @@
           ]
         },
         {
+          /*----------- 澶у睆 ----------------*/
+          path: 'KanbanDisplay/kanbanDisplay',
+          name: 'kanbanDisplay',
+          component: () => import('../views/KanbanDisplay/kanbanDisplay.vue'),
+          children: [
+            {
+              path: '/KanbanDisplay/kanbanDisplay',
+              name: 'kanbanDisplay',
+              component: () => import('../views/KanbanDisplay/kanbanDisplay.vue'),
+            }
+          ]
+        },
+        {
           /*----------- 娓呮礂鏈� ----------------*/
           path: 'Cleaning',
           name: 'cleaning',
@@ -140,19 +153,19 @@
             }
           ]
         },
-        // {
-        //   /*----------- 鑷姩鐐硅兌鏈� ----------------*/
-        //   path: 'GlueDispenser',
-        //   name: 'glueDispenser',
-        //   component: () => import('../views/GlueDispenser/glueDispenser.vue'),
-        //   children: [
-        //     {
-        //       path: '/GlueDispenser/glueDispenser',
-        //       name: 'glueDispenser',
-        //       component: () => import('../views/GlueDispenser/glueDispenser.vue'),
-        //     }
-        //   ]
-        // },
+        {
+          /*----------- 鑷姩鐐硅兌鏈� ----------------*/
+          path: 'GlueDispenser',
+          name: 'glueDispenser',
+          component: () => import('../views/GlueDispenser/glueDispenser.vue'),
+          children: [
+            {
+              path: '/GlueDispenser/glueDispenser',
+              name: 'glueDispenser',
+              component: () => import('../views/GlueDispenser/glueDispenser.vue'),
+            }
+          ]
+        },
         // {
         //   /*----------- 鐑樺共绾� ----------------*/
         //   path: 'Drying',
@@ -179,19 +192,19 @@
             }
           ]
         },
-        // {
-        //   /*----------- 鑷姩璐磋啘鏈� ----------------*/
-        //   path: 'Lamination',
-        //   name: 'lamination',
-        //   component: () => import('../views/Lamination/lamination.vue'),
-        //   children: [
-        //     {
-        //       path: '/Lamination/lamination',
-        //       name: 'lamination',
-        //       component: () => import('../views/Lamination/lamination.vue'),
-        //     }
-        //   ]
-        // },
+        {
+          /*----------- 鑷姩璐磋啘鏈� ----------------*/
+          path: 'Lamination',
+          name: 'lamination',
+          component: () => import('../views/Lamination/lamination.vue'),
+          children: [
+            {
+              path: '/Lamination/lamination',
+              name: 'lamination',
+              component: () => import('../views/Lamination/lamination.vue'),
+            }
+          ]
+        },
         {
           /*----------- 鎶ュ伐绠$悊 ----------------*/
           path: 'ManualReporting',
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index 4fab239..1b60cea 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,5 +1,4 @@
-  export const WebSocketHost = "localhost";
-// export const WebSocketHost = "10.36.164.200";
-// export const WebSocketHost = "10.153.19.29";
-// export const WebSocketHost = "127.0.0.1";
-export const host = "88";
\ No newline at end of file
+   // export const WebSocketHost = "localhost";
+//  export const WebSocketHost = "10.36.164.253";
+ export const WebSocketHost = "10.36.164.200";
+ export const host = "88";
\ No newline at end of file
diff --git a/UI-Project/src/utils/request.js b/UI-Project/src/utils/request.js
index 35f97cb..42a97e9 100644
--- a/UI-Project/src/utils/request.js
+++ b/UI-Project/src/utils/request.js
@@ -2,10 +2,13 @@
 import config from '../../config';
 import useUserInfoStore from '@/stores/userInfo'
 const userStore=useUserInfoStore()
+
 const request = axios.create({
     baseURL: `http://${config.serverUrl}`,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
+    //baseURL: `http://`+url,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
     timeout: 30000
 })
+
  
 //
  
diff --git a/UI-Project/src/views/Edging/edging.vue b/UI-Project/src/views/Edging/edging.vue
index a840638..20edac0 100644
--- a/UI-Project/src/views/Edging/edging.vue
+++ b/UI-Project/src/views/Edging/edging.vue
@@ -20,7 +20,12 @@
 const sendRecords = ref([]);
 const downLineTask = ref([]);
 
-const machineId = 6;//褰撳墠椤甸潰鐨勮澶嘔D
+
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+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鏂瑰紡灞曠ず鏁版嵁
@@ -31,9 +36,11 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  sendRecords.value = data.sendRecords[0].reverse();
+  let dataJson = data[""+machineId][0];
+
+  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){
     //鏈夋暟鎹氨寮圭獥 
diff --git a/UI-Project/src/views/FlipSlice/flipSlice.vue b/UI-Project/src/views/FlipSlice/flipSlice.vue
index 78656d1..804ac8d 100644
--- a/UI-Project/src/views/FlipSlice/flipSlice.vue
+++ b/UI-Project/src/views/FlipSlice/flipSlice.vue
@@ -22,7 +22,12 @@
 const sendRecords = ref([]);
 const downLineTask = ref([]);
 
-const machineId = 26;//褰撳墠椤甸潰鐨勮澶嘔D
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+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鏂瑰紡灞曠ず鏁版嵁
@@ -33,9 +38,11 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  sendRecords.value = data.sendRecords[0].reverse();
+  let dataJson = data[""+machineId][0];
+
+  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){
diff --git a/UI-Project/src/views/GlueDispenser/glueDispenser.vue b/UI-Project/src/views/GlueDispenser/glueDispenser.vue
index 7914991..096c6d5 100644
--- a/UI-Project/src/views/GlueDispenser/glueDispenser.vue
+++ b/UI-Project/src/views/GlueDispenser/glueDispenser.vue
@@ -1,11 +1,13 @@
-<!--  鐐硅兌鏈�  -->
+<!--  璐磋啘鏈�  -->
 <script setup>
 import request from "@/utils/request";
 import { ElMessage, ElMessageBox } from "element-plus";
-import { reactive, ref, onMounted, onBeforeUnmount,onUnmounted } from 'vue'
+import { reactive, ref, onMounted, onBeforeUnmount, onUnmounted } from 'vue'
 import { useI18n } from 'vue-i18n'
-import { WebSocketHost ,host} from '@/utils/constants'
+import { WebSocketHost, host } from '@/utils/constants'
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+
+import {gridDateFormatter} from '@/stores/tool';
 
 let language = ref(localStorage.getItem('lang') || 'zh')
 const { t } = useI18n()
@@ -13,21 +15,43 @@
   account: '',
   password: '',
 });
+const blind = ref(false)
 const loadData = ref([]);
 const findMachine = ref([]);
-const machineId=15;//褰撳墠椤甸潰鐨勮澶嘔D
+const sendRecords = ref([]);
+const downLineTask = ref([]);
+
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams=userInfo.user.menus[0].pages[2].params;
+const pageParamsJson=JSON.parse(pageParams);
+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 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
+  let dataJson = data[""+machineId][0];
+
+  loadData.value = dataJson.taskingList[0];
+  findMachine.value = dataJson.machine[0];
+  sendRecords.value = dataJson.sendRecords[0].reverse();
+   
+};
+// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
+const handleMessage2 = (data) => {
+  downLineTask.value = data.downLineTask[0];
+  // console.log(data);
 };
 onUnmounted(() => {
   if (socket) {
     closeWebSocket(socket);
+  }
+  if (socketDownLineTask) {
+    closeWebSocket(socketDownLineTask);
   }
 });
 onBeforeUnmount(() => {
@@ -38,194 +62,320 @@
 onMounted(async () => {
   //浣跨敤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',
+    }
+  )
+    .then(() => {
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: t('functionState.cancel'),
+      })
+    })
+}
 //淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
-const workStatus = async(row,state) => {
+const workStatus = async (row, state) => {
   let url;
-  if(state=="閲嶅彂"){
-    url="/deviceInteraction/tasking/loseMachineTask";
-  }else if(state=="姝e湪宸ヤ綔"){
-    url="/deviceInteraction/tasking/startMachineTask";
-  }else if(state=="瀹屽伐"){
-    url="/deviceInteraction/tasking/finishMachineTask";
-  }else{
+  if (state == "閲嶅彂") {
+    url = "/deviceInteraction/tasking/loseMachineTask";
+  } else if (state == "姝e湪宸ヤ綔") {
+    url = "/deviceInteraction/tasking/startMachineTask";
+  } else if (state == "瀹屽伐") {
+    url = "/deviceInteraction/tasking/finishMachineTask";
+  } else {
     return;
   }
   ElMessageBox.confirm(
-        t('functionState.tips'),
-        t('delivery.prompt'),  
+    t('functionState.tips'),
+    t('delivery.prompt'),
+    {
+      confirmButtonText: t('functionState.sure'),
+      cancelButtonText: t('functionState.cancel'),
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      //寮�濮嬩慨鏀�
+      request.post(url,
         {
-          confirmButtonText: t('functionState.sure'),
-          cancelButtonText: t('functionState.cancel'),
-          type: 'warning',
-        }
-      )
-        .then(() => {
-          //寮�濮嬩慨鏀�
-          request.post(url,
-            {
-              "id": machineId
-            }).then((res) => { // 鏇挎崲涓轰綘鐨凙PI绔偣  
-              if (res.code === 200) {
-                ElMessage.success(res.message);
-              } else {
-                ElMessage.warning(res.message)
-              }
-            })
+          "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) => {
+const machineStatus = async (state) => {
   ElMessageBox.confirm(
-        t('functionState.tips'),
-        t('delivery.prompt'),  
+    t('functionState.tips'),
+    t('delivery.prompt'),
+    {
+      confirmButtonText: t('functionState.sure'),
+      cancelButtonText: t('functionState.cancel'),
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      //涓嬬嚎鎺ュ彛
+      request.post("/deviceInteraction/machine/updateMachineState",
         {
-          confirmButtonText: t('functionState.sure'),
-          cancelButtonText: t('functionState.cancel'),
-          type: 'warning',
-        }
-      )
-        .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)
-              }
-            })
+          "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',
+    }
+  )
+    .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'),
+      })
+    })
 }
 //鐮存崯
-const damagedTask = async(row) => {
+const damagedTask = async (row) => {
   ElMessageBox.confirm(
-        t('functionState.tips'),
-        t('delivery.prompt'),  
+    t('functionState.tips'),
+    t('delivery.prompt'),
+    {
+      confirmButtonText: t('functionState.sure'),
+      cancelButtonText: t('functionState.cancel'),
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      //涓嬬嚎鎺ュ彛
+      request.post("/deviceInteraction/tasking/damagedTask",
         {
-          confirmButtonText: t('functionState.sure'),
-          cancelButtonText: t('functionState.cancel'),
-          type: 'warning',
-        }
-      )
-        .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)
-              }
-            })
+          "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) => {
+const glassDownLine = async (row) => {
   ElMessageBox.confirm(
-        t('functionState.tips'),
-        t('delivery.prompt'),  
+    t('functionState.tips'),
+    t('delivery.prompt'),
+    {
+      confirmButtonText: t('functionState.sure'),
+      cancelButtonText: t('functionState.cancel'),
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      //涓嬬嚎鎺ュ彛
+      request.post("/deviceInteraction/tasking/glassDownLine",
         {
-          confirmButtonText: t('functionState.sure'),
-          cancelButtonText: t('functionState.cancel'),
-          type: 'warning',
-        }
-      )
-        .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)
-              }
-            })
+          "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; 
 }
 //涓婄嚎
-const topLine = async() => {
-
+const topLine = async (row) => {
+  ElMessageBox.confirm(
+    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绔偣  
+          if (res.code === 200) {
+            ElMessage.success(res.message);
+          } else {n
+            ElMessage.warning(res.message)
+          }
+        })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: t('functionState.cancel'),
+      })
+    })
 }
-
+const handleDialogClose = () => {  
+    
+}
 </script>
 <template>
   <div ref="content" style="padding:0 20px;">
     <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;">
-      {{$t('machine.glueDispenser')}}
+      {{ $t('machine.glueDispenser') }}
     </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" />
+        <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="workState" :label="$t('glassInfo.workState')" />
+        <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>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
     <hr />
     <br>
-    <div id="search" >
+    <div id="search">
       <!-- 鍔熻兘 -->
-      <el-button :type="(findMachine['state']=='鏆傚仠'?'danger':'success')" id="ButtonMachineStatus" 
-      @click="machineStatus((findMachine['state']=='鏆傚仠'?'寮�宸�':'鏆傚仠'))">
-      {{findMachine['state']=='寮�宸�'?$t('functionState.start'):$t('functionState.stop')}}</el-button>
-      <el-button type="primary" id="ButtonTopLine" @click="topLine">{{$t('functionState.topLine')}}</el-button>
+      <el-button :type="(findMachine['state'] == '鏆傚仠' ? 'danger' : 'success')" id="ButtonMachineStatus"
+        @click="machineStatus((findMachine['state'] == '鏆傚仠' ? '寮�宸�' : '鏆傚仠'))">{{ findMachine['state'] == '寮�宸�' ?
+          $t('functionState.start') : $t('functionState.stop') }}</el-button>
+         
+      <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.topLine') }}</el-button>
     </div>
-    <div id="main-body" style="min-height:240px;">
+    <div id="main-body">
       <!-- 琛ㄦ牸鍐呭 -->
-      <el-table :data="loadData" stripe
+      <el-table :data="loadData" stripe style="height:260px"
         :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="glassId" :label="$t('glassInfo.glassId')"/>
-        <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="workState" :label="$t('glassInfo.workState')"/>
+        <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" />
+        <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" />
+        <el-table-column prop="glassId" :label="$t('glassInfo.glassId')" />
+        <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="workState" :label="$t('glassInfo.workState')" />
+        <el-table-column prop="operationRecordTime" :formatter="gridDateFormatter" :label="$t('glassInfo.operationRecordTime')" width="180"/>
         <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>
-            <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '瀹屽伐')">{{$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>
+            <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '閲嶅彂')">{{
+              $t('functionState.anew') }}</el-button>
+            <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '瀹屽伐')">{{
+              $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>
           </template>
         </el-table-column>
       </el-table>
     </div>
 
-    <!-- <div id="main-body" style="width: 100%; height: 460px;background-image: url(../../src/assets/鑷姩鎵撴爣鏈�.png) ;background-size: 100% 100%;"> -->
-      <!-- 鐢诲浘鍐呭 -->
-      <!-- <div style="width: 100px; height: 100px; background-color: red; position: relative; top: 171px; left: 218px">
+    <div id="main-body" style="width: 100%; height: 460px;min-width: 1200px;">
+      <img style="width: 70%;min-width: 900px; height: 460px;float: left;" src="../../assets/缈荤墖鍙�.png">
+      <!-- <el-image style="width: 70%;min-width: 900px; height: 460px;float: left;" src="../../src/assets/缈荤墖鍙�.png"></el-image> -->
+      <!-- <div style="width: 70%;min-width: 900px; height: 460px;background-image: url(../../src/assets/缈荤墖鍙�.png) ;background-size: 100% 100%;float: left;">
+
       </div> -->
-    <!-- </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')" />
+        </el-table>
+      </div>
+      <div style="clear锛歜oth"></div>
+      
+    </div>
   </div>
 </template>
 
@@ -259,4 +409,11 @@
   border: none;
   cursor: pointer;
 }
+.dotClass {
+  width:10px;
+  height:10px;
+  border-radius: 50%;
+  display: block;
+  margin-left: 10px; 
+}
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/KanbanDisplay/kanbanDisplay.vue b/UI-Project/src/views/KanbanDisplay/kanbanDisplay.vue
new file mode 100644
index 0000000..e5fd828
--- /dev/null
+++ b/UI-Project/src/views/KanbanDisplay/kanbanDisplay.vue
@@ -0,0 +1,193 @@
+<!--  绌虹櫧椤�  -->
+
+
+<script setup>
+import { ref, computed } from 'vue'
+import * as echarts from 'echarts'; 
+</script>
+<script>
+export default {
+  mounted() {
+    this.drawLineChart('drawLineChart_day1', 1);
+    this.drawLineChart('drawLineChart_day2', 1);
+    this.drawLineChart('drawLineChart_day3', 1);
+    this.drawLineChart('drawLineChart_day4', 1);
+    this.drawLineChart('drawLineChart_day5', 1);
+    //this.drawLineChart('drawLineChart_week', 1);
+    this.drawBarchart('drawBarchart', 1);
+  },
+  methods: {
+    //鏂规硶
+    drawLineChart(name, data) {
+      var myChart = echarts.init(document.getElementById(name));
+      myChart.setOption({ // 缁樺埗鍥捐〃
+        title: {
+          text: '浜ч噺鐪嬫澘绀轰緥'
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+            label: {
+              backgroundColor: '#6a7985'
+            }
+          }
+        },
+        legend: {
+          data: ['璁″垝浜ч噺', '瀹為檯浜ч噺']
+        },
+        toolbox: {
+          feature: {
+            saveAsImage: {}
+          }
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          containLabel: true
+        },
+        xAxis: [
+          {
+            type: 'category',
+            boundaryGap: false,
+            data: ['1-01', '1-02', '1-03', '1-04', '1-05',
+              '1-06', '1-07', '1-08', '1-09', '1-10',
+              '1-11', '1-12', '1-13', '1-14', '1-15',
+              '1-16', '1-17', '1-18', '1-19', '1-20',
+              '1-21', '1-22', '1-23', '1-24', '1-25',
+              '1-26', '1-27', '1-28', '1-29', '1-30', '1-31']
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value'
+          }
+        ],
+        series: [
+          {
+            name: '璁″垝浜ч噺',
+            type: 'line',
+            areaStyle: {},
+            label: {
+              show: true,
+              position: 'top'
+            },
+            data: [120, 132, 101, 134, 90, 230, 210,
+              120, 132, 101, 134, 90, 230, 210,
+              120, 132, 101, 134, 90, 230, 210,
+              120, 132, 101, 134, 90, 230, 210,
+              120, 132, 101]
+          },
+          {
+            name: '瀹為檯浜ч噺',
+            type: 'line',
+            areaStyle: {},
+            emphasis: {
+              focus: 'series'
+            },
+            data: [100, 122, 101, 124, 90, 200, 180,
+              100, 122, 101, 124, 90, 200, 180,
+              100, 122, 101, 124, 90, 200, 180,
+              100, 122, 101, 124, 90, 200, 180,
+              100, 122, 101]
+          }
+        ]
+
+      });
+    },
+    drawBarchart(name, data) {
+      var myChart = echarts.init(document.getElementById(name));
+      myChart.setOption({ // 缁樺埗鍥捐〃
+        title: {
+          text: '鎬讳骇閲忕湅鏉跨ず渚�'
+        },
+        tooltip: {
+          trigger: 'item'
+        },
+        legend: {
+          top: '5%',
+          left: 'center'
+        },
+        series: [
+          {
+            name: 'Access From',
+            type: 'pie',
+            radius: ['40%', '70%'],
+            avoidLabelOverlap: false,
+            label: {
+              show: false,
+              position: 'center'
+            },
+            emphasis: {
+              label: {
+                show: true,
+                fontSize: 40,
+                fontWeight: 'bold'
+              }
+            },
+            labelLine: {
+              show: false
+            },
+            data: [
+              { value: 1000, name: '璁″垝鎬荤墖鏁�' },
+              { value: 900, name: '瀹為檯鎬荤墖鏁�' },
+              { value: 10, name: '鐮存崯鐗囨暟' }
+            ]
+            , label: {
+              formatter: '{b}:{c}'
+            }
+          }
+        ]
+
+
+      });
+    }
+  }
+}
+</script>
+
+<template>
+  <div>
+    <div style="font-size: 30px;height: 70px;line-height: 70px;border: 1px solid #ccc;text-align: center;">
+      JOOMO闀滅墖鍒堕�犱腑蹇冮┚椹惰埍
+    </div>
+    <div style="margin-left: 20px;">
+      <el-button type="primary" @click="drawPieChart">鏍囧噯鍝�</el-button>
+      <el-button type="primary" @click="drawPieChart">瀹氬埗鍝�</el-button>
+    </div>
+    <div style="width:100% ;height: 880px;">
+      <div style="width:33.3% ;height: 100%;border: 1px solid #ccc;float: left;">
+        <div id="drawLineChart_day11" style="height: 50%;width: 100%;border: 1px solid #ccc;">鏃ュ崟杈炬垚鐜�-鐗囨暟</div>
+        <div id="drawLineChart_day21" style="height: 50%;width: 100%;border: 1px solid #ccc;">鏈堝崟杈炬垚鐜�-鐗囨暟</div>
+      </div>
+      <div style="width:33.3% ;height: 100%;border: 1px solid #ccc;float: left;">
+        <div id="drawLineChart_day31" style="height: 50%;width: 100%;border: 1px solid #ccc;">鏃ュ崟杈炬垚鐜�-骞虫柟</div>
+        <div id="drawLineChart_day41" style="height: 50%;width: 100%;border: 1px solid #ccc;">鏈堝崟杈炬垚鐜�-骞虫柟</div>
+      </div>
+      <div style="width:33.3% ;height: 100%;border: 1px solid #ccc;float: left;">
+        <div id="drawLineChart_day51" style="height: 33.3%;width: 100%;border: 1px solid #ccc;">鍚堟牸鐜�-鏄剧ず褰撳ぉ</div>
+        <div id="drawLineChart_day61" style="height: 33.3%;width: 100%;border: 1px solid #ccc;">璁惧绋煎姩鐜�</div>
+        <div id="drawLineChart_day71" style="height: 33.3%;width: 100%;border: 1px solid #ccc;">鑳借�楃鐞�-鎸夊ぉ鏄剧ず锛堟墜杈擄級</div>
+      </div>
+    </div>
+
+    <!-- <div style="width:33% ;height: 880px;border: 1px solid #ccc;">
+      <div id="drawLineChart_day1" style="height: 300px;width: 25%;border: 1px solid #ccc;float: left;"></div>
+      <div id="drawLineChart_day2" style="height: 300px;width: 25%;border: 1px solid #ccc;float: left;"></div>
+    </div> -->
+  </div>
+</template>
+<style scoped>
+.float{
+  float: left;
+}
+.style{
+  width: 600px; 
+  height: 400px;
+  border: 1px solid #ccc;
+}
+.chart {
+  height: 400px;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Lamination/lamination.vue b/UI-Project/src/views/Lamination/lamination.vue
new file mode 100644
index 0000000..e94835b
--- /dev/null
+++ b/UI-Project/src/views/Lamination/lamination.vue
@@ -0,0 +1,412 @@
+<!--  璐磋啘鏈�  -->
+<script setup>
+import request from "@/utils/request";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { 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 {gridDateFormatter} from '@/stores/tool';
+
+let language = ref(localStorage.getItem('lang') || 'zh')
+const { t } = useI18n()
+const requestData = reactive({
+  account: '',
+  password: '',
+});
+const blind = ref(false)
+const errorInfo = ref(true)
+const loadData = ref([]);
+const findMachine = ref([]);
+const sendRecords = ref([]);
+const downLineTask = ref([]);
+
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams=userInfo.user.menus[0].pages[7].params;
+const pageParamsJson=JSON.parse(pageParams);
+const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
+console.log(machineId);
+//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];
+
+  loadData.value = dataJson.taskingList[0];
+  findMachine.value = dataJson.machine[0];
+  sendRecords.value = dataJson.sendRecords[0].reverse();
+   
+};
+// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
+const handleMessage2 = (data) => {
+  downLineTask.value = data.downLineTask[0];
+  // console.log(data);
+};
+onUnmounted(() => {
+  if (socket) {
+    closeWebSocket(socket);
+  }
+  if (socketDownLineTask) {
+    closeWebSocket(socketDownLineTask);
+  }
+});
+onBeforeUnmount(() => {
+  console.log("鍏抽棴浜�")
+  closeWebSocket();
+});
+
+onMounted(async () => {
+  //浣跨敤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',
+    }
+  )
+    .then(() => {
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: t('functionState.cancel'),
+      })
+    })
+}
+//淇敼宸ヤ綔鐘舵�� 銆愬け璐�/姝e湪宸ヤ綔/瀹屽伐銆�
+const workStatus = async (row, state) => {
+  let url;
+  if (state == "閲嶅彂") {
+    url = "/deviceInteraction/tasking/loseMachineTask";
+  } else if (state == "姝e湪宸ヤ綔") {
+    url = "/deviceInteraction/tasking/startMachineTask";
+  } else if (state == "瀹屽伐") {
+    url = "/deviceInteraction/tasking/finishMachineTask";
+  } else {
+    return;
+  }
+  ElMessageBox.confirm(
+    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绔偣  
+          if (res.code === 200) {
+            ElMessage.success(res.message);
+          } else {
+            ElMessage.warning(res.message)
+          }
+        })
+    })
+    .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',
+    }
+  )
+    .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'),
+      })
+    })
+}
+//瀹氬埗/鏍囧噯
+const machineMode = async (mode) => {
+  ElMessageBox.confirm(
+    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绔偣  
+          if (res.code === 200) {
+            ElMessage.success(res.message);
+          } else {
+            ElMessage.warning(res.message)
+          }
+        })
+    })
+    .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',
+    }
+  )
+    .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'),
+      })
+    })
+}
+//涓嬬嚎(鎷胯蛋)
+const glassDownLine = async (row) => {
+  ElMessageBox.confirm(
+    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绔偣  
+          if (res.code === 200) {
+            ElMessage.success(res.message);
+          } else {
+            ElMessage.warning(res.message)
+          }
+        })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: t('functionState.cancel'),
+      })
+    })
+}
+const topLineShow = async () => {
+  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',
+    }
+  )
+    .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'),
+      })
+    })
+}
+const handleDialogClose = () => {  
+    
+}
+</script>
+<template>
+  <div ref="content" style="padding:0 20px;">
+    <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;">
+      {{ $t('machine.lamination') }}
+    </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" />
+        <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="workState" :label="$t('glassInfo.workState')" />
+        <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>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+    <hr />
+    <br>
+    <div id="search">
+      <!-- 鍔熻兘 -->
+      <el-button :type="(findMachine['state'] == '鏆傚仠' ? 'danger' : 'success')" id="ButtonMachineStatus"
+        @click="machineStatus((findMachine['state'] == '鏆傚仠' ? '寮�宸�' : '鏆傚仠'))">{{ findMachine['state'] == '寮�宸�' ?
+          $t('functionState.start') : $t('functionState.stop') }}</el-button>
+         
+      <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.topLine') }}</el-button>
+    </div>
+    <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' }">
+        <!-- <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="glassId" :label="$t('glassInfo.glassId')" />
+        <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="workState" :label="$t('glassInfo.workState')" />
+        <el-table-column prop="operationRecordTime" :formatter="gridDateFormatter" :label="$t('glassInfo.operationRecordTime')" width="180"/>
+        <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>
+            <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '瀹屽伐')">{{
+              $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>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <div id="main-body" style="width: 100%; height: 460px;min-width: 1200px;">
+      <div style="width: 33%;min-width: 400px;height: 460px;float: left;background-color: aqua;"></div>
+      <div style="width: 33%;min-width: 400px;height: 460px;float: left;"></div>
+      <div style="width: 33%;min-width: 400px;height: 460px;float: left;"></div>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+table {
+  text-align: center;
+  width: 100%;
+  height: 100%;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+table td {
+  text-align: center;
+}
+
+#main-body {
+  width: 100%;
+  height: 100%;
+  border: 1px solid #ccc;
+  margin-top: 25px;
+}
+
+#searchButton {
+  width: 100px;
+  height: 40px;
+  font-size: 16px;
+  border-radius: 5px;
+  background-color: #409EFF;
+  color: #fff;
+  border: none;
+  cursor: pointer;
+}
+.dotClass {
+  width:10px;
+  height:10px;
+  border-radius: 50%;
+  display: block;
+  margin-left: 10px; 
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/ManualReporting/manualReporting.vue b/UI-Project/src/views/ManualReporting/manualReporting.vue
index 1119704..79d2735 100644
--- a/UI-Project/src/views/ManualReporting/manualReporting.vue
+++ b/UI-Project/src/views/ManualReporting/manualReporting.vue
@@ -24,7 +24,11 @@
 const scanCodeOld = ref([]);
 const searcheh = ref();  
 
-const machineId = 24;//褰撳墠椤甸潰鐨勮澶嘔D
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams=userInfo.user.menus[0].pages[4].params;
+const pageParamsJson=JSON.parse(pageParams);
+const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
+console.log(machineId);
 var errorScanId;
 var errorOpen=false;
 //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
@@ -37,8 +41,9 @@
   // 鏇存柊 tableData 鐨勬暟鎹�
   //taskinggoruby.value = data.taskinggoruby[0];
   //loadData.value =getDataSort(data.taskingList[0]);
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
+  let 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){
     //鏈夋暟鎹氨寮圭獥 
@@ -56,7 +61,8 @@
 };
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage2 = (data) => {
-  downLineTask.value = data.downLineTask[0];
+  let dataJson = data[""+machineId][0];
+  downLineTask.value = dataJson.downLineTask[0];
   // console.log(data);
 };
 onUnmounted(() => {
@@ -395,13 +401,14 @@
         :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="operationRecordTime" :formatter="gridDateFormatter" :label="$t('glassInfo.operationRecordTime')" width="180"/>
+        <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" />
+        <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" />
         <el-table-column prop="warehouse" :label="$t('glassInfo.warehouse')" />
         <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
           <template #default="scope">
diff --git a/UI-Project/src/views/Marking/marking.vue b/UI-Project/src/views/Marking/marking.vue
index d7807ce..bba4efb 100644
--- a/UI-Project/src/views/Marking/marking.vue
+++ b/UI-Project/src/views/Marking/marking.vue
@@ -17,16 +17,24 @@
 const loadData = ref([]);
 const findMachine = ref([]);
 const sendRecords = ref([]);
-const machineId=12;//褰撳墠椤甸潰鐨勮澶嘔D
+
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams=userInfo.user.menus[0].pages[3].params;
+const pageParamsJson=JSON.parse(pageParams);
+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 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  sendRecords.value = data.sendRecords[0];
+  let dataJson = data[""+machineId][0];
+
+  loadData.value = dataJson.taskingList[0];
+  findMachine.value = dataJson.machine[0];
+  sendRecords.value = dataJson.sendRecords[0];
 };
 onUnmounted(() => {
   if (socket) {
diff --git a/UI-Project/src/views/MechanicalArm/mechanicalArm.vue b/UI-Project/src/views/MechanicalArm/mechanicalArm.vue
index c68bd9e..b3dd11f 100644
--- a/UI-Project/src/views/MechanicalArm/mechanicalArm.vue
+++ b/UI-Project/src/views/MechanicalArm/mechanicalArm.vue
@@ -14,7 +14,7 @@
 });
 const blind = ref(false)
 const blindMode = ref(false)
-const blindModeNumber = ref('')
+const blindModeNumberLocal = ref('')
 const errorInfo = ref(true)
 const loadData = ref([]);
 const findMachine = ref([]);
@@ -23,7 +23,12 @@
 const findPrimitiveTask = ref([]);
 const scanCodeOld = ref([]);
 const searchs = ref();
-const machineId = 2;//褰撳墠椤甸潰鐨勮澶嘔D
+
+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;
 //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
 let socket = null;
@@ -31,12 +36,33 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/loadTask`;
 const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
+
+
+
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  loadData.value = data.findPrimitiveTasking[0];
-  findPrimitiveTask.value = data.findPrimitiveTask[0];
-  findMachine.value = data.machine[0];
-  sendRecords.value = data.sendRecords[0].reverse();
+  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"){
+    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: '鎵嬪姩',
+    };
+  }
+  //sendRecords.value = data.sendRecords[0].reverse();
 };
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage2 = (data) => {
@@ -334,13 +360,48 @@
     label: '鎵嬪姩',
   }
 ]
+
+const modeShow = async () => {
+  blindMode.value = true;
+  blindModeNumberLocal.value=findMachine.taskCount;
+}
 //妯″紡閫夋嫨鏃惰繘琛屽鐞�
 const modeChange = async () => {
+  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'){
     //褰撴槸鎵嬪姩妯″紡鏃跺脊绐楁彁绀� 璁剧疆涓婄墖鏁伴噺
     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;
 }
 </script>
 <template>
@@ -348,10 +409,10 @@
     <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;">
       {{ $t('machine.mechanicalArm') }}
     </div>
-    <el-dialog v-model="blind" top="30vh" style="text-align: center;" @close="handleDialogClose">
+    <el-dialog v-model="blind" top="10vh" style="text-align: center;width:1400px ;" @close="handleDialogClose">
       <!-- 鏈鍙栫殑鏍囧噯浠诲姟 -->
 
-      <el-table :data="findPrimitiveTask" stripe style="height:260px"
+      <el-table :data="findPrimitiveTask" stripe style="height:660px"
         :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }"
         :cell-style="{ textAlign: 'center' }">
         <!-- <el-table-column type="selection" min-width="30" /> -->
@@ -382,7 +443,8 @@
       </div>
       <div>
         鎵嬪姩杈撳叆涓婄墖鏁伴噺锛�
-        <el-input v-model="blindModeNumber" style="width: 200px;" type="Number" id="blindMode" @keyup.enter="fetchData"></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>
@@ -399,7 +461,12 @@
         <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-select>
-        <span @click="modeChange" style="margin-left: 40px;">涓婄墖鏁伴噺:{{ blindModeNumber}}</span>
+        
+        <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>
@@ -407,10 +474,6 @@
         @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>
-
-      <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>
     </div>
 
     <div id="main-body" style="min-height:240px;">
diff --git a/UI-Project/src/views/MechanicalArm/mechanicalArm2.vue b/UI-Project/src/views/MechanicalArm/mechanicalArm2.vue
deleted file mode 100644
index 2a4aa5e..0000000
--- a/UI-Project/src/views/MechanicalArm/mechanicalArm2.vue
+++ /dev/null
@@ -1,321 +0,0 @@
-<!--  鎵撴爣鏈�  -->
-<script setup>
-import request from "@/utils/request";
-import { ElMessage, ElMessageBox } from "element-plus";
-import { 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 requestData = reactive({
-  account: '',
-  password: '',
-});
-const loadData = ref([]);
-const findMachine = ref([]);
-const machineId=1;//褰撳墠椤甸潰鐨勮澶嘔D
-//浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-let socket = null;
-const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/mechanicalArm`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  // console.log(data);
-};
-onUnmounted(() => {
-  if (socket) {
-    closeWebSocket(socket);
-  }
-});
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
-});
-
-onMounted(async () => {
-  //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
-  socket = initializeWebSocket(socketUrl, handleMessage);// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-
-
-  //浣跨敤鎺ュ彛鏂瑰紡灞曠ず鏁版嵁
-  //load();
-});
-
-// //鑾峰彇鏁版嵁
-// 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;
-  if(state=="閲嶅彂"){
-    url="/deviceInteraction/tasking/loseMachineTask";
-  }else if(state=="姝e湪宸ヤ綔"){
-    url="/deviceInteraction/tasking/startMachineTask";
-  }else if(state=="瀹屽伐"){
-    url="/deviceInteraction/tasking/finishMachineTask";
-  }else{
-    return;
-  }
-  ElMessageBox.confirm(
-        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绔偣  
-              if (res.code === 200) {
-                ElMessage.success(res.message);
-              } else {
-                ElMessage.warning(res.message)
-              }
-            })
-        })
-        .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',
-        }
-      )
-        .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'),
-          })
-        })
-}
-//鐮存崯
-const damagedTask = async(row) => {
-  ElMessageBox.confirm(
-        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绔偣  
-              if (res.code === 200) {
-                ElMessage.success(res.message);
-              } else {
-                ElMessage.warning(res.message)
-              }
-            })
-        })
-        .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',
-        }
-      )
-        .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'),
-          })
-        })
-}
-//涓婄嚎
-const topLine = async() => {
-
-}
-
-</script>
-<template>
-  <div ref="content" style="padding:0 20px;">
-    <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;">
-      {{$t('machine.upperSlice')}}
-    </div>
-    <hr />
-    <br>
-    <div id="search" >
-      <!-- 鍔熻兘 -->
-      <el-button :type="(findMachine['state']=='鏆傚仠'?'danger':'success')" id="ButtonMachineStatus" @click="machineStatus((findMachine['state']=='鏆傚仠'?'寮�宸�':'鏆傚仠'))">{{findMachine['state']=='寮�宸�'?$t('functionState.start'):$t('functionState.stop')}}</el-button>
-      <el-button type="primary" id="ButtonTopLine" @click="topLine">{{$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>
-      <el-button type="primary" id="searchButton" @click="workStatus('瀹屽伐')">瀹屽伐</el-button> -->
-    </div>
-    <div id="main-body" style="min-height:240px;">
-      <!-- 琛ㄦ牸鍐呭 -->
-      <el-table :data="loadData" 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" />
-        <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')"/>
-        <el-table-column prop="taskType" :label="$t('glassInfo.taskType')"/>
-        <el-table-column prop="glassId" :label="$t('glassInfo.glassId')"/>
-        <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="workState" :label="$t('glassInfo.workState')"/>
-        <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>
-            <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '瀹屽伐')">{{$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>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-
-    <div id="main-body" 
-      style="width: 45%; height: 400px;margin: 50px 0 0 50px;background-image: url(../../src/assets/涓婄墖鏈�.png) ;background-size: 100% 100%;">
-      <!-- 鐢诲浘鍐呭 -->
-      <div style="width: 200px; height: 100px; background-color: red; position: relative; top: 271px; left: 158px">
-        <div style="width: 500px; height: 300px; position: relative; top: -250PX; left: 800px">
-          <el-table :data="loadData" stripe class="custom-table"
-        :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center',height: '80px'}"
-        :cell-style="{ textAlign: 'center',height: '80px'}">
-        <!-- <el-table-column type="selection" min-width="30" /> -->
-        <el-table-column type="index" :label="$t('glassInfo.number')" min-width="55" />
-        <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')"/>
-        <el-table-column prop="taskType" :label="$t('glassInfo.taskType')"/>
-        <el-table-column prop="glassId" :label="$t('glassInfo.glassId')" />
-        <el-table-column prop="length" :label="$t('glassInfo.length')" min-width="55"/>  
-        <el-table-column prop="width" :label="$t('glassInfo.width')" min-width="55"/>
-        <el-table-column prop="thickness" :label="$t('glassInfo.thickness')"/>
-        <el-table-column prop="workState" :label="$t('glassInfo.workState')"/>
-        <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="100">
-          <template #default="scope">
-            <el-button size="mini" style="min-width: 100px;" link type="primary" plain @click="workStatus(scope.row, '缁戝畾')" >{{$t('functionState.bound')}}</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-
-table {
-  text-align: center;
-  width: 100%;
-  height: 100%;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-table td {
-  text-align: center;
-}
-
-#main-body {
-  width: 100%;
-  height: 100%;
-  border: 1px solid #ccc;
-  margin-top: 25px;
-}
-
-#searchButton {
-  width: 100px;
-  height: 40px;
-  font-size: 16px;
-  border-radius: 5px;
-  background-color: #409EFF;
-  color: #fff;
-  border: none;
-  cursor: pointer;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Rotate/rotate.vue b/UI-Project/src/views/Rotate/rotate.vue
index 82a2081..e961aeb 100644
--- a/UI-Project/src/views/Rotate/rotate.vue
+++ b/UI-Project/src/views/Rotate/rotate.vue
@@ -21,7 +21,12 @@
 const downLineTask = ref([]);
 const searchs = ref();
 
-const machineId = 20;//褰撳墠椤甸潰鐨勮澶嘔D
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams=userInfo.user.menus[0].pages[5].params;
+const pageParamsJson=JSON.parse(pageParams);
+const machineId = pageParamsJson.machineId;//褰撳墠椤甸潰鐨勮澶嘔D
+console.log(machineId);
+//const machineId = 20;//褰撳墠椤甸潰鐨勮澶嘔D
 var errorScanId;
 var errorOpen=false;
 //浣跨敤WebSocket鏂瑰紡灞曠ず鏁版嵁
@@ -32,9 +37,11 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  sendRecords.value = data.sendRecords[0].reverse();
+  let dataJson = data[""+machineId][0];
+
+  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){
     //鏈夋暟鎹氨寮圭獥 
@@ -202,6 +209,39 @@
       })
     })
 }
+
+//瀹氬埗/鏍囧噯
+const rotateMode = async (mode) => {
+  ElMessageBox.confirm(
+    t('functionState.tips'),
+    t('delivery.prompt'),
+    {
+      confirmButtonText: t('functionState.sure'),
+      cancelButtonText: t('functionState.cancel'),
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      //涓嬬嚎鎺ュ彛
+      request.post("/deviceInteraction/machine/toggleModeRotate",
+        {
+          "id": machineId,
+          "rotateMode": 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'),
+      })
+    })
+}
 //鐮存崯
 const damagedTask = async (row) => {
   ElMessageBox.confirm(
@@ -350,6 +390,12 @@
       <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>
+
+      <el-button :type="(findMachine['rotateMode'] == 1 ? 'danger' : 'success')" id="ButtonRotateMode"
+        @click="rotateMode((findMachine['rotateMode'] == 1 ? 2 : 1))">{{ findMachine['rotateMode'] == 1 ?
+         $t('functionState.rotate') : $t('functionState.notRotate') }}</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>
diff --git a/UI-Project/src/views/SilkScreen/SilkScreen.vue b/UI-Project/src/views/SilkScreen/SilkScreen.vue
index 8797e77..d81ebe3 100644
--- a/UI-Project/src/views/SilkScreen/SilkScreen.vue
+++ b/UI-Project/src/views/SilkScreen/SilkScreen.vue
@@ -17,16 +17,23 @@
 const loadData = ref([]);
 const findMachine = ref([]);
 const sendRecords = ref([]);
-const machineId=14;//褰撳墠椤甸潰鐨勮澶嘔D
+
+const userInfo=JSON.parse(window.localStorage.getItem('userInfo'));
+const pageParams=userInfo.user.menus[0].pages[4].params;
+const pageParamsJson=JSON.parse(pageParams);
+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 鐨勬暟鎹�
-  loadData.value = data.taskingList[0];
-  findMachine.value = data.machine[0];
-  sendRecords.value = data.sendRecords[0];
+  let dataJson = data[""+machineId][0];
+  loadData.value = dataJson.taskingList[0];
+  findMachine.value = dataJson.machine[0];
+  sendRecords.value = dataJson.sendRecords[0];
 };
 onUnmounted(() => {
   if (socket) {

--
Gitblit v1.8.0