From f85d6c2edfb1a003c299c16b3a7509dbef9c9b2a Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 24 三月 2026 12:20:59 +0800
Subject: [PATCH] 采购台账增加审批流程

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java     |   20 ++++++++-
 src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java                        |    7 ++-
 src/main/resources/mapper/sales/SalesLedgerMapper.xml                        |    6 +-
 src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java                  |    6 +++
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java |   19 +++++++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java       |   10 +++--
 src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml                  |    6 ++
 src/main/java/com/ruoyi/sales/pojo/SalesLedger.java                          |    4 +-
 src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java                    |    3 +
 9 files changed, 66 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 6ac9d60..c7438fc 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -14,6 +14,8 @@
 import com.ruoyi.other.service.impl.TempFileServiceImpl;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.sales.mapper.CommonFileMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.pojo.CommonFile;
@@ -41,6 +43,9 @@
 
     @Autowired
     private SalesLedgerMapper salesLedgerMapper;
+
+    @Autowired
+    private PurchaseLedgerMapper purchaseLedgerMapper;
     @Autowired
     private SysUserMapper sysUserMapper;
 
@@ -142,15 +147,24 @@
             approveProcess.setApproveUserCurrentName(approveNode1.getApproveNodeUser());
         }
         approveProcessMapper.updateById(approveProcess);
-        //濡傛灉鏄�6閿�鍞鎵归�氳繃,瀵瑰簲閿�鍞叧鑱旂殑琛ㄩ渶瑕佹洿鏂�
-        if (approveProcess.getApproveType()==6 && status==2){
+        //濡傛灉鏄�6閿�鍞鎵�,瀵瑰簲閿�鍞叧鑱旂殑琛ㄩ渶瑕佹洿鏂�
+        if (approveProcess.getApproveType()==6){
             List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(Wrappers.<SalesLedger>lambdaQuery().eq(SalesLedger::getSalesContractNo, approveProcess.getApproveReason()));
             if (CollectionUtils.isEmpty(salesLedgers)){
                 SalesLedger salesLedger = salesLedgers.get(0);
-                salesLedger.setIsPass(1);
+                salesLedger.setApprovalStatus(status);
                 salesLedgerMapper.updateById(salesLedger);
             }
         }
+        //濡傛灉鏄�5閲囪喘瀹℃壒,瀵瑰簲閲囪喘鍏宠仈鐨勮〃闇�瑕佹洿鏂�
+        if (approveProcess.getApproveType()==5){
+            List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(Wrappers.<PurchaseLedger>lambdaQuery().eq(PurchaseLedger::getPurchaseContractNumber, approveProcess.getApproveReason()));
+            if (CollectionUtils.isEmpty(purchaseLedgers)){
+                PurchaseLedger purchaseLedger = purchaseLedgers.get(0);
+                purchaseLedger.setApprovalStatus(status);
+                purchaseLedgerMapper.updateById(purchaseLedger);
+            }
+        }
 
         // 缁戝畾闄勪欢
         if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
index 7d1e9e5..ba2c85a 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -181,4 +181,10 @@
     @ApiModelProperty(value = "浠樻鏂瑰紡")
     private String paymentMethod;
 
+    @ApiModelProperty(value = "1-寰呭鏍革紝2-瀹℃壒涓紝3-瀹℃壒閫氳繃锛�4-瀹℃壒澶辫触")//榛樿鏄�1
+    private Integer approvalStatus;
+
+    // 瀹℃壒浜�
+    private String approveUserIds;
+
 }
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java b/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
index 7b7ad72..290dcef 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
@@ -153,5 +153,8 @@
     @ApiModelProperty(value = "浠樻鏂瑰紡")
     private String paymentMethod;
 
+    @ApiModelProperty(value = "1-寰呭鏍革紝2-瀹℃壒涓紝3-瀹℃壒閫氳繃锛�4-瀹℃壒澶辫触")//榛樿鏄�1
+    private Integer approvalStatus;
+
 
 }
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 e5a64fd..062adb6 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -10,6 +10,8 @@
 import com.ruoyi.account.pojo.AccountIncome;
 import com.ruoyi.account.service.AccountExpenseService;
 import com.ruoyi.account.service.AccountIncomeService;
+import com.ruoyi.approve.service.IApproveProcessService;
+import com.ruoyi.approve.vo.ApproveProcessVO;
 import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.mapper.SupplierManageMapper;
@@ -74,6 +76,7 @@
 public class PurchaseLedgerServiceImpl extends ServiceImpl<PurchaseLedgerMapper, PurchaseLedger> implements IPurchaseLedgerService {
     private final AccountExpenseService accountExpenseService;
     private final PurchaseLedgerMapper purchaseLedgerMapper;
+    private final IApproveProcessService approveProcessService;
 
     private final SalesLedgerMapper salesLedgerMapper;
     private final SalesLedgerProductMapper salesLedgerProductMapper;
@@ -180,6 +183,22 @@
             migrateTempFilesToFormal(purchaseLedger.getId(), purchaseLedgerDto.getTempFileIds());
         }
 
+        //6.閲囪喘闇�瑕佸鎵�
+        //鏂板瀹℃壒鏁版嵁approve_process
+        ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+        approveProcessVO.setApproveDeptId(purchaseLedger.getTenantId());
+        approveProcessVO.setApproveReason(purchaseLedger.getPurchaseContractNumber());//瀹℃壒鐞嗙敱鏄噰璐悎鍚屽彿鐢ㄨ繖涓潵鍏宠仈
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        approveProcessVO.setApproveTime(LocalDate.now().format(dateFormat));
+        approveProcessVO.setApproveType(5);//5鏄噰璐敵璇�
+        approveProcessVO.setApproveUser(purchaseLedger.getRecorderId());//褰曞叆浜�=鐢宠浜�
+        approveProcessVO.setApproveUserIds(purchaseLedgerDto.getApproveUserIds());//瀹℃壒浜�
+        try {
+            approveProcessService.addApprove(approveProcessVO);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
         return 1;
     }
 
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index 48867ae..672ebc2 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -58,6 +58,9 @@
     @ApiModelProperty(value = "璁㈠崟鎸夌揣鎬ョ▼搴﹀垎绫�(鏅��/绱ф��)")
     private String salesType;
 
-    @ApiModelProperty(value = "鏄惁瀹℃壒閫氳繃(1閫氳繃/0涓嶉�氳繃)")//榛樿鏄�1
-    private int isPass;
+    @ApiModelProperty(value = "1-寰呭鏍革紝2-瀹℃壒涓紝3-瀹℃壒閫氳繃锛�4-瀹℃壒澶辫触")//榛樿鏄�1
+    private Integer approvalStatus;
+
+    // 瀹℃壒浜�
+    private String approveUserIds;
 }
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index 96b5911..386efcd 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -129,7 +129,7 @@
     @ApiModelProperty(value = "璁㈠崟鎸夌揣鎬ョ▼搴﹀垎绫�(鏅��/绱ф��)")
     private String salesType;
 
-    @ApiModelProperty(value = "鏄惁瀹℃壒閫氳繃(1閫氳繃/0涓嶉�氳繃)")//榛樿鏄�1
-    private int isPass;
+    @ApiModelProperty(value = "1-寰呭鏍革紝2-瀹℃壒涓紝3-瀹℃壒閫氳繃锛�4-瀹℃壒澶辫触")//榛樿鏄�1
+    private Integer approvalStatus;
 }
 
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 543b24b..3598e44 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -440,9 +440,7 @@
 
             //6.閿�鍞鍗曟寜绱ф�ョ▼搴﹀垎绫伙紝濡傛櫘閫氳鍗曚互鍙婄揣鎬ヨ鍗曪紱鏅�氳鍗曢渶娴佽浆鑷充笟鍔″崟鎹繘琛屽鎵癸紝绱ф�ヨ鍗曟棤闇�瀹℃壒銆�
             if (salesLedger.getSalesType().equals("鏅��")){
-                salesLedger.setIsPass(0);
-                salesLedgerMapper.updateById(salesLedger);
-                //骞朵笖鏂板瀹℃壒鏁版嵁approve_process
+                //鏂板瀹℃壒鏁版嵁approve_process
                 ApproveProcessVO approveProcessVO = new ApproveProcessVO();
                 approveProcessVO.setApproveDeptId(salesLedger.getTenantId());
                 approveProcessVO.setApproveReason(salesLedger.getSalesContractNo());//瀹℃壒鐞嗙敱鏄攢鍞悎鍚屽彿鐢ㄨ繖涓潵鍏宠仈
@@ -450,12 +448,16 @@
                 approveProcessVO.setApproveTime(LocalDate.now().format(dateFormat));
                 approveProcessVO.setApproveType(6);//6鏄攢鍞彴璐�
                 approveProcessVO.setApproveUser(Long.parseLong(salesLedger.getEntryPerson()));//褰曞叆浜�=鐢宠浜�
-                approveProcessVO.setApproveUserIds("1");
+                approveProcessVO.setApproveUserIds(salesLedgerDto.getApproveUserIds());//瀹℃壒浜�
                 try {
                     approveProcessService.addApprove(approveProcessVO);
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
+            }else {
+                //绱ф�ラ粯璁ら�氳繃
+                salesLedger.setApprovalStatus(3);
+                salesLedgerMapper.updateById(salesLedger);
             }
             return 1;
         } catch (IOException e) {
diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
index bc6c38a..4b617d1 100644
--- a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -21,6 +21,7 @@
         pl.contract_amount-sum(pr.tickets_amount) AS unReceipt_payment_amount,
         pl.entry_date,
         pl.recorder_name,
+        pl.approval_status,
         pl.payment_method
         from purchase_ledger pl
         left join product_record pr on pl.id = pr.purchase_ledger_id
@@ -43,6 +44,9 @@
             </if>
             <if test="c.entryDateEnd != null and c.entryDateEnd != '' ">
                 AND  pl.entry_date &lt;= DATE_FORMAT(#{c.entryDateEnd},'%Y-%m-%d')
+            </if>
+             <if test="c.approvalStatus != null">
+                and pl.approval_status =#{c.approvalStatus}
             </if>
         </where>
         group by pl.id, pl.purchase_contract_number, pl.sales_contract_no, pl.supplier_name,
@@ -70,4 +74,4 @@
         WHERE
             T4.id = #{id}
     </select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 72f32d5..b06878b 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -57,7 +57,7 @@
         T1.tenant_id,
         T1.contract_amount,
         T1.execution_date,
-        T1.is_pass,
+        T1.approval_status,
         T1.sales_type,
         T2.nick_name AS entry_person_name,
         T1.payment_method
@@ -83,8 +83,8 @@
             <if test="salesLedgerDto.entryDateEnd != null and salesLedgerDto.entryDateEnd != '' ">
                 AND  T1.entry_date &lt;= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
             </if>
-             <if test="salesLedgerDto.isPass != null">
-                AND  T1.is_pass =#{salesLedgerDto.isPass}
+             <if test="salesLedgerDto.approvalStatus != null">
+                AND  T1.approval_status =#{salesLedgerDto.approvalStatus}
             </if>
         </where>
     </select>

--
Gitblit v1.9.3