From 044c32c15ee9ccac6f3b60eb6745025e2f4480f2 Mon Sep 17 00:00:00 2001 From: 严智鑫 <test> Date: 星期三, 11 十二月 2024 16:59:54 +0800 Subject: [PATCH] 报工回传+库位显示 --- JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java | 186 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 186 insertions(+), 0 deletions(-) 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..4ef775a --- /dev/null +++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/PLCFlipSlice.java @@ -0,0 +1,186 @@ +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 -- Gitblit v1.8.0