1、修复基础配置

2、修复业务模块
This commit is contained in:
2026-09-03 03:30:57 +08:00
parent 25fee0656d
commit 88b04b7dac
37 changed files with 615 additions and 103 deletions
@@ -46,6 +46,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.excel.FeeItemExcel;
import org.springblade.system.excel.FeeItemExportExcel;
import org.springblade.system.excel.FeeItemImportFailureExcel;
import org.springblade.system.pojo.entity.FeeItem;
import org.springblade.system.pojo.vo.FeeItemVO;
@@ -155,8 +156,8 @@ public class FeeItemController extends BladeController {
public void exportFeeItem(FeeItemVO feeItem,
@RequestParam(required = false) String ids,
HttpServletResponse response) {
List<FeeItemExcel> list = feeItemService.exportFeeItem(buildExportQuery(feeItem, ids));
ExcelUtil.export(response, "费用项" + DateUtil.time(), "费用项表", list, FeeItemExcel.class);
List<FeeItemExportExcel> list = feeItemService.exportFeeItem(buildExportQuery(feeItem, ids));
ExcelUtil.export(response, "费用项" + DateUtil.time(), "费用项表", list, FeeItemExportExcel.class);
}
/**
@@ -48,6 +48,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.system.pojo.entity.Region;
import org.springblade.system.excel.RegionExcel;
import org.springblade.system.excel.RegionExportExcel;
import org.springblade.system.excel.RegionImporter;
import org.springblade.system.service.IRegionService;
import org.springblade.system.pojo.vo.RegionVO;
@@ -206,8 +207,8 @@ public class RegionController extends BladeController {
@Operation(summary = "导出行政区划", description = "传入user")
public void exportRegion(@Parameter(hidden = true) @RequestParam Map<String, Object> region, HttpServletResponse response) {
QueryWrapper<Region> queryWrapper = Condition.getQueryWrapper(region, Region.class);
List<RegionExcel> list = regionService.exportRegion(queryWrapper);
ExcelUtil.export(response, "行政区划数据" + DateUtil.time(), "行政区划数据表", list, RegionExcel.class);
List<RegionExportExcel> list = regionService.exportRegion(queryWrapper);
ExcelUtil.export(response, "行政区划数据" + DateUtil.time(), "行政区划数据表", list, RegionExportExcel.class);
}
/**
@@ -27,6 +27,7 @@ package org.springblade.system.excel;
import cn.idev.excel.annotation.ExcelIgnore;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.format.DateTimeFormat;
import cn.idev.excel.annotation.format.NumberFormat;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import cn.idev.excel.annotation.write.style.ContentRowHeight;
@@ -36,6 +37,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 空港机场主数据导出 Excel
@@ -100,6 +102,17 @@ public class AirportMasterExportExcel implements Serializable {
@ExcelProperty("备注")
private String remark;
@ExcelProperty("更新人")
private String updateUserName;
@ExcelProperty("更新时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ExcelProperty("创建时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ExcelIgnore
private String errorMessage;
}
@@ -0,0 +1,62 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* This file is part of the TMS extension for BladeX.
*/
package org.springblade.system.excel;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.format.DateTimeFormat;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import cn.idev.excel.annotation.write.style.ContentRowHeight;
import cn.idev.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 费用项导出 Excel。
*
* <p>该模型仅用于导出,避免导出字段变更影响导入模板。</p>
*/
@Data
@ColumnWidth(22)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class FeeItemExportExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ExcelProperty("费用类型")
private String feeCategory;
@ExcelProperty("费用项代码")
private String englishName;
@ExcelProperty("费用项")
private String name;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("组织")
private String createDeptName;
@ExcelProperty("更新人")
private String updateUserName;
@ExcelProperty("更新时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ExcelProperty("创建时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ExcelProperty("状态")
private String statusName;
}
@@ -2,6 +2,7 @@ package org.springblade.system.excel;
import cn.idev.excel.annotation.ExcelIgnore;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.format.DateTimeFormat;
import cn.idev.excel.annotation.format.NumberFormat;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import cn.idev.excel.annotation.write.style.ContentRowHeight;
@@ -11,6 +12,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 港口码头主数据导出 Excel
@@ -75,6 +77,17 @@ public class PortTerminalExportExcel implements Serializable {
@ExcelProperty("备注")
private String remark;
@ExcelProperty("更新人")
private String updateUserName;
@ExcelProperty("更新时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ExcelProperty("创建时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ExcelIgnore
private String errorMessage;
}
@@ -54,7 +54,7 @@ public class RailwayStationExcel implements Serializable {
@ExcelProperty("TMIS国标编码*")
private String tmisCode;
@ExcelProperty("电报码*")
@ExcelProperty("电报码*")
private String telegraphCode;
@ExcelProperty("车站名称*")
@@ -56,7 +56,7 @@ public class RailwayStationExportExcel implements Serializable {
@ExcelProperty("TMIS国标编码*")
private String tmisCode;
@ExcelProperty("电报码*")
@ExcelProperty("电报码*")
private String telegraphCode;
@ExcelProperty("车站名称*")
@@ -48,54 +48,18 @@ public class RegionExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ExcelProperty("划编号")
@ExcelProperty("域编码")
private String code;
@ExcelProperty("父区划编号")
private String parentCode;
@ExcelProperty("祖区划编号")
private String ancestors;
@ExcelProperty("区划名称")
@ExcelProperty("区域名称")
private String name;
@ExcelProperty("省级区划编号")
private String provinceCode;
@ExcelProperty("父级编码")
private String parentCode;
@ExcelProperty("省级名称")
private String provinceName;
@ExcelProperty("市级区划编号")
private String cityCode;
@ExcelProperty("市级名称")
private String cityName;
@ExcelProperty("区级区划编号")
private String districtCode;
@ExcelProperty("区级名称")
private String districtName;
@ExcelProperty("镇级区划编号")
private String townCode;
@ExcelProperty("镇级名称")
private String townName;
@ExcelProperty("村级区划编号")
private String villageCode;
@ExcelProperty("村级名称")
private String villageName;
@ExcelProperty("层级")
@ExcelProperty("区域层级")
private Integer regionLevel;
@ExcelProperty("排序")
private Integer sort;
@ExcelProperty("备注")
private String remark;
@@ -0,0 +1,70 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* This file is part of the TMS extension for BladeX.
*/
package org.springblade.system.excel;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.format.DateTimeFormat;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import cn.idev.excel.annotation.write.style.ContentRowHeight;
import cn.idev.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 行政区划数据导出 Excel。
*
* <p>该模型仅用于导出,避免导入模板字段变更影响已有导入文件。</p>
*/
@Data
@ColumnWidth(18)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class RegionExportExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ExcelProperty("序号")
private Integer serialNumber;
@ExcelProperty("区域编码")
private String code;
@ExcelProperty("区域名称")
private String name;
@ExcelProperty("父级编码")
private String parentCode;
@ExcelProperty("父级名称")
private String parentName;
@ExcelProperty("区域层级")
private Integer regionLevel;
@ExcelProperty("状态")
private String statusName;
@ExcelProperty("数据来源")
private String dataSource;
@ExcelProperty("更新人")
private String updateUserName;
@ExcelProperty("更新时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ExcelProperty("创建时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date createTime;
}
@@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.system.pojo.entity.Region;
import org.springblade.system.excel.RegionExcel;
import org.springblade.system.excel.RegionExportExcel;
import org.springblade.system.pojo.vo.RegionVO;
import java.util.List;
@@ -66,6 +67,6 @@ public interface RegionMapper extends BaseMapper<Region> {
* @param queryWrapper
* @return
*/
List<RegionExcel> exportRegion(@Param("ew") Wrapper<Region> queryWrapper);
List<RegionExportExcel> exportRegion(@Param("ew") Wrapper<Region> queryWrapper);
}
@@ -18,7 +18,7 @@
<result column="town_name" property="townName"/>
<result column="village_code" property="villageCode"/>
<result column="village_name" property="villageName"/>
<result column="level" property="regionLevel"/>
<result column="region_level" property="regionLevel"/>
<result column="sort" property="sort"/>
<result column="remark" property="remark"/>
</resultMap>
@@ -38,7 +38,7 @@
<result column="town_name" property="townName"/>
<result column="village_code" property="villageCode"/>
<result column="village_name" property="villageName"/>
<result column="level" property="regionLevel"/>
<result column="region_level" property="regionLevel"/>
<result column="sort" property="sort"/>
<result column="remark" property="remark"/>
<result column="id" property="id"/>
@@ -72,7 +72,13 @@
and region.name like concat(concat('%', #{param2.name}),'%')
</if>
<if test="param2.regionLevel!=null">
and region.level = #{param2.regionLevel}
and region.region_level = #{param2.regionLevel}
</if>
<if test="param2.dataSource!=null and param2.dataSource!=''">
and region.data_source = #{param2.dataSource}
</if>
<if test="param2.status!=null and param2.status!=''">
and region.status = #{param2.status}
</if>
</where>
ORDER BY region.sort ASC, region.code ASC
@@ -92,21 +98,51 @@
<if test="param1!=null">
and region.parent_code = #{param1}
</if>
<if test="param2.code!=null and param2.code!=''">
and region.code like concat(concat('%', #{param2.code}),'%')
</if>
<if test="param2.name!=null and param2.name!=''">
and region.name like concat(concat('%', #{param2.name}),'%')
</if>
<if test="param2.regionLevel!=null">
and region.level = #{param2.regionLevel}
<if test="param2 != null and ((param2.code!=null and param2.code!='') or (param2.name!=null and param2.name!='') or param2.regionLevel!=null or (param2.dataSource!=null and param2.dataSource!='') or param2.status!=null)">
and exists (
select 1
from blade_region matched
where (matched.code = region.code or find_in_set(region.code, matched.ancestors) > 0)
<if test="param2.code!=null and param2.code!=''">
and matched.code like concat(concat('%', #{param2.code}),'%')
</if>
<if test="param2.name!=null and param2.name!=''">
and matched.name like concat(concat('%', #{param2.name}),'%')
</if>
<if test="param2.regionLevel!=null">
and matched.region_level = #{param2.regionLevel}
</if>
<if test="param2.dataSource!=null and param2.dataSource!=''">
and matched.data_source = #{param2.dataSource}
</if>
<if test="param2.status!=null and param2.status!=''">
and matched.status = #{param2.status}
</if>
)
</if>
</where>
ORDER BY region.sort ASC, region.code ASC
</select>
<select id="exportRegion" resultType="org.springblade.system.excel.RegionExcel">
SELECT * FROM blade_region ${ew.customSqlSegment}
<select id="exportRegion" resultType="org.springblade.system.excel.RegionExportExcel">
SELECT
region.code,
region.name,
region.parent_code,
CASE WHEN region.parent_code = '0' THEN '根节点'
ELSE (SELECT parent.name FROM blade_region parent WHERE parent.code = region.parent_code)
END AS parent_name,
region.region_level,
CASE region.status WHEN 1 THEN '启用' WHEN 2 THEN '停用' ELSE '' END AS status_name,
region.data_source,
COALESCE(updater.real_name, creator.real_name) AS update_user_name,
region.update_time,
region.create_time
FROM blade_region region
LEFT JOIN blade_user updater ON updater.id = region.update_user
LEFT JOIN blade_user creator ON creator.id = region.create_user
${ew.customSqlSegment}
ORDER BY region.create_time DESC, region.code ASC
</select>
</mapper>
@@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.system.excel.FeeItemExcel;
import org.springblade.system.excel.FeeItemExportExcel;
import org.springblade.system.excel.FeeItemImportFailureExcel;
import org.springblade.system.pojo.entity.FeeItem;
import org.springblade.system.pojo.vo.FeeItemVO;
@@ -82,6 +83,6 @@ public interface IFeeItemService extends BaseService<FeeItem> {
* @param queryWrapper 查询条件
* @return 导出数据
*/
List<FeeItemExcel> exportFeeItem(Wrapper<FeeItem> queryWrapper);
List<FeeItemExportExcel> exportFeeItem(Wrapper<FeeItem> queryWrapper);
}
@@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.system.pojo.entity.Region;
import org.springblade.system.excel.RegionExcel;
import org.springblade.system.excel.RegionExportExcel;
import org.springblade.system.pojo.vo.RegionVO;
import java.util.List;
@@ -90,6 +91,6 @@ public interface IRegionService extends IService<Region> {
* @param queryWrapper
* @return
*/
List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper);
List<RegionExportExcel> exportRegion(Wrapper<Region> queryWrapper);
}
@@ -34,6 +34,7 @@ import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.UserCache;
import org.springblade.system.excel.AirportMasterExcel;
import org.springblade.system.excel.AirportMasterExportExcel;
import org.springblade.system.mapper.AirportMasterMapper;
@@ -319,6 +320,7 @@ public class AirportMasterServiceImpl extends BaseServiceImpl<AirportMasterMappe
excel.setLatitude(scaleCoordinate(airportMaster.getLatitude(), MIN_LATITUDE, MAX_LATITUDE));
excel.setDataSource(normalizeDataSource(airportMaster.getDataSource()));
excel.setStatusName(Objects.equals(airportMaster.getStatus(), STATUS_ENABLED) ? "启用" : "停用");
excel.setUpdateUserName(UserCache.getUserRealName(airportMaster.getUpdateUser()));
return excel;
}).toList();
}
@@ -34,7 +34,10 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.cache.SysCache;
import org.springblade.system.cache.UserCache;
import org.springblade.system.excel.FeeItemExcel;
import org.springblade.system.excel.FeeItemExportExcel;
import org.springblade.system.excel.FeeItemImportFailureExcel;
import org.springblade.system.mapper.FeeItemMapper;
import org.springblade.system.pojo.entity.DictBiz;
@@ -119,7 +122,7 @@ public class FeeItemServiceImpl extends BaseServiceImpl<FeeItemMapper, FeeItem>
}
@Override
public List<FeeItemExcel> exportFeeItem(Wrapper<FeeItem> queryWrapper) {
public List<FeeItemExportExcel> exportFeeItem(Wrapper<FeeItem> queryWrapper) {
return list(queryWrapper).stream().map(this::toExcel).toList();
}
@@ -193,9 +196,14 @@ public class FeeItemServiceImpl extends BaseServiceImpl<FeeItemMapper, FeeItem>
return feeItem;
}
private FeeItemExcel toExcel(FeeItem feeItem) {
FeeItemExcel excel = Objects.requireNonNull(BeanUtil.copyProperties(feeItem, FeeItemExcel.class));
private FeeItemExportExcel toExcel(FeeItem feeItem) {
FeeItemExportExcel excel = Objects.requireNonNull(BeanUtil.copyProperties(feeItem, FeeItemExportExcel.class));
excel.setFeeCategory(formatFeeCategory(feeItem.getFeeCategory()));
excel.setCreateDeptName(
Func.isEmpty(feeItem.getCreateDept()) ? "" : SysCache.getDeptName(feeItem.getCreateDept())
);
excel.setUpdateUserName(UserCache.getUserRealName(feeItem.getUpdateUser()));
excel.setStatusName(Objects.equals(feeItem.getStatus(), STATUS_ENABLED) ? "启用" : "停用");
return excel;
}
@@ -34,6 +34,7 @@ import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.UserCache;
import org.springblade.system.excel.PortTerminalExcel;
import org.springblade.system.excel.PortTerminalExportExcel;
import org.springblade.system.mapper.PortTerminalMapper;
@@ -392,6 +393,7 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
excel.setLatitude(scaleCoordinate(portTerminal.getLatitude(), MIN_LATITUDE, MAX_LATITUDE));
excel.setDataSource(normalizeDataSource(portTerminal.getDataSource()));
excel.setStatusName(Objects.equals(portTerminal.getStatus(), STATUS_ENABLED) ? "启用" : "停用");
excel.setUpdateUserName(UserCache.getUserRealName(portTerminal.getUpdateUser()));
return excel;
}).toList();
}
@@ -230,15 +230,15 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
validateImportUnique(RailwayStation::getCode, railwayStation.getCode(), "该编码已存在", validationErrors);
}
if (Func.isEmpty(railwayStation.getTelegraphCode())) {
addValidationError(validationErrors, "电报码不能为空");
addValidationError(validationErrors, "电报码不能为空");
} else {
if (!TELEGRAPH_CODE_PATTERN.matcher(railwayStation.getTelegraphCode()).matches()) {
addValidationError(validationErrors, "电报码为3位大写字母");
addValidationError(validationErrors, "电报码为3位大写字母");
}
if (telegraphCodeCountMap.getOrDefault(railwayStation.getTelegraphCode(), 0) > 1) {
addValidationError(validationErrors, "电报码在本次导入中重复");
addValidationError(validationErrors, "电报码在本次导入中重复");
}
validateImportUnique(RailwayStation::getTelegraphCode, railwayStation.getTelegraphCode(), "电报码已存在", validationErrors);
validateImportUnique(RailwayStation::getTelegraphCode, railwayStation.getTelegraphCode(), "电报码已存在", validationErrors);
}
if (Func.isEmpty(railwayStation.getName())) {
addValidationError(validationErrors, "车站名称不能为空");
@@ -392,10 +392,10 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
throw new ServiceException("TMIS国标编码为5位数字");
}
if (Func.isEmpty(railwayStation.getTelegraphCode())) {
throw new ServiceException("电报码格式不正确或已存在");
throw new ServiceException("电报码格式不正确或已存在");
}
if (!TELEGRAPH_CODE_PATTERN.matcher(railwayStation.getTelegraphCode()).matches()) {
throw new ServiceException("电报码格式不正确或已存在");
throw new ServiceException("电报码格式不正确或已存在");
}
if (Func.isEmpty(railwayStation.getName())) {
throw new ServiceException("请输入车站名称");
@@ -427,7 +427,7 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
validateDataSource(railwayStation.getDataSource());
validateStatus(railwayStation.getStatus());
validateUnique(railwayStation, RailwayStation::getTmisCode, railwayStation.getTmisCode(), "该TMIS编码已存在");
validateUnique(railwayStation, RailwayStation::getTelegraphCode, railwayStation.getTelegraphCode(), "电报码格式不正确或已存在");
validateUnique(railwayStation, RailwayStation::getTelegraphCode, railwayStation.getTelegraphCode(), "电报码格式不正确或已存在");
validateUnique(railwayStation, RailwayStation::getCode, railwayStation.getCode(), "该编码已存在");
}
@@ -33,14 +33,17 @@ import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.system.pojo.entity.Region;
import org.springblade.system.excel.RegionExcel;
import org.springblade.system.excel.RegionExportExcel;
import org.springblade.system.mapper.RegionMapper;
import org.springblade.system.service.IRegionService;
import org.springblade.system.pojo.vo.RegionVO;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -57,9 +60,25 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
@Override
public boolean submit(Region region) {
Date now = new Date();
Long currentUserId = AuthUtil.getUserId();
boolean isNew = StringUtil.isBlank(region.getOriginalCode());
if (region.getStatus() == null) {
region.setStatus(1);
}
if (StringUtil.isBlank(region.getDataSource())) {
region.setDataSource("手动录入");
}
if (isNew) {
region.setCreateUser(currentUserId);
region.setCreateTime(now);
}
region.setUpdateUser(currentUserId);
region.setUpdateTime(now);
String regionCode = region.getCode();
String regionParentCode = region.getParentCode();
Integer level = region.getRegionLevel();
validateRegionLevel(level);
if (level != null && level == COUNTRY_LEVEL) {
region.setParentCode(ROOT_PARENT_CODE);
region.setAncestors(ROOT_PARENT_CODE);
@@ -86,17 +105,29 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
region.setAncestors(ancestors);
} else if (MAIN_CODE.equals(region.getParentCode())) {
region.setAncestors(MAIN_CODE);
} else if (ROOT_PARENT_CODE.equals(region.getParentCode())) {
region.setAncestors(ROOT_PARENT_CODE);
}
// 设置省、市、区、镇、村
// 设置省、市、区、镇、村,并继承上级区划信息
String code = region.getCode();
String name = region.getName();
if (level == PROVINCE_LEVEL) {
region.setProvinceCode(code);
region.setProvinceName(name);
} else if (level == CITY_LEVEL) {
if (Func.isNotEmpty(parent)) {
region.setProvinceCode(parent.getProvinceCode());
region.setProvinceName(parent.getProvinceName());
}
region.setCityCode(code);
region.setCityName(name);
} else if (level == DISTRICT_LEVEL) {
if (Func.isNotEmpty(parent)) {
region.setProvinceCode(parent.getProvinceCode());
region.setProvinceName(parent.getProvinceName());
region.setCityCode(parent.getCityCode());
region.setCityName(parent.getCityName());
}
region.setDistrictCode(code);
region.setDistrictName(name);
} else if (level == TOWN_LEVEL) {
@@ -128,6 +159,12 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
}
}
private void validateRegionLevel(Integer level) {
if (level != null && level > DISTRICT_LEVEL) {
throw new ServiceException("区划等级仅支持国家、省份/直辖市、地市、区县");
}
}
@Override
public boolean removeRegion(String id) {
Long cnt = baseMapper.selectCount(Wrappers.<Region>query().lambda().eq(Region::getParentCode, id));
@@ -162,11 +199,18 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
RegionExcel excel = data.get(index);
try {
Region region = BeanUtil.copyProperties(excel, Region.class);
if (Boolean.TRUE.equals(isCovered)) {
cacheChanged = this.saveOrUpdate(region) || cacheChanged;
} else {
cacheChanged = this.save(region) || cacheChanged;
validateRegionLevel(region.getRegionLevel());
region.setSort(index + 1);
if (region.getStatus() == null) {
region.setStatus(1);
}
if (StringUtil.isBlank(region.getDataSource())) {
region.setDataSource("初始化导入");
}
if (Boolean.TRUE.equals(isCovered) && this.getById(region.getCode()) != null) {
region.setOriginalCode(region.getCode());
}
cacheChanged = this.submit(region) || cacheChanged;
} catch (Exception exception) {
excel.setErrorMessage(exception.getMessage());
errorList.add(excel);
@@ -179,7 +223,11 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
}
@Override
public List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper) {
return baseMapper.exportRegion(queryWrapper);
public List<RegionExportExcel> exportRegion(Wrapper<Region> queryWrapper) {
List<RegionExportExcel> list = baseMapper.exportRegion(queryWrapper);
for (int index = 0; index < list.size(); index++) {
list.get(index).setSerialNumber(index + 1);
}
return list;
}
}