航线导入字段逻辑优化

This commit is contained in:
sdy 2026-06-24 15:28:55 +08:00
parent 00687e6718
commit c2867200b7
7 changed files with 21 additions and 20 deletions

View File

@ -123,9 +123,9 @@ public class RouteDTO implements Serializable {
private String expectFlightTime; private String expectFlightTime;
@JsonProperty(required = true) @JsonProperty(required = true)
@NotNull(message = "{route.is.accurate.import.require}", groups = {AddGroup.class, UpdateGroup.class}) @NotNull(message = "{route.is.accurate.import.require}", groups = {UpdateGroup.class})
@Schema(description = "是否精准导入") @Schema(description = "导入类型 0不是导入 1普通导入 2精准导入")
private Boolean isAccurateImport; private Integer importType;
@Schema(description = "更新时间") @Schema(description = "更新时间")
@JsonProperty(access = JsonProperty.Access.READ_ONLY) @JsonProperty(access = JsonProperty.Access.READ_ONLY)

View File

@ -26,9 +26,8 @@ public class UploadRouteDTO {
// @Schema(description = "机库SN") // @Schema(description = "机库SN")
private String dockSn; private String dockSn;
@NotNull(message = "是否精准导入不能为空") @NotNull(message = "导入类型 1普通导入 2精准导入")
// @Schema(description = "是否精准导入 true false") private Integer importType;
private Boolean accurateImport;
// @Schema(description = "返航高度") // @Schema(description = "返航高度")
private Double globalRthHeight; private Double globalRthHeight;
@ -41,7 +40,7 @@ public class UploadRouteDTO {
@Schema(hidden = true) @Schema(hidden = true)
@AssertTrue(message = "返航高度不能为空") @AssertTrue(message = "返航高度不能为空")
public boolean isGlobalRthHeightValid() { public boolean isGlobalRthHeightValid() {
if (accurateImport) { if (importType == 2) {
return globalRthHeight != null; return globalRthHeight != null;
} }
return true; return true;

View File

@ -102,9 +102,9 @@ public class RouteEntity extends BaseEntity {
*/ */
private String expectFlightTime; private String expectFlightTime;
/** /**
* 是否精准导入 * 导入类型 0不是导入 1普通导入 2精准导入
*/ */
private Boolean isAccurateImport; private Integer importType;
/** /**
* 删除标志 * 删除标志
*/ */

View File

@ -24,9 +24,9 @@ public class Q20RouteUploadDTO {
@JsonProperty(value = "flight_height", access = WRITE_ONLY) @JsonProperty(value = "flight_height", access = WRITE_ONLY)
private Float flightHeight; private Float flightHeight;
@Schema(description = "是否精准导入,仅本地存储用,不下发给设备") @Schema(description = "导入类型 0不是导入 1普通导入 2精准导入")
@JsonProperty(value = "accurate_import", access = WRITE_ONLY) @JsonProperty(value = "import_type", access = WRITE_ONLY)
private Boolean accurateImport; private Integer importType;
@Schema(description = "航线ID存储用") @Schema(description = "航线ID存储用")
private String wayline; private String wayline;

View File

@ -442,7 +442,7 @@ public class Q20RouteServiceImpl implements Q20RouteService {
// 前端传入的可选覆盖字段 // 前端传入的可选覆盖字段
if (dto.getFlightHeight() != null) route.setFlightHeight(dto.getFlightHeight().doubleValue()); if (dto.getFlightHeight() != null) route.setFlightHeight(dto.getFlightHeight().doubleValue());
if (dto.getAccurateImport() != null) route.setIsAccurateImport(dto.getAccurateImport()); if (dto.getImportType() != null) route.setImportType(dto.getImportType());
// 补全 NOT NULL 字段默认值 // 补全 NOT NULL 字段默认值
if (route.getFlightHeight() == null) route.setFlightHeight(100.0); if (route.getFlightHeight() == null) route.setFlightHeight(100.0);
@ -454,7 +454,7 @@ public class Q20RouteServiceImpl implements Q20RouteService {
if (route.getFlyToWaylineMode() == null) route.setFlyToWaylineMode("safely"); if (route.getFlyToWaylineMode() == null) route.setFlyToWaylineMode("safely");
if (route.getTotalDistance() == null) route.setTotalDistance(0.0); if (route.getTotalDistance() == null) route.setTotalDistance(0.0);
if (route.getExpectFlightTime() == null) route.setExpectFlightTime("0"); if (route.getExpectFlightTime() == null) route.setExpectFlightTime("0");
if (route.getIsAccurateImport() == null) route.setIsAccurateImport(false); if (route.getImportType() == null) route.setImportType(0);
routeDao.insert(route); routeDao.insert(route);
Long routeId = route.getId(); Long routeId = route.getId();

View File

@ -106,6 +106,7 @@ public class RouteServiceImpl extends CrudServiceImpl<RouteDao, RouteEntity, Rou
routeEntity.setWaypointNum(routeWaypointList.size()); routeEntity.setWaypointNum(routeWaypointList.size());
String imgUrl = routeDTO.getImgUrl(); String imgUrl = routeDTO.getImgUrl();
routeEntity.setImgUrl(imgUrl.replaceAll(BusinessConstant.IMAGE_PATH, "")); routeEntity.setImgUrl(imgUrl.replaceAll(BusinessConstant.IMAGE_PATH, ""));
routeEntity.setImportType(0);
baseDao.insert(routeEntity); baseDao.insert(routeEntity);
//保存航点信息 //保存航点信息
@ -235,13 +236,14 @@ public class RouteServiceImpl extends CrudServiceImpl<RouteDao, RouteEntity, Rou
//判断航线名称是否已存在 //判断航线名称是否已存在
checkRouteExist(null, name); checkRouteExist(null, name);
Integer importType = dto.getImportType();
RouteDTO routeDTO = null; RouteDTO routeDTO = null;
try { try {
Map<String, byte[]> kmzInfo = KmzUtils.extractKmzAsBytes(file.getInputStream()); Map<String, byte[]> kmzInfo = KmzUtils.extractKmzAsBytes(file.getInputStream());
byte[] template = kmzInfo.get("template.kml"); byte[] template = kmzInfo.get("template.kml");
routeDTO = WpmlKmlParser.parseKmlFile(template, dto.getAccurateImport()); routeDTO = WpmlKmlParser.parseKmlFile(template, importType == 2);
byte[] waylines = kmzInfo.get("waylines.wpml"); byte[] waylines = kmzInfo.get("waylines.wpml");
WpmlKmlParser.parseWpmlFile(waylines, routeDTO, dto.getAccurateImport()); WpmlKmlParser.parseWpmlFile(waylines, routeDTO, importType == 2);
log.debug("解析结果:{}", JsonUtils.toJsonString(routeDTO)); log.debug("解析结果:{}", JsonUtils.toJsonString(routeDTO));
} catch (Exception e) { } catch (Exception e) {
@ -251,7 +253,7 @@ public class RouteServiceImpl extends CrudServiceImpl<RouteDao, RouteEntity, Rou
} }
routeDTO.setRouteName(name); routeDTO.setRouteName(name);
if (dto.getAccurateImport()) { if (importType == 2) {
routeDTO.setGlobalRthHeight(dto.getGlobalRthHeight()); routeDTO.setGlobalRthHeight(dto.getGlobalRthHeight());
} }
String path = dto.getDockSn() + "/" + originalFilename; String path = dto.getDockSn() + "/" + originalFilename;
@ -262,7 +264,7 @@ public class RouteServiceImpl extends CrudServiceImpl<RouteDao, RouteEntity, Rou
throw new RenException(ErrorCode.OSS_UPLOAD_FILE_ERROR); throw new RenException(ErrorCode.OSS_UPLOAD_FILE_ERROR);
} }
routeDTO.setKmzUrl(BusinessConstant.ROUTE_KMZ_BUCKET + "/" + path); routeDTO.setKmzUrl(BusinessConstant.ROUTE_KMZ_BUCKET + "/" + path);
routeDTO.setIsAccurateImport(dto.getAccurateImport()); routeDTO.setImportType(importType);
routeDTO.setDockSn(dto.getDockSn()); routeDTO.setDockSn(dto.getDockSn());
//航点动作处理 //航点动作处理

View File

@ -412,7 +412,7 @@ CREATE TABLE "public"."bus_route"
"waypoint_num" int4, "waypoint_num" int4,
"total_distance" float4 NOT NULL, "total_distance" float4 NOT NULL,
"expect_flight_time" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, "expect_flight_time" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,
"is_accurate_import" bool NOT NULL, "import_type" int2 NOT NULL,
"del_flag" int2 DEFAULT 0, "del_flag" int2 DEFAULT 0,
"creator" int8, "creator" int8,
"create_date" timestamp(6), "create_date" timestamp(6),
@ -458,7 +458,7 @@ ON COLUMN "public"."bus_route"."total_distance" IS '总距离';
COMMENT COMMENT
ON COLUMN "public"."bus_route"."expect_flight_time" IS '预计飞行时长'; ON COLUMN "public"."bus_route"."expect_flight_time" IS '预计飞行时长';
COMMENT COMMENT
ON COLUMN "public"."bus_route"."is_accurate_import" IS '是否精准导入'; ON COLUMN "public"."bus_route"."import_type" IS '导入类型 0不是导入 1普通导入 2精准导入';
COMMENT COMMENT
ON COLUMN "public"."bus_route"."del_flag" IS '删除标志'; ON COLUMN "public"."bus_route"."del_flag" IS '删除标志';
COMMENT COMMENT