package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.WrkMastCrnHandler; import com.zy.asrs.task.handler.WrkMastStaInItHandler; import com.zy.asrs.utils.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by Monkey D. Luffy on 2023.07.25 * 亳州煜星..............以下.............亳州煜星.............左右双工位堆垛机执行任务生成 */ @Component public class WrkMastCrnScheduler { private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); // private static Integer signSmallTurn = 0; @Autowired private WrkMastCrnHandler wrkMastCrnHandler; @Autowired private BasDevpService basDevpService; @Autowired private WrkMastService wrkMastService; @Autowired private RgvOneSignService rgvOneSignService; @Autowired private WrkMastStaService wrkMastStaService; @Autowired private WrkDetlService wrkDetlService; @Autowired private LocDetlService locDetlService; @Autowired private WrkMastCrnService wrkMastCrnService; public static final List CRN_WORK_RU = new ArrayList() {{ add(153);add(145); }}; public static final List CRN_WORK_CU = new ArrayList() {{ add(100);add(148); }}; public static final List CRN_WORK_CU_SMA = new ArrayList() {{ add(126);add(131); }}; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ try{ for(Integer staNo : CRN_WORK_RU){ List wrkMastCrnList = wrkMastCrnService.selectList(new EntityWrapper().eq("sta_no", staNo)); if (Cools.isEmpty(wrkMastCrnList)){ BasDevp basDevp = basDevpService.selectById(staNo); if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y") && basDevp.getInEnable().equals("Y")){ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", basDevp.getWrkNo())); if(Cools.isEmpty(wrkMast)){ continue; } if (wrkMast.getWrkSts()!=2){ continue; } WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (Cools.isEmpty(wrkMastCrn)){ BasDevp basDevpOther = basDevpService.selectById(staNoOther(staNo)); if (basDevpOther.getWrkNo()!=0 && basDevpOther.getLoading().equals("Y") && basDevpOther.getAutoing().equals("Y") && basDevpOther.getInEnable().equals("Y")){ WrkMast wrkMastOther = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", basDevpOther.getWrkNo())); if(Cools.isEmpty(wrkMastOther)){ continue; } if (wrkMastOther.getWrkSts()!=2){ continue; } if (!Cools.isEmpty(wrkMast)){ ReturnT result = wrkMastCrnHandler.start(wrkMast,wrkMastOther); if (result.getCode()!=200){ System.out.println(staNo+"失败!"); } } } } } } } }catch (Exception e){ log.error("左右双工位堆垛机执行任务生成====》入库任务生成异常:"+e.getMessage()); } } @Scheduled(cron = "0/3 * * * * ? ") private void execute2(){ for(Integer staNo : CRN_WORK_CU) { // try{ // for(Integer staNo1 : CRN_WORK_CU_SMA) { // RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper().eq("rgv_one_type","TrunSma"+staNo1)); // trunSma.setRgvOneSign(0); // rgvOneSignService.updateById(trunSma); // } // } catch (Exception e){ // // } List wrkMastCrnList = wrkMastCrnService.selectList(new EntityWrapper().eq("source_sta_no",staNo)); if (Cools.isEmpty(wrkMastCrnList)){ List wrkMasts = wrkMastService.selectList(new EntityWrapper() .eq("source_sta_no", staNo).eq("wrk_sts", 11L) .orderBy("io_pri",false)); for (WrkMast wrkMast:wrkMasts){ // if (wrkMast.getStaNoSign().equals(signSmallTurn)){ // continue; // } // if (wrkMast.booleanStaNoSignOther()){ // continue; // } boolean sign = true; if ((wrkMast.getIoType()==101 || wrkMast.getIoType() == 110) && wrkMast.booleanStaNoSign() && wrkMast.getIoPri()<99D){ Date now = new Date(); long differenceInSeconds = now.getTime() - wrkMast.getModiTime().getTime(); if (differenceInSeconds<=2000){ continue; } // RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper().eq("rgv_one_type","LineUp"+wrkMast.getStaNo())); // if (Cools.isEmpty(rgvOneSign)){ // continue; // } // RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper().eq("rgv_one_type","TrunSma"+wrkMast.getStaNo())); // if (Cools.isEmpty(trunSma)){ // continue; // } // int wrkCount = wrkMastService.selectCount(new EntityWrapper().eq("sta_no", wrkMast.getStaNo()).eq("wrk_sts",12L)); // int wrkCountCrn = wrkMastCrnService.selectCount(new EntityWrapper().eq("sta_no", wrkMast.getStaNo())); // if (wrkCountCrn*2+wrkCount+rgvOneSign.getRgvOneSign()+trunSma.getRgvOneSign()>1){ // continue; // } // int wrkCountGt = wrkMastService.selectCount(new EntityWrapper().eq("sta_no", wrkMast.getStaNo()).gt("wrk_sts",11L)); // if (wrkCountGt > 1){ // continue; // } // sign = false; // BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNoBying()); // if (basDevp.getLoading().equals("Y") // || !basDevp.getAutoing().equals("Y") // || (!Cools.isEmpty(basDevp.getWrkNo()) && basDevp.getWrkNo()!=0) ){ // continue; // } // int loadIngCount = basDevpService.selectCount(new EntityWrapper().ge("dev_no", 103).le("dev_no", 121).eq("loading", "Y")); // if (loadIngCount>8){ // continue; // } // RgvOneSign smallTurn = rgvOneSignService.selectOne(new EntityWrapper().eq("rgv_one_type","smallTurn")); // if (Cools.isEmpty(smallTurn)){ // continue; // } // if (smallTurn.getRgvOneSign()>15){ // continue; // } } try{ int row = Utils.getRow(wrkMast.getSourceLocNo()); if (row == wrkMast.getCrnNo()*4 || row == wrkMast.getCrnNo()*4-3){ WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (Cools.isEmpty(wrkMastCrn)){ ReturnT result = wrkMastCrnHandler.start(wrkMast,sign); if (result.isSuccess()) { // signSmallTurn++; // if (signSmallTurn > 2){ // signSmallTurn = 0; // } break; } } } }catch (Exception e){ log.error("左右双工位堆垛机执行任务生成====》出库任务生成异常:"+e.getMessage()); } } // if (!wrkMasts.isEmpty()){ // signSmallTurn++; // if (signSmallTurn > 2){ // signSmallTurn = 0; // } // } } } } public Integer staNoOther(Integer staNo){ return staNo-1; } }