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 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");//发送ID 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 taskingCount=taskingService.findMachineWorkStateTask(machine,"正在工作"); if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue()) &&"开工".equals(machine.getState()) &&taskingCount.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 = 1000) public void rotateTask() { //获取报警状态 JSONObject jsonObject = new JSONObject(); Machine machine=machineMapper.selectById(20L); List taskingList=taskingService.findMachineTask(machine); jsonObject.append("taskingList", taskingList); jsonObject.append("machine", machine); jsonObject.append("sendRecords", sendRecords); ArrayList sendwServer = WebSocketServer.sessionMap.get("rotate"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("Home is closed"); } } } } }