skyouc
2025-01-04 3c52f39678034ce21c1158a01b4885e3afde4443
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -108,6 +108,11 @@
                    throw new CoolException("明细不存在");
                }
                OrderDetl orderDetl = orderDetlService.getById(detl.getOrderDetlId());
                if (orderDetl == null) {
                    throw new CoolException("明细不存在");
                }
                TaskDetl taskDetl = new TaskDetl();
                taskDetl.sync(locDetl);
                taskDetl.setTaskId(task.getId());
@@ -778,7 +783,7 @@
    }
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public void orderOutMergeWave(OrderOutMergeParamDto dto) {
        if(dto == null){
            throw new CoolException("参数不能为空");
@@ -788,31 +793,36 @@
            throw new CoolException("未生成波次");
        }
        Wave wave = waveService.getById(dto.getWaveId());
        if (Objects.isNull(wave)) {
            throw new CoolException("波次不存在");
        }
        List<OrderOutMergeParam> params = dto.getList();
        if (params.isEmpty()) {
            throw new CoolException("参数不能为空");
        }
        Long waveId = dto.getWaveId();
//        Long waveId = dto.getWaveId();
//        String waveNo = dto.getw
        List<Long> filterParamsList = new ArrayList<>();
        List<OrderOutMergeParam> filterParams = new ArrayList<>();
        for (OrderOutMergeParam param : params) {
            if (param.getLocId() == null) {
                continue;
            }
            if(!filterParamsList.contains(param.getLocId())){
                filterParamsList.add(param.getLocId());
                filterParams.add(param);
        params.forEach(action -> {
            if (action.getLocId() != null) {
                filterParamsList.add(action.getLocId());
                filterParams.add(action);
            }
        }
        });
        HashMap<String, Double> stockMap = new HashMap<>();
        for (OrderOutMergeParam param : filterParams) {
            String matUniqueKey = Utils.getMatUniqueKey(param.getMatnr(), param.getBatch(), param.getFieldParams());
            WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
            WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, wave.getId()));
            if(waveDetl == null){
                throw new CoolException("波次数据不存在");
            }
@@ -910,7 +920,8 @@
                taskDetl.setTaskNo(task.getTaskNo());
                taskDetl.setAnfme(merge.getAnfme());
                taskDetl.setStock(locDetl.getAnfme());
                taskDetl.setWaveId(waveId);
                taskDetl.setWaveId(wave.getId());
                taskDetl.setWaveNo(wave.getWaveNo());
                taskDetl.setOrderId(null);
                taskDetl.setOrderNo(null);
                if (!taskDetlService.save(taskDetl)) {
@@ -929,8 +940,11 @@
                    }
                }
                //TODO 确认后,需将注释打开
                String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
                WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
//                WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
                WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId()), false);
                if (waveDetl == null) {
                    throw new CoolException("波次数据不存在");
                }
@@ -939,8 +953,14 @@
                if (!waveDetlService.updateById(waveDetl)) {
                    throw new CoolException("波次数据更新失败");
                }
            }
            //出库库存更新逻辑
//            List<Long> orderIds = dto.getList().stream().findFirst().get().getOrderIds();
//            List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, orderIds));
//            orderDetls.forEach(orderDetl -> {
//                orderUtils.updateWorkQty(orderDetl.getId(), orderDetl.getAnfme());
//            });
            //库位F => R
            loc.setLocStsId(LocStsType.R.val());
@@ -949,13 +969,12 @@
            if(!locUpdate){
                throw new CoolException("库位状态更新失败");
            }
        }
        Wave wave = waveService.getById(waveId);
        if (wave == null) {
            throw new CoolException("波次不存在");
        }
//        Wave wave = waveService.getById(dto.getWaveId());
//        if (wave == null) {
//            throw new CoolException("波次不存在");
//        }
        wave.setWaveStatus(WaveStatusType.GENERATE.id);
        wave.setUpdateTime(new Date());
@@ -964,7 +983,7 @@
        }
    }
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public void generateWave(GenerateWaveParam param) {
        if (param == null) {
            throw new CoolException("参数不能为空");