package com.mes.job; import cn.hutool.json.JSONObject; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; import com.mes.common.S7object; import com.mes.device.PlcParameterObject; import com.mes.edgstoragetask.service.TaskCacheService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.menu.service.SysMenuService; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Component @Slf4j public class PlcStorageCageTask { @Resource private BigStorageCageService bigStorageCageService; @Resource private BigStorageCageDetailsService bigStorageCageDetailsService; @Resource private GlassInfoService glassInfoService; @Resource private BigStorageCageFeedTaskService bigStorageCageFeedTaskService; @Resource private BigStorageCageOutTaskService bigStorageCageOutTaskService; @Resource private TaskCacheService taskCacheService; @Resource private SysMenuService sysMenuService; PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; /** * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成) * fixedDelay : 上一个调用结束后再次调用的延时 */ @Scheduled(fixedDelay = 300) public void plcStorageCageTask() throws InterruptedException { JSONObject jsonObject = new JSONObject(); try { // 爆笼报警 boolean bigStorageCageFullAlarm = false; String plcFeedGlassid = ""; String plcFeedReqLine = "0"; if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) { plcFeedReqLine = "1"; plcFeedGlassid=plcParameterObject.getPlcParameter("D01ID1").getValue(); } if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) { plcFeedReqLine = "2"; plcFeedGlassid=plcParameterObject.getPlcParameter("D04ID1").getValue(); } if (!("0".equals(plcFeedReqLine))) { log.info("1、Plc进片请求时"); BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid); log.info("2、根据玻璃id获取玻璃信息" + glassInfo); BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails); if (slotInfo != null) { int taskType = taskCacheService.judgeTasktype(); log.info("3、查询任务表判断当前任务类型为上车等到还是上车启动" + taskType); bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType); log.info("4、添加任务到任务表"); bigStorageCageFullAlarm = false; } else { bigStorageCageFullAlarm = true; } } else { List bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1); log.info("5、查询任务表是否有已经完成的进片任务" + bigStorageCageFeedTaskList.size()); for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList ) { BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); bigStorageCageDetails.setId(bigStorageCageFeedTask.getId()); bigStorageCageDetails.setState(1); bigStorageCageDetailsService.updateById(bigStorageCageDetails); log.info("6、修改理片笼详情玻璃状态"); bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask); log.info("7、删除已经完成的进片任务"); } } //查询出片表是否有任务未完成的任务 List bigStorageCageOutTask=bigStorageCageOutTaskService.querybigStorageCageOutTask(0); if(bigStorageCageOutTask.size()==0){ bigStorageCageService.outGlass(); log.info("8、没有未完成任务时调用出片接口"); } bigStorageCageOutTaskService.updateOutTask(); log.info("9、根据任务表状态修改钢化小片表任务状态"); //报警信息 jsonObject.append("bigStorageCageFullAlarm", bigStorageCageFullAlarm); ArrayList sendwServer = WebSocketServer.sessionMap.get("Home"); 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"); } } } } catch (Exception e) { e.printStackTrace(); } } }