package com.mes.job; import cn.hutool.json.JSONObject; import com.mes.common.S7object; import com.mes.device.PlcParameterObject; import com.mes.engineering.entity.Engineering; import com.mes.engineering.service.EngineeringService; import com.mes.uppattenusage.entity.UpPattenUsage; import com.mes.uppattenusage.service.UpPattenUsageService; import com.mes.workstation.entity.UpWorkstation; import com.mes.workstation.service.UpWorkstationService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * @author SNG-010 */ @Component @Slf4j public class PlcLoadGlassTask { @Autowired private UpWorkstationService upWorkstationService; @Autowired private EngineeringService engineeringService; @Autowired private UpPattenUsageService upPattenUsageService; PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; /** * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成) * fixedDelay : 上一个调用结束后再次调用的延时 */ @Scheduled(fixedDelay = 300) public void plcLoadGlassTask() throws InterruptedException { try { log.info("开始上片"); //获取是否有上片请求 String loadRequest = plcParameterObject.getPlcParameter("loadRequest").getValue(); //判断开始上片的工程号 Engineering engineering=engineeringService.selectInitiate(1); if("1".equals(loadRequest)&&engineering!=null){ UpPattenUsage upPattenUsage=upWorkstationService.selectPriority(engineering); log.info("当有请求时查询当前上片顺序的玻璃信息{}",upPattenUsage); UpWorkstation upwork=upWorkstationService.selectworkstation(upPattenUsage); log.info("符合的尺寸的工位玻璃:{}",upwork); if(upwork!=null){ int workId=upwork.getWorkstationId();//工位id double width=upwork.getPatternWidth();//宽度 double height=upwork.getPatternHeight();//高度 S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("WorkId").getAddress(),workId); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (long) width); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (long) height); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(),1); //减少工位数量 upWorkstationService.reduceWorkstationNumber(upwork); //完成上片表状态 upPattenUsageService.updateupPattenUsageState(upPattenUsage,1); } } //获取是否有汇报 String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue(); if (loadStatus!=null) { log.info(loadStatus); if ("1".equals(loadStatus)) { log.info("收到汇报任务完成"); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1); } else if ("2".equals(loadStatus)) { log.info("收到汇报未完成任务"); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1); } else if ("3".equals(loadStatus)) { log.info("收到汇报玻璃破损"); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1); } else { log.info("收到汇报清0状态"); S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0); } } //执行后休眠300毫秒 //Thread.sleep(300); } catch (Exception e) { e.printStackTrace(); } } // @Scheduled(fixedDelay = 300) // public void plcLoadGlassOver() throws InterruptedException { // try { // //获取是否有汇报 // String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue(); // if ("1".equals(loadStatus)){ // log.info("收到汇报任务完成"); // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1); // }else if ("2".equals(loadStatus)) { // log.info("收到汇报未完成任务"); // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1); // }else if("3".equals(loadStatus)){ // log.info("收到汇报玻璃破损"); // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1); // }else { // log.info("收到汇报清0状态"); // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),0); // } // // } catch (Exception e) { // e.printStackTrace(); // } // } }