1
昨天 e6d3803d1bafb782c0907fa925ec110932bc3f23
lsh#
5个文件已修改
88 ■■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/OutStockToTaskParams.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
@@ -157,7 +157,7 @@
        return outStockService.getOrderOutTaskItem(orderOutTaskParam,param.getOrderItemId());
    }
    //
    //q
    @PostMapping("/orderOut/getOutLocRun")
    public R orderOutGetOutLocRun(@RequestBody OrderOutGeneralParam param) {
        LocItem locItem = locItemService.getById(param.getItemId());
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -18,6 +18,8 @@
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.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;
@@ -552,19 +554,13 @@
                    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)) {
//                            outStockService.getOrderOutTaskItem(orderOutTaskParam,param.getOrderItemId());
                            //出库
                            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);
                                    asyncOutboundExecutionWcs(syncOrder.getStationId(), wkOrder.getId(), loginUserId);
                                } catch (Exception e) {
                                    log.warn("订单 {} 开始自动出库", syncOrder.getOrderNo());
                                }
@@ -613,29 +609,31 @@
    }
    @Async
    public void asyncOutboundExecutionWcs(List<OutStockToTaskParams> param, Long orderId, Long loginUserId) {
    public void asyncOutboundExecutionWcs(String stationId ,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()){
            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){
                OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(orderOutItemDto);
                outStockToTaskParams.setId(orderOutItemDto.getLocItem().getId());
//                                outStockToTaskParams.setOutQty(locItemServiceOne.getAnfme());
                outStockToTaskParams.setLocCode(orderOutItemDto.getLocItem().getLocCode());
                outStockToTaskParams.setBarcode(orderOutItemDto.getLocItem().getBarcode());
                outStockToTaskParams.setSiteNo(stationId);
                tasks.add(outStockToTaskParams);
            }
            if (tasks.isEmpty()){
                log.warn("订单ID {} 没有找到可出库明细,跳过自动出库", orderId);
                return;
            }
            outStockService.genOutStockTask(param, loginUserId, orderId);
            outStockService.genOutStockTask(tasks, loginUserId, orderId);
            log.info("订单ID {} 自动出库,共处理 {} 个明细", orderId, param.size());
            log.info("订单ID {} 自动出库,共处理 {} 个明细", orderId, tasks.size());
        } catch (Exception e) {
            log.error("订单ID {} 自动出库: {}", orderId, e.getMessage(), e);
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/OutStockToTaskParams.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -48,9 +49,22 @@
    public OutStockToTaskParams(){};
    public OutStockToTaskParams(OrderOutItemDto orderOutItemDto){
//        this.locCode = w;//库位
//        this.id = wkOrderItem.getId();
        this.barcode = orderOutItemDto.getBarcode();
        this.batch = orderOutItemDto.getBatch();
        this.unit = orderOutItemDto.getUnit();
        this.platOrderCode = orderOutItemDto.getPlatOrderCode();
        this.fieldsIndex = orderOutItemDto.getFieldsIndex();
        this.extendFields = orderOutItemDto.getExtendFields();
        this.outQty = orderOutItemDto.getAnfme();
//        this.siteNo = siteNo;
    };
    public OutStockToTaskParams(WkOrderItem wkOrderItem){
//        this.locCode = w;//库位
        this.id = wkOrderItem.getId();
//        this.id = wkOrderItem.getId();
        this.barcode = wkOrderItem.getBarcode();
        this.batch = wkOrderItem.getBatch();
        this.unit = wkOrderItem.getPurUnit();
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.controller.params.GenWaveParams;
import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
@@ -26,6 +27,7 @@
    R getOrderOutTaskItem(OrderOutTaskParam param);
    R getOrderOutTaskItem(OrderOutTaskParam param,Long orderItemId);
    List<OrderOutItemDto> getOrderOutTaskItemAuto(OrderOutTaskParam param);
    R genOutStockTask(List<OutStockToTaskParams> params, Long loginUserId, Long outId);
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -481,6 +481,24 @@
        return R.ok(locItems);
    }
    @Override
    public List<OrderOutItemDto>  getOrderOutTaskItemAuto(OrderOutTaskParam param) {
        if (Cools.isEmpty(param.getWaveId())) {
            throw new CoolException("策略参数为空");
        }
        if (Cools.isEmpty(param.getOrderId())) {
            throw new CoolException("单据ID为空");
        }
        WaveRule waveRule = waveRuleService.getOne(new LambdaQueryWrapper<WaveRule>()
                .eq(WaveRule::getId, param.getWaveId()));
        if (Cools.isEmpty(waveRule)) {
            throw new CoolException("未找到当前策略");
        }
        List<OrderOutItemDto> locItems = null;
        locItems = getOutOrderList(param.getOrderId(), waveRule);
        return locItems;
    }
    /**
     * 生成出库任务
     *