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 | 184 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 184 insertions(+), 0 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 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"); + } + } + } + } + +} -- Gitblit v1.8.0