gaoluyang
3 天以前 d39e4f7d839167c16425086dfa2f8747bccfdff9
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -567,11 +567,16 @@
        if (purchaseRequest.getOrderId() != null) {
            throw exception(PURCHASE_REQUEST_ORDER_EXISTS);
        }
        // 3. 校验供应商
        supplierService.validateSupplier(supplierId);
        // 3. 供应商以采购申请单为准:申请提交时已经选过供应商,生成订单不再要求重新选择
        //    兼容旧调用方仍显式传 supplierId 的情况,传了则以传入值为准
        Long targetSupplierId = supplierId != null ? supplierId : purchaseRequest.getSupplierId();
        if (targetSupplierId == null) {
            throw exception(PURCHASE_REQUEST_SUPPLIER_REQUIRED);
        }
        supplierService.validateSupplier(targetSupplierId);
        // 4. 设置供应商并生成订单
        purchaseRequest.setSupplierId(supplierId);
        purchaseRequest.setSupplierId(targetSupplierId);
        return doGeneratePurchaseOrder(purchaseRequest);
    }
@@ -599,7 +604,9 @@
        // 3. 创建采购订单
        ErpPurchaseOrderDO purchaseOrder = new ErpPurchaseOrderDO();
        purchaseOrder.setNo(orderNo);
        purchaseOrder.setStatus(ErpAuditStatus.APPROVE.getStatus()); // 采购订单直接为已审核状态
        // 生成后为草稿:采购申请与采购台账字段不完全一致(付款日期、采购类型、付款方式等),
        // 需要业务在采购台账里补充完整后再提交审批
        purchaseOrder.setStatus(ErpAuditStatus.DRAFT.getStatus());
        purchaseOrder.setSupplierId(purchaseRequest.getSupplierId());
        purchaseOrder.setOrderTime(purchaseRequest.getRequestTime());
        purchaseOrder.setTotalCount(purchaseRequest.getTotalCount());
@@ -628,7 +635,8 @@
            orderItem.setTaxPrice(item.getTaxPrice());
            orderItem.setRemark(item.getRemark());
            orderItem.setInCount(BigDecimal.ZERO);
            orderItem.setQcCheckFlag(item.getQcCheckFlag() != null ? item.getQcCheckFlag() : false);
            // 是否质检与采购申请保持一致:明细未明确标记时默认为「是」(历史申请单可能为 null)
            orderItem.setQcCheckFlag(item.getQcCheckFlag() != null ? item.getQcCheckFlag() : true);
            return orderItem;
        });
        purchaseOrderItemMapper.insertBatch(orderItems);
@@ -636,6 +644,7 @@
        // 5. 更新采购申请的订单信息
        purchaseRequestMapper.updateById(new ErpPurchaseRequestDO()
                .setId(id)
                .setSupplierId(purchaseRequest.getSupplierId())
                .setOrderId(purchaseOrder.getId())
                .setOrderNo(orderNo));