chen.lin
昨天 a488088a18a9b8808bc57124681cee8c4ada7299
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -19,10 +19,7 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.controller.dto.LocStockDto;
import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto;
import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
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.controller.params.*;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
@@ -556,19 +553,22 @@
                    // 立即触发异步任务,不等待结果
                    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)) {
                        if (!Cools.isEmpty(loc) && loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
//                            outStockService.getOrderOutTaskItem(orderOutTaskParam,param.getOrderItemId());
                            //出库
//                        boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId);
//                            if (true) {
                            CompletableFuture.runAsync(() -> {
                                try {
                                    asyncOutboundExecutionWcs(syncOrder.getStationId(), wkOrder.getId(), loginUserId);
                                    asyncOutboundExecutionWcs(syncOrder.getStationId(), wkOrder.getId(), loginUserId,loc.getCode());
                                } catch (Exception e) {
                                    log.warn("订单 {} 开始自动出库", syncOrder.getOrderNo());
                                }
                            });
//                            }
                        } else {
                            log.warn("订单 {} 自动出库失败!!未查询到指定库存!!", syncOrder.getOrderNo());
                            throw new CoolException("自动出库失败!!未查询到指定库存!!");
                        }
                    }
                }
@@ -612,35 +612,52 @@
    }
    @Async
    public void asyncOutboundExecutionWcs(String stationId ,Long orderId, Long loginUserId) {
    public void asyncOutboundExecutionWcs(String stationId ,Long orderId, Long loginUserId,String locCode) {
        try {
            OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam();
            orderOutTaskParam.setOrderId(orderId);
            orderOutTaskParam.setWaveId(16L);
            List<OrderOutItemDto> orderOutTaskItemAuto = outStockService.getOrderOutTaskItemAuto(orderOutTaskParam);
            List<OutStockToTaskParams> tasks = new ArrayList<>();
            for (OrderOutItemDto orderOutItemDto : orderOutTaskItemAuto){
                for (LocItem locItem : orderOutItemDto.getLocItemList()) {
                    OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(orderOutItemDto,locItem);
                    outStockToTaskParams.setId(locItem.getId());
                    outStockToTaskParams.setOutQty(locItem.getOutQty());
                    outStockToTaskParams.setLocCode(locItem.getLocCode());
                    outStockToTaskParams.setBarcode(locItem.getBarcode());
                    outStockToTaskParams.setSiteNo(stationId);
                    tasks.add(outStockToTaskParams);
            int i = 0;
            while (true) {
                i++;
                if (i > 5) return;
                Thread.sleep(3000);
                WkOrder byId = asnOrderService.getById(orderId);
                if (Cools.isEmpty(byId)) {
                    continue;
                }
                break;
            }
            if (tasks.isEmpty()){
                log.warn("订单ID {} 没有找到可出库明细,跳过自动出库", orderId);
                return;
            }
            outStockService.genOutStockTask(tasks, loginUserId, orderId);
            log.info("订单ID {} 自动出库,共处理 {} 个明细", orderId, tasks.size());
            GenWaveParams genWaveParams = new GenWaveParams();
            List<Long> ids = new ArrayList<>();
            ids.add(orderId);
            genWaveParams.setIds(ids);
            genWaveParams.setWaveRuleId(16L);
//            OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam();
//            orderOutTaskParam.setOrderId(orderId);
//            orderOutTaskParam.setWaveId(16L);
//            List<OrderOutItemDto> orderOutTaskItemAuto = outStockService.getOrderOutTaskItemAuto(orderOutTaskParam);
//
//            List<OutStockToTaskParams> tasks = new ArrayList<>();
//            for (OrderOutItemDto orderOutItemDto : orderOutTaskItemAuto){
//                for (LocItem locItem : orderOutItemDto.getLocItemList()) {
//                    OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(orderOutItemDto,locItem);
//                    outStockToTaskParams.setId(locItem.getId());
//                    outStockToTaskParams.setOutQty(locItem.getOutQty());
//                    outStockToTaskParams.setLocCode(locItem.getLocCode());
//                    outStockToTaskParams.setBarcode(locItem.getBarcode());
//                    outStockToTaskParams.setSiteNo(stationId);
//                    tasks.add(outStockToTaskParams);
//                }
//            }
//            if (tasks.isEmpty()){
//                log.warn("订单ID {} 没有找到可出库明细,跳过自动出库", orderId);
//                return;
//            }
//            outStockService.genOutStockTask(tasks, loginUserId, orderId);
            R r = outStockService.generateWavesOrderAuto(genWaveParams, stationId,locCode);
            log.info("订单ID {} 自动转波次", orderId);
        } catch (Exception e) {
            log.error("订单ID {} 自动出库: {}", orderId, e.getMessage(), e);
            log.error("订单ID {} 自动转波次: {}", orderId, e.getMessage(), e);
        }
    }