#
Junjie
2024-09-10 c477dcc0ab4fe679f682f342d1ac8725fcb4d852
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -52,7 +52,12 @@
    private OperationPortService operationPortService;
    @Autowired
    private OrderUtils orderUtils;
    @Autowired
    private OrderNoRuleService orderNoRuleService;
    @Autowired
    private WaveService waveService;
    @Autowired
    private WaveDetlService waveDetlService;
    /**
     * 出库
@@ -726,4 +731,86 @@
    }
    @Transactional
    public void generateWave(List<Long> orderIds) {
        if (orderIds == null) {
            throw new CoolException("参数不能为空");
        }
        if (orderIds.isEmpty()) {
            throw new CoolException("参数不能为空");
        }
        List<Order> orderList = orderService.listByIds(orderIds);
        if (orderList.isEmpty()) {
            throw new CoolException("订单不存在");
        }
        for (Order order : orderList) {
            if (order.getWaveId() != null) {
                throw new CoolException("当前订单中已经生成波次");
            }
        }
        String waveNo = orderNoRuleService.getOrderNo(3);
        Wave wave = new Wave();
        wave.setWaveNo(waveNo);
        wave.setWaveType(0);
        if (!waveService.save(wave)) {
            throw new CoolException("波次生成失败");
        }
        for (Order order : orderList) {
            WaveDetl waveDetl = new WaveDetl();
            waveDetl.setWaveNo(waveNo);
            waveDetl.setWaveId(wave.getId());
            waveDetl.setOrderId(order.getId());
            waveDetl.setOrderNo(order.getOrderNo());
            if (!waveDetlService.save(waveDetl)) {
                throw new CoolException("波次明细生成失败");
            }
            order.setWaveId(wave.getId());
            order.setWaveNo(waveNo);
            order.setUpdateTime(new Date());
            if (!orderService.updateById(order)) {
                throw new CoolException("订单反写波次失败");
            }
        }
    }
    @Transactional
    public void cancelWave(List<Long> waveIds) {
        if (waveIds == null) {
            throw new CoolException("参数不能为空");
        }
        if (waveIds.isEmpty()) {
            throw new CoolException("参数不能为空");
        }
        List<Wave> waves = waveService.listByIds(waveIds);
        if (waves.isEmpty()) {
            throw new CoolException("波次不存在");
        }
        for (Wave wave : waves) {
            List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId()));
            for (WaveDetl waveDetl : waveDetls) {
                Order order = orderService.getById(waveDetl.getOrderId());
                order.setWaveId(null);
                order.setWaveNo(null);
                if (!orderService.updateById(order)) {
                    throw new CoolException("订单反写失败");
                }
                waveDetlService.removeById(waveDetl.getId());
            }
            waveService.removeById(wave.getId());
        }
    }
}