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 |   74 +++++++++++++++++++------------------
 1 files changed, 38 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 7c25815..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;
@@ -16,9 +17,11 @@
 import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
 import com.ruoyi.basic.enums.ApplicationTypeEnum;
 import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.mapper.OilDepotMapper;
 import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.mapper.SupplierManageMapper;
+import com.ruoyi.basic.pojo.OilDepot;
 import com.ruoyi.basic.pojo.Product;
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.basic.pojo.SupplierManage;
@@ -118,6 +121,7 @@
     private final StockInRecordService stockInRecordService;
     private final StockUtils stockUtils;
     private final ApprovalTemplateMapper approvalTemplateMapper;
+    private final OilDepotMapper oilDepotMapper;
 
     @Override
     public List<PurchaseLedger> selectPurchaseLedgerList(PurchaseLedger purchaseLedger) {
@@ -171,7 +175,23 @@
         purchaseLedger.setSupplierName(supplierManage.getSupplierName());
         purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
 
-        purchaseLedger.setApprovalStatus(1);
+        // 閲囪喘娌瑰簱锛氭牴鎹补搴搃d鍥炲~娌瑰簱鍚嶇О
+        if (purchaseLedgerDto.getOilDepotId() != null) {
+            OilDepot oilDepot = oilDepotMapper.selectById(purchaseLedgerDto.getOilDepotId());
+            if (oilDepot != null) {
+                purchaseLedger.setOilDepotName(oilDepot.getDepotName());
+            }
+        }
+
+        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. 鏂板鎴栨洿鏂颁富琛�
@@ -187,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. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
@@ -1128,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