| | |
| | | private OrderDetlService orderDetlService; |
| | | |
| | | |
| | | //定时出库 经典双伸 |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public void locToLocAutoLocMove(){ |
| | | if (slaveWmsParameterProperties.isAutoLocMoveBoolean()){ |
| | | Config config = configService.selectConfigByCode("AutoLocMove"); |
| | | if (Cools.isEmpty(config) || config.getValue().equals("false")) { |
| | | return; |
| | | } |
| | | OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus(); |
| | | if (!Cools.isEmpty(orderPakout)){ |
| | | // autoMoveService.selectList() |
| | | }else { |
| | | orderPakout = orderPakoutService.selectOrderMoveStatusInitial(); |
| | | if (Cools.isEmpty(orderPakout)){ |
| | | return; |
| | | } |
| | | orderPakout.setMoveStatus(2); |
| | | orderPakoutService.updateById(orderPakout); |
| | | } |
| | | } |
| | | } |
| | | // //定时出库 经典双伸 |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | // public void locToLocAutoLocMove() { |
| | | // if (slaveWmsParameterProperties.isAutoLocMoveBoolean()) { |
| | | // Config config = configService.selectConfigByCode("AutoLocMove"); |
| | | // if (Cools.isEmpty(config) || config.getValue().equals("false")) { |
| | | // return; |
| | | // } |
| | | // OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus(); |
| | | // if (!Cools.isEmpty(orderPakout)) { |
| | | //// autoMoveService.selectList() |
| | | // } else { |
| | | // orderPakout = orderPakoutService.selectOrderMoveStatusInitial(); |
| | | // if (Cools.isEmpty(orderPakout)) { |
| | | // return; |
| | | // } |
| | | // orderPakout.setMoveStatus(2); |
| | | // orderPakoutService.updateById(orderPakout); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | //定时出库 |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public void locToLoc11(){ |
| | | if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){ |
| | | @Scheduled(cron = "0/10 * * * * ? ") |
| | | public void locToLoc12() { |
| | | // if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){ |
| | | Config config = configService.selectConfigByCode("AutoLocMoveUnilateral"); |
| | | if (Cools.isEmpty(config) || config.getValue().equals("false")) { |
| | | return; |
| | | } |
| | | int crnCount = basCrnpService.selectCount(new EntityWrapper<>()); |
| | | for (int crnNo = 1;crnNo < crnCount;crnNo++){ |
| | | for (int crnNo = 6; crnNo <= 6; crnNo++) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo)); |
| | | // WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo)); |
| | | if (Cools.isEmpty(wrkMast)) { |
| | | autoLocMoveHandler.start(crnNo, 12); |
| | | } |
| | | } |
| | | // } |
| | | } |
| | | |
| | | //定时出库 |
| | | // @Scheduled(cron = "0/10 * * * * ? ") |
| | | public void locToLoc11() { |
| | | // if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){ |
| | | Config config = configService.selectConfigByCode("AutoLocMoveUnilateral"); |
| | | if (Cools.isEmpty(config) || config.getValue().equals("false")) { |
| | | return; |
| | | } |
| | | int crnCount = basCrnpService.selectCount(new EntityWrapper<>()); |
| | | for (int crnNo = 1; crnNo <= 2; crnNo++) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo)); |
| | | WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo)); |
| | | if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)){ |
| | | autoLocMoveHandler.start(crnNo,11); |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | } |
| | | |
| | | //定时入库 |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public void locToLoc111() { |
| | | if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){ |
| | | Config config = configService.selectConfigByCode("AutoLocMoveUnilateral"); |
| | | if (Cools.isEmpty(config) || config.getValue().equals("false")) { |
| | | return; |
| | | } |
| | | int crnCount = basCrnpService.selectCount(new EntityWrapper<>()); |
| | | for (int crnNo = 1;crnNo < crnCount;crnNo++){ |
| | | BasCrnp basCrnp = basCrnpService.selectById(crnNo); |
| | | if (basCrnp == null) { |
| | | continue; |
| | | } |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo)); |
| | | WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo)); |
| | | if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)){ |
| | | autoLocMoveHandler.start(crnNo,111); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | // public void locToLoc111() { |
| | | // if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){ |
| | | // Config config = configService.selectConfigByCode("AutoLocMoveUnilateral"); |
| | | // if (Cools.isEmpty(config) || config.getValue().equals("false")) { |
| | | // return; |
| | | // } |
| | | // int crnCount = basCrnpService.selectCount(new EntityWrapper<>()); |
| | | // for (int crnNo = 1;crnNo < crnCount;crnNo++){ |
| | | // BasCrnp basCrnp = basCrnpService.selectById(crnNo); |
| | | // if (basCrnp == null) { |
| | | // continue; |
| | | // } |
| | | // WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo)); |
| | | // WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo)); |
| | | // if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)){ |
| | | // autoLocMoveHandler.start(crnNo,111); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | |
| | | import com.zy.api.service.WcsApiService; |
| | | import com.zy.asrs.entity.Task; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.param.CompleteParam; |
| | | import com.zy.asrs.service.MobileService; |
| | | import com.zy.asrs.service.TaskService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | |
| | | private WorkMastHandler workMastHandler; |
| | | @Autowired |
| | | private WcsApiService wcsApiService; |
| | | @Autowired |
| | | private MobileService mobileService; |
| | | @Autowired |
| | | private TaskService taskService; |
| | | |
| | |
| | | * @author Ryan |
| | | * @date 2026/1/10 14:42 |
| | | */ |
| | | @Scheduled(cron = "0/15 * * * * ? ") |
| | | @Scheduled(cron = "0/5 * * * * ? ") |
| | | private void autoPubTasks() { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(11L))); |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(11L, 1L))); |
| | | if (wrkMasts.isEmpty()) { |
| | | return; |
| | | } |
| | | Collections.shuffle(wrkMasts); |
| | | wrkMasts.forEach(wrkMast -> { |
| | | WorkTaskParams params = new WorkTaskParams(); |
| | | // if (wrkMast.getIoType().equals(1)) { |
| | | // params.setType("in"); |
| | | // params.setTaskNo(wrkMast.getWrkNo() + "") |
| | | // .setLocNo(wrkMast.getLocNo()) |
| | | // .setBarcode(wrkMast.getBarcode()) |
| | | // .setTaskPri(wrkMast.getIoPri().intValue()); |
| | | // } else { |
| | | if (wrkMast.getIoType().equals(11)) { |
| | | CompleteParam param = new CompleteParam(); |
| | | param.setTaskNo(wrkMast.getWrkNo() + ""); |
| | | param.setSourceLocNo(wrkMast.getSourceLocNo()); |
| | | param.setLocNo(wrkMast.getLocNo()); |
| | | // param.set |
| | | mobileService.taskMove(param, 9527L); |
| | | } else if (wrkMast.getIoType() > 100) { |
| | | params.setType("out") |
| | | .setTaskNo(wrkMast.getWrkNo() + "") |
| | | .setLocNo(wrkMast.getSourceLocNo()) |
| | |
| | | .setStaNo(wrkMast.getStaNo()) |
| | | .setTaskPri(wrkMast.getIoPri().intValue()); |
| | | wcsApiService.pubWrkToWcs(params); |
| | | // } |
| | | } |
| | | }); |
| | | } |
| | | |
| | |
| | | @Transactional(isolation = Isolation.REPEATABLE_READ) |
| | | public ReturnT<String> start(Integer crnNo, Integer ioType) { |
| | | try { |
| | | // //11 穿梭移单边 |
| | | // if (ioType==11){ |
| | | // for (int bay = 1;bay < 27;bay++){ |
| | | // for (int lev = 1 ; lev <6 ; lev++){ |
| | | // List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay,lev,crnNo); |
| | | // if (!Cools.isEmpty(locMasts) && locMasts.size()<4){ |
| | | // for (LocMast locMast:locMasts){ |
| | | //11 穿梭移单边 |
| | | if (ioType == 11) { |
| | | for (int bay = 2; bay < 141; bay++) { |
| | | for (int lev = 1; lev < 22; lev++) { |
| | | List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay, lev, crnNo); |
| | | if (!Cools.isEmpty(locMasts) && locMasts.size() < 4) { |
| | | for (LocMast locMast : locMasts) { |
| | | // LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); |
| | | //// StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null); |
| | | // StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null); |
| | | // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl); |
| | | // |
| | | // StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 917 : 918, sourceStaNo.getDevNo(), findLocNoAttributeVo, null); |
| | | // workService.locMove(locMast.getLocNo(), startupDto.getLocNo(),9527L); |
| | | // } |
| | | // return SUCCESS; |
| | | // } |
| | | // } |
| | | // } |
| | | // }else {//11 单边移穿梭 |
| | | // List<Map<String, Object>> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111 单边移穿梭 |
| | | // for (Map<String, Object> map : list) { |
| | | // String matnr = map.getOrDefault("matnr","").toString();//物料号 |
| | | // String batch = map.getOrDefault("batch","").toString();//批号 |
| | | // String grade = map.getOrDefault("brand","").toString();//等级 |
| | | // int count = Integer.parseInt(map.get("count").toString());//单边库数量 |
| | | // if (count < 4) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // List<LocDetl> locDetlList = locDetlService.selectLocDetlUnilateralMoveShuttle(matnr, batch, grade, crnNo); |
| | | // for (LocDetl locDetl : locDetlList) { |
| | | //// StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 4 : 3, ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null); |
| | | StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 109 : 126, 1, null, null); |
| | | workService.locMove(locMast.getLocNo(), startupDto.getLocNo(), 9527L); |
| | | break; |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |
| | | } |
| | | } else if (ioType == 12) { |
| | | for (int bay = 2; bay < 61; bay++) { |
| | | for (int lev = 1; lev < 7; lev++) { |
| | | List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay, lev, crnNo ); |
| | | if (!Cools.isEmpty(locMasts) && locMasts.size() < 4) { |
| | | for (LocMast locMast : locMasts) { |
| | | // LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); |
| | | // StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null); |
| | | // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl); |
| | | // |
| | | // StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 901 : 932, sourceStaNo.getDevNo(), findLocNoAttributeVo, null); |
| | | // workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L); |
| | | // } |
| | | // } |
| | | // return SUCCESS; |
| | | // } |
| | | StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 205 : 215, 3, null, null); |
| | | workService.locMove(locMast.getLocNo(), startupDto.getLocNo(), 9527L); |
| | | break; |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |
| | | } |
| | | |
| | | }else {//11 单边移穿梭 |
| | | List<Map<String, Object>> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111 单边移穿梭 |
| | | for (Map<String, Object> map : list) { |
| | | String matnr = map.getOrDefault("matnr", "").toString();//物料号 |
| | | String batch = map.getOrDefault("batch", "").toString();//批号 |
| | | String grade = map.getOrDefault("brand", "").toString();//等级 |
| | | int count = Integer.parseInt(map.get("count").toString());//单边库数量 |
| | | if (count < 4) { |
| | | continue; |
| | | } |
| | | |
| | | List<LocDetl> locDetlList = locDetlService.selectLocDetlUnilateralMoveShuttle(matnr, batch, grade, crnNo); |
| | | for (LocDetl locDetl : locDetlList) { |
| | | // StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 4 : 3, ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl); |
| | | |
| | | StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 901 : 932, null, findLocNoAttributeVo, null); |
| | | workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L); |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("自动移库出错,堆垛机号{},工作类型{}",crnNo,ioType); |
| | | } |
| | |
| | | } |
| | | } |
| | | } catch (Exception ignore) { |
| | | } |
| | | |
| | | } |
| | | } |
| | | // 修改库位状态 S ====>> F |
| | | if (locMast.getLocSts().equals("S")) { |
| | |
| | | throw new CoolException("库位明细保存失败!!"); |
| | | } |
| | | |
| | | OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo())); |
| | | if (Objects.isNull(orderPakin)) { |
| | | throw new CoolException("数据错误,订单信息不存在!!"); |
| | | } |
| | | |
| | | if (!orderPakin.getDocType().equals(0)) { |
| | | // 更新订单完成数量 |
| | | OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), |
| | | pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(), |
| | |
| | | } |
| | | } |
| | | } catch (Exception ignore) { |
| | | |
| | | } |
| | | } |
| | | }); |
| | | |
| | |
| | | |
| | | Set<Long> list = apallets.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet()); |
| | | List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list)); |
| | | if (Objects.isNull(pakins) || pakins.isEmpty()) { |
| | | // throw new CoolException("单据不存在!!"); |
| | | } |
| | | // if (Objects.isNull(pakins) || pakins.isEmpty()) { |
| | | //// throw new CoolException("单据不存在!!"); |
| | | // } |
| | | }else if(wrkMast.getIoType().equals(53)){ |
| | | // 根据工作号,查询工作明细档 |
| | | List<TaskDetl> wrkDetls53 = taskDetlService |