From d1ee3f0300368709a246c37bf5e525f69eb1dbf7 Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期二, 03 十二月 2024 09:21:28 +0800
Subject: [PATCH] job漏提交文件

---
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java          |   88 ++++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCMechanicalArm.java     |   80 +++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQrCodesReport.java |   78 +++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java         |  182 ++++++++
 JiuMuMesParent/JsonFile/PlcCacheGlass.json                                                               |   64 +++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRWorks.java       |   79 +++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRVerify.java      |   77 +++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java          |  184 ++++++++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCManualReporting.java   |   59 ++
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCEdging.java            |  336 ++++++++++++++++
 10 files changed, 1,227 insertions(+), 0 deletions(-)

diff --git a/JiuMuMesParent/JsonFile/PlcCacheGlass.json b/JiuMuMesParent/JsonFile/PlcCacheGlass.json
new file mode 100644
index 0000000..01969b7
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcCacheGlass.json
@@ -0,0 +1,64 @@
+{
+   "plcAddressBegin":"DB11.0",
+   "plcAddressLenght":"80",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "A06_request_word",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "A05_scanning_ID",
+          "addressIndex":"2",
+          "addressLenght":"30",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "Current_slot",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+        {
+          "codeId": "MES_confirmation_word",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A08_glass_status",
+          "addressIndex":"68",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A10_glass_status",
+          "addressIndex":"70",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A09_prohibit_film_production",
+          "addressIndex":"72",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+       ,
+       {
+          "codeId": "A10_prohibit_film_production",
+          "addressIndex":"74",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+   ]
+}
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
new file mode 100644
index 0000000..8dcb6cc
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java
@@ -0,0 +1,184 @@
+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 = 1000)
+    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
new file mode 100644
index 0000000..327464a
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCCleaning.java
@@ -0,0 +1,88 @@
+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.S7objectCleaning;
+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.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 PLCCleaning {
+
+    PlcParameterObject plcParameterObject =null;
+    @Autowired
+    TaskingService taskingService;
+    @Autowired
+    MachineMapper machineMapper;
+    public S7objectMachine s7objectMachine;
+
+    //@Scheduled(fixedDelay = 500)
+    public void cleaning() {
+        //纾ㄨ竟绾块�熷害  10.36.164.200
+        Long machineId=8L;
+        Machine machine=machineMapper.selectById(machineId);
+        if (s7objectMachine==null){
+            s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcCleaning", EPlcType.S200_SMART);
+            s7objectMachine.start();
+        }
+        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
+        PlcParameterInfo edgSpeed =plcParameterObject.getPlcParameter("edgSpeed");//纾ㄨ竟鏈洪�熷害
+        PlcParameterInfo thinness =plcParameterObject.getPlcParameter("thinness");//鍘氬害
+        if (machine.getIsLog()>0){
+            s7objectMachine.consoleLogInfo();
+        }
+        int edgSpeedInt=PLCEdging.edgSpeed;
+        int edgThinnessInt=PLCEdging.thinness;
+        if(!(edgSpeedInt+"").equals(edgSpeed.getValue())||!(edgThinnessInt+"").equals(thinness.getValue())){
+            //缁欐竻娲楁満鍣ㄥ彂閫佺(杈规満閫熷害
+            S7objectCleaning.getinstance().plccontrol.writeWord(edgSpeed.getAddress(), edgSpeedInt);
+            S7objectCleaning.getinstance().plccontrol.writeWord(thinness.getAddress(), edgThinnessInt);
+        }
+    }
+    //@Scheduled(fixedDelay = 1000)
+    public void cleaningTask() {
+        //鑾峰彇鎶ヨ鐘舵��
+        JSONObject jsonObject = new JSONObject();
+        Machine machine=machineMapper.selectById(7L);
+        List<Tasking> taskingList=taskingService.findMachineTask(machine);
+        jsonObject.append("taskingList", taskingList);
+        jsonObject.append("machine", machine);
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cleaning");
+        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/PLCEdging.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCEdging.java
new file mode 100644
index 0000000..671b797
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCEdging.java
@@ -0,0 +1,336 @@
+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 = 1000)
+    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) {
+                    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/PLCFlipSlice.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java
new file mode 100644
index 0000000..37e5099
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java
@@ -0,0 +1,182 @@
+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 = 1000)
+    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) {
+                    webserver.sendMessage(jsonObject.toString());
+                    List<String> messages = webserver.getMessages();
+                    if (!messages.isEmpty()) {
+                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                        webserver.clearMessages();
+                    }
+                } 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/PLCManualReporting.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCManualReporting.java
new file mode 100644
index 0000000..680b369
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCManualReporting.java
@@ -0,0 +1,59 @@
+package com.mes.job;
+
+import cn.hutool.json.JSONObject;
+import com.mes.common.S7object;
+import com.mes.device.PlcParameterObject;
+import com.mes.md.entity.PrimitiveTask;
+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 java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author SNG-010
+ */
+@Component
+@Slf4j
+public class PLCManualReporting {
+
+    PlcParameterObject plcParameterObject =null;
+    @Autowired
+    TaskingService taskingService;
+    @Autowired
+    MachineMapper machineMapper;
+    @Autowired
+    PrimitiveTaskService primitiveTaskService;
+
+    //@Scheduled(fixedDelay = 500)
+    //@Scheduled(fixedDelay = 1000)
+    public void manualReporting() {
+
+        JSONObject jsonObject = new JSONObject();
+        List<PrimitiveTask> taskingList = primitiveTaskService.selectPrimitiveTask(new PrimitiveTask());
+        jsonObject.append("taskingList", taskingList);
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("manualReporting");
+        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/PLCMechanicalArm.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCMechanicalArm.java
new file mode 100644
index 0000000..87791d4
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCMechanicalArm.java
@@ -0,0 +1,80 @@
+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/PLCScanQRVerify.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRVerify.java
new file mode 100644
index 0000000..b8849cf
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRVerify.java
@@ -0,0 +1,77 @@
+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
new file mode 100644
index 0000000..8702c78
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQRWorks.java
@@ -0,0 +1,79 @@
+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
new file mode 100644
index 0000000..d82f4a8
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCScanQrCodesReport.java
@@ -0,0 +1,78 @@
+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

--
Gitblit v1.8.0