package com.mes.component; 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.service.BigStorageCageFeedTaskService; import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; import com.mes.edgstoragetask.service.TaskCacheService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; @Slf4j public class PlcStorageCage extends Thread { @Autowired private BigStorageCageService bigStorageCageService; @Autowired private BigStorageCageDetailsService bigStorageCageDetailsService; @Autowired private GlassInfoService glassInfoService; @Autowired private BigStorageCageFeedTaskService bigStorageCageFeedTaskService; @Autowired private BigStorageCageOutTaskService bigStorageCageOutTaskService; @Autowired private TaskCacheService taskCacheService; @Override public void run() { while (this != null) { JSONObject jsonObject = new JSONObject(); try { Thread.sleep(300); boolean bigStorageCageFullAlarm = false; String plcD01FeedReq = "0"; String plcD04FeedReq = "0"; String plcFeedGlassid = "111"; String plcFeedReqLine = "0"; if ("1".equals(plcD01FeedReq)) { plcFeedReqLine = "1"; } else { //plc任务发送字0 } if ("1".equals(plcD04FeedReq)) { plcFeedReqLine = "2"; } else { //plc任务发送字0 } 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、添加任务到任务表"); //plc任务发送字1 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、删除已经完成的进片任务"); } }else{ bigStorageCageOutTaskService.updateOutTask(); //plc任务发送字0 } //出片请求 String plcOutReq = "0"; boolean result = false; if ("1".equals(plcOutReq)) { result = bigStorageCageService.outGlass(); log.info("8、出片请求时调用出片接口" + result); if (result == true) { //plc任务发送字1 } } else { bigStorageCageOutTaskService.updateOutTask(); //plc任务发送字0 } //显示剩余空格子 //报警信息 jsonObject.append("bigStorageCageFullAlarm", bigStorageCageFullAlarm); } catch (Exception e) { e.printStackTrace(); } } } }