From 2418543dfc6c61fa5091e242042a7d7635f6c7c5 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 02 Apr 2026 14:27:16 +0800
Subject: [PATCH] opt: sql改造其他模块改造9

---
 drone-service/drone-system/src/main/java/org/sxkj/system/service/impl/RegionServiceImpl.java |   99 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 85 insertions(+), 14 deletions(-)

diff --git a/drone-service/drone-system/src/main/java/org/sxkj/system/service/impl/RegionServiceImpl.java b/drone-service/drone-system/src/main/java/org/sxkj/system/service/impl/RegionServiceImpl.java
index 0a48400..812467b 100644
--- a/drone-service/drone-system/src/main/java/org/sxkj/system/service/impl/RegionServiceImpl.java
+++ b/drone-service/drone-system/src/main/java/org/sxkj/system/service/impl/RegionServiceImpl.java
@@ -16,22 +16,24 @@
  */
 package org.sxkj.system.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.util.Strings;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.utils.*;
+import org.springframework.stereotype.Service;
 import org.sxkj.common.func.Streams;
 import org.sxkj.system.entity.Region;
 import org.sxkj.system.excel.RegionExcel;
+import org.sxkj.system.excel.RegionImportExcel;
 import org.sxkj.system.mapper.RegionMapper;
+import org.sxkj.system.param.RegionExportParam;
+import org.sxkj.system.param.RegionPageParam;
 import org.sxkj.system.service.IRegionService;
 import org.sxkj.system.vo.RegionVO;
-import org.springframework.stereotype.Service;
 import org.sxkj.system.vo.TreeVo;
 
 import java.io.Serializable;
@@ -52,9 +54,11 @@
 	public Region getById(Serializable id) {
 		return Optional.ofNullable(id)
 			.map(val -> baseMapper.selectOne(new LambdaQueryWrapper<Region>()
-				.eq(Region::getId, val)
+				// 1. 处理 id = ? 部分,强制转为 bigint
+				.apply("id = {0}::bigint", val)
 				.or()
-				.eq(Region::getCode, val)))
+				// 2. 处理 code = ? 部分,强制转为 varchar
+				.apply("code = {0}::varchar", val)))
 			.orElse(null);
 	}
 
@@ -68,6 +72,33 @@
 		}
 		if (regionParentCode.startsWith(MAIN_CODE)) {
 			region.setParentCode(StringUtil.removePrefix(regionParentCode, MAIN_CODE));
+		}
+		region.setCityName("吉安市");
+		region.setCityCode("360800000000");
+		region.setProvinceCode("360000000000");
+		region.setProvinceName("江西省");
+		if (region.getRegionLevel().equals(DISTRICT_LEVEL)) {
+			region.setDistrictCode(region.getCode());
+			region.setDistrictName(region.getName());
+		}
+		if (region.getRegionLevel().equals(TOWN_LEVEL)) {
+			String parentCode = region.getParentCode();
+			Region byCode = getByCode(parentCode);
+			region.setDistrictCode(byCode.getCode());
+			region.setDistrictName(byCode.getName());
+			region.setTownCode(region.getCode());
+			region.setTownName(region.getName());
+		}
+		if (region.getRegionLevel().equals(VILLAGE_LEVEL)) {
+			String parentCode = region.getParentCode();
+			Region byCode = getByCode(parentCode);
+			region.setTownCode(byCode.getCode());
+			region.setTownName(byCode.getName());
+			Region byCode2 = getByCode(byCode.getParentCode());
+			region.setDistrictCode(byCode2.getCode());
+			region.setDistrictName(byCode2.getName());
+			region.setVillageCode(region.getCode());
+			region.setVillageName(region.getName());
 		}
 		// 查询是否已存在
 		Long cnt = baseMapper.selectCount(Wrappers.<Region>query().lambda().eq(Region::getCode, region.getCode()));
@@ -122,11 +153,47 @@
 		return baseMapper.lazyTree(parentCode, param);
 	}
 
+	// WHEN
+	// 	region_level = '5' THEN town_name
+	// WHEN
+	// 	region_level = '4' THEN district_name
+	// WHEN
+	// 	region_level = '3' THEN city_name
+	// WHEN
+	// 	region_level = '2' THEN province_name
 	@Override
-	public void importRegion(List<RegionExcel> data, Boolean isCovered) {
+	public void importRegion(List<RegionImportExcel> data, Boolean isCovered) {
 		List<Region> list = new ArrayList<>();
 		data.forEach(regionExcel -> {
 			Region region = BeanUtil.copy(regionExcel, Region.class);
+			region.setRegionLevel(Integer.valueOf(regionExcel.getRegionLevel()));
+			region.setCityName("吉安市");
+			region.setCityCode("360800000000");
+			region.setProvinceCode("360000000000");
+			region.setProvinceName("江西省");
+			if (region.getRegionLevel().equals(DISTRICT_LEVEL)) {
+				region.setDistrictCode(region.getCode());
+				region.setDistrictName(region.getName());
+			}
+			if (region.getRegionLevel().equals(TOWN_LEVEL)) {
+				String parentCode = region.getParentCode();
+				Region byCode = getByCode(parentCode);
+				region.setDistrictCode(byCode.getCode());
+				region.setDistrictName(byCode.getName());
+				region.setTownCode(region.getCode());
+				region.setTownName(region.getName());
+			}
+			if (region.getRegionLevel().equals(VILLAGE_LEVEL)) {
+				String parentCode = region.getParentCode();
+				Region byCode = getByCode(parentCode);
+				region.setTownCode(byCode.getCode());
+				region.setTownName(byCode.getName());
+				Region byCode2 = getByCode(byCode.getParentCode());
+				region.setDistrictCode(byCode2.getCode());
+				region.setDistrictName(byCode2.getName());
+				region.setVillageCode(region.getCode());
+				region.setVillageName(region.getName());
+			}
 			list.add(region);
 		});
 		if (isCovered) {
@@ -137,8 +204,8 @@
 	}
 
 	@Override
-	public List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper) {
-		return baseMapper.exportRegion(queryWrapper);
+	public List<RegionExcel> exportRegion(RegionExportParam region) {
+		return baseMapper.exportRegion(region);
 	}
 
 	/**
@@ -195,15 +262,15 @@
 
 	@Override
 	public TreeVo buildRegionTree(String parentCode) {
-		if(StringUtil.isBlank(parentCode)){
+		if (StringUtil.isBlank(parentCode)) {
 			return null;
 		}
 		LambdaQueryWrapper<Region> query = Wrappers.<Region>lambdaQuery()
 			.le(Region::getRegionLevel, 3)
 			.likeRight(Region::getParentCode, parentCode.replaceAll("0+$", ""))
 			.or(regionLambdaQueryWrapper ->
-					regionLambdaQueryWrapper.eq(Region::getCode, parentCode)
-				);
+				regionLambdaQueryWrapper.eq(Region::getCode, parentCode)
+			);
 		List<Region> list = list(query);
 		List<TreeVo> regionVOS = Streams.toList(list, region -> {
 			TreeVo vo = new TreeVo();
@@ -218,13 +285,17 @@
 
 		List<TreeVo> regionVOS1 = buildRegionTree(regionVOS, parentCode);
 		TreeVo treeVo = map.get(parentCode);
-		if(Objects.nonNull(treeVo)){
+		if (Objects.nonNull(treeVo)) {
 			treeVo.setChildrens(regionVOS1);
 		}
 
 		return treeVo;
 	}
 
+	@Override
+	public IPage<RegionVO> selectRegionPage(IPage<RegionVO> page, RegionPageParam regionPageParam) {
+		return baseMapper.selectRegionPage(page, regionPageParam);
+	}
 
 	/**
 	 * Query regions by parentCode and build a recursive tree structure
@@ -234,7 +305,7 @@
 	 * @return List of RegionVO trees starting from the specified parentCode
 	 */
 	public List<TreeVo> buildRegionTree(List<TreeVo> allRegions, String parentCode) {
-		if(CollectionUtil.isEmpty(allRegions)){
+		if (CollectionUtil.isEmpty(allRegions)) {
 			return Collections.EMPTY_LIST;
 		}
 
@@ -249,7 +320,7 @@
 	/**
 	 * Recursive method to build the region tree
 	 *
-	 * @param regionMap Map of regions grouped by parentCode
+	 * @param regionMap   Map of regions grouped by parentCode
 	 * @param currentCode Current region code to process
 	 * @return List of RegionVOs with children populated
 	 */

--
Gitblit v1.9.3