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、删除已经完成的进片任务"); } } //出片请求 String plcOutReq = "0"; boolean result = false; if ("1".equals(plcOutReq)) { result=bigStorageCageService.outGlass(); log.info("8、出片请求时调用出片接口"+result); if (result) { //plc任务发送字1 } }else{ bigStorageCageOutTaskService.updateOutTask(); //plc任务发送字0 } //显示剩余空格子 //报警信息 jsonObject.append("bigStorageCageFullAlarm", bigStorageCageFullAlarm); } catch (Exception e) { e.printStackTrace(); } } } }