| | |
| | | |
| | | 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.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 { |
| | | Date now = new Date(); |
| | | List<Integer> integers = WrkMastExecuteType.get(crnNo); |
| | | BasCrnp basCrnp = basCrnpService.selectById(crnNo); |
| | | if (!Cools.isEmpty(basCrnp)) { |
| | | if (basCrnp.getWrkNo() == 0 && basCrnp.getCrnSts() != 3) { |
| | |
| | | if (((basCrnp.getCrnStatusOne() > 0 && basCrnp.getCrnStatusOne() <= 3) || basCrnp.getCrnStatusOne() == 20) && basCrnp.getCrnStatusTwo() == 0) {//堆垛机工位1取货运行中 //堆垛机工位1有物待作业 |
| | | List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 1, null, null, 4); |
| | | if (wrkMastSplitTwinList.size() != 1){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={}",crnNo,"不存在或者存在多笔可执行作业,请删除无效作业!!!",1); |
| | | log.error("前后双工位拆分堆垛机执行作业生成,作业数量={},堆垛机号={},异常信息={},工位号={}",wrkMastSplitTwinList.size(),crnNo,"不存在或者存在多笔可执行作业,请维护执行作业!!!",1); |
| | | 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); |
| | | if (wrkMastSplitTwinList.size() > 1){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={}",crnNo,"存在多笔可执行作业,请删除无效作业!!!",2); |
| | | log.error("前后双工位拆分堆垛机执行作业生成,作业数量={},堆垛机号={},异常信息={},工位号={}",wrkMastSplitTwinList.size(),crnNo,"存在多笔可执行作业,请维护执行作业!!!",2); |
| | | continue; |
| | | } else if (wrkMastSplitTwinList.size()==1){ |
| | | continue; |
| | | } |
| | | 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有物待作业 |
| | | continue; |
| | | break; |
| | | } |
| | | if (wrkMastSplitTwin.getWrkSts()!=2){ |
| | | continue; |
| | | break; |
| | | } |
| | | if (count==0){ |
| | | |
| | | wrkMastSplitTwin.setWrkSts(4); |
| | | wrkMastSplitTwin.setUpdateTime(now); |
| | | wrkMastSplitTwinService.updateById(wrkMastSplitTwin); |
| | | |
| | | WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin); |
| | | wrkMastSplitTwinNew.setCreateTime(now); |
| | | wrkMastSplitTwinNew.setUpdateTime(now); |
| | | wrkMastSplitTwinNew.setWrkSts(0); |
| | | wrkMastSplitTwinNew.setWrkType(2); |
| | | wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); |
| | | }else { |
| | | BasDevp basDevp = basDevpService.selectById(CrnStnType.getDevNo(crnNo, true)); |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwin); |
| | | break; |
| | | } else { |
| | | BasDevp basDevp = basDevpService.selectById(CrnStnType.getDevNo(crnNo, true));//入库站点 |
| | | if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){ |
| | | continue; |
| | | break; |
| | | } |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); |
| | | if (wrkMast.getIoType()>10 || wrkMast.getWrkSts()!=2){ |
| | | continue; |
| | | if (wrkMast.getIoType()>100 || wrkMast.getWrkSts()!=2){ |
| | | break; |
| | | } |
| | | WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,2,now); |
| | | wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo()); |
| | | wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString()); |
| | | wrkMastSplitTwinNew.setStartRow(Utils.getRow(wrkMast.getSourceLocNo())); |
| | | wrkMastSplitTwinNew.setStartBay(Utils.getBay(wrkMast.getSourceLocNo())); |
| | | wrkMastSplitTwinNew.setStartLev(Utils.getLev(wrkMast.getSourceLocNo())); |
| | | int[] ints = new int[3]; |
| | | if (wrkMast.getIoType()!=11){ |
| | | ints = CrnStnType.get(wrkMast.getSourceStaNo()); |
| | | if (ints == null){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工作号={},站点号={}",crnNo,"未知站点号",wrkMast.getSourceStaNo(),wrkMast.getSourceStaNo()); |
| | | continue; |
| | | } |
| | | } |
| | | wrkMastSplitTwinNew.setEndRow(wrkMast.getIoType()==11? Utils.getRow(wrkMast.getLocNo()): ints[0]); |
| | | wrkMastSplitTwinNew.setEndBay(wrkMast.getIoType()==11? Utils.getBay(wrkMast.getLocNo()): ints[1]); |
| | | wrkMastSplitTwinNew.setEndLev(wrkMast.getIoType()==11? Utils.getLev(wrkMast.getLocNo()): ints[2]); |
| | | wrkMastSplitTwinNew.setWrkType(1); |
| | | wrkMastSplitTwinNew.setIoType(1); |
| | | wrkMastSplitTwinNew.setWrkSts(0); |
| | | wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwin,wrkMast,2); |
| | | } |
| | | 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有物待作业 |
| | | continue; |
| | | break; |
| | | } |
| | | if (wrkMastSplitTwin.getWrkSts()!=2){ |
| | | continue; |
| | | break; |
| | | } |
| | | wrkMastSplitTwin.setWrkSts(4); |
| | | wrkMastSplitTwin.setUpdateTime(now); |
| | | wrkMastSplitTwinService.updateById(wrkMastSplitTwin); |
| | | |
| | | WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin); |
| | | wrkMastSplitTwinNew.setCreateTime(now); |
| | | wrkMastSplitTwinNew.setUpdateTime(now); |
| | | wrkMastSplitTwinNew.setWrkSts(0); |
| | | wrkMastSplitTwinNew.setWrkType(2); |
| | | wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwin); |
| | | break; |
| | | }else { |
| | | for (WrkMast wrkMast:wrkMasts){ |
| | | WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,2,now); |
| | | wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo()); |
| | | wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString()); |
| | | wrkMastSplitTwinNew.setStartRow(Utils.getRow(wrkMast.getSourceLocNo())); |
| | | wrkMastSplitTwinNew.setStartBay(Utils.getBay(wrkMast.getSourceLocNo())); |
| | | wrkMastSplitTwinNew.setStartLev(Utils.getLev(wrkMast.getSourceLocNo())); |
| | | int[] ints = new int[3]; |
| | | if (wrkMast.getIoType()!=11){ |
| | | ints = CrnStnType.get(wrkMast.getSourceStaNo()); |
| | | if (ints == null){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工作号={},站点号={}",crnNo,"未知站点号",wrkMast.getSourceStaNo(),wrkMast.getSourceStaNo()); |
| | | continue; |
| | | } |
| | | } |
| | | wrkMastSplitTwinNew.setEndRow(wrkMast.getIoType()==11? Utils.getRow(wrkMast.getLocNo()): ints[0]); |
| | | wrkMastSplitTwinNew.setEndBay(wrkMast.getIoType()==11? Utils.getBay(wrkMast.getLocNo()): ints[1]); |
| | | wrkMastSplitTwinNew.setEndLev(wrkMast.getIoType()==11? Utils.getLev(wrkMast.getLocNo()): ints[2]); |
| | | wrkMastSplitTwinNew.setWrkType(1); |
| | | wrkMastSplitTwinNew.setIoType(2); |
| | | wrkMastSplitTwinNew.setWrkSts(0); |
| | | wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); |
| | | // 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; |
| | | } |
| | | } |
| | | break; |
| | |
| | | private void executeTwo() { |
| | | for (Integer crnNo : SplitTwin_CRN_NO) { |
| | | try { |
| | | Date now = new Date(); |
| | | List<Integer> integers = WrkMastExecuteType.get(crnNo); |
| | | 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() == 0) {//堆垛机工位1有物待作业 |
| | | if (basCrnp.getCrnStatusOne() == 20 && basCrnp.getCrnStatusTwo() == 20) {//堆垛机工位1有物待作业 工位2有物待作业 |
| | | List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 1, null, null, 4); |
| | | if (wrkMastSplitTwinList.size() != 1){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={}",crnNo,"不存在或者存在多笔可执行作业,请删除无效作业!!!",1); |
| | | if (wrkMastSplitTwinList.isEmpty()){ |
| | | continue; |
| | | } |
| | | if (wrkMastSplitTwinList.size() > 1){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={}",crnNo,"不存在或者存在多笔可执行作业,请维护执行作业!!!",1); |
| | | continue; |
| | | } |
| | | WrkMastSplitTwin wrkMastSplitTwin = wrkMastSplitTwinList.get(0); |
| | | if (wrkMastSplitTwin.getWrkType()!=1){ |
| | | if (wrkMastSplitTwin.getWrkType()!=1 || wrkMastSplitTwin.getWrkSts()!=2){//工作类型 0: 未知 1: 取 2: 放 3: 取放 4: 完成 |
| | | continue; |
| | | } |
| | | wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 2, null, null, 4); |
| | | if (wrkMastSplitTwinList.size() > 1){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={}",crnNo,"存在多笔可执行作业,请删除无效作业!!!",2); |
| | | continue; |
| | | } else if (wrkMastSplitTwinList.size()==1){ |
| | | List<WrkMastSplitTwin> wrkMastSplitTwinListTwo = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 2, null, null, 4); |
| | | if (wrkMastSplitTwinListTwo.isEmpty()){ |
| | | continue; |
| | | } |
| | | switch (wrkMastSplitTwin.getIoType()){ |
| | | case 1: |
| | | Integer count = basDevpService.selectWaitNecessary(integers,wrkMastSplitTwin.getWrkNo().intValue()); |
| | | if (count!=0){ |
| | | 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(wrkMastSplitTwin); |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwinTwo); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("前后双工位拆分堆垛机执行作业生成失败,堆垛机号={},异常原因={}", crnNo, e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case 2: |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 12L).eq("crn_no", crnNo)); |
| | | if (wrkMasts.size()==1){ |
| | | wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11L).eq("crn_no", crnNo)); |
| | | if (wrkMasts.isEmpty()){ |
| | | if (basCrnp.getCrnStatusOne() != 20) {//堆垛机工位1有物待作业 |
| | | continue; |
| | | } |
| | | if (wrkMastSplitTwin.getWrkSts()!=2){ |
| | | continue; |
| | | } |
| | | wrkMastSplitTwin.setWrkSts(4); |
| | | wrkMastSplitTwin.setUpdateTime(now); |
| | | wrkMastSplitTwinService.updateById(wrkMastSplitTwin); |
| | | |
| | | WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin); |
| | | wrkMastSplitTwinNew.setCreateTime(now); |
| | | wrkMastSplitTwinNew.setUpdateTime(now); |
| | | wrkMastSplitTwinNew.setWrkSts(0); |
| | | wrkMastSplitTwinNew.setWrkType(2); |
| | | wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); |
| | | }else { |
| | | for (WrkMast wrkMast:wrkMasts){ |
| | | WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,2,now); |
| | | wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo()); |
| | | wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString()); |
| | | wrkMastSplitTwinNew.setStartRow(Utils.getRow(wrkMast.getSourceLocNo())); |
| | | wrkMastSplitTwinNew.setStartBay(Utils.getBay(wrkMast.getSourceLocNo())); |
| | | wrkMastSplitTwinNew.setStartLev(Utils.getLev(wrkMast.getSourceLocNo())); |
| | | int[] ints = new int[3]; |
| | | if (wrkMast.getIoType()!=11){ |
| | | ints = CrnStnType.get(wrkMast.getSourceStaNo()); |
| | | if (ints == null){ |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工作号={},站点号={}",crnNo,"未知站点号",wrkMast.getSourceStaNo(),wrkMast.getSourceStaNo()); |
| | | continue; |
| | | } |
| | | } |
| | | wrkMastSplitTwinNew.setEndRow(wrkMast.getIoType()==11? Utils.getRow(wrkMast.getLocNo()): ints[0]); |
| | | wrkMastSplitTwinNew.setEndBay(wrkMast.getIoType()==11? Utils.getBay(wrkMast.getLocNo()): ints[1]); |
| | | wrkMastSplitTwinNew.setEndLev(wrkMast.getIoType()==11? Utils.getLev(wrkMast.getLocNo()): ints[2]); |
| | | wrkMastSplitTwinNew.setWrkType(0); |
| | | wrkMastSplitTwinNew.setIoType(1); |
| | | wrkMastSplitTwinNew.setWrkSts(0); |
| | | wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | default: |
| | | log.error("前后双工位拆分堆垛机执行作业生成,堆垛机号={},异常信息={},工位号={},工作类型={},工作状态={}",crnNo,"任务类型未知",1,1,1); |
| | | @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) { |