From 2dd645b5346f510d1207346347f1fa70a204d9d3 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 05 十一月 2026 16:11:34 +0800
Subject: [PATCH] 1. 完成项目管理全流程优化,补充阶段推进、汇报统计及生命周期记录。 2. 完成业务与项目数据关联,支持查看项目进度、详情及相关附件。 3. 完成采购审批流程接入,支持配置审批人员及采购业务审批。 4. 精简用户、角色、部门、菜单和字典,完善操作日志及附件下载。

---
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java |   63 +++++++++++++------------------
 1 files changed, 27 insertions(+), 36 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 5a80184..b7aee2c 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/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")
-                .last("limit 1")
+        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);
     }
 
     /**

--
Gitblit v1.9.3