diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml index 91a2712..755d3b7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml @@ -13,6 +13,10 @@ SELECT FROM bus_task_region AS btr + WHERE btr.REGION_RESULT IS NOT NULL + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml index 91a2712..755d3b7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml @@ -13,6 +13,10 @@ SELECT FROM bus_task_region AS btr + WHERE btr.REGION_RESULT IS NOT NULL + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml index 561ea8a..179a209 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml @@ -15,6 +15,9 @@ FROM bus_task_route AS btr WHERE btr.ROBOT_ID = #{robotId} + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml index 91a2712..755d3b7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml @@ -13,6 +13,10 @@ SELECT FROM bus_task_region AS btr + WHERE btr.REGION_RESULT IS NOT NULL + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml index 561ea8a..179a209 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml @@ -15,6 +15,9 @@ FROM bus_task_route AS btr WHERE btr.ROBOT_ID = #{robotId} + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java index 42751f5..b167fe7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java @@ -4,6 +4,8 @@ import com.casic.missiles.modular.system.dto.RegionPlanDTO; import com.casic.missiles.modular.system.model.RegionPlan; +import java.util.Map; + /** * 算法规划结果 服务类 * @@ -11,9 +13,25 @@ */ public interface IRegionPlanService extends IService { /** - * 获取最新的区域规划结果 + * 获取最新的区域覆盖规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlanDTO} */ - RegionPlanDTO selectCurrentPlan(); + RegionPlanDTO selectLastRegionPlan(String planTime); + + /** + * 获取最新的区域规划结果 + * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 + * @return {@link RegionPlanDTO} + */ + RegionPlanDTO selectCurrentPlan(String planTime); + + /** + * 获取所有路线时间的列表 + * + * @return {@link Map} + */ + Map selectTimeList(); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml index 91a2712..755d3b7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml @@ -13,6 +13,10 @@ SELECT FROM bus_task_region AS btr + WHERE btr.REGION_RESULT IS NOT NULL + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml index 561ea8a..179a209 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml @@ -15,6 +15,9 @@ FROM bus_task_route AS btr WHERE btr.ROBOT_ID = #{robotId} + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java index 42751f5..b167fe7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java @@ -4,6 +4,8 @@ import com.casic.missiles.modular.system.dto.RegionPlanDTO; import com.casic.missiles.modular.system.model.RegionPlan; +import java.util.Map; + /** * 算法规划结果 服务类 * @@ -11,9 +13,25 @@ */ public interface IRegionPlanService extends IService { /** - * 获取最新的区域规划结果 + * 获取最新的区域覆盖规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlanDTO} */ - RegionPlanDTO selectCurrentPlan(); + RegionPlanDTO selectLastRegionPlan(String planTime); + + /** + * 获取最新的区域规划结果 + * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 + * @return {@link RegionPlanDTO} + */ + RegionPlanDTO selectCurrentPlan(String planTime); + + /** + * 获取所有路线时间的列表 + * + * @return {@link Map} + */ + Map selectTimeList(); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java index 0e82b0f..a52c396 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java @@ -13,8 +13,9 @@ /** * 获取最新的规划结果,包括区域和路线 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RouteModel} */ - RouteModel selectCurrentPlan(String robotId); + RouteModel selectCurrentPlan(String robotId, String planTime); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml index 91a2712..755d3b7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml @@ -13,6 +13,10 @@ SELECT FROM bus_task_region AS btr + WHERE btr.REGION_RESULT IS NOT NULL + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml index 561ea8a..179a209 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml @@ -15,6 +15,9 @@ FROM bus_task_route AS btr WHERE btr.ROBOT_ID = #{robotId} + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java index 42751f5..b167fe7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java @@ -4,6 +4,8 @@ import com.casic.missiles.modular.system.dto.RegionPlanDTO; import com.casic.missiles.modular.system.model.RegionPlan; +import java.util.Map; + /** * 算法规划结果 服务类 * @@ -11,9 +13,25 @@ */ public interface IRegionPlanService extends IService { /** - * 获取最新的区域规划结果 + * 获取最新的区域覆盖规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlanDTO} */ - RegionPlanDTO selectCurrentPlan(); + RegionPlanDTO selectLastRegionPlan(String planTime); + + /** + * 获取最新的区域规划结果 + * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 + * @return {@link RegionPlanDTO} + */ + RegionPlanDTO selectCurrentPlan(String planTime); + + /** + * 获取所有路线时间的列表 + * + * @return {@link Map} + */ + Map selectTimeList(); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java index 0e82b0f..a52c396 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java @@ -13,8 +13,9 @@ /** * 获取最新的规划结果,包括区域和路线 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RouteModel} */ - RouteModel selectCurrentPlan(String robotId); + RouteModel selectCurrentPlan(String robotId, String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java index c3533e5..ac53bd9 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java @@ -9,10 +9,13 @@ import com.casic.missiles.modular.system.model.RegionPlan; import com.casic.missiles.modular.system.service.IRegionPlanService; import com.casic.missiles.modular.system.service.IRoutePlanService; +import com.casic.missiles.modular.system.utils.TimeUtil; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author a203 @@ -27,10 +30,25 @@ } @Override - public RegionPlanDTO selectCurrentPlan() { + public RegionPlanDTO selectLastRegionPlan(String planTime) { RegionPlanDTO regionPlanDTO = new RegionPlanDTO(); - RegionPlan region = this.baseMapper.selectLastRegion(); + RegionPlan region = this.baseMapper.selectLastRegion(planTime); + regionPlanDTO.setRegionId(region.getId()); + regionPlanDTO.setPlanTime(region.getPlanTime()); + + String regionResult = region.getRegionResult(); + RegionModel regionModel = JSON.parseObject(regionResult, new TypeReference() { + }); + regionPlanDTO.setRegionResult(regionModel); + return regionPlanDTO; + } + + @Override + public RegionPlanDTO selectCurrentPlan(String planTime) { + RegionPlanDTO regionPlanDTO = new RegionPlanDTO(); + + RegionPlan region = this.baseMapper.selectLastRegion(planTime); regionPlanDTO.setRegionId(region.getId()); regionPlanDTO.setPlanTime(region.getPlanTime()); @@ -39,7 +57,7 @@ }); regionPlanDTO.setRegionResult(regionModel); - //解析得到robotId然后再去查route表 + //解析得到robotId然后再去查route表,返回最接近时间点的路径规划 String robotIds = regionModel.getRobotIds(); List routeResults = new ArrayList<>(); if ("".equals(robotIds)) { @@ -47,7 +65,7 @@ } else if (!robotIds.contains(",")) { RegionPlanDTO.RouteResult routeResult = new RegionPlanDTO.RouteResult(); routeResult.setRobotId(robotIds); - routeResult.setRouteModel(routePlanService.selectCurrentPlan(robotIds)); + routeResult.setRouteModel(routePlanService.selectCurrentPlan(robotIds, planTime)); routeResults.add(routeResult); regionPlanDTO.setRouteResult(routeResults); @@ -56,7 +74,7 @@ for (String id : split) { RegionPlanDTO.RouteResult routeResult = new RegionPlanDTO.RouteResult(); routeResult.setRobotId(id); - routeResult.setRouteModel(routePlanService.selectCurrentPlan(id)); + routeResult.setRouteModel(routePlanService.selectCurrentPlan(id, planTime)); routeResults.add(routeResult); regionPlanDTO.setRouteResult(routeResults); @@ -64,4 +82,15 @@ } return regionPlanDTO; } + + @Override + public Map selectTimeList() { + Map timeMap = new HashMap<>(1); + for (RegionPlan plan : list()) { + String planTime = plan.getPlanTime(); + timeMap.put("id", plan.getId()); + timeMap.put("time", TimeUtil.timeToId(planTime)); + } + return timeMap; + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java index eced22d..a37b70b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -26,6 +26,12 @@ @TableField(value = "ROBOT_ID") private Integer robotId; + /** + * 机器人模型类型 + */ + @TableField(value = "MODEL_TYPE") + private String modelType; + @TableField(value = "RECEIVE_TIME") private String receiveTime; diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java index 1ab647b..b0b2408 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -37,38 +37,38 @@ * 正东为0° ,东偏北为正 * 例如:北北东就是,67.5度 */ - public static Float toAngle(String dir) { + public static Double toAngle(String dir) { if (E.equals(dir)) { - return 0f; + return 0.0; } else if (S.equals(dir)) { - return 90f; + return 90.0; } else if (W.equals(dir)) { - return 180f; + return 180.0; } else if (N.equals(dir)) { - return -90f; + return -90.0; } else if (NE.equals(dir) || EN.equals(dir)) { - return 45f; + return 45.0; } else if (NW.equals(dir) || WN.equals(dir)) { - return 135f; + return 135.0; } else if (WS.equals(dir) || SW.equals(dir)) { - return -135f; + return -135.0; } else if (ES.equals(dir) || SE.equals(dir)) { - return -45f; + return -45.0; } else if (EEN.equals(dir) || ENE.equals(dir)) { - return 22.5f; + return 22.5; } else if (NNW.equals(dir) || NWN.equals(dir)) { - return 112.5f; + return 112.5; } else if (WNW.equals(dir) || WWN.equals(dir)) { - return 157.5f; + return 157.5; } else if (EES.equals(dir) || ESE.equals(dir)) { - return -22.5f; + return -22.5; } else if (SES.equals(dir) || SSE.equals(dir)) { - return -67.5f; + return -67.5; } else if (WWS.equals(dir) || WSW.equals(dir)) { - return -157.5f; + return -157.5; } else if (SWS.equals(dir) || SSW.equals(dir)) { - return -112.5f; + return -112.5; } - return 0f; + return 0.0; } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java index ae31c08..88e19f0 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/TimeUtil.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.utils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -9,8 +10,26 @@ */ public class TimeUtil { + static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); + static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); + public static String getCurrentTime() { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - return dateFormat.format(new Date()); + synchronized (DATE_FORMAT) { + return DATE_FORMAT.format(new Date()); + } + } + + public static String timeToId(String time) { + synchronized (DATE_FORMAT) { + try { + Date date = DATE_FORMAT.parse(time); + synchronized (TIME_FORMAT) { + return TIME_FORMAT.format(date); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return ""; + } } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml index a785d94..9517a86 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dao/mapping/RobotMapper.xml @@ -6,6 +6,7 @@ ID AS id, ROBOT_ID AS robotId, + MODEL_TYPE AS modelType, RECEIVE_TIME AS receiveTime, LNG AS lng, LAT AS lat, diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index 5cfc5d9..80f6e1a 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -27,7 +27,7 @@ /** * 台风风速 */ - private Float speed; + private Double speed; /** * 台风7级风力半径 @@ -47,11 +47,11 @@ /** * 台风整体移动速度,单位【公里/小时】 */ - private Float moveSpeed; + private Double moveSpeed; /** * 台风未来移动方向 */ - private Float moveDirection; + private Double moveDirection; /** * 机器人与台风中心距离 @@ -72,16 +72,16 @@ * 构建台风属性默认值 */ public EnvironmentDTO() { - this.typhoonLng = 0.0; - this.typhoonLat = 0.0; + this.typhoonLng = 0.00; + this.typhoonLat = 0.00; this.typhoonPower = 0; - this.speed = 0f; + this.speed = 0.00; this.radius7 = ""; this.radius10 = ""; this.radius12 = ""; - this.moveSpeed = 0f; - this.moveDirection = 0f; - this.distance = 0.0; - this.azimuth = 0.0; + this.moveSpeed = 0.00; + this.moveDirection = 0.00; + this.distance = 0.00; + this.azimuth = 0.00; } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java index 38e5e8c..8fa7f2c 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -14,6 +14,11 @@ private Integer robotId; /** + * 机器人模型类型 + */ + private String modelType; + + /** * 位置经度:109.322222 */ private Double lng; @@ -93,8 +98,9 @@ */ private String targetHertz; - public RobotInfoDTO(RobotInfo data) { + public RobotInfoDTO(RobotInfo data, String modelType) { this.robotId = data.getRobotId(); + this.modelType = modelType; this.lng = data.getLng(); this.lat = data.getLat(); this.navigateState = data.getNavigateState(); diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java index 54164a0..3dcab19 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.RobotMapper; import com.casic.missiles.modular.system.dto.RobotInfoDTO; import com.casic.missiles.modular.system.model.RobotInfo; @@ -21,8 +22,10 @@ @Service public class RobotServiceImpl extends ServiceImpl implements IRobotService { - public RobotServiceImpl() { + private final AbstractDictService dictService; + public RobotServiceImpl(AbstractDictService dictService) { + this.dictService = dictService; } @Override @@ -31,7 +34,6 @@ } /** - * TODO - 查最新的数据 * 查询机器人列表-简单列表数据 * * @return {@link List} @@ -44,6 +46,7 @@ Map robotMap = new HashMap<>(7); robotMap.put("robotId", String.valueOf(robotId)); + robotMap.put("modelType", robotDetail.getModelType()); robotMap.put("lng", String.valueOf(robotDetail.getLng())); robotMap.put("lat", String.valueOf(robotDetail.getLat())); robotMap.put("navigateState", robotDetail.getNavigateState()); @@ -66,7 +69,8 @@ public RobotInfoDTO robotDetail(String robotId) { RobotInfo robotInfo = this.baseMapper.selectLastOne(robotId); if (robotInfo != null) { - return new RobotInfoDTO(robotInfo); + String modelType = robotInfo.getModelType(); + return new RobotInfoDTO(robotInfo, getRobotType(modelType)); } return null; } @@ -82,10 +86,15 @@ List robotInfos = this.baseMapper.selectList(queryWrapper); List dtoList = new ArrayList<>(); for (RobotInfo robotInfo : robotInfos) { - dtoList.add(new RobotInfoDTO(robotInfo)); + String modelType = robotInfo.getModelType(); + dtoList.add(new RobotInfoDTO(robotInfo, getRobotType(modelType))); } result.add(dtoList); } return result; } + + private String getRobotType(String value) { + return dictService.getDictNameByCode("modelType", value); + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index e693d95..4974336 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -44,11 +44,11 @@ List points = typhoon.getPoints(); TyphoonDetailDTO.PointBean pointBean = points.get(points.size() - 1); dto.setTyphoonPower(pointBean.getPower()); - dto.setSpeed(Float.valueOf(pointBean.getSpeed())); + dto.setSpeed(Double.valueOf(pointBean.getSpeed())); dto.setRadius7(pointBean.getRadius7()); dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); - dto.setMoveSpeed(Float.valueOf(pointBean.getMoveSpeed())); + dto.setMoveSpeed(Double.valueOf(pointBean.getMoveSpeed())); dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index e0e7d4c..7ce9767 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; + /** * @author a203 */ @@ -22,12 +24,35 @@ } /** - * 路线规划-当前路线 + * 获取所有路线时间的列表 + */ + @GetMapping(value = "/timeList") + @ResponseBody + public Object timeList() { + Map timeMap = regionPlanService.selectTimeList(); + return ResponseData.success(timeMap); + } + + /** + * 算法规划 */ @GetMapping(value = "/currentPlan") @ResponseBody - public Object regionDetail() { - RegionPlanDTO regionPlanDTO = regionPlanService.selectCurrentPlan(); + public Object regionDetail(String type, String planTime) { + RegionPlanDTO regionPlanDTO = null; + if (type == null || "".equals(type)) { + regionPlanDTO = regionPlanService.selectCurrentPlan(planTime); + } else { + if ("1".equals(type)) { + //只查区域 + regionPlanDTO = regionPlanService.selectLastRegionPlan(planTime); + } else if ("2".equals(type)) { + //TODO 只查路线-待定 + + } else { + return ResponseData.error("Error Type"); + } + } return ResponseData.success(regionPlanDTO); } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java index 236aea5..da4f341 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RegionPlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.system.model.RegionPlan; +import org.apache.ibatis.annotations.Param; /** * @author a203 @@ -10,7 +11,8 @@ /** * 获取最新的规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlan} */ - RegionPlan selectLastRegion(); + RegionPlan selectLastRegion(@Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java index af8111a..ee912a7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/RoutePlanMapper.java @@ -12,8 +12,11 @@ /** * 获取最新的规划结果 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RoutePlan} */ - RoutePlan selectLastRoute(@Param("robotId") String robotId); + RoutePlan selectLastRoute( + @Param("robotId") String robotId, + @Param("planTime") String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml index 91a2712..755d3b7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RegionPlanMapper.xml @@ -13,6 +13,10 @@ SELECT FROM bus_task_region AS btr + WHERE btr.REGION_RESULT IS NOT NULL + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml index 561ea8a..179a209 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dao/mapping/RoutePlanMapper.xml @@ -15,6 +15,9 @@ FROM bus_task_route AS btr WHERE btr.ROBOT_ID = #{robotId} + + AND DATE_FORMAT(btr.PLAN_TIME,'%Y%m%d%H%i%s') = #{planTime} + ORDER BY btr.PLAN_TIME DESC LIMIT 1 diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java index 42751f5..b167fe7 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRegionPlanService.java @@ -4,6 +4,8 @@ import com.casic.missiles.modular.system.dto.RegionPlanDTO; import com.casic.missiles.modular.system.model.RegionPlan; +import java.util.Map; + /** * 算法规划结果 服务类 * @@ -11,9 +13,25 @@ */ public interface IRegionPlanService extends IService { /** - * 获取最新的区域规划结果 + * 获取最新的区域覆盖规划结果 * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RegionPlanDTO} */ - RegionPlanDTO selectCurrentPlan(); + RegionPlanDTO selectLastRegionPlan(String planTime); + + /** + * 获取最新的区域规划结果 + * + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 + * @return {@link RegionPlanDTO} + */ + RegionPlanDTO selectCurrentPlan(String planTime); + + /** + * 获取所有路线时间的列表 + * + * @return {@link Map} + */ + Map selectTimeList(); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java index 0e82b0f..a52c396 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/IRoutePlanService.java @@ -13,8 +13,9 @@ /** * 获取最新的规划结果,包括区域和路线 * - * @param robotId 机器人ID + * @param robotId 机器人ID + * @param planTime 如果空就返回最新的规划结果,不为空就返回指定时间的规划结果 * @return {@link RouteModel} */ - RouteModel selectCurrentPlan(String robotId); + RouteModel selectCurrentPlan(String robotId, String planTime); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java index c3533e5..ac53bd9 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RegionPlanServiceImpl.java @@ -9,10 +9,13 @@ import com.casic.missiles.modular.system.model.RegionPlan; import com.casic.missiles.modular.system.service.IRegionPlanService; import com.casic.missiles.modular.system.service.IRoutePlanService; +import com.casic.missiles.modular.system.utils.TimeUtil; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author a203 @@ -27,10 +30,25 @@ } @Override - public RegionPlanDTO selectCurrentPlan() { + public RegionPlanDTO selectLastRegionPlan(String planTime) { RegionPlanDTO regionPlanDTO = new RegionPlanDTO(); - RegionPlan region = this.baseMapper.selectLastRegion(); + RegionPlan region = this.baseMapper.selectLastRegion(planTime); + regionPlanDTO.setRegionId(region.getId()); + regionPlanDTO.setPlanTime(region.getPlanTime()); + + String regionResult = region.getRegionResult(); + RegionModel regionModel = JSON.parseObject(regionResult, new TypeReference() { + }); + regionPlanDTO.setRegionResult(regionModel); + return regionPlanDTO; + } + + @Override + public RegionPlanDTO selectCurrentPlan(String planTime) { + RegionPlanDTO regionPlanDTO = new RegionPlanDTO(); + + RegionPlan region = this.baseMapper.selectLastRegion(planTime); regionPlanDTO.setRegionId(region.getId()); regionPlanDTO.setPlanTime(region.getPlanTime()); @@ -39,7 +57,7 @@ }); regionPlanDTO.setRegionResult(regionModel); - //解析得到robotId然后再去查route表 + //解析得到robotId然后再去查route表,返回最接近时间点的路径规划 String robotIds = regionModel.getRobotIds(); List routeResults = new ArrayList<>(); if ("".equals(robotIds)) { @@ -47,7 +65,7 @@ } else if (!robotIds.contains(",")) { RegionPlanDTO.RouteResult routeResult = new RegionPlanDTO.RouteResult(); routeResult.setRobotId(robotIds); - routeResult.setRouteModel(routePlanService.selectCurrentPlan(robotIds)); + routeResult.setRouteModel(routePlanService.selectCurrentPlan(robotIds, planTime)); routeResults.add(routeResult); regionPlanDTO.setRouteResult(routeResults); @@ -56,7 +74,7 @@ for (String id : split) { RegionPlanDTO.RouteResult routeResult = new RegionPlanDTO.RouteResult(); routeResult.setRobotId(id); - routeResult.setRouteModel(routePlanService.selectCurrentPlan(id)); + routeResult.setRouteModel(routePlanService.selectCurrentPlan(id, planTime)); routeResults.add(routeResult); regionPlanDTO.setRouteResult(routeResults); @@ -64,4 +82,15 @@ } return regionPlanDTO; } + + @Override + public Map selectTimeList() { + Map timeMap = new HashMap<>(1); + for (RegionPlan plan : list()) { + String planTime = plan.getPlanTime(); + timeMap.put("id", plan.getId()); + timeMap.put("time", TimeUtil.timeToId(planTime)); + } + return timeMap; + } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RoutePlanServiceImpl.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RoutePlanServiceImpl.java index 79e2c33..e737a4e 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RoutePlanServiceImpl.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/RoutePlanServiceImpl.java @@ -7,17 +7,34 @@ import com.casic.missiles.modular.system.model.RouteModel; import com.casic.missiles.modular.system.model.RoutePlan; import com.casic.missiles.modular.system.service.IRoutePlanService; +import com.casic.missiles.modular.system.utils.TimeUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * @author a203 */ +@Slf4j @Service public class RoutePlanServiceImpl extends ServiceImpl implements IRoutePlanService { @Override - public RouteModel selectCurrentPlan(String robotId) { - RoutePlan routePlan = this.baseMapper.selectLastRoute(robotId); + public RouteModel selectCurrentPlan(String robotId, String planTime) { + //20211029111401 + if (planTime != null && !"".equals(planTime)) { + //判断planTime附近最接近的时间 + for (RoutePlan plan : list()) { + String time = TimeUtil.timeToId(plan.getPlanTime()); + //2021-10-29 11:08:50 + if (Math.abs(Long.parseLong(planTime) - Long.parseLong(time)) < 60) { + planTime = time; + } + } + } + RoutePlan routePlan = this.baseMapper.selectLastRoute(robotId, planTime); + if (routePlan == null) { + return null; + } return JSON.parseObject(routePlan.getRouteResult(), new TypeReference() { }); }