#
zjj
5 天以前 75f1980c5e915635cfbf403485c1778e5a583c98
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -56,6 +56,8 @@
    private WaveService waveService;
    @Autowired
    private WaveRuleServiceImpl waveRuleService;
    @Autowired
    private WaveOrderRelaServiceImpl waveOrderRelaService;
    /**
     * @param
@@ -129,6 +131,10 @@
            throw new CoolException("数据错误: 波次不存在!!");
        }
        for (Wave wave : waves) {
            if (wave.getExceStatus() >= WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val) {
                throw new CoolException("当前状态无法下发执行!!");
            }
            List<WaveItem> items = waveItemService.list(new LambdaQueryWrapper<WaveItem>().eq(WaveItem::getWaveId, wave.getId()));
            if (items.isEmpty()) {
                throw new CoolException("波次明细不存在!!");
@@ -163,6 +169,7 @@
                } else {
                    wave.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val);
                }
                wave.setMemo("-->库存不足");
                waveService.updateById(wave);
                return R.ok();
            }
@@ -212,6 +219,55 @@
    }
    /**
     * 终止波次下发任务
     *
     * @param id
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R stopPubTask(Long id) {
        Wave wave = this.getById(id);
        if (Objects.isNull(wave)) {
            throw new CoolException("波次单不存在!!");
        }
        List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
                .eq(TaskItem::getSourceId, wave.getId()));
        if (!taskItems.isEmpty()) {
            throw new CoolException("已生成任务不可终止当前波次!!");
        }
        List<WaveOrderRela> orderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>().eq(WaveOrderRela::getWaveId, id));
        if (orderRelas.isEmpty()) {
            throw new CoolException("无关联明细!!");
        }
        List<Long> orderIds = orderRelas.stream().map(WaveOrderRela::getOrderItemId).collect(Collectors.toList());
        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getId, orderIds));
        orderItems.forEach(asnOrderItem -> {
            asnOrderItem.setWorkQty(0.0);
            if (!asnOrderItemService.updateById(asnOrderItem)) {
                throw new CoolException("单据明细更新失败!!");
            }
        });
        List<Long> orders = orderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toList());
        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
                .set(AsnOrder::getWorkQty, 0.0)
                .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
                .in(AsnOrder::getId, orders))) {
            throw new CoolException("单据更新失败!!");
        }
        this.update(new LambdaUpdateWrapper<Wave>()
                .eq(Wave::getId, id)
                .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val));
        return R.ok();
    }
    /**
     * @param
     * @param loginUserId
     * @param wave