hejianhao
2026-08-28 16a57a8fc6868cea9171a1119698572407a2fc03
fix0806: APP端去掉全部的市辖区选择
2个文件已修改
34 ■■■■■ 已修改文件
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterRegionService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/register/service/AppRegisterRegionServiceTest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterRegionService.java
@@ -101,6 +101,9 @@
                }
                List<AppRegisterRegionPickerOptionVO> currentDistrictOptions = new ArrayList<AppRegisterRegionPickerOptionVO>(districts.size());
                for (SysRegion district : districts) {
                    if (shouldHideInAppPicker(district)) {
                        continue;
                    }
                    currentDistrictOptions.add(toPickerOption(district, 3));
                }
                currentAreaOptions.add(currentDistrictOptions);
@@ -117,6 +120,13 @@
    }
    /**
     * APP 地区选择器不展示行政区划占位节点。
     */
    private boolean shouldHideInAppPicker(SysRegion region) {
        return region.getName() != null && region.getName().contains("市辖区");
    }
    /**
     * 将海诊通诊所地区编码或名称归一化为本地三级行政区划。
     */
    public RegionSelection resolveRegionSelection(String provinceCode,
tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/register/service/AppRegisterRegionServiceTest.java
@@ -2,6 +2,7 @@
import com.tcm.training.admin.app.register.entity.SysRegion;
import com.tcm.training.admin.app.register.mapper.SysRegionMapper;
import com.tcm.training.admin.app.register.vo.AppRegisterRegionDatasetVO;
import com.tcm.training.admin.app.register.vo.AppRegisterRegionOptionVO;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -9,6 +10,7 @@
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -52,6 +54,28 @@
    }
    /**
     * APP 完整地区数据集应过滤区县层级的市辖区占位节点。
     */
    @Test
    void buildRegionDatasetShouldHideMunicipalDistrictPlaceholder() {
        SysRegion province = buildRegion(1L, "江西省", "360000", 0L);
        SysRegion city = buildRegion(2L, "吉安市", "360800", 1L);
        SysRegion placeholder = buildRegion(3L, "吉安市市辖区", "360801", 2L);
        SysRegion district = buildRegion(4L, "吉州区", "360802", 2L);
        when(sysRegionMapper.selectAllOrdered()).thenReturn(
                Arrays.asList(province, city, placeholder, district)
        );
        AppRegisterRegionDatasetVO dataset = appRegisterRegionService.buildRegionDataset();
        assertEquals(1, dataset.getAreas().size());
        assertEquals(1, dataset.getAreas().get(0).size());
        assertEquals(1, dataset.getAreas().get(0).get(0).size());
        assertEquals("吉州区", dataset.getAreas().get(0).get(0).get(0).getLabel());
        assertEquals("360802", dataset.getAreas().get(0).get(0).get(0).getValue());
    }
    /**
     * 海诊通仅返回地区名称时,应通过 sys_region 解析出完整编码。
     */
    @Test