From 03965438c47dc6620bf5bf9ebb7ae97e805b4aae Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 15 十月 2026 15:44:44 +0800
Subject: [PATCH] fix(crm,mes): 客户转化统计漏行、归档台账分页与排序

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pd/archive/MesPdArchiveController.java |    6 ++++--
 yudao-module-mes/src/main/resources/mapper/pd/archive/MesPdArchiveMapper.xml                                       |    2 +-
 yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml                              |    6 ++++--
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/archive/MesPdArchiveServiceImpl.java         |   13 +++++++++++--
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml b/yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml
index 662e369..0b2b704 100644
--- a/yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml
+++ b/yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml
@@ -179,8 +179,10 @@
                IFNULL(receivable.price, 0) AS receivable_price
           FROM crm_customer AS customer
                 INNER JOIN crm_contract AS contract ON customer.id = contract.customer_id
-                LEFT JOIN crm_receivable AS receivable ON contract.id = receivable.contract_id
-         WHERE customer.deleted = 0 AND contract.deleted = 0 AND receivable.deleted = 0
+                <!-- receivable.deleted = 0 蹇呴』鍐欏湪 ON 閲岋細鍐欏埌 WHERE 閲屼細璁� LEFT JOIN 閫�鍖栨垚 INNER JOIN锛�
+                     娌℃湁鍥炴璁板綍鐨勫悎鍚屼細琚暣琛屼涪鎺夛紙鎴愪氦 6 涓鎴枫�佽浆鍖栬〃鍙嚭鐜� 4 涓級 -->
+                LEFT JOIN crm_receivable AS receivable ON contract.id = receivable.contract_id AND receivable.deleted = 0
+         WHERE customer.deleted = 0 AND contract.deleted = 0
            AND contract.audit_status = ${@cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum@APPROVE.status}
            AND customer.owner_user_id IN
                 <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pd/archive/MesPdArchiveController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pd/archive/MesPdArchiveController.java
index 990d82d..2bd2553 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pd/archive/MesPdArchiveController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pd/archive/MesPdArchiveController.java
@@ -83,8 +83,10 @@
     @GetMapping("/page")
     @Operation(summary = "鑾峰緱褰掓。鍙拌处鍒嗛〉锛堟寜椤圭洰/浜у搧鑱氬悎锛�")
     @PreAuthorize("@ss.hasPermission('mes:pd-archive:query')")
-    public CommonResult<PageResult<MesPdArchiveRespVO>> getArchivePage(@Valid MesPdArchivePageReqVO pageReqVO,
-                                                                        Page<MesPdArchiveGroupRespVO> page) {
+    public CommonResult<PageResult<MesPdArchiveRespVO>> getArchivePage(@Valid MesPdArchivePageReqVO pageReqVO) {
+        // 鍒嗛〉鍙傛暟鍙兘浠� pageReqVO 鍙栵細绛惧悕閲屽啀鏀句竴涓� Page 鍙傛暟浼氳 Spring 鍗曠嫭鎸� current/size 缁戝畾鎴愰粯璁ょ殑 1/10锛�
+        // 鍓嶇浼犵殑 pageNo/pageSize 鍏ㄨ涓㈡帀锛屽彴璐﹀氨姘歌繙鍙繑鍥炲墠 10 鏉°�佺炕椤典篃涓嶅姩锛堝垪琛ㄧ湅涓嶅嚭浠� 9/17 寰�鍚庣殑鏃ユ湡锛夈��
+        Page<MesPdArchiveGroupRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
         IPage<MesPdArchiveGroupRespVO> archivePage = archiveService.getArchivePageGroupByProject(pageReqVO, page);
         return CommonResult.success(new PageResult<>(
                 buildArchiveRespVOList(archivePage.getRecords()), archivePage.getTotal()));
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/archive/MesPdArchiveServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/archive/MesPdArchiveServiceImpl.java
index 934449a..4478e0e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/archive/MesPdArchiveServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/archive/MesPdArchiveServiceImpl.java
@@ -13,6 +13,7 @@
 import cn.iocoder.yudao.module.mes.dal.mysql.pd.archive.MesPdArchiveMapper;
 import cn.iocoder.yudao.module.mes.service.pd.document.MesPdDocumentService;
 import cn.iocoder.yudao.module.mes.service.pd.project.MesPdProjectService;
+import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -52,6 +53,10 @@
     @Resource
     @Lazy
     private AdminUserApi adminUserApi;
+
+    @Resource
+    @Lazy
+    private StorageAttachmentApi storageAttachmentApi;
 
     @Override
     public Long createArchive(MesPdArchiveSaveReqVO createReqVO) {
@@ -146,8 +151,12 @@
                 Map<Long, AdminUserRespDTO> uploadUserMap = adminUserApi.getUserMap(
                         cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet(documents, MesPdDocumentDO::getUploadUserId));
                 List<MesPdArchiveDetailRespVO.DocumentInfo> documentInfos = BeanUtils.toBean(documents, MesPdArchiveDetailRespVO.DocumentInfo.class,
-                        info -> MapUtils.findAndThen(uploadUserMap, info.getUploadUserId(),
-                                user -> info.setUploadUserNickname(user.getNickname())));
+                        info -> {
+                            MapUtils.findAndThen(uploadUserMap, info.getUploadUserId(),
+                                    user -> info.setUploadUserNickname(user.getNickname()));
+                            // 璧勬枡鏂囦欢璧� system 妯″潡鐨勯檮浠朵腑闂磋〃锛屼笟鍔¤〃涓嶅瓨鏂囦欢鍦板潃锛岃繖閲屽洖濉墠绠楄兘棰勮/涓嬭浇
+                            info.setAttachmentList(storageAttachmentApi.listAttachments("mes_pd_document", info.getId()));
+                        });
                 respVO.setDocuments(documentInfos);
             }
             mesPdArchiveDetailRespVOS.add(respVO);
diff --git a/yudao-module-mes/src/main/resources/mapper/pd/archive/MesPdArchiveMapper.xml b/yudao-module-mes/src/main/resources/mapper/pd/archive/MesPdArchiveMapper.xml
index dfa5a92..e4e2835 100644
--- a/yudao-module-mes/src/main/resources/mapper/pd/archive/MesPdArchiveMapper.xml
+++ b/yudao-module-mes/src/main/resources/mapper/pd/archive/MesPdArchiveMapper.xml
@@ -43,7 +43,7 @@
                 AND a.archive_code LIKE CONCAT('%', #{req.archiveCode}, '%')
             </if>
         </where>
-        ORDER BY a.update_time DESC
+        ORDER BY a.archive_time ASC, a.id ASC
     </select>
 
 </mapper>

--
Gitblit v1.9.3