skyouc
3 天以前 bcf39531dcfaea85297312405fbecc7eebccf7d0
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -13,6 +13,7 @@
import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.enums.WaveExceStatus;
import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
import com.vincent.rsf.server.manager.mapper.PurchaseMapper;
import com.vincent.rsf.server.manager.service.*;
@@ -45,15 +46,16 @@
    private AsnOrderLogService asnOrderLogService;
    @Autowired
    private AsnOrderItemLogService asnOrderItemLogService;
    @Autowired
    private DeliveryItemService deliveryItemService;
    @Autowired
    private DeliveryService deliveryService;
    @Autowired
    private MatnrService matnrService;
    @Autowired
    private WaveService waveService;
    @Autowired
    private WaveItemService waveItemService;
    /**
@@ -157,6 +159,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R cancelOutOrder(String id) {
        //TODO 出库单取消流程,QMS(单据取消)->DO单->出库单->波次->判断是否全单据->全单据下发取消任务至WCS,非全单数据取消删除流程所有关联数据
        if (Cools.isEmpty(id)) {
            throw new CoolException("参数不能为空!!");
        }
@@ -238,4 +241,58 @@
        });
        return R.ok();
    }
    /**
     * @param
     * @return
     * @author Ryan
     * @description 生成波次
     * @time 2025/4/24 15:04
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R generateWaves(List<Long> ids) {
        if (Objects.isNull(ids) || ids.isEmpty()) {
            throw new CoolException("参数不能为空!!");
        }
        List<AsnOrder> orders = this.listByIds(ids);
        if (orders.isEmpty()) {
            throw new CoolException("单据不存在!!");
        }
        double sum = orders.stream().mapToDouble(AsnOrder::getAnfme).sum();
        Wave wave = new Wave();
        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAVE_TYPE, null);
        if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
            throw new CoolException("编码规则错误:请要查看「SYS_WAVE_TYPE」是否设置成功!!");
        }
        wave.setOrderNum(ids.size())
                .setType(Short.parseShort("1"))
                .setCode(ruleCode)
                .setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_INIT.val)
                .setAnfme(sum);
        if (!waveService.save(wave)) {
            throw new CoolException("波次保存失败!!");
        }
        List<Long> list = orders.stream().map(AsnOrder::getId).collect(Collectors.toList());
        List<WaveItem> items = new ArrayList<>();
        List<AsnOrderItem> orderItems = asnOrderItemService
                .list(new LambdaQueryWrapper<AsnOrderItem>()
                        .in(AsnOrderItem::getAsnId, list));
        for (AsnOrderItem item : orderItems) {
            WaveItem waveItem = new WaveItem();
            BeanUtils.copyProperties(item, waveItem);
            waveItem.setWaveId(wave.getId())
                    .setWaveCode(wave.getCode())
                    .setOrderId(item.getAsnId())
                    .setOrderCode(item.getAsnCode())
                    .setOrderItemId(item.getId());
            items.add(waveItem);
        }
        if (!waveItemService.saveBatch(items)) {
            throw new CoolException("波次明细保存失败!!");
        }
        return R.ok("操作完成!!");
    }
}