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