1、修复基础配置
2、修复业务模块
This commit is contained in:
+10
@@ -84,6 +84,16 @@ public class PortTerminal extends BaseEntity {
|
||||
*/
|
||||
@Schema(description = "国家")
|
||||
private String country;
|
||||
/**
|
||||
* 省份编码
|
||||
*/
|
||||
@Schema(description = "省份编码")
|
||||
private String provinceCode;
|
||||
/**
|
||||
* 省份
|
||||
*/
|
||||
@Schema(description = "省份")
|
||||
private String provinceName;
|
||||
/**
|
||||
* 城市
|
||||
*/
|
||||
|
||||
+3
@@ -74,6 +74,9 @@ public class PortTerminalExcel implements Serializable {
|
||||
@ExcelProperty("国家*")
|
||||
private String country;
|
||||
|
||||
@ExcelProperty("所属省份*")
|
||||
private String provinceName;
|
||||
|
||||
@ExcelProperty("城市*")
|
||||
private String city;
|
||||
|
||||
|
||||
+3
@@ -48,6 +48,9 @@ public class PortTerminalExportExcel implements Serializable {
|
||||
@ExcelProperty("国家")
|
||||
private String country;
|
||||
|
||||
@ExcelProperty("所属省份")
|
||||
private String provinceName;
|
||||
|
||||
@ExcelProperty("城市")
|
||||
private String city;
|
||||
|
||||
|
||||
+11
@@ -27,6 +27,7 @@ package org.springblade.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springblade.system.pojo.entity.PortTerminal;
|
||||
import org.springblade.system.pojo.vo.PortTerminalVO;
|
||||
|
||||
@@ -39,6 +40,16 @@ import java.util.List;
|
||||
*/
|
||||
public interface PortTerminalMapper extends BaseMapper<PortTerminal> {
|
||||
|
||||
/**
|
||||
* 按编码查询港口码头(包含逻辑删除记录,用于导入恢复)。
|
||||
*/
|
||||
PortTerminal selectByCodeIncludingDeleted(@Param("code") String code);
|
||||
|
||||
/**
|
||||
* 恢复逻辑删除港口码头。
|
||||
*/
|
||||
int restoreById(@Param("id") Long id);
|
||||
|
||||
/**
|
||||
* 自定义分页
|
||||
*
|
||||
|
||||
+23
@@ -19,6 +19,8 @@
|
||||
<result column="parent_code" property="parentCode"/>
|
||||
<result column="parent_name" property="parentName"/>
|
||||
<result column="country" property="country"/>
|
||||
<result column="province_code" property="provinceCode"/>
|
||||
<result column="province_name" property="provinceName"/>
|
||||
<result column="city" property="city"/>
|
||||
<result column="district_code" property="districtCode"/>
|
||||
<result column="district_name" property="districtName"/>
|
||||
@@ -30,6 +32,19 @@
|
||||
<result column="remark" property="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectByCodeIncludingDeleted" resultType="org.springblade.system.pojo.entity.PortTerminal">
|
||||
SELECT *
|
||||
FROM blade_port_terminal
|
||||
WHERE code = #{code}
|
||||
</select>
|
||||
|
||||
<update id="restoreById">
|
||||
UPDATE blade_port_terminal
|
||||
SET is_deleted = 0
|
||||
WHERE id = #{id}
|
||||
AND is_deleted = 1
|
||||
</update>
|
||||
|
||||
<select id="selectPortTerminalPage" resultMap="portTerminalResultMap">
|
||||
SELECT
|
||||
pt.id,
|
||||
@@ -48,6 +63,8 @@
|
||||
pt.parent_code,
|
||||
pt.parent_name,
|
||||
pt.country,
|
||||
pt.province_code,
|
||||
pt.province_name,
|
||||
pt.city,
|
||||
pt.district_code,
|
||||
pt.district_name,
|
||||
@@ -95,6 +112,12 @@
|
||||
<if test="portTerminal.city != null and portTerminal.city != ''">
|
||||
AND pt.city = #{portTerminal.city}
|
||||
</if>
|
||||
<if test="portTerminal.provinceName != null and portTerminal.provinceName != ''">
|
||||
AND pt.province_name = #{portTerminal.provinceName}
|
||||
</if>
|
||||
<if test="portTerminal.provinceCode != null and portTerminal.provinceCode != ''">
|
||||
AND pt.province_code = #{portTerminal.provinceCode}
|
||||
</if>
|
||||
<if test="portTerminal.districtCode != null and portTerminal.districtCode != ''">
|
||||
AND pt.district_code = #{portTerminal.districtCode}
|
||||
</if>
|
||||
|
||||
+10
@@ -40,6 +40,16 @@ import java.util.List;
|
||||
*/
|
||||
public interface RailwayStationMapper extends BaseMapper<RailwayStation> {
|
||||
|
||||
/**
|
||||
* 按编码查询铁路车站(包含逻辑删除记录,用于导入恢复)。
|
||||
*/
|
||||
RailwayStation selectByCodeIncludingDeleted(@Param("code") String code);
|
||||
|
||||
/**
|
||||
* 恢复逻辑删除铁路车站。
|
||||
*/
|
||||
int restoreById(@Param("id") Long id);
|
||||
|
||||
/**
|
||||
* 自定义分页
|
||||
*
|
||||
|
||||
+13
@@ -32,6 +32,19 @@
|
||||
<result column="remark" property="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectByCodeIncludingDeleted" resultType="org.springblade.system.pojo.entity.RailwayStation">
|
||||
SELECT *
|
||||
FROM blade_railway_station
|
||||
WHERE code = #{code}
|
||||
</select>
|
||||
|
||||
<update id="restoreById">
|
||||
UPDATE blade_railway_station
|
||||
SET is_deleted = 0
|
||||
WHERE id = #{id}
|
||||
AND is_deleted = 1
|
||||
</update>
|
||||
|
||||
<select id="selectRailwayStationPage" resultMap="railwayStationResultMap">
|
||||
SELECT
|
||||
rs.id,
|
||||
|
||||
+12
-5
@@ -71,7 +71,7 @@ public class AirportMasterServiceImpl extends BaseServiceImpl<AirportMasterMappe
|
||||
private static final String SOURCE_BATCH = "批量导入";
|
||||
private static final String SOURCE_MANUAL = "手动录入";
|
||||
private static final String SOURCE_MANUAL_OLD = "手工导入";
|
||||
private static final String DEFAULT_COUNTRY_CODE = "+86";
|
||||
private static final int PROVINCE_REGION_LEVEL = 1;
|
||||
private static final int STATUS_ENABLED = 1;
|
||||
private static final int STATUS_DISABLED = 2;
|
||||
private static final int CODE_MAX_LENGTH = 20;
|
||||
@@ -164,7 +164,9 @@ public class AirportMasterServiceImpl extends BaseServiceImpl<AirportMasterMappe
|
||||
return errorList;
|
||||
}
|
||||
for (AirportMaster airportMaster : airportMasterList) {
|
||||
if (!save(airportMaster)) {
|
||||
// 编码命中逻辑删除记录时复用原主键,恢复后更新,避免唯一索引冲突。
|
||||
prepareSubmitTarget(airportMaster);
|
||||
if (!saveOrUpdate(airportMaster)) {
|
||||
throw new ServiceException("空港机场保存失败");
|
||||
}
|
||||
}
|
||||
@@ -408,9 +410,10 @@ public class AirportMasterServiceImpl extends BaseServiceImpl<AirportMasterMappe
|
||||
province = regionService.getById(airportMaster.getProvinceCode());
|
||||
}
|
||||
if (Func.isEmpty(province) && Func.isNotEmpty(airportMaster.getProvinceName())) {
|
||||
String provinceName = normalizeRegionName(airportMaster.getProvinceName());
|
||||
province = regionService.getOne(Wrappers.<Region>lambdaQuery()
|
||||
.eq(Region::getParentCode, DEFAULT_COUNTRY_CODE)
|
||||
.eq(Region::getName, airportMaster.getProvinceName()), false);
|
||||
.eq(Region::getRegionLevel, PROVINCE_REGION_LEVEL)
|
||||
.eq(Region::getName, provinceName), false);
|
||||
}
|
||||
if (Func.isEmpty(province)) {
|
||||
throw new ServiceException("请选择省份");
|
||||
@@ -520,7 +523,11 @@ public class AirportMasterServiceImpl extends BaseServiceImpl<AirportMasterMappe
|
||||
}
|
||||
|
||||
private String trimToEmpty(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
return value == null ? "" : value.replace("\uFEFF", "").strip();
|
||||
}
|
||||
|
||||
private String normalizeRegionName(String value) {
|
||||
return trimToEmpty(value);
|
||||
}
|
||||
|
||||
private String trimToNull(String value) {
|
||||
|
||||
+63
-1
@@ -172,7 +172,8 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
try {
|
||||
prepare(portTerminal, SOURCE_BATCH);
|
||||
validate(portTerminal);
|
||||
if (!save(portTerminal)) {
|
||||
prepareImportTarget(portTerminal);
|
||||
if (!saveOrUpdate(portTerminal)) {
|
||||
throw new ServiceException("港口码头保存失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
@@ -183,6 +184,22 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
}
|
||||
}
|
||||
|
||||
private void prepareImportTarget(PortTerminal portTerminal) {
|
||||
if (Func.isNotEmpty(portTerminal.getId())) {
|
||||
return;
|
||||
}
|
||||
PortTerminal existingPortTerminal = baseMapper.selectByCodeIncludingDeleted(portTerminal.getCode());
|
||||
if (existingPortTerminal == null) {
|
||||
return;
|
||||
}
|
||||
if (!Objects.equals(existingPortTerminal.getIsDeleted(), 1)) {
|
||||
throw new ServiceException("该编码已存在");
|
||||
}
|
||||
baseMapper.restoreById(existingPortTerminal.getId());
|
||||
portTerminal.setId(existingPortTerminal.getId());
|
||||
portTerminal.setIsDeleted(0);
|
||||
}
|
||||
|
||||
private String formatImportErrorMessage(List<String> validationErrors) {
|
||||
StringBuilder errorMessage = new StringBuilder();
|
||||
for (int index = 0; index < validationErrors.size(); index++) {
|
||||
@@ -213,6 +230,7 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
portTerminal.setParentName(excel.getParentName());
|
||||
portTerminal.setParentCode(CATEGORY_TERMINAL.equals(trimToEmpty(excel.getCategory())) ? excel.getPortCode() : excel.getParentCode());
|
||||
portTerminal.setCountry(excel.getCountry());
|
||||
portTerminal.setProvinceName(excel.getProvinceName());
|
||||
portTerminal.setCity(excel.getCity());
|
||||
portTerminal.setDistrictName(excel.getDistrictName());
|
||||
portTerminal.setDetailAddress(excel.getDetailAddress());
|
||||
@@ -241,6 +259,8 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
}
|
||||
portTerminal.setParentName(trimToNull(portTerminal.getParentName()));
|
||||
portTerminal.setCountry(trimToEmpty(portTerminal.getCountry()));
|
||||
portTerminal.setProvinceCode(trimToNull(portTerminal.getProvinceCode()));
|
||||
portTerminal.setProvinceName(trimToNull(portTerminal.getProvinceName()));
|
||||
portTerminal.setCity(trimToEmpty(portTerminal.getCity()));
|
||||
portTerminal.setDistrictCode(trimToNull(portTerminal.getDistrictCode()));
|
||||
portTerminal.setDistrictName(trimToNull(portTerminal.getDistrictName()));
|
||||
@@ -283,6 +303,7 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
}
|
||||
validateImportLength(portTerminal.getName(), NAME_MAX_LENGTH, "港口/码头名称不能超过100字", validationErrors);
|
||||
validateImportLength(portTerminal.getCountry(), REGION_MAX_LENGTH, "国家不能超过50字", validationErrors);
|
||||
validateImportLength(portTerminal.getProvinceName(), REGION_MAX_LENGTH, "所属省份不能超过50字", validationErrors);
|
||||
validateImportLength(portTerminal.getCity(), REGION_MAX_LENGTH, "城市不能超过50字", validationErrors);
|
||||
validateImportLength(portTerminal.getDistrictName(), REGION_MAX_LENGTH, "区县不能超过50字", validationErrors);
|
||||
validateImportLength(portTerminal.getRegionCode(), REGION_CODE_MAX_LENGTH, "行政区划编码不能超过32字", validationErrors);
|
||||
@@ -341,6 +362,9 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
if (Func.isEmpty(portTerminal.getCity())) {
|
||||
addValidationError(validationErrors, "城市不能为空");
|
||||
}
|
||||
if (Func.isEmpty(portTerminal.getProvinceName())) {
|
||||
addValidationError(validationErrors, "所属省份不能为空");
|
||||
}
|
||||
if (Func.isEmpty(portTerminal.getDistrictCode()) && Func.isEmpty(portTerminal.getDistrictName())) {
|
||||
addValidationError(validationErrors, "区县不能为空");
|
||||
return;
|
||||
@@ -410,6 +434,8 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
portTerminal.setCategory(trimToEmpty(portTerminal.getCategory()));
|
||||
portTerminal.setName(trimToEmpty(portTerminal.getName()));
|
||||
portTerminal.setCountry(trimToEmpty(portTerminal.getCountry()));
|
||||
portTerminal.setProvinceCode(trimToNull(portTerminal.getProvinceCode()));
|
||||
portTerminal.setProvinceName(trimToNull(portTerminal.getProvinceName()));
|
||||
portTerminal.setCity(trimToEmpty(portTerminal.getCity()));
|
||||
portTerminal.setDistrictCode(trimToNull(portTerminal.getDistrictCode()));
|
||||
portTerminal.setDistrictName(trimToNull(portTerminal.getDistrictName()));
|
||||
@@ -454,6 +480,8 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
portTerminal.setParentCode(parent.getCode());
|
||||
portTerminal.setParentName(parent.getName());
|
||||
portTerminal.setCountry(inheritParentValue(parent.getCountry(), portTerminal.getCountry()));
|
||||
portTerminal.setProvinceCode(inheritParentValue(parent.getProvinceCode(), portTerminal.getProvinceCode()));
|
||||
portTerminal.setProvinceName(inheritParentValue(parent.getProvinceName(), portTerminal.getProvinceName()));
|
||||
portTerminal.setCity(inheritParentValue(parent.getCity(), portTerminal.getCity()));
|
||||
portTerminal.setDistrictCode(inheritParentValue(parent.getDistrictCode(), portTerminal.getDistrictCode()));
|
||||
portTerminal.setDistrictName(inheritParentValue(parent.getDistrictName(), portTerminal.getDistrictName()));
|
||||
@@ -464,6 +492,18 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
}
|
||||
|
||||
private void fillRegion(PortTerminal portTerminal) {
|
||||
Region selectedProvince = null;
|
||||
if (Func.isNotEmpty(portTerminal.getProvinceCode())) {
|
||||
selectedProvince = regionService.getById(portTerminal.getProvinceCode());
|
||||
}
|
||||
if (Func.isEmpty(selectedProvince) && Func.isNotEmpty(portTerminal.getProvinceName())) {
|
||||
selectedProvince = regionService.getOne(Wrappers.<Region>lambdaQuery()
|
||||
.eq(Region::getName, portTerminal.getProvinceName())
|
||||
.eq(Region::getRegionLevel, 1), false);
|
||||
}
|
||||
if (Func.isEmpty(selectedProvince)) {
|
||||
throw new ServiceException("请选择所属省份");
|
||||
}
|
||||
Region district = null;
|
||||
if (Func.isNotEmpty(portTerminal.getDistrictCode())) {
|
||||
district = regionService.getById(portTerminal.getDistrictCode());
|
||||
@@ -472,6 +512,7 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
if (Func.isNotEmpty(portTerminal.getCity())) {
|
||||
List<Region> cityList = regionService.list(Wrappers.<Region>lambdaQuery()
|
||||
.eq(Region::getName, portTerminal.getCity())
|
||||
.eq(Region::getParentCode, selectedProvince.getCode())
|
||||
.eq(Region::getRegionLevel, 2));
|
||||
for (Region city : cityList) {
|
||||
district = regionService.getOne(Wrappers.<Region>lambdaQuery()
|
||||
@@ -495,9 +536,26 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
if (Func.isEmpty(city)) {
|
||||
throw new ServiceException("区县所属城市不存在");
|
||||
}
|
||||
Region province = regionService.getById(city.getParentCode());
|
||||
if (Func.isEmpty(province)) {
|
||||
throw new ServiceException("城市所属省份不存在");
|
||||
}
|
||||
if (Func.isNotEmpty(portTerminal.getProvinceCode())
|
||||
&& !Objects.equals(portTerminal.getProvinceCode(), province.getCode())) {
|
||||
throw new ServiceException("城市与省份不匹配");
|
||||
}
|
||||
if (Func.isNotEmpty(portTerminal.getProvinceName())
|
||||
&& !Objects.equals(portTerminal.getProvinceName(), province.getName())) {
|
||||
throw new ServiceException("城市与省份不匹配");
|
||||
}
|
||||
if (!Objects.equals(selectedProvince.getCode(), province.getCode())) {
|
||||
throw new ServiceException("城市与省份不匹配");
|
||||
}
|
||||
if (Func.isNotEmpty(portTerminal.getCity()) && !Objects.equals(portTerminal.getCity(), city.getName())) {
|
||||
throw new ServiceException("区县与城市不匹配");
|
||||
}
|
||||
portTerminal.setProvinceCode(province.getCode());
|
||||
portTerminal.setProvinceName(province.getName());
|
||||
portTerminal.setCity(city.getName());
|
||||
portTerminal.setDistrictCode(district.getCode());
|
||||
portTerminal.setDistrictName(district.getName());
|
||||
@@ -517,6 +575,7 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
validateLength(portTerminal.getCode(), CODE_MAX_LENGTH, "编码不能超过30字");
|
||||
validateLength(portTerminal.getName(), NAME_MAX_LENGTH, "港口/码头名称不能超过100字");
|
||||
validateLength(portTerminal.getCountry(), REGION_MAX_LENGTH, "国家不能超过50字");
|
||||
validateLength(portTerminal.getProvinceName(), REGION_MAX_LENGTH, "所属省份不能超过50字");
|
||||
validateLength(portTerminal.getCity(), REGION_MAX_LENGTH, "城市不能超过50字");
|
||||
validateLength(portTerminal.getDistrictName(), REGION_MAX_LENGTH, "区县不能超过50字");
|
||||
validateLength(portTerminal.getRegionCode(), REGION_CODE_MAX_LENGTH, "行政区划编码不能超过32字");
|
||||
@@ -537,6 +596,9 @@ public class PortTerminalServiceImpl extends BaseServiceImpl<PortTerminalMapper,
|
||||
if (Func.isEmpty(portTerminal.getCity())) {
|
||||
throw new ServiceException("城市不能为空");
|
||||
}
|
||||
if (Func.isEmpty(portTerminal.getProvinceCode())) {
|
||||
throw new ServiceException("请选择所属省份");
|
||||
}
|
||||
if (Func.isEmpty(portTerminal.getDistrictCode())) {
|
||||
throw new ServiceException("区县不能为空");
|
||||
}
|
||||
|
||||
+27
-5
@@ -74,7 +74,7 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
|
||||
private static final String SOURCE_MANUAL = "手动";
|
||||
private static final String SOURCE_MANUAL_RECORD = "手动录入";
|
||||
private static final String SOURCE_MANUAL_OLD = "手工导入";
|
||||
private static final String DEFAULT_COUNTRY_CODE = "+86";
|
||||
private static final int PROVINCE_REGION_LEVEL = 1;
|
||||
private static final int STATUS_ENABLED = 1;
|
||||
private static final int STATUS_DISABLED = 2;
|
||||
private static final int CODE_MAX_LENGTH = 20;
|
||||
@@ -169,13 +169,30 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
|
||||
return errorList;
|
||||
}
|
||||
for (RailwayStation railwayStation : railwayStationList) {
|
||||
if (!save(railwayStation)) {
|
||||
prepareImportTarget(railwayStation);
|
||||
if (!saveOrUpdate(railwayStation)) {
|
||||
throw new ServiceException("铁路车站保存失败");
|
||||
}
|
||||
}
|
||||
return errorList;
|
||||
}
|
||||
|
||||
private void prepareImportTarget(RailwayStation railwayStation) {
|
||||
if (Func.isNotEmpty(railwayStation.getId())) {
|
||||
return;
|
||||
}
|
||||
RailwayStation existingRailwayStation = baseMapper.selectByCodeIncludingDeleted(railwayStation.getCode());
|
||||
if (existingRailwayStation == null) {
|
||||
return;
|
||||
}
|
||||
if (!Objects.equals(existingRailwayStation.getIsDeleted(), 1)) {
|
||||
throw new ServiceException("该编码已存在");
|
||||
}
|
||||
baseMapper.restoreById(existingRailwayStation.getId());
|
||||
railwayStation.setId(existingRailwayStation.getId());
|
||||
railwayStation.setIsDeleted(0);
|
||||
}
|
||||
|
||||
private Map<String, Integer> buildImportValueCountMap(List<String> values) {
|
||||
Map<String, Integer> valueCountMap = new HashMap<>();
|
||||
for (String value : values) {
|
||||
@@ -437,9 +454,10 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
|
||||
province = regionService.getById(railwayStation.getProvinceCode());
|
||||
}
|
||||
if (Func.isEmpty(province) && Func.isNotEmpty(railwayStation.getProvinceName())) {
|
||||
String provinceName = normalizeRegionName(railwayStation.getProvinceName());
|
||||
province = regionService.getOne(Wrappers.<Region>lambdaQuery()
|
||||
.eq(Region::getParentCode, DEFAULT_COUNTRY_CODE)
|
||||
.eq(Region::getName, railwayStation.getProvinceName()), false);
|
||||
.eq(Region::getRegionLevel, PROVINCE_REGION_LEVEL)
|
||||
.eq(Region::getName, provinceName), false);
|
||||
}
|
||||
if (Func.isEmpty(province)) {
|
||||
throw new ServiceException("请选择所属省份");
|
||||
@@ -530,7 +548,11 @@ public class RailwayStationServiceImpl extends BaseServiceImpl<RailwayStationMap
|
||||
}
|
||||
|
||||
private String trimToEmpty(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
return value == null ? "" : value.replace("\uFEFF", "").strip();
|
||||
}
|
||||
|
||||
private String normalizeRegionName(String value) {
|
||||
return trimToEmpty(value);
|
||||
}
|
||||
|
||||
private String trimToNull(String value) {
|
||||
|
||||
@@ -1499,6 +1499,8 @@ CREATE TABLE `blade_port_terminal` (
|
||||
`parent_code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '上级港口编码',
|
||||
`parent_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '上级港口名称',
|
||||
`country` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
|
||||
`province_code` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份编码',
|
||||
`province_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份',
|
||||
`city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
|
||||
`district_code` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区县编码',
|
||||
`district_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区县',
|
||||
@@ -1518,7 +1520,7 @@ CREATE TABLE `blade_port_terminal` (
|
||||
UNIQUE INDEX `uk_port_terminal_code`(`code`) USING BTREE,
|
||||
INDEX `idx_port_terminal_parent`(`parent_id`) USING BTREE,
|
||||
INDEX `idx_port_terminal_category`(`category`) USING BTREE,
|
||||
INDEX `idx_port_terminal_region`(`country`, `city`) USING BTREE
|
||||
INDEX `idx_port_terminal_region`(`country`, `province_code`, `city`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '港口码头主数据';
|
||||
|
||||
-- ----------------------------
|
||||
|
||||
@@ -11,6 +11,8 @@ CREATE TABLE `blade_port_terminal` (
|
||||
`parent_code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '上级港口编码',
|
||||
`parent_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '上级港口名称',
|
||||
`country` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
|
||||
`province_code` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份编码',
|
||||
`province_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份',
|
||||
`city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
|
||||
`district_code` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区县编码',
|
||||
`district_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区县',
|
||||
@@ -30,5 +32,5 @@ CREATE TABLE `blade_port_terminal` (
|
||||
UNIQUE INDEX `uk_port_terminal_code`(`code`) USING BTREE,
|
||||
INDEX `idx_port_terminal_parent`(`parent_id`) USING BTREE,
|
||||
INDEX `idx_port_terminal_category`(`category`) USING BTREE,
|
||||
INDEX `idx_port_terminal_region`(`country`, `city`) USING BTREE
|
||||
INDEX `idx_port_terminal_region`(`country`, `province_code`, `city`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '港口码头主数据';
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
-- 港口码头主数据补充所属省份字段
|
||||
ALTER TABLE `blade_port_terminal`
|
||||
ADD COLUMN `province_code` varchar(12) DEFAULT NULL COMMENT '省份编码' AFTER `country`,
|
||||
ADD COLUMN `province_name` varchar(50) DEFAULT NULL COMMENT '省份' AFTER `province_code`;
|
||||
|
||||
UPDATE `blade_port_terminal` pt
|
||||
INNER JOIN `blade_region` district ON district.code = pt.district_code
|
||||
INNER JOIN `blade_region` city ON city.code = district.parent_code
|
||||
INNER JOIN `blade_region` province ON province.code = city.parent_code
|
||||
SET pt.province_code = province.code,
|
||||
pt.province_name = province.name
|
||||
WHERE pt.province_code IS NULL OR pt.province_name IS NULL;
|
||||
|
||||
ALTER TABLE `blade_port_terminal`
|
||||
DROP INDEX `idx_port_terminal_region`,
|
||||
ADD INDEX `idx_port_terminal_region` (`country`, `province_code`, `city`);
|
||||
@@ -1316,6 +1316,8 @@ CREATE TABLE `blade_port_terminal` (
|
||||
`parent_code` varchar(30) DEFAULT NULL COMMENT '上级港口编码',
|
||||
`parent_name` varchar(100) DEFAULT NULL COMMENT '上级港口名称',
|
||||
`country` varchar(50) DEFAULT NULL COMMENT '国家',
|
||||
`province_code` varchar(12) DEFAULT NULL COMMENT '省份编码',
|
||||
`province_name` varchar(50) DEFAULT NULL COMMENT '省份',
|
||||
`city` varchar(50) DEFAULT NULL COMMENT '城市',
|
||||
`district_code` varchar(12) DEFAULT NULL COMMENT '区县编码',
|
||||
`district_name` varchar(50) DEFAULT NULL COMMENT '区县',
|
||||
@@ -1335,7 +1337,7 @@ CREATE TABLE `blade_port_terminal` (
|
||||
UNIQUE KEY `uk_port_terminal_code` (`code`) USING BTREE,
|
||||
KEY `idx_port_terminal_parent` (`parent_id`) USING BTREE,
|
||||
KEY `idx_port_terminal_category` (`category`) USING BTREE,
|
||||
KEY `idx_port_terminal_region` (`country`,`city`) USING BTREE
|
||||
KEY `idx_port_terminal_region` (`country`,`province_code`,`city`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='港口码头主数据';
|
||||
|
||||
-- ----------------------------
|
||||
|
||||
Reference in New Issue
Block a user