src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -8,6 +8,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.approve.bean.dto.ApprovalInstanceDto;
import com.ruoyi.approve.bean.vo.ApproveProcessVO;
import com.ruoyi.approve.mapper.ApprovalTemplateMapper;
import com.ruoyi.approve.pojo.ApprovalInstance;
import com.ruoyi.approve.pojo.ApprovalTemplate;
@@ -182,7 +183,15 @@
            }
        }
        purchaseLedger.setApprovalStatus(1);
        boolean newPurchase = purchaseLedger.getId() == null;
        if (newPurchase) {
            purchaseLedger.setApprovalStatus(ApprovalStatusEnum.PENDING.getCode());
        } else {
            PurchaseLedger stored = purchaseLedgerMapper.selectById(purchaseLedger.getId());
            if (stored != null) {
                purchaseLedger.setApprovalStatus(stored.getApprovalStatus());
            }
        }
        // 实际合同金额始终等于合同金额
        purchaseLedger.setNetContractAmount(purchaseLedger.getContractAmount());
        // 3. 新增或更新主表
@@ -198,14 +207,15 @@
        }
        // 6.采购审核新增;审批管理未配置采购审批人时,审批服务会自动置为审批通过。
        //查询当前采购合同号是否已添加审批,如果有且不是驳回状态,则不重复添加
        ApprovalInstance oldApprovalInstance = approvalInstanceService.getOne(Wrappers.<ApprovalInstance>lambdaQuery()
                .eq(ApprovalInstance::getDeleted, 0)
                .eq(ApprovalInstance::getBusinessType, TypeEnums.PURCHASE_APPROVAL.getCode())
                .eq(ApprovalInstance::getBusinessId, purchaseLedger.getId())
                .ne(ApprovalInstance::getStatus,"REJECTED")
        ApproveProcess oldApprovalProcess = approveProcessService.getOne(
                Wrappers.<ApproveProcess>lambdaQuery()
                        .eq(ApproveProcess::getApproveType, TypeEnums.PURCHASE_APPROVAL.getCode())
                        .eq(ApproveProcess::getApproveReason, purchaseLedger.getPurchaseContractNumber())
                        .in(ApproveProcess::getApproveStatus, 0, 1)
                .last("limit 1")
        );
        if(Objects.isNull(oldApprovalInstance)){
        if (Objects.isNull(oldApprovalProcess)
                && !ApprovalStatusEnum.APPROVED.getCode().equals(purchaseLedger.getApprovalStatus())) {
            addApproveByPurchase(loginUser, purchaseLedger, productList);
        }
        // 5. 迁移临时文件到正式目录
@@ -1139,37 +1149,18 @@
        return resultDto;
    }
    public void addApproveByPurchase(LoginUser loginUser, PurchaseLedger purchaseLedger, List<SalesLedgerProduct> productList) {
    public void addApproveByPurchase(LoginUser loginUser, PurchaseLedger purchaseLedger,
                                     List<SalesLedgerProduct> productList) throws Exception {
        if (loginUser == null) {
            return;
        }
        ApprovalTemplate approvalTemplate = approvalTemplateMapper.selectOne(
                new LambdaQueryWrapper<ApprovalTemplate>()
                        .eq(ApprovalTemplate::getBusinessType, 5L)
                        .eq(ApprovalTemplate::getDeleted, 0)
                        .orderByDesc(ApprovalTemplate::getId)
                        .last("LIMIT 1")
        );
        if (approvalTemplate == null) {
            throw new BaseException("请先配置采购审批模板");
        }
        ApprovalInstanceDto approvalInstance = new ApprovalInstanceDto();
        approvalInstance.setTemplateId(approvalTemplate.getId());
        approvalInstance.setTemplateName(approvalTemplate.getTemplateName());
        approvalInstance.setBusinessId(purchaseLedger.getId());
        approvalInstance.setBusinessType(5L);
        approvalInstance.setCurrentLevel(1);
        approvalInstance.setApplicantId(loginUser.getUserId());
        approvalInstance.setTitle(purchaseLedger.getPurchaseContractNumber()+"审批");
        approvalInstance.setApplicantName(loginUser.getNickName());
        approvalInstance.setApplyTime(LocalDateTime.now());
        PurchaseLedgerDto snapshot = new PurchaseLedgerDto();
        BeanUtils.copyProperties(purchaseLedger, snapshot);
        snapshot.setProductData(productList == null ? Collections.emptyList() : new ArrayList<>(productList));
        approvalInstance.setFormConfig(JSON.toJSONString(snapshot));
        approvalInstanceService.add(approvalInstance);
        ApproveProcessVO approval = new ApproveProcessVO();
        approval.setApproveType(TypeEnums.PURCHASE_APPROVAL.getCode().intValue());
        approval.setApproveDeptId(loginUser.getCurrentDeptId());
        approval.setApproveUser(loginUser.getUserId());
        approval.setApproveReason(purchaseLedger.getPurchaseContractNumber());
        approval.setPrice(purchaseLedger.getContractAmount());
        approveProcessService.addApprove(approval);
    }
    /**