| | |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.dto.LocStockDto; |
| | | import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams; |
| | | import com.vincent.rsf.server.manager.controller.params.PakinItem; |
| | | import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | |
| | | private WarehouseAreasItemServiceImpl warehouseAreasItemService; |
| | | @Autowired |
| | | private LocItemService locItemService; |
| | | @Autowired |
| | | private OutStockService outStockService; |
| | | |
| | | |
| | | /** |
| | |
| | | throw new CoolException("计划收货数量修改失败!!"); |
| | | } |
| | | |
| | | // 立即触发异步任务,不等待结果 |
| | | if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) { |
| | | //组托 |
| | | WaitPakinParam pakinParam = new WaitPakinParam(); |
| | | pakinParam.setBarcode(palletId.get()); |
| | | pakinParam.setStaNo(syncOrder.getStationId()); |
| | | if (!rule.equals(SerialRuleCode.SYS_OUT_STOCK_CODE)){ |
| | | // 入库:联动组托 |
| | | // 立即触发异步任务,不等待结果 |
| | | if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) { |
| | | //组托 |
| | | WaitPakinParam pakinParam = new WaitPakinParam(); |
| | | pakinParam.setBarcode(palletId.get()); |
| | | pakinParam.setStaNo(syncOrder.getStationId()); |
| | | |
| | | boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId); |
| | | if (itemsCheck) { |
| | | CompletableFuture.runAsync(() -> { |
| | | try { |
| | | asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId); |
| | | } catch (Exception e) { |
| | | log.warn("订单 {} 开始自动组托", syncOrder.getOrderNo()); |
| | | boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId); |
| | | if (itemsCheck) { |
| | | CompletableFuture.runAsync(() -> { |
| | | try { |
| | | asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId); |
| | | } catch (Exception e) { |
| | | log.warn("订单 {} 开始自动组托", syncOrder.getOrderNo()); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } else { |
| | | // 出库:指定出库 |
| | | // 立即触发异步任务,不等待结果 |
| | | if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) { |
| | | Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, palletId.get())); |
| | | if (!Cools.isEmpty(loc)) { |
| | | //出库 |
| | | List<OutStockToTaskParams> param = new ArrayList<>(); |
| | | for (WkOrderItem wkOrderItem : orderItems){ |
| | | OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(wkOrderItem); |
| | | outStockToTaskParams.setLocCode(loc.getCode()); |
| | | outStockToTaskParams.setSiteNo(syncOrder.getStationId()); |
| | | param.add(outStockToTaskParams); |
| | | } |
| | | }); |
| | | // boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId); |
| | | // if (true) { |
| | | CompletableFuture.runAsync(() -> { |
| | | try { |
| | | asyncOutboundExecutionWcs(param, wkOrder.getId(), loginUserId); |
| | | } catch (Exception e) { |
| | | log.warn("订单 {} 开始自动出库", syncOrder.getOrderNo()); |
| | | } |
| | | }); |
| | | // } |
| | | } |
| | | } |
| | | } |
| | | }); |
| | |
| | | } |
| | | } |
| | | |
| | | @Async |
| | | public void asyncOutboundExecutionWcs(List<OutStockToTaskParams> param, Long orderId, Long loginUserId) { |
| | | try { |
| | | // int i = 0; |
| | | // List<OutStockToTaskParams> tasks = new ArrayList<>(); |
| | | // while (true) { |
| | | // tasks = new ArrayList<>(); |
| | | // i++; |
| | | // if (i > 5) return; |
| | | // Thread.sleep(3000); |
| | | // for (OutStockToTaskParams taskParam : new OutStockToTaskParams[param.size()]) { |
| | | // if (StringUtils.isNotBlank(taskParam.getLocCode())) { |
| | | // tasks.add(taskParam); |
| | | // } |
| | | // } |
| | | // break; |
| | | // } |
| | | if (param.isEmpty()){ |
| | | log.warn("订单ID {} 没有找到可出库明细,跳过自动出库", orderId); |
| | | return; |
| | | } |
| | | outStockService.genOutStockTask(param, loginUserId, orderId); |
| | | |
| | | log.info("订单ID {} 自动出库,共处理 {} 个明细", orderId, param.size()); |
| | | } catch (Exception e) { |
| | | log.error("订单ID {} 自动出库: {}", orderId, e.getMessage(), e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2025/8/19 |