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/MarkingTask.java |  175 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 119 insertions(+), 56 deletions(-)

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
index 2ba0640..8dcb6cc 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java
@@ -1,32 +1,39 @@
 package com.mes.job;
 
 import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
+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.GlassInfo;
 import com.mes.md.entity.Machine;
 import com.mes.md.entity.Tasking;
-import com.mes.md.entity.WorkTaskDetail;
 import com.mes.md.mapper.GlassInfoMapper;
 import com.mes.md.mapper.MachineMapper;
 import com.mes.md.mapper.TaskingMapper;
-import com.mes.md.mapper.WorkTaskDetailMapper;
 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.apache.commons.lang.StringUtils;
 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.net.Socket;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+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:
@@ -36,71 +43,127 @@
 public class MarkingTask {
 
     public static String engineerId = "";
+
     @Autowired
     TaskingMapper taskingMapper;
     @Autowired
     MachineMapper machineMapper;
     @Autowired
     TaskingService taskingService;
+    @Autowired
+    private GlassInfoMapper glassInfoMapper;
 
-//    @Scheduled(fixedDelay = 1000)
-    public void plcMarkingTask(Long machineId) {
+    public S7objectMachine s7objectMachine;
+
+    public List<Map> sendRecords = new ArrayList<>();
+
+    //@Scheduled(fixedDelay = 1000)
+    public void plcMarkingTask() {
+        Long machineId=12L;
         Machine machine=machineMapper.selectById(machineId);
-        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-        String taskRequestTypeValue = plcParameterObject.getPlcParameter("A06_request_word").getValue();
-        String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
-        String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
-        String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
-        String currentSlot = plcParameterObject.getPlcParameter("Current_slot").getValue();
-        if ("0".equals(taskRequestTypeValue)) {
-            if ("0".equals(confirmationWrodValue)) {
-                log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖鍙戦�佸瓧涓�0锛屼笉鎵ц浠诲姟");
+        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;
             }
-            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢鍙戦�佸瓧鏀逛负0");
-            S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 0);
             return;
         }
-        if (!"0".equals(confirmationWrodValue)) {
-            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢鍙戦�佸瓧涓嶄负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=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;
+            }
         }
-        if ("1".equals(taskRequestTypeValue)) {
-            log.info("2銆佽繘鐗囪姹傦紝涓斿彂閫佸瓧涓�0锛屾墽琛屾墦鏍囦换鍔�");
-            plcRequest(glassIdeValue, confirmationWrodAddress, currentSlot,machine);
-        }else if ("3".equals(taskRequestTypeValue)) {
-            log.info("2銆佸畬鎴愯姹傦紝鎵ц瀹屾垚浠诲姟");
-            plcReport(glassIdeValue, confirmationWrodAddress, currentSlot,machine);
-        }
-    }
-    public void plcRequest(String glassIdeValue, String confirmationWrodAddress, String currentSlot, Machine machine) {
-        //鏌ユ壘鎵撴爣鏈轰换鍔�
-        Tasking tasking=taskingService.startMachineTask(machine);
-        if(tasking!=null&&"寮�宸�".equals(machine.getState())){//鏈変换鍔�
-            log.info("鍙戦�佷换鍔★細{}",tasking);
-        }else{
-            log.info("涓嶆弧瓒冲彂閫佹潯浠讹細{}",tasking);
-        }
+        //log.info("鏃犲彲鎵ц鐨勬潯浠�");
 
     }
-    public void plcReport(String glassIdeValue, String confirmationWrodAddress, String currentSlot, Machine machine) {
-        //鏌ユ壘鎵撴爣鏈哄伐浣滅殑浠诲姟
-        //鏌ユ壘鎵撴爣鏈轰换鍔�
-        int finishCount=taskingService.finishMachineTask(machine);
-        if(finishCount>0){//鏁版嵁宸叉爣璁板畬鎴�
-            log.info("姝e父姹囨姤锛�");
-
-        }else{
-            log.info("褰撳墠鏃犲叡宸ヤ綔鐨勪换鍔★紝鏃犳晥姹囨姤瀹屾垚锛�");
-        }
-    }
-    //@Scheduled(fixedDelay = 1000)
+    @Scheduled(fixedDelay = 1000)
     public void markingTasks() {
         JSONObject jsonObject = new JSONObject();
-        Machine machine=machineMapper.selectById(11L);
+        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) {

--
Gitblit v1.8.0