From f4ef6d1f4489e0d4cbba1845792945b924c16228 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 14 十月 2026 18:29:56 +0800
Subject: [PATCH] feat: 客户签订合同统计 + MES 首页质检合格率
---
yudao-module-crm/src/test/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerAutoPoolTest.java | 42 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 41 insertions(+), 1 deletions(-)
diff --git a/yudao-module-crm/src/test/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerAutoPoolTest.java b/yudao-module-crm/src/test/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerAutoPoolTest.java
index 6507321..057d37a 100644
--- a/yudao-module-crm/src/test/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerAutoPoolTest.java
+++ b/yudao-module-crm/src/test/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerAutoPoolTest.java
@@ -10,6 +10,12 @@
import cn.iocoder.yudao.module.crm.framework.permission.core.aop.CrmPermissionAspect;
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
+import cn.iocoder.yudao.module.crm.controller.admin.customer.CrmCustomerController;
+import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.idev.excel.metadata.data.ReadCellData;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -21,6 +27,7 @@
import java.lang.reflect.Proxy;
import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import static org.junit.jupiter.api.Assertions.*;
@@ -70,6 +77,39 @@
assertPoolListFilter(true);
}
+ @Test
+ void poolCustomersUseSameOwnerAndDepartmentAsCustomerManagement() {
+ var controller = new CrmCustomerController();
+ var users = AdminUserApi.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
+ new Class<?>[]{AdminUserApi.class}, (proxy, method, args) -> {
+ assertEquals("getUserMap", method.getName());
+ return Map.of(10L, new AdminUserRespDTO().setId(10L).setNickname("閿�鍞礋璐d汉").setDeptId(20L));
+ }));
+ var departments = DeptApi.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
+ new Class<?>[]{DeptApi.class}, (proxy, method, args) -> {
+ assertEquals("getDeptMap", method.getName());
+ return Map.of(20L, new DeptRespDTO().setId(20L).setName("閿�鍞儴"));
+ }));
+ var config = CrmCustomerPoolConfigService.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
+ new Class<?>[]{CrmCustomerPoolConfigService.class}, (proxy, method, args) -> null));
+ // 瀹㈡埛鍒楄〃鎷兼帴浼氶『甯︾粺璁°�屽凡绛捐鍚堝悓銆嶏紝杩欓噷妗╂帀锛岃繑鍥炵┖ Map 琛ㄧず鏈敤渚嬬殑瀹㈡埛娌℃湁鍚堝悓
+ var contracts = CrmContractService.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
+ new Class<?>[]{CrmContractService.class}, (proxy, method, args) ->
+ switch (method.getName()) {
+ case "getContractCountMapByCustomerIds", "getContractPriceMapByCustomerIds" -> Map.of();
+ default -> java.lang.reflect.InvocationHandler.invokeDefault(proxy, method, args);
+ }));
+ ReflectionTestUtils.setField(controller, "adminUserApi", users);
+ ReflectionTestUtils.setField(controller, "deptApi", departments);
+ ReflectionTestUtils.setField(controller, "customerPoolConfigService", config);
+ ReflectionTestUtils.setField(controller, "contractService", contracts);
+ var customer = controller.buildCustomerDetailList(List.of(new CrmCustomerDO().setId(1L)
+ .setOwnerUserId(10L).setAutoPoolEnabled(true))).getFirst();
+ assertEquals(10L, customer.getOwnerUserId());
+ assertEquals("閿�鍞礋璐d汉", customer.getOwnerUserName());
+ assertEquals("閿�鍞儴", customer.getOwnerUserDeptName());
+ }
+
private void assertPoolListFilter(boolean superAdmin) {
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), "test"), CrmCustomerDO.class);
var mapper = CrmCustomerMapper.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
@@ -77,7 +117,7 @@
if (method.getName().equals("selectJoinPage")) {
var query = (com.github.yulichang.wrapper.MPJLambdaWrapper<?>) args[2];
String sql = query.getSqlSegment();
- assertTrue(sql.contains("owner_user_id IS NULL"), sql);
+ assertFalse(sql.contains("owner_user_id IS NULL"), sql);
assertEquals(!superAdmin, sql.contains("auto_pool_enabled ="), sql);
return new cn.iocoder.yudao.framework.common.pojo.PageResult<>(List.of(), 0L);
}
--
Gitblit v1.9.3