cl
23 小时以前 d8cbfdcac8292522dd3c39e5cafdf19a43d15a5d
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -49,6 +49,8 @@
    private MatnrMapper matnrMapper;
    @Autowired
    private ConfigService configService;
    @Autowired
    private CusBarcodeSyncMatnrService cusBarcodeSyncMatnrService;
    /**
@@ -67,6 +69,13 @@
        }
        if (StringUtils.isBlank(waitPakin.getBarcode())) {
            throw new CoolException("参数错误:料箱码为空!!");
        }
        if (isPdaPakinAsnRequired()) {
            for (PakinItem it : waitPakin.getItems()) {
                if (StringUtils.isBlank(it.getAsnCode())) {
                    throw new CoolException("请先扫描WMS单号");
                }
            }
        }
        WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                .eq(WaitPakin::getBarcode, waitPakin.getBarcode()));
@@ -126,6 +135,11 @@
                    if (matnr == null) {
                        throw new CoolException("物料信息不存在,物料ID:" + pakinItem1.getMatnrId());
                    }
                    cusBarcodeSyncMatnrService.syncFromMatnrCodes(Collections.singletonList(matnr.getCode()), userId);
                    matnr = matnrMapper.selectById(pakinItem1.getMatnrId());
                    if (matnr == null) {
                        throw new CoolException("物料信息不存在,物料ID:" + pakinItem1.getMatnrId());
                    }
                    if (pakinItem1.getReceiptQty() == null || pakinItem1.getReceiptQty().compareTo(0.0) <= 0) {
                        throw new CoolException("组托数量不能小于等于零!!");
                    }
@@ -178,7 +192,7 @@
                        .setMatnrCode(areaItem.getMatnrCode());
                WkOrder order = asnOrderService.getById(areaItem.getAsnId());
                if (order != null) {
                    pakinItem.setType(order.getType()).setWkType(StringUtils.isNotBlank(order.getWkType()) ? Short.parseShort(order.getWkType()) : null);
                    pakinItem.setType(order.getType()).setWkType(order.getWkType());
                }
                if (pakinItem1.getReceiptQty() == null || pakinItem1.getReceiptQty().compareTo(0.0) <= 0) {
                    throw new CoolException("组托数量不能小于等于零!!");
@@ -236,7 +250,11 @@
        for (PakinItem pakinItem1 : waitPakin.getItems()) {
            WaitPakinItem pakinItem = new WaitPakinItem();
            if (StringUtils.isBlank(pakinItem1.getAsnCode())) {
            // 原逻辑:if (StringUtils.isBlank(pakinItem1.getAsnCode())) { ... } else { 按单据限制 ... }
            // 只有单据号存在且能查到单据时才按单据限制
            WkOrder bindOrder = StringUtils.isBlank(pakinItem1.getAsnCode()) ? null :
                    asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, pakinItem1.getAsnCode()));
            if (bindOrder == null) {
                if (Objects.isNull(pakinItem1.getMatnrId())) {
                    throw new CoolException("物料ID不能为空!!");
                }
@@ -279,9 +297,9 @@
                if (null == orderItem) {
                    throw new CoolException("订单明细不存在!!");
                }
                WkOrder order = asnOrderService.getById(orderItem.getOrderId());
                if (null == order) {
                    throw new CoolException("订单不存在!!");
                WkOrder order = bindOrder;
                if (orderItem.getOrderId() == null || !orderItem.getOrderId().equals(order.getId())) {
                    throw new CoolException("物料不在当前单据中,不能按单据组托!!");
                }
                pakinItem.setAnfme(QuantityUtils.roundToScale(orderItem.getAnfme()))
                        .setPakinId(waitPakin1.getId())
@@ -303,7 +321,7 @@
                        .setCreateBy(userId)
                        .setMatnrCode(orderItem.getMatnrCode());
                pakinItem.setType(null == order.getType() ? null : order.getType())
                        .setWkType(StringUtils.isNotBlank(order.getWkType()) ? Short.parseShort(order.getWkType()) : null);
                        .setWkType(order.getWkType());
                for (PakinItem waitPakinItem : waitPakin.getItems()) {
                    if (waitPakinItem.getId().equals(orderItem.getId())) {
@@ -497,4 +515,17 @@
        return R.ok("Delete Success").add(pakinIds);
    }
    private boolean isPdaPakinAsnRequired() {
        Config c = configService.getOne(new LambdaQueryWrapper<Config>()
                .eq(Config::getFlag, GlobalConfigCode.PDA_PAKIN_ASN_REQUIRED)
                .eq(Config::getDeleted, 0)
                .last("LIMIT 1"));
        boolean required = true;
        if (c != null && StringUtils.isNotBlank(c.getVal())) {
            String v = c.getVal().trim();
            required = Boolean.parseBoolean(v) || "1".equals(v);
        }
        return required;
    }
}