| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.WrkMastSplitTwin; |
| | | import com.zy.asrs.service.BasCrnpService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.service.WrkMastSplitTwinService; |
| | | import com.zy.asrs.service.impl.BasDevpServiceImpl; |
| | | import com.zy.asrs.service.impl.WrkMastServiceImpl; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.handler.WrkMastSplitTwinInItHandler; |
| | | import com.zy.asrs.utils.LocAndStaCodeUtil; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.asrs.utils.TimeCalculatorUtils; |
| | | import com.zy.common.model.enums.CrnStnType; |
| | | import com.zy.common.model.enums.WrkMastExecuteType; |
| | | import org.slf4j.Logger; |
| | |
| | | public class WrkMastSplitTwinInItScheduler { |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); |
| | | // private static Integer signBigTurn = 0; |
| | | |
| | | @Autowired |
| | | private WrkMastSplitTwinInItHandler wrkMastSplitTwinInItHandler; |
| | |
| | | @Autowired |
| | | private BasCrnpService basCrnpService; |
| | | @Autowired |
| | | private BasDevpServiceImpl basDevpService; |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private RgvOneSignService rgvOneSignService; |
| | | |
| | | public static final List<Integer> SplitTwin_CRN_NO = new ArrayList<Integer>() {{ |
| | | add(3); |
| | | add(4); |
| | | add(5); |
| | | }}; |
| | | @Autowired |
| | | private WrkMastServiceImpl wrkMastService; |
| | | |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute() { |
| | | for (Integer crnNo : SplitTwin_CRN_NO) { |
| | | try { |
| | | List<Integer> integers = WrkMastExecuteType.get(crnNo); |
| | | BasCrnp basCrnp = basCrnpService.selectById(crnNo); |
| | | if (!Cools.isEmpty(basCrnp)) { |
| | | if (basCrnp.getWrkNo() == 0 && basCrnp.getCrnSts() != 3) { |
| | |
| | | continue; |
| | | } |
| | | WrkMastSplitTwin wrkMastSplitTwin = wrkMastSplitTwinList.get(0); |
| | | if (wrkMastSplitTwin.getWrkType()!=1){ |
| | | if (wrkMastSplitTwin.getWrkType()!=1 && wrkMastSplitTwin.getWrkType()!=2){ |
| | | continue; |
| | | } |
| | | wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 2, null, null, 4); |
| | |
| | | } |
| | | switch (wrkMastSplitTwin.getIoType()){ |
| | | case 1: |
| | | Integer count = basDevpService.selectWaitNecessary(integers,wrkMastSplitTwin.getWrkNo().intValue()); |
| | | Integer count = basDevpService.selectWaitNecessary(WrkMastExecuteType.get(crnNo),wrkMastSplitTwin.getWrkNo().intValue()); |
| | | if (basCrnp.getCrnStatusOne() != 20) {//堆垛机工位1有物待作业 |
| | | break; |
| | | } |
| | |
| | | case 2: |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 12L).eq("crn_no", crnNo)); |
| | | if (wrkMasts.size()==1){ |
| | | WrkMast wrkMast1 = wrkMasts.get(0); |
| | | wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11L).eq("crn_no", crnNo)); |
| | | if (wrkMasts.isEmpty()){ |
| | | if (basCrnp.getCrnStatusOne() != 20) {//堆垛机工位1有物待作业 |
| | |
| | | break; |
| | | }else { |
| | | for (WrkMast wrkMast:wrkMasts){ |
| | | // if (wrkMast.getStaNoSign().equals(signBigTurn)){ |
| | | // continue; |
| | | // } |
| | | // if (wrkMast.booleanStaNoSign() && wrkMast.booleanStaNoSign()){ |
| | | // RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","LineUp"+wrkMast.getStaNo())); |
| | | // if (Cools.isEmpty(rgvOneSign)){ |
| | | // continue; |
| | | // } |
| | | // int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).eq("wrk_sts",12L)); |
| | | // if (wrkCount+rgvOneSign.getRgvOneSign()>2){ |
| | | // continue; |
| | | // } |
| | | // int wrkCountGt = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).gt("wrk_sts",11L)); |
| | | // if (wrkCountGt > 2){ |
| | | // continue; |
| | | // } |
| | | //// int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).gt("sta_no", 309).lt("sta_no", 314).gt("wrk_sts",11L)); |
| | | //// if (wrkCount>=12){ |
| | | //// continue; |
| | | //// } |
| | | //// RgvOneSign bigTurn = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","bigTurn")); |
| | | //// if (Cools.isEmpty(bigTurn)){ |
| | | //// continue; |
| | | //// } |
| | | //// if (bigTurn.getRgvOneSign()>13){ |
| | | //// continue; |
| | | //// } |
| | | //// BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNoBying()); |
| | | //// if (basDevp.getLoading().equals("Y") |
| | | //// || !basDevp.getAutoing().equals("Y") |
| | | //// || (!Cools.isEmpty(basDevp.getWrkNo()) && basDevp.getWrkNo()!=0) ){ |
| | | //// continue; |
| | | //// } |
| | | // } |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwin,wrkMast,2); |
| | | // signBigTurn++; |
| | | // if (signBigTurn > 2){ |
| | | // signBigTurn = 0; |
| | | // } |
| | | break; |
| | | } |
| | | WrkMastSplitTwin wrkMastSplitTwin1 = wrkMastSplitTwinService.selectOne(new EntityWrapper<WrkMastSplitTwin>().eq("wrk_no", wrkMast1.getWrkNo())); |
| | | if (!Cools.isEmpty(wrkMastSplitTwin1)){ |
| | | long differenceInSeconds = TimeCalculatorUtils.differenceInSeconds(wrkMastSplitTwin1.getUpdateTime(), new Date()); |
| | | if (differenceInSeconds>180 || (!Cools.isEmpty(wrkMast1.getStaNo()) && (wrkMast1.getStaNo().equals(312) || wrkMast1.getStaNo().equals(310)) )){ |
| | | if (basCrnp.getCrnStatusOne() != 20) {//堆垛机工位1有物待作业 |
| | | break; |
| | | } |
| | | if (wrkMastSplitTwin.getWrkSts()!=2){ |
| | | break; |
| | | } |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwin); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // signBigTurn++; |
| | | // if (signBigTurn > 2){ |
| | | // signBigTurn = 0; |
| | | // } |
| | | break; |
| | | } |
| | | } |
| | |
| | | try { |
| | | BasCrnp basCrnp = basCrnpService.selectById(crnNo); |
| | | if (!Cools.isEmpty(basCrnp)) { |
| | | if (basCrnp.getWrkNo() == 0 && basCrnp.getCrnSts() != 3) { |
| | | if (basCrnp.getWrkNo() != 0 || basCrnp.getWrkNoTwo()!=0 || basCrnp.getCrnSts() != 3) { |
| | | continue; |
| | | } |
| | | if (basCrnp.getCrnStatusOne() == 20 && basCrnp.getCrnStatusTwo() == 20) {//堆垛机工位1有物待作业 工位2有物待作业 |
| | |
| | | } |
| | | } |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void executeThree() { |
| | | for (Integer crnNo : SplitTwin_CRN_NO) { |
| | | try { |
| | | BasCrnp basCrnp = basCrnpService.selectById(crnNo); |
| | | if (!Cools.isEmpty(basCrnp)) { |
| | | if (basCrnp.getWrkNo() != 0 || basCrnp.getWrkNoTwo()!=0 || basCrnp.getCrnSts() != 3) { |
| | | continue; |
| | | } |
| | | if (basCrnp.getCrnStatusOne() == 0 && basCrnp.getCrnStatusTwo() == 20) {//堆垛机工位1空闲 工位2有物待作业 |
| | | List<WrkMastSplitTwin> wrkMastSplitTwinListTwo = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 2, null, null, 4); |
| | | if (wrkMastSplitTwinListTwo.isEmpty()){ |
| | | continue; |
| | | } |
| | | if (wrkMastSplitTwinListTwo.size() > 1){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={}",crnNo,"不存在或者存在多笔可执行作业,请维护执行作业!!!",2); |
| | | continue; |
| | | } |
| | | WrkMastSplitTwin wrkMastSplitTwinTwo = wrkMastSplitTwinListTwo.get(0); |
| | | if (wrkMastSplitTwinTwo.getWrkType()!=1 || wrkMastSplitTwinTwo.getWrkSts()!=2){//工作类型 0: 未知 1: 取 2: 放 3: 取放 4: 完成 //工作状态 0: 初始 1: 等待取货完成 2: 取货完成待作业 3: 等待放货完成 4: 完成 |
| | | continue; |
| | | } |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwinTwo); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("前后双工位拆分堆垛机执行作业生成失败,堆垛机号={},异常原因={}", crnNo, e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |