昨天 61f1de60e6f58dd8e19f01c56f2e56e40885d65b
src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -40,12 +40,15 @@
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.quality.utils.QualityInspectHelper;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.SalesQuotationMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.mapper.ShippingProductDetailMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.SalesQuotation;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.pojo.ShippingProductDetail;
import com.ruoyi.staff.mapper.HolidayApplicationMapper;
import com.ruoyi.staff.pojo.HolidayApplication;
import lombok.RequiredArgsConstructor;
@@ -94,6 +97,8 @@
    private final EnterpriseNewsMapper enterpriseNewsMapper;
    private final EnterpriseNewsScopeDeptMapper enterpriseNewsScopeDeptMapper;
    private final ApprovalTemplateNodeApproverMapper approvalTemplateNodeApproverMapper;
    private final ShippingProductDetailMapper shippingProductDetailMapper;
    private final SalesLedgerMapper salesLedgerMapper;
    @Override
    public R listPage(Page<ApprovalInstanceVo> page, ApprovalInstanceDto approvalInstanceDto) {
@@ -703,6 +708,9 @@
            shippingInfo.setStatus(ShippingStatusEnum.APPROVED.getCode());
            shippingInfo.setShippingDate(new Date());
            stockUtils.shipmentStatus(StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), shippingInfo.getId());
            // 发货审批通过后,自动生成出厂检验单
            createFactoryInspectForShipping(shippingInfo);
        } else if ("REJECTED".equals(status)) {
            stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode());
            shippingInfo.setStatus(ShippingStatusEnum.REJECTED.getCode());
@@ -712,6 +720,40 @@
        shippingInfoMapper.updateById(shippingInfo);
    }
    /**
     * 发货审批通过后,自动生成出厂检验单
     */
    private void createFactoryInspectForShipping(ShippingInfo shippingInfo) {
        // 查询发货产品明细
        List<ShippingProductDetail> detailList = shippingProductDetailMapper.selectList(
                new LambdaQueryWrapper<ShippingProductDetail>()
                        .eq(ShippingProductDetail::getShippingInfoId, shippingInfo.getId())
        );
        if (detailList == null || detailList.isEmpty()) {
            return;
        }
        // 获取客户名称
        String customerName = null;
        if (shippingInfo.getSalesLedgerId() != null) {
            com.ruoyi.sales.pojo.SalesLedger salesLedger = salesLedgerMapper.selectById(shippingInfo.getSalesLedgerId());
            if (salesLedger != null) {
                customerName = salesLedger.getCustomerName();
            }
        }
        // 为每个发货产品创建出厂检验单
        for (ShippingProductDetail detail : detailList) {
            qualityInspectHelper.addFactoryInspect(
                    shippingInfo,
                    detail,
                    customerName,
                    shippingInfo.getSalesLedgerId()
            );
        }
    }
    private List<ApprovalTask> createNodeAndTasks(ApprovalInstance instance, ApprovalTemplateNode templateNode) {
        List<ApprovalTemplateNodeApprover> approvers = approvalTemplateNodeApproverMapper.selectList(
                new LambdaQueryWrapper<ApprovalTemplateNodeApprover>()