| | |
| | | import com.zy.asrs.service.impl.BasDevpServiceImpl; |
| | | import com.zy.asrs.service.impl.WrkMastServiceImpl; |
| | | import com.zy.asrs.task.handler.WrkMastSplitTwinInItHandler; |
| | | import com.zy.asrs.utils.LocAndStaCodeUtil; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.enums.CrnStnType; |
| | | import com.zy.common.model.enums.WrkMastExecuteType; |
| | |
| | | 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.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); |
| | |
| | | } |
| | | 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; |
| | |
| | | case 1: |
| | | Integer count = basDevpService.selectWaitNecessary(integers,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: |
| | |
| | | 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); |
| | | wrkMastSplitTwinInItHandler.start(wrkMastSplitTwin,wrkMast,2); |
| | | break; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | |
| | | } |
| | | } |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | 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) { |
| | | 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){ |
| | | |
| | | } |
| | | 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); |
| | | 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) { |