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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java new file mode 100644 index 0000000..38e5e8c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.model.RobotInfo; +import lombok.Data; + +/** + * @author a203 + */ +@Data +public class RobotInfoDTO { + /** + * 机器人ID:3 + */ + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + private Double lat; + + /** + * 航行状态:待机 + */ + private String navigateState; + + /** + * 仪表电压:23.5 + */ + private Float instrumentV; + + /** + * 动力电压:239 + */ + private Float powerV; + + /** + * 仪表电余量:95 + */ + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + private Float rollAngle; + + /** + * 航向角:124.66 + */ + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + private Float position; + + /** + * 探测状态:无目标 + */ + private String detectStatus; + + /** + * 目标距离:1.56km + */ + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + private String targetHertz; + + public RobotInfoDTO(RobotInfo data) { + this.robotId = data.getRobotId(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.navigateState = data.getNavigateState(); + this.instrumentV = data.getInstrumentV(); + this.powerV = data.getPowerV(); + this.instrumentE = data.getInstrumentE(); + this.powerE = data.getPowerE(); + this.pitchAngle = data.getPitchAngle(); + this.rollAngle = data.getRollAngle(); + this.headingAngle = data.getHeadingAngle(); + this.buoyancy = data.getBuoyancy(); + this.position = data.getPosition(); + this.detectStatus = data.getDetectStatus(); + this.targetDistance = data.getTargetDistance(); + this.targetDirection = data.getTargetDirection(); + this.targetHertz = data.getTargetHertz(); + } +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java new file mode 100644 index 0000000..38e5e8c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.model.RobotInfo; +import lombok.Data; + +/** + * @author a203 + */ +@Data +public class RobotInfoDTO { + /** + * 机器人ID:3 + */ + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + private Double lat; + + /** + * 航行状态:待机 + */ + private String navigateState; + + /** + * 仪表电压:23.5 + */ + private Float instrumentV; + + /** + * 动力电压:239 + */ + private Float powerV; + + /** + * 仪表电余量:95 + */ + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + private Float rollAngle; + + /** + * 航向角:124.66 + */ + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + private Float position; + + /** + * 探测状态:无目标 + */ + private String detectStatus; + + /** + * 目标距离:1.56km + */ + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + private String targetHertz; + + public RobotInfoDTO(RobotInfo data) { + this.robotId = data.getRobotId(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.navigateState = data.getNavigateState(); + this.instrumentV = data.getInstrumentV(); + this.powerV = data.getPowerV(); + this.instrumentE = data.getInstrumentE(); + this.powerE = data.getPowerE(); + this.pitchAngle = data.getPitchAngle(); + this.rollAngle = data.getRollAngle(); + this.headingAngle = data.getHeadingAngle(); + this.buoyancy = data.getBuoyancy(); + this.position = data.getPosition(); + this.detectStatus = data.getDetectStatus(); + this.targetDistance = data.getTargetDistance(); + this.targetDirection = data.getTargetDirection(); + this.targetHertz = data.getTargetHertz(); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java index b820cce..6a4ac02 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java @@ -67,8 +67,8 @@ * 台风类型-热带风暴/强台风... */ private String type; - private String lng; - private String lat; + private Double lng; + private Double 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java new file mode 100644 index 0000000..38e5e8c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.model.RobotInfo; +import lombok.Data; + +/** + * @author a203 + */ +@Data +public class RobotInfoDTO { + /** + * 机器人ID:3 + */ + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + private Double lat; + + /** + * 航行状态:待机 + */ + private String navigateState; + + /** + * 仪表电压:23.5 + */ + private Float instrumentV; + + /** + * 动力电压:239 + */ + private Float powerV; + + /** + * 仪表电余量:95 + */ + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + private Float rollAngle; + + /** + * 航向角:124.66 + */ + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + private Float position; + + /** + * 探测状态:无目标 + */ + private String detectStatus; + + /** + * 目标距离:1.56km + */ + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + private String targetHertz; + + public RobotInfoDTO(RobotInfo data) { + this.robotId = data.getRobotId(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.navigateState = data.getNavigateState(); + this.instrumentV = data.getInstrumentV(); + this.powerV = data.getPowerV(); + this.instrumentE = data.getInstrumentE(); + this.powerE = data.getPowerE(); + this.pitchAngle = data.getPitchAngle(); + this.rollAngle = data.getRollAngle(); + this.headingAngle = data.getHeadingAngle(); + this.buoyancy = data.getBuoyancy(); + this.position = data.getPosition(); + this.detectStatus = data.getDetectStatus(); + this.targetDistance = data.getTargetDistance(); + this.targetDirection = data.getTargetDirection(); + this.targetHertz = data.getTargetHertz(); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java index b820cce..6a4ac02 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java @@ -67,8 +67,8 @@ * 台风类型-热带风暴/强台风... */ private String type; - private String lng; - private String lat; + private Double lng; + private Double lat; /** * 台风登陆细节 */ diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java index a9bf9f3..fa6ccd1 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java @@ -207,8 +207,8 @@ private String landaddress; private String strong; - private String lng; - private String lat; + private Double lng; + private Double lat; private String info; private String landtime; @@ -228,19 +228,19 @@ this.strong = strong; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } @@ -295,9 +295,9 @@ private String movespeed; private String radius12; private String power; - private String lng; + private Double lng; private String movedirection; - private String lat; + private Double lat; private String radius7; private String jl; private String ckposition; @@ -366,11 +366,11 @@ this.power = power; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } @@ -382,11 +382,11 @@ this.movedirection = movedirection; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java new file mode 100644 index 0000000..38e5e8c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.model.RobotInfo; +import lombok.Data; + +/** + * @author a203 + */ +@Data +public class RobotInfoDTO { + /** + * 机器人ID:3 + */ + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + private Double lat; + + /** + * 航行状态:待机 + */ + private String navigateState; + + /** + * 仪表电压:23.5 + */ + private Float instrumentV; + + /** + * 动力电压:239 + */ + private Float powerV; + + /** + * 仪表电余量:95 + */ + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + private Float rollAngle; + + /** + * 航向角:124.66 + */ + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + private Float position; + + /** + * 探测状态:无目标 + */ + private String detectStatus; + + /** + * 目标距离:1.56km + */ + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + private String targetHertz; + + public RobotInfoDTO(RobotInfo data) { + this.robotId = data.getRobotId(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.navigateState = data.getNavigateState(); + this.instrumentV = data.getInstrumentV(); + this.powerV = data.getPowerV(); + this.instrumentE = data.getInstrumentE(); + this.powerE = data.getPowerE(); + this.pitchAngle = data.getPitchAngle(); + this.rollAngle = data.getRollAngle(); + this.headingAngle = data.getHeadingAngle(); + this.buoyancy = data.getBuoyancy(); + this.position = data.getPosition(); + this.detectStatus = data.getDetectStatus(); + this.targetDistance = data.getTargetDistance(); + this.targetDirection = data.getTargetDirection(); + this.targetHertz = data.getTargetHertz(); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java index b820cce..6a4ac02 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java @@ -67,8 +67,8 @@ * 台风类型-热带风暴/强台风... */ private String type; - private String lng; - private String lat; + private Double lng; + private Double lat; /** * 台风登陆细节 */ diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java index a9bf9f3..fa6ccd1 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java @@ -207,8 +207,8 @@ private String landaddress; private String strong; - private String lng; - private String lat; + private Double lng; + private Double lat; private String info; private String landtime; @@ -228,19 +228,19 @@ this.strong = strong; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } @@ -295,9 +295,9 @@ private String movespeed; private String radius12; private String power; - private String lng; + private Double lng; private String movedirection; - private String lat; + private Double lat; private String radius7; private String jl; private String ckposition; @@ -366,11 +366,11 @@ this.power = power; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } @@ -382,11 +382,11 @@ this.movedirection = movedirection; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java new file mode 100644 index 0000000..0dcba3e --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * @author a203 + */ +public interface IRobotService extends IService { + /** + * 保存机器人数据 + */ + void saveRobotInfo(); + + /** + * 查询台风详情 + * + * @param robotId 机器人ID + * @return RobotInfoDTO + */ + RobotInfoDTO robotDetail(String robotId); +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java new file mode 100644 index 0000000..38e5e8c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.model.RobotInfo; +import lombok.Data; + +/** + * @author a203 + */ +@Data +public class RobotInfoDTO { + /** + * 机器人ID:3 + */ + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + private Double lat; + + /** + * 航行状态:待机 + */ + private String navigateState; + + /** + * 仪表电压:23.5 + */ + private Float instrumentV; + + /** + * 动力电压:239 + */ + private Float powerV; + + /** + * 仪表电余量:95 + */ + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + private Float rollAngle; + + /** + * 航向角:124.66 + */ + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + private Float position; + + /** + * 探测状态:无目标 + */ + private String detectStatus; + + /** + * 目标距离:1.56km + */ + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + private String targetHertz; + + public RobotInfoDTO(RobotInfo data) { + this.robotId = data.getRobotId(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.navigateState = data.getNavigateState(); + this.instrumentV = data.getInstrumentV(); + this.powerV = data.getPowerV(); + this.instrumentE = data.getInstrumentE(); + this.powerE = data.getPowerE(); + this.pitchAngle = data.getPitchAngle(); + this.rollAngle = data.getRollAngle(); + this.headingAngle = data.getHeadingAngle(); + this.buoyancy = data.getBuoyancy(); + this.position = data.getPosition(); + this.detectStatus = data.getDetectStatus(); + this.targetDistance = data.getTargetDistance(); + this.targetDirection = data.getTargetDirection(); + this.targetHertz = data.getTargetHertz(); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java index b820cce..6a4ac02 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java @@ -67,8 +67,8 @@ * 台风类型-热带风暴/强台风... */ private String type; - private String lng; - private String lat; + private Double lng; + private Double lat; /** * 台风登陆细节 */ diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java index a9bf9f3..fa6ccd1 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java @@ -207,8 +207,8 @@ private String landaddress; private String strong; - private String lng; - private String lat; + private Double lng; + private Double lat; private String info; private String landtime; @@ -228,19 +228,19 @@ this.strong = strong; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } @@ -295,9 +295,9 @@ private String movespeed; private String radius12; private String power; - private String lng; + private Double lng; private String movedirection; - private String lat; + private Double lat; private String radius7; private String jl; private String ckposition; @@ -366,11 +366,11 @@ this.power = power; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } @@ -382,11 +382,11 @@ this.movedirection = movedirection; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java new file mode 100644 index 0000000..0dcba3e --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * @author a203 + */ +public interface IRobotService extends IService { + /** + * 保存机器人数据 + */ + void saveRobotInfo(); + + /** + * 查询台风详情 + * + * @param robotId 机器人ID + * @return RobotInfoDTO + */ + RobotInfoDTO robotDetail(String robotId); +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java new file mode 100644 index 0000000..3ff84be --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.constants.RobotConstant; +import com.casic.missiles.modular.system.dao.RobotMapper; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.model.RobotInfo; +import com.casic.missiles.modular.system.service.IRobotService; +import com.casic.missiles.modular.system.utils.DataParser; +import org.springframework.stereotype.Service; + +/** + * 台风数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class RobotServiceImpl extends ServiceImpl implements IRobotService { + + public RobotServiceImpl() { + + } + + /** + * 保存机器人数据信息 + */ + @Override + public void saveRobotInfo() { + //TODO 测试数据 + RobotInfo robotInfo = DataParser.translate(RobotConstant.DATA); + QueryWrapper query = new QueryWrapper<>(); + query.eq("ROBOT_ID", robotInfo.getRobotId()); + if (this.count(query) == 0) { + save(robotInfo); + } else { + updateById(robotInfo); + } + } + + /** + * 查询水下机器人详情 + * + * @param robotId 机器人ID + * @return RobotInfoDTO + */ + @Override + public RobotInfoDTO robotDetail(String robotId) { + RobotInfo robotInfo = getById(robotId); + if (robotInfo != null) { + return new RobotInfoDTO(robotInfo); + } + return null; + } +} 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 new file mode 100644 index 0000000..d861be5 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/RobotInfo.java @@ -0,0 +1,124 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 水下机器人信息 + * + * @author a203 + */ +@Data +@TableName("robot_info") +public class RobotInfo extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + /** + * 机器人ID:3 + */ + @TableField(value = "ROBOT_ID") + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + @TableField("LNG") + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + @TableField("LAT") + private Double lat; + + /** + * 航行状态:待机 + */ + @TableField("NAVIGATE_STATE") + private String navigateState; + + /** + * 仪表电压:23.5 + */ + @TableField("INSTRUMENT_V") + private Float instrumentV; + + /** + * 动力电压:239 + */ + @TableField("POWER_V") + private Float powerV; + + /** + * 仪表电余量:95 + */ + @TableField("INSTRUMENT_ELECTRIC") + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + @TableField("POWER_ELECTRIC") + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + @TableField("PITCH_ANGLE") + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + @TableField("ROLL_ANGLE") + private Float rollAngle; + + /** + * 航向角:124.66 + */ + @TableField("HEADING_ANGLE") + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + @TableField("BUOYANCY") + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + @TableField("POSITION") + private Float position; + + /** + * 探测状态:无目标 + */ + @TableField("DETECT_STATUS") + private String detectStatus; + + /** + * 目标距离:1.56km + */ + @TableField("TARGET_DISTANCE") + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + @TableField("TARGET_DIRECTION") + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + @TableField("TARGET_HERTZ") + private String targetHertz; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java new file mode 100644 index 0000000..da30fb4 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/constants/RobotConstant.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.constants; + +/** + * @author a203 + */ +public class RobotConstant { + public static final int[] DATA = new int[]{ + 0x2A,//帧头 + 0x23,//帧长度 + 0x01,//帧类型 + 0x00,//子类型 + 0x03,//机器人ID + 0x4D, 0xBD, 0x80, 0xCF,//位置经度 + 0x0C, 0x5E, 0x28, 0xC2,//位置纬度 + 0x01, //航行状态 + 0xEB, //仪表电压 + 0xEF, //动力电压 + 0x5F, //仪表电余量 + 0x5D, //动力电余量 + 0x13, 0x5D, //俯仰角 + 0x40, 0x3D, //横滚角 + 0x30, 0xB2, //航向角 + 0x25, 0x4E, //浮力值 + 0x1B, 0x4E, //滑块位置 + 0x00, //探测状态 + 0x00, 0x9C, //目标距离 + 0x42, 0xBD, //目标方位 + 0x07, 0xD0, //目标频率 + 0xC7, 0x16, //CRC16校验码 + 0x0A //帧尾 + }; +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java new file mode 100644 index 0000000..c4dbcc8 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/RobotController.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.service.IRobotService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 水下机器人数据控制器 + * + * @author a203 + */ +@Controller +@RequestMapping("/robot") +public class RobotController extends BaseController { + + private final IRobotService robotService; + + public RobotController(IRobotService robotService) { + this.robotService = robotService; + } + + /** + * 水下机器人详情 + */ + @GetMapping(value = "/detail/{robotId}") + @ResponseBody + public Object detail(@PathVariable("robotId") String robotId) { + RobotInfoDTO detailDTO = robotService.robotDetail(robotId); + return ResponseData.success(detailDTO); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java index b864c56..8e500d0 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/controller/ShipController.java @@ -30,7 +30,7 @@ } /** - * 新增设备管理 + * 圆形区域最新船舶信息 */ @GetMapping(value = "/shipsInCircle") @ResponseBody diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java new file mode 100644 index 0000000..b71e099 --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dao/RobotMapper.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 水下机器人数据信息 Mapper 接口 + * + * @author a203 + */ +public interface RobotMapper extends BaseMapper { + +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java new file mode 100644 index 0000000..38e5e8c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/RobotInfoDTO.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.model.RobotInfo; +import lombok.Data; + +/** + * @author a203 + */ +@Data +public class RobotInfoDTO { + /** + * 机器人ID:3 + */ + private Integer robotId; + + /** + * 位置经度:109.322222 + */ + private Double lng; + + /** + * 位置纬度: 17.392232 + */ + private Double lat; + + /** + * 航行状态:待机 + */ + private String navigateState; + + /** + * 仪表电压:23.5 + */ + private Float instrumentV; + + /** + * 动力电压:239 + */ + private Float powerV; + + /** + * 仪表电余量:95 + */ + private Float instrumentE; + + /** + * 动力电余量: 93 + */ + private Float powerE; + + /** + * 俯仰角: -40.43 + */ + private Float pitchAngle; + + /** + * 横滚角:-15.55 + */ + private Float rollAngle; + + /** + * 航向角:124.66 + */ + private Float headingAngle; + + /** + * 浮力值:-4.05 + */ + private Float buoyancy; + + /** + * 滑块位置:-30.05 + */ + private Float position; + + /** + * 探测状态:无目标 + */ + private String detectStatus; + + /** + * 目标距离:1.56km + */ + private String targetDistance; + + /** + * 目标方位: 170.85 + */ + private Float targetDirection; + + /** + * 目标频率:2000hz + */ + private String targetHertz; + + public RobotInfoDTO(RobotInfo data) { + this.robotId = data.getRobotId(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.navigateState = data.getNavigateState(); + this.instrumentV = data.getInstrumentV(); + this.powerV = data.getPowerV(); + this.instrumentE = data.getInstrumentE(); + this.powerE = data.getPowerE(); + this.pitchAngle = data.getPitchAngle(); + this.rollAngle = data.getRollAngle(); + this.headingAngle = data.getHeadingAngle(); + this.buoyancy = data.getBuoyancy(); + this.position = data.getPosition(); + this.detectStatus = data.getDetectStatus(); + this.targetDistance = data.getTargetDistance(); + this.targetDirection = data.getTargetDirection(); + this.targetHertz = data.getTargetHertz(); + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java index b820cce..6a4ac02 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailDTO.java @@ -67,8 +67,8 @@ * 台风类型-热带风暴/强台风... */ private String type; - private String lng; - private String lat; + private Double lng; + private Double lat; /** * 台风登陆细节 */ diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java index a9bf9f3..fa6ccd1 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/TyphoonDetailRemoteData.java @@ -207,8 +207,8 @@ private String landaddress; private String strong; - private String lng; - private String lat; + private Double lng; + private Double lat; private String info; private String landtime; @@ -228,19 +228,19 @@ this.strong = strong; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } @@ -295,9 +295,9 @@ private String movespeed; private String radius12; private String power; - private String lng; + private Double lng; private String movedirection; - private String lat; + private Double lat; private String radius7; private String jl; private String ckposition; @@ -366,11 +366,11 @@ this.power = power; } - public String getLng() { + public Double getLng() { return lng; } - public void setLng(String lng) { + public void setLng(Double lng) { this.lng = lng; } @@ -382,11 +382,11 @@ this.movedirection = movedirection; } - public String getLat() { + public Double getLat() { return lat; } - public void setLat(String lat) { + public void setLat(Double lat) { this.lat = lat; } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java new file mode 100644 index 0000000..0dcba3e --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/IRobotService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * @author a203 + */ +public interface IRobotService extends IService { + /** + * 保存机器人数据 + */ + void saveRobotInfo(); + + /** + * 查询台风详情 + * + * @param robotId 机器人ID + * @return RobotInfoDTO + */ + RobotInfoDTO robotDetail(String robotId); +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java new file mode 100644 index 0000000..3ff84be --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/RobotServiceImpl.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.constants.RobotConstant; +import com.casic.missiles.modular.system.dao.RobotMapper; +import com.casic.missiles.modular.system.dto.RobotInfoDTO; +import com.casic.missiles.modular.system.model.RobotInfo; +import com.casic.missiles.modular.system.service.IRobotService; +import com.casic.missiles.modular.system.utils.DataParser; +import org.springframework.stereotype.Service; + +/** + * 台风数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class RobotServiceImpl extends ServiceImpl implements IRobotService { + + public RobotServiceImpl() { + + } + + /** + * 保存机器人数据信息 + */ + @Override + public void saveRobotInfo() { + //TODO 测试数据 + RobotInfo robotInfo = DataParser.translate(RobotConstant.DATA); + QueryWrapper query = new QueryWrapper<>(); + query.eq("ROBOT_ID", robotInfo.getRobotId()); + if (this.count(query) == 0) { + save(robotInfo); + } else { + updateById(robotInfo); + } + } + + /** + * 查询水下机器人详情 + * + * @param robotId 机器人ID + * @return RobotInfoDTO + */ + @Override + public RobotInfoDTO robotDetail(String robotId) { + RobotInfo robotInfo = getById(robotId); + if (robotInfo != null) { + return new RobotInfoDTO(robotInfo); + } + return null; + } +} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/DataParser.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/DataParser.java new file mode 100644 index 0000000..f5b674c --- /dev/null +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/DataParser.java @@ -0,0 +1,180 @@ +package com.casic.missiles.modular.system.utils; + +import com.casic.missiles.modular.system.model.RobotInfo; + +/** + * 西工大数据解析协议 + *

+ * 帧头(1byte) 0x2A + * 帧长度(1byte) 0x23 + * 帧类型(1byte) 0x01 + * 子类型(1byte) 0x00 + * 机器人ID(1byte) 0x03 + * 帧数据 4D BD 80 CF 0C 5E 28 C2 01 EB EF 5F 5D 13 5D 40 3D 30 B2 25 4E 1B 4E 00 00 9C 42 BD 07 D0 C7 + * CRC16校验码(2byte) 0xC7 0x16 + * 帧尾(1byte) 0x0A + * + * @author a203 + */ +public class DataParser { + + private static final int BITS_OF_HEAD = 0x2A; + private static final int BITS_OF_END = 0x0A; + + public static RobotInfo translate(int[] bytes) { + RobotInfo robot = new RobotInfo(); + if (bytes[0] != BITS_OF_HEAD) { + return robot; + } + if (bytes[bytes.length - 1] != BITS_OF_END) { + return robot; + } + robot.setRobotId(bytes[4]); + + int[] lngBytes = new int[4]; + System.arraycopy(bytes, 5, lngBytes, 0, 4); + robot.setLng(covertLngLat(lngBytes)); + + int[] latBytes = new int[4]; + System.arraycopy(bytes, 9, latBytes, 0, 4); + robot.setLat(covertLngLat(latBytes)); + + robot.setNavigateState(covertState(bytes[13])); + robot.setInstrumentV((float) (bytes[14] * 0.1)); + robot.setPowerV((float) bytes[15]); + robot.setInstrumentE((float) (bytes[16])); + robot.setPowerE((float) (bytes[17])); + + int[] pitchAngleBytes = new int[2]; + System.arraycopy(bytes, 18, pitchAngleBytes, 0, 2); + robot.setPitchAngle(covertPitchAngle(pitchAngleBytes)); + + int[] rollAngleBytes = new int[2]; + System.arraycopy(bytes, 20, rollAngleBytes, 0, 2); + robot.setRollAngle(covertRollAngle(rollAngleBytes)); + + int[] headingAngleBytes = new int[2]; + System.arraycopy(bytes, 22, headingAngleBytes, 0, 2); + robot.setHeadingAngle(covertHeadingAngle(headingAngleBytes)); + + int[] buoyancyBytes = new int[2]; + System.arraycopy(bytes, 24, buoyancyBytes, 0, 2); + robot.setBuoyancy(covertBuoyancy(buoyancyBytes)); + + int[] positionBytes = new int[2]; + System.arraycopy(bytes, 26, positionBytes, 0, 2); + //滑块位置算法和浮力算法一样 + robot.setPosition(covertBuoyancy(positionBytes)); + + int status = bytes[28]; + if (status == 0) { + robot.setDetectStatus("没有目标"); + } else { + robot.setDetectStatus("发现目标"); + } + + int[] targetDisBytes = new int[2]; + System.arraycopy(bytes, 29, targetDisBytes, 0, 2); + robot.setTargetDistance(covertTargetDistance(targetDisBytes)); + + int[] targetDirBytes = new int[2]; + System.arraycopy(bytes, 31, targetDirBytes, 0, 2); + //目标方位算法和航向角算法一样 + robot.setTargetDirection(covertHeadingAngle(targetDirBytes)); + + int[] targetHzBytes = new int[2]; + System.arraycopy(bytes, 33, targetHzBytes, 0, 2); + robot.setTargetHertz(covertTargetHertz(targetHzBytes)); + return robot; + } + + /** + * 目标频率转换算法 + */ + private static String covertTargetHertz(int[] bytes) { + return ((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF) + "hz"; + } + + /** + * 目标距离转换算法 + */ + private static String covertTargetDistance(int[] bytes) { + float a = ((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF); + return (float) (a * 0.01) + "km"; + } + + /** + * 横滚角转换算法 + */ + private static float covertBuoyancy(int[] bytes) { + float a = ((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF); + return (float) (a * 0.01 - 100); + } + + /** + * 横滚角转换算法 + */ + private static float covertHeadingAngle(int[] bytes) { + float a = ((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF); + return (float) (a * 0.01); + } + + /** + * 横滚角转换算法 + */ + private static float covertRollAngle(int[] bytes) { + float a = ((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF); + return (float) (a * 0.01 - 180); + } + + /** + * 俯仰角转换算法 + */ + private static float covertPitchAngle(int[] bytes) { + float a = ((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF); + return (float) (a * 0.01 - 90); + } + + /** + * 航行状态转换 + */ + private static String covertState(int b) { + String state = ""; + switch (b) { + case 0: + state = "任务中"; + break; + case 1: + state = "待机"; + break; + case 2: + state = "故障"; + break; + case 3: + state = "未启用"; + break; + default: + break; + } + return state; + } + + /** + * 经纬度转换算法 + */ + private static double covertLngLat(int[] bytes) { + double per = ( + ((bytes[0] & 0xFF) << 24) + + ((bytes[1] & 0xFF) << 16) + + ((bytes[2] & 0xFF) << 8) + + (bytes[3] & 0xFF) + ) / (Math.pow(2, 31) - 1); + return 180 * per; + } +}