From 319539282bf6cc6d9e459c270e6837e2a1126c14 Mon Sep 17 00:00:00 2001 From: luoweijian <1329394916@qq.com> Date: Tue, 25 Aug 2026 16:15:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(opportunity):=20=E7=A5=A809=20=E6=AD=A55?= =?UTF-8?q?=20=E8=A1=8C=E4=B8=9A=E5=9B=9E=E6=98=BE=E6=94=B9=E6=9F=A5=20ind?= =?UTF-8?q?ustry=20=E5=88=86=E7=BB=84=E4=B8=80=E7=BA=A7=20code=20(Q7)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fillDictNames industry_code 分组(从不存在) → industry 两级树分组; 商机存/查一级 code - 测试 mock industry_code/it → industry/gov(政府机关), 断言回显政府机关 - crm-dict/lead/opportunity 全回归绿 (dict 51 / lead 116 / opportunity 152) --- .../query/impl/OpportunityViewQueryImpl.java | 6 ++++-- .../query/impl/OpportunityViewQueryImplTest.java | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/crm-opportunity/src/main/java/com/crm/opportunity/query/impl/OpportunityViewQueryImpl.java b/crm-opportunity/src/main/java/com/crm/opportunity/query/impl/OpportunityViewQueryImpl.java index ba80576..f85fd54 100644 --- a/crm-opportunity/src/main/java/com/crm/opportunity/query/impl/OpportunityViewQueryImpl.java +++ b/crm-opportunity/src/main/java/com/crm/opportunity/query/impl/OpportunityViewQueryImpl.java @@ -231,7 +231,9 @@ public class OpportunityViewQueryImpl implements OpportunityViewQuery { /** * 字典名称快照回显(对称 crm-lead {@code fillDictNames}):商机来源 / 行业。 - *

groupCode 契约见 PRD §10 字典清单({@code opp_source} / {@code industry_code})。 + *

groupCode 契约见 PRD §10 字典清单({@code opp_source} / {@code industry})。 + * 行业为全系统通用两级树(票 09),商机只选到一级,{@code industryCode} 存一级 code(Q7), + * 故回显按 {@code industry} 分组查一级名。 * 走 {@link DictQueryService#getItem}(含停用项,扛历史数据回显,Caffeine 缓存), * 按 (分组, code) 去重后逐个查,同一页内重复值只查一次。DTO 仅暴露 * {@code oppSourceName}/{@code industryName} 两回显位(oppType/bidForm/localityType 无 Name 位,不填)。

@@ -239,7 +241,7 @@ public class OpportunityViewQueryImpl implements OpportunityViewQuery { private void fillDictNames(List dtos) { Map sourceNames = dictNames("opp_source", dtos.stream().map(OpportunityDTO::getOppSource).collect(Collectors.toSet())); - Map industryNames = dictNames("industry_code", + Map industryNames = dictNames("industry", dtos.stream().map(OpportunityDTO::getIndustryCode).collect(Collectors.toSet())); dtos.forEach(d -> { d.setOppSourceName(sourceNames.get(d.getOppSource())); diff --git a/crm-opportunity/src/test/java/com/crm/opportunity/query/impl/OpportunityViewQueryImplTest.java b/crm-opportunity/src/test/java/com/crm/opportunity/query/impl/OpportunityViewQueryImplTest.java index 1bda46c..daffb16 100644 --- a/crm-opportunity/src/test/java/com/crm/opportunity/query/impl/OpportunityViewQueryImplTest.java +++ b/crm-opportunity/src/test/java/com/crm/opportunity/query/impl/OpportunityViewQueryImplTest.java @@ -250,7 +250,7 @@ class OpportunityViewQueryImplTest { Opportunity opp = new Opportunity(); opp.setId(7001L); opp.setOppSource("lead_transfer"); - opp.setIndustryCode("it"); + opp.setIndustryCode("gov"); opp.setOwnerDeptId(300L); opp.setProvinceCode("440000"); opp.setCityCode("440300"); @@ -258,13 +258,13 @@ class OpportunityViewQueryImplTest { page.setRecords(List.of(opp)); when(opportunityMapper.selectPage(any(), any())).thenReturn(page); - // 字典:(opp_source, lead_transfer) / (industry_code, it) + // 字典:(opp_source, lead_transfer) / (industry, gov) — 行业商机只选到一级 code(票 09 Q7) com.crm.dict.domain.entity.DictItem srcItem = new com.crm.dict.domain.entity.DictItem(); srcItem.setName("线索转入"); com.crm.dict.domain.entity.DictItem indItem = new com.crm.dict.domain.entity.DictItem(); - indItem.setName("信息技术"); + indItem.setName("政府机关"); when(dictQueryService.getItem("opp_source", "lead_transfer")).thenReturn(srcItem); - when(dictQueryService.getItem("industry_code", "it")).thenReturn(indItem); + when(dictQueryService.getItem("industry", "gov")).thenReturn(indItem); // 部门:300 -> 华南大区 com.crm.auth.domain.entity.SysDept dept = new com.crm.auth.domain.entity.SysDept(); @@ -286,7 +286,7 @@ class OpportunityViewQueryImplTest { OpportunityDTO dto = query.pageOpportunities(param).getContent().get(0); assertThat(dto.getOppSourceName()).isEqualTo("线索转入"); - assertThat(dto.getIndustryName()).isEqualTo("信息技术"); + assertThat(dto.getIndustryName()).isEqualTo("政府机关"); assertThat(dto.getOwnerDeptName()).isEqualTo("华南大区"); assertThat(dto.getProvinceName()).isEqualTo("广东省"); assertThat(dto.getCityName()).isEqualTo("深圳市");