From 1d2465f8fc1c63ab8d1b01cd379f17c2b94be78f Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 25 五月 2026 13:09:10 +0800
Subject: [PATCH] fix(sales): 修复报价审批流程中的状态更新和查询逻辑

---
 src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java    |    5 ++
 src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java |   39 ++++++++++++++-----
 src/main/resources/mapper/sales/SalesQuotationMapper.xml                  |    2 
 src/main/resources/mapper/approve/ApproveProcessMapper.xml                |   24 +++++++-----
 4 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java b/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
index dcb4443..c7a5ec0 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
@@ -1,13 +1,15 @@
 package com.ruoyi.sales.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.sales.dto.SalesQuotationDto;
 import com.ruoyi.sales.service.SalesQuotationService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -45,6 +47,7 @@
         return AjaxResult.success(salesQuotationService.add(salesQuotationDto));
     }
     @PostMapping("/update")
+    @Log(title = "鎶ヤ环鏇存柊", businessType = BusinessType.UPDATE)
     public AjaxResult update(@RequestBody SalesQuotationDto salesQuotationDto) {
         return AjaxResult.success(salesQuotationService.edit(salesQuotationDto));
     }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
index c8f0b15..10f4df8 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -8,7 +8,6 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.approve.pojo.ApproveProcess;
 import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
-import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
 import com.ruoyi.approve.vo.ApproveProcessVO;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
@@ -113,11 +112,22 @@
     public boolean edit(SalesQuotationDto salesQuotationDto) {
         SalesQuotation salesQuotation = new SalesQuotation();
         BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
-        ApproveGetAndUpdateVo vo = new ApproveGetAndUpdateVo();
-        if ("鎷掔粷".equals(salesQuotationDto.getStatus())) {
-            vo.setApproveStatus(0);
-            salesQuotation.setStatus("寰呭鎵�");
-        }
+//        if ("鎷掔粷".equals(salesQuotationDto.getStatus())) {
+//            vo.setApproveStatus(0);
+//            salesQuotation.setStatus("寰呭鎵�");
+//        }
+        //缂栬緫灏嗗鎵规敼涓哄緟瀹℃壒
+        salesQuotation.setStatus("寰呭鎵�");
+        //灏嗕箣鍓嶆湭瀹℃壒鐨勭粨鏉�
+        LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveType, 6)
+                .eq(ApproveProcess::getApproveReason, salesQuotationDto.getQuotationNo());
+        List<ApproveProcess> approveProcesss = approveProcessService.list(approveProcessLambdaQueryWrapper);
+        approveProcesss.forEach(approveProcess -> {
+            approveProcess.setApproveStatus(4);
+        });
+        approveProcessService.updateBatchById(approveProcesss);
+
         if (salesQuotationMapper.updateById(salesQuotation) != 1) {
             return false;
         }
@@ -134,10 +144,19 @@
 
         salesQuotationProductService.saveBatch(products);
         // 淇敼鎶ヤ环瀹℃壒
-        vo.setApproveUserIds(salesQuotationDto.getApproveUserIds());
-        vo.setApproveType(6);
-        vo.setApproveReason(salesQuotationDto.getQuotationNo());
-        approveProcessService.updateApproveUser(vo);
+        ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+        approveProcessVO.setApproveType(6);
+        approveProcessVO.setApproveDeptId(SecurityUtils.getLoginUser().getCurrentDeptId());
+        approveProcessVO.setApproveReason(salesQuotation.getQuotationNo());
+        approveProcessVO.setApproveUserIds(salesQuotationDto.getApproveUserIds());
+        approveProcessVO.setApproveUser(SecurityUtils.getUserId());
+        approveProcessVO.setApproveTime(LocalDate.now().toString());
+        approveProcessVO.setPrice(salesQuotationDto.getTotalAmount());
+        try {
+            approveProcessService.addApprove(approveProcessVO);
+        }catch (Exception e){
+            log.error("SalesQuotationServiceImpl error:{}", e);
+        }
         return true;
     }
 
diff --git a/src/main/resources/mapper/approve/ApproveProcessMapper.xml b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
index 33b29a9..42414a1 100644
--- a/src/main/resources/mapper/approve/ApproveProcessMapper.xml
+++ b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
@@ -28,15 +28,19 @@
         approve_delete,tenant_id,approve_type,approve_remark
     </sql>
     <select id="listPage" resultType="com.ruoyi.approve.pojo.ApproveProcess">
-        select * from approve_process where approve_delete = 0
-        <if test="req.approveId != null and req.approveId != ''">
-            and approve_id like concat('%',#{req.approveId},'%')
-        </if>
-        <if test="req.approveStatus != null or req.approveStatus == 0">
-            and approve_status = #{req.approveStatus}
-        </if>
-        <if test="req.approveType != null ">
-            and approve_type = #{req.approveType}
-        </if>
+        select * from approve_process
+        <where>
+            approve_delete = 0
+            <if test="req.approveId != null and req.approveId != ''">
+                and approve_id like concat('%',#{req.approveId},'%')
+            </if>
+            <if test="req.approveStatus != null or req.approveStatus == 0">
+                and approve_status = #{req.approveStatus}
+            </if>
+            <if test="req.approveType != null ">
+                and approve_type = #{req.approveType}
+            </if>
+        </where>
+        order by approve_process.create_time desc
     </select>
 </mapper>
diff --git a/src/main/resources/mapper/sales/SalesQuotationMapper.xml b/src/main/resources/mapper/sales/SalesQuotationMapper.xml
index 1e358ca..d502262 100644
--- a/src/main/resources/mapper/sales/SalesQuotationMapper.xml
+++ b/src/main/resources/mapper/sales/SalesQuotationMapper.xml
@@ -7,7 +7,7 @@
         SELECT t1.*,
                t2.approve_user_ids
         FROM sales_quotation t1
-        LEFT JOIN approve_process t2 ON t1.quotation_no = t2.approve_reason and t2.approve_type = 6
+        LEFT JOIN approve_process t2 ON t1.quotation_no = t2.approve_reason and t2.approve_type = 6  and t2.approve_status = 0
         WHERE 1=1
         <if test="salesQuotationDto.quotationNo != null and salesQuotationDto.quotationNo != '' ">
             AND t1.quotation_no LIKE CONCAT('%',#{salesQuotationDto.quotationNo},'%')

--
Gitblit v1.9.3