diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml index 81fff144..158d4279 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml @@ -125,6 +125,7 @@ security: # todo 仅测试 - /facility/matrix/** - /**/changxie/callback/** + - /gps/equipment/dataAcceptance # 多租户配置 tenant: @@ -194,6 +195,7 @@ api-decrypt: - /actuator/** # 放行监控接口 - /other/ys7Device/webhook # 放行萤石云设备回调接口 - /auth/register # 放行注册接口 + - /gps/equipment/dataAcceptance # GPS数据接收接口 springdoc: api-docs: @@ -269,6 +271,8 @@ springdoc: packages-to-scan: org.dromara.bigscreen - group: 22.投标管理模块 packages-to-scan: org.dromara.bidding + - group: 23.GPS定位模块 + packages-to-scan: org.dromara.gps # - group: 20.合同模块 # packages-to-scan: org.dromara.ctr diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesCollectController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesCollectController.java index 521ef26a..d479d99a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesCollectController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesCollectController.java @@ -107,6 +107,7 @@ public class DesCollectController extends BaseController { /** * 批量新增或修改 */ + @SaCheckPermission("design:collect:batch") @RepeatSubmit() @PostMapping("/batch") public R batchAddOrUpdate(@RequestBody DesCollectBatchDto dto) { @@ -118,7 +119,7 @@ public class DesCollectController extends BaseController { * * @param projectId 项目ID */ - @SaCheckPermission("design:collect:query") + @SaCheckPermission("design:collect:byProjectId") @GetMapping("/byProjectId/{projectId}") public R getInfoByProjectId(@NotNull(message = "项目ID不能为空") @PathVariable Long projectId) { @@ -128,7 +129,7 @@ public class DesCollectController extends BaseController { /** * 清单导出 */ - @SaCheckPermission("design:collect:export") + @SaCheckPermission("design:collect:exportWord") @Log(title = "收资清单", businessType = BusinessType.EXPORT) @PostMapping("/exportWord") public void exportWordById(Long id, HttpServletResponse response){ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java new file mode 100644 index 00000000..0d8aaf69 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java @@ -0,0 +1,120 @@ +package org.dromara.gps.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.gps.domain.vo.GpsEquipmentVo; +import org.dromara.gps.domain.bo.GpsEquipmentBo; +import org.dromara.gps.service.IGpsEquipmentService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * GPS设备详细 + * + * @author Lion Li + * @date 2025-08-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/gps/equipment") +@Slf4j +public class GpsEquipmentController extends BaseController { + + private final IGpsEquipmentService gpsEquipmentService; + + /** + * 接收设备数据 + * @param jsonData + * @return + */ + @PostMapping("/dataAcceptance") + public R dataAcceptance(@RequestBody String jsonData) { + log.info("接收设备数据:{}", jsonData); + gpsEquipmentService.dataAcceptance(jsonData); + return toAjax(true); + } + + + /** + * 查询GPS设备详细列表 + */ + @SaCheckPermission("gps:equipment:list") + @GetMapping("/list") + public TableDataInfo list(GpsEquipmentBo bo, PageQuery pageQuery) { + return gpsEquipmentService.queryPageList(bo, pageQuery); + } + + /** + * 导出GPS设备详细列表 + */ + @SaCheckPermission("gps:equipment:export") + @Log(title = "GPS设备详细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(GpsEquipmentBo bo, HttpServletResponse response) { + List list = gpsEquipmentService.queryList(bo); + ExcelUtil.exportExcel(list, "GPS设备详细", GpsEquipmentVo.class, response); + } + + /** + * 获取GPS设备详细详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("gps:equipment:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(gpsEquipmentService.queryById(id)); + } + + /** + * 新增GPS设备详细 + */ + @SaCheckPermission("gps:equipment:add") + @Log(title = "GPS设备详细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody GpsEquipmentBo bo) { + return toAjax(gpsEquipmentService.insertByBo(bo)); + } + + /** + * 修改GPS设备详细 + */ + @SaCheckPermission("gps:equipment:edit") + @Log(title = "GPS设备详细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody GpsEquipmentBo bo) { + return toAjax(gpsEquipmentService.updateByBo(bo)); + } + + /** + * 删除GPS设备详细 + * + * @param ids 主键串 + */ + @SaCheckPermission("gps:equipment:remove") + @Log(title = "GPS设备详细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(gpsEquipmentService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java new file mode 100644 index 00000000..a0783547 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java @@ -0,0 +1,105 @@ +package org.dromara.gps.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.gps.domain.vo.GpsEquipmentSonVo; +import org.dromara.gps.domain.bo.GpsEquipmentSonBo; +import org.dromara.gps.service.IGpsEquipmentSonService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * GPS设备定位信息 + * + * @author Lion Li + * @date 2025-08-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/gps/equipmentSon") +public class GpsEquipmentSonController extends BaseController { + + private final IGpsEquipmentSonService gpsEquipmentSonService; + + /** + * 查询GPS设备定位信息列表 + */ + @SaCheckPermission("gps:equipmentSon:list") + @GetMapping("/list") + public TableDataInfo list(GpsEquipmentSonBo bo, PageQuery pageQuery) { + return gpsEquipmentSonService.queryPageList(bo, pageQuery); + } + + /** + * 导出GPS设备定位信息列表 + */ + @SaCheckPermission("gps:equipmentSon:export") + @Log(title = "GPS设备定位信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(GpsEquipmentSonBo bo, HttpServletResponse response) { + List list = gpsEquipmentSonService.queryList(bo); + ExcelUtil.exportExcel(list, "GPS设备定位信息", GpsEquipmentSonVo.class, response); + } + + /** + * 获取GPS设备定位信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("gps:equipmentSon:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(gpsEquipmentSonService.queryById(id)); + } + + /** + * 新增GPS设备定位信息 + */ + @SaCheckPermission("gps:equipmentSon:add") + @Log(title = "GPS设备定位信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody GpsEquipmentSonBo bo) { + return toAjax(gpsEquipmentSonService.insertByBo(bo)); + } + + /** + * 修改GPS设备定位信息 + */ + @SaCheckPermission("gps:equipmentSon:edit") + @Log(title = "GPS设备定位信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody GpsEquipmentSonBo bo) { + return toAjax(gpsEquipmentSonService.updateByBo(bo)); + } + + /** + * 删除GPS设备定位信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("gps:equipmentSon:remove") + @Log(title = "GPS设备定位信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(gpsEquipmentSonService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsManmachineController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsManmachineController.java new file mode 100644 index 00000000..d5b5280f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsManmachineController.java @@ -0,0 +1,105 @@ +package org.dromara.gps.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.gps.domain.vo.GpsManmachineVo; +import org.dromara.gps.domain.bo.GpsManmachineBo; +import org.dromara.gps.service.IGpsManmachineService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * GPS人机关联 + * + * @author Lion Li + * @date 2025-08-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/gps/manmachine") +public class GpsManmachineController extends BaseController { + + private final IGpsManmachineService gpsManmachineService; + + /** + * 查询GPS人机关联列表 + */ + @SaCheckPermission("gps:manmachine:list") + @GetMapping("/list") + public TableDataInfo list(GpsManmachineBo bo, PageQuery pageQuery) { + return gpsManmachineService.queryPageList(bo, pageQuery); + } + + /** + * 导出GPS人机关联列表 + */ + @SaCheckPermission("gps:manmachine:export") + @Log(title = "GPS人机关联", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(GpsManmachineBo bo, HttpServletResponse response) { + List list = gpsManmachineService.queryList(bo); + ExcelUtil.exportExcel(list, "GPS人机关联", GpsManmachineVo.class, response); + } + + /** + * 获取GPS人机关联详细信息 + * + * @param clientId 主键 + */ + @SaCheckPermission("gps:manmachine:query") + @GetMapping("/{clientId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String clientId) { + return R.ok(gpsManmachineService.queryById(clientId)); + } + + /** + * 新增GPS人机关联 + */ + @SaCheckPermission("gps:manmachine:add") + @Log(title = "GPS人机关联", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody GpsManmachineBo bo) { + return toAjax(gpsManmachineService.insertByBo(bo)); + } + + /** + * 修改GPS人机关联 + */ + @SaCheckPermission("gps:manmachine:edit") + @Log(title = "GPS人机关联", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody GpsManmachineBo bo) { + return toAjax(gpsManmachineService.updateByBo(bo)); + } + + /** + * 删除GPS人机关联 + * + * @param clientIds 主键串 + */ + @SaCheckPermission("gps:manmachine:remove") + @Log(title = "GPS人机关联", businessType = BusinessType.DELETE) + @DeleteMapping("/{clientIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable String[] clientIds) { + return toAjax(gpsManmachineService.deleteWithValidByIds(List.of(clientIds), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java new file mode 100644 index 00000000..17cada03 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java @@ -0,0 +1,81 @@ +package org.dromara.gps.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * GPS设备详细对象 gps_equipment + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gps_equipment") +public class GpsEquipment extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 用户id + */ + private Long userId; + + /** + * 设备标识 + */ + private String clientId; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 是否使用UDP协议:0=否,1=是 + */ + private Long udp; + + /** + * 远程连接地址(IP:端口) + */ + private String remoteAddressStr; + + /** + * 连接创建时间 + */ + private Long creationTime; + + /** + * 最后活动时间 + */ + private Long lastAccessedTime; + + /** + * 是否已注册:0=未注册,1=已注册 + */ + private Long registered; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java new file mode 100644 index 00000000..b7e1f263 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java @@ -0,0 +1,116 @@ +package org.dromara.gps.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * GPS设备定位信息对象 gps_equipment_son + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gps_equipment_son") +public class GpsEquipmentSon extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 设备标识 + */ + private String clientId; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 设备硬件ID + */ + private String deviceId; + + /** + * 设备关联手机号(可为空,无手机号设备用) + */ + private String mobileNo; + + /** + * 车牌号码(车辆类设备用,可为空) + */ + private String plateNo; + + /** + * 通信协议版本号 + */ + private Long protocolVersion; + + /** + * 定位告警标识位:0=无告警 + */ + private Long locWarnBit; + + /** + * 定位状态标识位(协议编码值) + */ + private Long locStatusBit; + + /** + * 纬度(精确到6位小数) + */ + private Long locLatitude; + + /** + * 经度(精确到6位小数) + */ + private Long locLongitude; + + /** + * 海拔高度(单位未明确,默认0) + */ + private Long locAltitude; + + /** + * 原始速度(单位未明确) + */ + private Long locSpeed; + + /** + * 速度(千米/小时,Kph) + */ + private Long locSpeedKph; + + /** + * 行进方向(0-360度) + */ + private Long locDirection; + + /** + * 设备定位数据采集时间(支持毫秒级,ISO 8601格式转换后) + */ + private Long locDeviceTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java new file mode 100644 index 00000000..75ee5c6c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java @@ -0,0 +1,36 @@ +package org.dromara.gps.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * GPS人机关联对象 gps_manmachine + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gps_manmachine") +public class GpsManmachine extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @TableId(value = "client_id") + private String clientId; + + /** + * + */ + private Long userId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java new file mode 100644 index 00000000..76885b66 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java @@ -0,0 +1,80 @@ +package org.dromara.gps.domain.bo; + +import org.dromara.gps.domain.GpsEquipment; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * GPS设备详细业务对象 gps_equipment + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = GpsEquipment.class, reverseConvertGenerate = false) +public class GpsEquipmentBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 用户id + */ + private Long userId; + + /** + * 设备标识 + */ + private String clientId; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 是否使用UDP协议:0=否,1=是 + */ + private Long udp; + + /** + * 远程连接地址(IP:端口) + */ + private String remoteAddressStr; + + /** + * 连接创建时间 + */ + private Long creationTime; + + /** + * 最后活动时间 + */ + private Long lastAccessedTime; + + /** + * 是否已注册:0=未注册,1=已注册 + */ + private Long registered; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java new file mode 100644 index 00000000..7b2f56c3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java @@ -0,0 +1,115 @@ +package org.dromara.gps.domain.bo; + +import org.dromara.gps.domain.GpsEquipmentSon; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * GPS设备定位信息业务对象 gps_equipment_son + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = GpsEquipmentSon.class, reverseConvertGenerate = false) +public class GpsEquipmentSonBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 设备标识 + */ + private String clientId; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 设备硬件ID + */ + private String deviceId; + + /** + * 设备关联手机号(可为空,无手机号设备用) + */ + private String mobileNo; + + /** + * 车牌号码(车辆类设备用,可为空) + */ + private String plateNo; + + /** + * 通信协议版本号 + */ + private Long protocolVersion; + + /** + * 定位告警标识位:0=无告警 + */ + private Long locWarnBit; + + /** + * 定位状态标识位(协议编码值) + */ + private Long locStatusBit; + + /** + * 纬度(精确到6位小数) + */ + private Long locLatitude; + + /** + * 经度(精确到6位小数) + */ + private Long locLongitude; + + /** + * 海拔高度(单位未明确,默认0) + */ + private Long locAltitude; + + /** + * 原始速度(单位未明确) + */ + private Long locSpeed; + + /** + * 速度(千米/小时,Kph) + */ + private Long locSpeedKph; + + /** + * 行进方向(0-360度) + */ + private Long locDirection; + + /** + * 设备定位数据采集时间(支持毫秒级,ISO 8601格式转换后) + */ + private Long locDeviceTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsManmachineBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsManmachineBo.java new file mode 100644 index 00000000..b714b782 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsManmachineBo.java @@ -0,0 +1,35 @@ +package org.dromara.gps.domain.bo; + +import org.dromara.gps.domain.GpsManmachine; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * GPS人机关联业务对象 gps_manmachine + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = GpsManmachine.class, reverseConvertGenerate = false) +public class GpsManmachineBo extends BaseEntity { + + /** + * + */ + @NotBlank(message = "不能为空", groups = { EditGroup.class }) + private String clientId; + + /** + * + */ + private Long userId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java new file mode 100644 index 00000000..c2a959af --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java @@ -0,0 +1,150 @@ +package org.dromara.gps.domain.vo; + +import org.dromara.gps.domain.GpsEquipmentSon; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * GPS设备定位信息视图对象 gps_equipment_son + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = GpsEquipmentSon.class) +public class GpsEquipmentSonVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 用户ID + */ + @ExcelProperty(value = "用户ID") + private Long userId; + + /** + * 设备标识 + */ + @ExcelProperty(value = "设备标识") + private String clientId; + + /** + * 设备名称 + */ + @ExcelProperty(value = "设备名称") + private String deviceName; + + /** + * 设备硬件ID + */ + @ExcelProperty(value = "设备硬件ID") + private String deviceId; + + /** + * 设备关联手机号(可为空,无手机号设备用) + */ + @ExcelProperty(value = "设备关联手机号", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "可=为空,无手机号设备用") + private String mobileNo; + + /** + * 车牌号码(车辆类设备用,可为空) + */ + @ExcelProperty(value = "车牌号码", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "车=辆类设备用,可为空") + private String plateNo; + + /** + * 通信协议版本号 + */ + @ExcelProperty(value = "通信协议版本号") + private Long protocolVersion; + + /** + * 定位告警标识位:0=无告警 + */ + @ExcelProperty(value = "定位告警标识位:0=无告警") + private Long locWarnBit; + + /** + * 定位状态标识位(协议编码值) + */ + @ExcelProperty(value = "定位状态标识位", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "协=议编码值") + private Long locStatusBit; + + /** + * 纬度(精确到6位小数) + */ + @ExcelProperty(value = "纬度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "精=确到6位小数") + private Long locLatitude; + + /** + * 经度(精确到6位小数) + */ + @ExcelProperty(value = "经度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "精=确到6位小数") + private Long locLongitude; + + /** + * 海拔高度(单位未明确,默认0) + */ + @ExcelProperty(value = "海拔高度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位未明确,默认0") + private Long locAltitude; + + /** + * 原始速度(单位未明确) + */ + @ExcelProperty(value = "原始速度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位未明确") + private Long locSpeed; + + /** + * 速度(千米/小时,Kph) + */ + @ExcelProperty(value = "速度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "千=米/小时,Kph") + private Long locSpeedKph; + + /** + * 行进方向(0-360度) + */ + @ExcelProperty(value = "行进方向", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=-360度") + private Long locDirection; + + /** + * 设备定位数据采集时间(支持毫秒级,ISO 8601格式转换后) + */ + @ExcelProperty(value = "设备定位数据采集时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "支=持毫秒级,ISO,8=601格式转换后") + private Long locDeviceTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java new file mode 100644 index 00000000..c83cb504 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java @@ -0,0 +1,99 @@ +package org.dromara.gps.domain.vo; + +import org.dromara.gps.domain.GpsEquipment; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * GPS设备详细视图对象 gps_equipment + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = GpsEquipment.class) +public class GpsEquipmentVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 用户id + */ + @ExcelProperty(value = "用户id") + private Long userId; + + /** + * 设备标识 + */ + @ExcelProperty(value = "设备标识") + private String clientId; + + /** + * 设备名称 + */ + @ExcelProperty(value = "设备名称") + private String deviceName; + + /** + * 是否使用UDP协议:0=否,1=是 + */ + @ExcelProperty(value = "是否使用UDP协议:0=否,1=是") + private Long udp; + + /** + * 远程连接地址(IP:端口) + */ + @ExcelProperty(value = "远程连接地址", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "I=P:端口") + private String remoteAddressStr; + + /** + * 连接创建时间 + */ + @ExcelProperty(value = "连接创建时间") + private Long creationTime; + + /** + * 最后活动时间 + */ + @ExcelProperty(value = "最后活动时间") + private Long lastAccessedTime; + + /** + * 是否已注册:0=未注册,1=已注册 + */ + @ExcelProperty(value = "是否已注册:0=未注册,1=已注册") + private Long registered; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsManmachineVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsManmachineVo.java new file mode 100644 index 00000000..9fc7054e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsManmachineVo.java @@ -0,0 +1,44 @@ +package org.dromara.gps.domain.vo; + +import org.dromara.gps.domain.GpsManmachine; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * GPS人机关联视图对象 gps_manmachine + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = GpsManmachine.class) +public class GpsManmachineVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private String clientId; + + /** + * + */ + @ExcelProperty(value = "") + private Long userId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java new file mode 100644 index 00000000..df76fff3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java @@ -0,0 +1,15 @@ +package org.dromara.gps.mapper; + +import org.dromara.gps.domain.GpsEquipment; +import org.dromara.gps.domain.vo.GpsEquipmentVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * GPS设备详细Mapper接口 + * + * @author Lion Li + * @date 2025-08-28 + */ +public interface GpsEquipmentMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java new file mode 100644 index 00000000..9222c824 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java @@ -0,0 +1,15 @@ +package org.dromara.gps.mapper; + +import org.dromara.gps.domain.GpsEquipmentSon; +import org.dromara.gps.domain.vo.GpsEquipmentSonVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * GPS设备定位信息Mapper接口 + * + * @author Lion Li + * @date 2025-08-28 + */ +public interface GpsEquipmentSonMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsManmachineMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsManmachineMapper.java new file mode 100644 index 00000000..8d871a34 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsManmachineMapper.java @@ -0,0 +1,15 @@ +package org.dromara.gps.mapper; + +import org.dromara.gps.domain.GpsManmachine; +import org.dromara.gps.domain.vo.GpsManmachineVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * GPS人机关联Mapper接口 + * + * @author Lion Li + * @date 2025-08-28 + */ +public interface GpsManmachineMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java new file mode 100644 index 00000000..63f35abd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java @@ -0,0 +1,76 @@ +package org.dromara.gps.service; + +import org.dromara.gps.domain.vo.GpsEquipmentVo; +import org.dromara.gps.domain.bo.GpsEquipmentBo; +import org.dromara.gps.domain.GpsEquipment; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * GPS设备详细Service接口 + * + * @author Lion Li + * @date 2025-08-28 + */ +public interface IGpsEquipmentService extends IService{ + + /** + * 查询GPS设备详细 + * + * @param id 主键 + * @return GPS设备详细 + */ + GpsEquipmentVo queryById(Long id); + + /** + * 分页查询GPS设备详细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return GPS设备详细分页列表 + */ + TableDataInfo queryPageList(GpsEquipmentBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的GPS设备详细列表 + * + * @param bo 查询条件 + * @return GPS设备详细列表 + */ + List queryList(GpsEquipmentBo bo); + + /** + * 新增GPS设备详细 + * + * @param bo GPS设备详细 + * @return 是否新增成功 + */ + Boolean insertByBo(GpsEquipmentBo bo); + + /** + * 修改GPS设备详细 + * + * @param bo GPS设备详细 + * @return 是否修改成功 + */ + Boolean updateByBo(GpsEquipmentBo bo); + + /** + * 校验并批量删除GPS设备详细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 接收设备数据 + * @param jsonData + */ + void dataAcceptance(String jsonData); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java new file mode 100644 index 00000000..91bd9bd9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java @@ -0,0 +1,70 @@ +package org.dromara.gps.service; + +import org.dromara.gps.domain.vo.GpsEquipmentSonVo; +import org.dromara.gps.domain.bo.GpsEquipmentSonBo; +import org.dromara.gps.domain.GpsEquipmentSon; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * GPS设备定位信息Service接口 + * + * @author Lion Li + * @date 2025-08-28 + */ +public interface IGpsEquipmentSonService extends IService{ + + /** + * 查询GPS设备定位信息 + * + * @param id 主键 + * @return GPS设备定位信息 + */ + GpsEquipmentSonVo queryById(Long id); + + /** + * 分页查询GPS设备定位信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return GPS设备定位信息分页列表 + */ + TableDataInfo queryPageList(GpsEquipmentSonBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的GPS设备定位信息列表 + * + * @param bo 查询条件 + * @return GPS设备定位信息列表 + */ + List queryList(GpsEquipmentSonBo bo); + + /** + * 新增GPS设备定位信息 + * + * @param bo GPS设备定位信息 + * @return 是否新增成功 + */ + Boolean insertByBo(GpsEquipmentSonBo bo); + + /** + * 修改GPS设备定位信息 + * + * @param bo GPS设备定位信息 + * @return 是否修改成功 + */ + Boolean updateByBo(GpsEquipmentSonBo bo); + + /** + * 校验并批量删除GPS设备定位信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsManmachineService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsManmachineService.java new file mode 100644 index 00000000..7cedcf6e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsManmachineService.java @@ -0,0 +1,70 @@ +package org.dromara.gps.service; + +import org.dromara.gps.domain.vo.GpsManmachineVo; +import org.dromara.gps.domain.bo.GpsManmachineBo; +import org.dromara.gps.domain.GpsManmachine; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * GPS人机关联Service接口 + * + * @author Lion Li + * @date 2025-08-28 + */ +public interface IGpsManmachineService extends IService{ + + /** + * 查询GPS人机关联 + * + * @param clientId 主键 + * @return GPS人机关联 + */ + GpsManmachineVo queryById(String clientId); + + /** + * 分页查询GPS人机关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return GPS人机关联分页列表 + */ + TableDataInfo queryPageList(GpsManmachineBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的GPS人机关联列表 + * + * @param bo 查询条件 + * @return GPS人机关联列表 + */ + List queryList(GpsManmachineBo bo); + + /** + * 新增GPS人机关联 + * + * @param bo GPS人机关联 + * @return 是否新增成功 + */ + Boolean insertByBo(GpsManmachineBo bo); + + /** + * 修改GPS人机关联 + * + * @param bo GPS人机关联 + * @return 是否修改成功 + */ + Boolean updateByBo(GpsManmachineBo bo); + + /** + * 校验并批量删除GPS人机关联信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java new file mode 100644 index 00000000..6dbe9629 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java @@ -0,0 +1,181 @@ +package org.dromara.gps.service.impl; + +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.gps.domain.GpsEquipmentSon; +import org.dromara.gps.domain.GpsManmachine; +import org.dromara.gps.domain.bo.GpsEquipmentSonBo; +import org.dromara.gps.mapper.GpsManmachineMapper; +import org.dromara.gps.service.IGpsEquipmentSonService; +import org.dromara.gps.service.IGpsManmachineService; +import org.plutext.jaxb.svg11.G; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.gps.domain.bo.GpsEquipmentBo; +import org.dromara.gps.domain.vo.GpsEquipmentVo; +import org.dromara.gps.domain.GpsEquipment; +import org.dromara.gps.mapper.GpsEquipmentMapper; +import org.dromara.gps.service.IGpsEquipmentService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * GPS设备详细Service业务层处理 + * + * @author Lion Li + * @date 2025-08-28 + */ +@RequiredArgsConstructor +@Service +public class GpsEquipmentServiceImpl extends ServiceImpl implements IGpsEquipmentService { + + private final GpsEquipmentMapper baseMapper; + + @Autowired + private IGpsEquipmentSonService gpsEquipmentSonService; + @Autowired + private GpsManmachineMapper gpsManmachineMapper; + + /** + * 查询GPS设备详细 + * + * @param id 主键 + * @return GPS设备详细 + */ + @Override + public GpsEquipmentVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询GPS设备详细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return GPS设备详细分页列表 + */ + @Override + public TableDataInfo queryPageList(GpsEquipmentBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的GPS设备详细列表 + * + * @param bo 查询条件 + * @return GPS设备详细列表 + */ + @Override + public List queryList(GpsEquipmentBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(GpsEquipmentBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(GpsEquipment::getId); + lqw.eq(bo.getProjectId() != null, GpsEquipment::getProjectId, bo.getProjectId()); + lqw.eq(bo.getUserId() != null, GpsEquipment::getUserId, bo.getUserId()); + lqw.eq(StringUtils.isNotBlank(bo.getClientId()), GpsEquipment::getClientId, bo.getClientId()); + return lqw; + } + + /** + * 新增GPS设备详细 + * + * @param bo GPS设备详细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(GpsEquipmentBo bo) { + GpsEquipment add = MapstructUtils.convert(bo, GpsEquipment.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改GPS设备详细 + * + * @param bo GPS设备详细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(GpsEquipmentBo bo) { + GpsEquipment update = MapstructUtils.convert(bo, GpsEquipment.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(GpsEquipment entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除GPS设备详细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public void dataAcceptance(String jsonData) { + JSONObject jsonObject = JSONUtil.parseObj(jsonData); + GpsEquipment gpsEquipment = JSONUtil.toBean(jsonObject, GpsEquipment.class); + GpsEquipment equipment = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(GpsEquipment::getClientId, gpsEquipment.getClientId())); + if(equipment == null){ + baseMapper.insert(gpsEquipment); + } + JSONObject attributes = jsonObject.getJSONObject("attributes"); + JSONObject device = attributes.getJSONObject("Device"); + GpsEquipmentSonBo gpsEquipmentSon = JSONUtil.toBean(device, GpsEquipmentSonBo.class); + + JSONObject location = device.getJSONObject("location"); + gpsEquipmentSon.setLocAltitude(location.getLong("altitude")); + gpsEquipmentSon.setLocLatitude(location.getLong("latitude")); + gpsEquipmentSon.setLocLongitude(location.getLong("longitude")); + gpsEquipmentSon.setLocSpeed(location.getLong("speed")); + gpsEquipmentSon.setLocDirection(location.getLong("direction")); + gpsEquipmentSon.setLocSpeedKph(location.getLong("speedKph")); + gpsEquipmentSon.setLocStatusBit(location.getLong("statusBit")); + gpsEquipmentSon.setLocWarnBit(location.getLong("warnBit")); + gpsEquipmentSon.setLocDeviceTime(location.getLong("deviceTime")); + + gpsEquipmentSon.setClientId(gpsEquipment.getClientId()); + if (equipment != null && equipment.getUserId() != null) { + gpsEquipmentSon.setUserId(equipment.getUserId()); + + } + + gpsEquipmentSonService.insertByBo(gpsEquipmentSon); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java new file mode 100644 index 00000000..658bf03f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java @@ -0,0 +1,146 @@ +package org.dromara.gps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.gps.domain.bo.GpsEquipmentSonBo; +import org.dromara.gps.domain.vo.GpsEquipmentSonVo; +import org.dromara.gps.domain.GpsEquipmentSon; +import org.dromara.gps.mapper.GpsEquipmentSonMapper; +import org.dromara.gps.service.IGpsEquipmentSonService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * GPS设备定位信息Service业务层处理 + * + * @author Lion Li + * @date 2025-08-28 + */ +@RequiredArgsConstructor +@Service +public class GpsEquipmentSonServiceImpl extends ServiceImpl implements IGpsEquipmentSonService { + + private final GpsEquipmentSonMapper baseMapper; + + /** + * 查询GPS设备定位信息 + * + * @param id 主键 + * @return GPS设备定位信息 + */ + @Override + public GpsEquipmentSonVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询GPS设备定位信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return GPS设备定位信息分页列表 + */ + @Override + public TableDataInfo queryPageList(GpsEquipmentSonBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的GPS设备定位信息列表 + * + * @param bo 查询条件 + * @return GPS设备定位信息列表 + */ + @Override + public List queryList(GpsEquipmentSonBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(GpsEquipmentSonBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(GpsEquipmentSon::getId); + lqw.eq(bo.getUserId() != null, GpsEquipmentSon::getUserId, bo.getUserId()); + lqw.eq(StringUtils.isNotBlank(bo.getClientId()), GpsEquipmentSon::getClientId, bo.getClientId()); + lqw.like(StringUtils.isNotBlank(bo.getDeviceName()), GpsEquipmentSon::getDeviceName, bo.getDeviceName()); + lqw.eq(StringUtils.isNotBlank(bo.getDeviceId()), GpsEquipmentSon::getDeviceId, bo.getDeviceId()); + lqw.eq(StringUtils.isNotBlank(bo.getMobileNo()), GpsEquipmentSon::getMobileNo, bo.getMobileNo()); + lqw.eq(StringUtils.isNotBlank(bo.getPlateNo()), GpsEquipmentSon::getPlateNo, bo.getPlateNo()); + lqw.eq(bo.getProtocolVersion() != null, GpsEquipmentSon::getProtocolVersion, bo.getProtocolVersion()); + lqw.eq(bo.getLocWarnBit() != null, GpsEquipmentSon::getLocWarnBit, bo.getLocWarnBit()); + lqw.eq(bo.getLocStatusBit() != null, GpsEquipmentSon::getLocStatusBit, bo.getLocStatusBit()); + lqw.eq(bo.getLocLatitude() != null, GpsEquipmentSon::getLocLatitude, bo.getLocLatitude()); + lqw.eq(bo.getLocLongitude() != null, GpsEquipmentSon::getLocLongitude, bo.getLocLongitude()); + lqw.eq(bo.getLocAltitude() != null, GpsEquipmentSon::getLocAltitude, bo.getLocAltitude()); + lqw.eq(bo.getLocSpeed() != null, GpsEquipmentSon::getLocSpeed, bo.getLocSpeed()); + lqw.eq(bo.getLocSpeedKph() != null, GpsEquipmentSon::getLocSpeedKph, bo.getLocSpeedKph()); + lqw.eq(bo.getLocDirection() != null, GpsEquipmentSon::getLocDirection, bo.getLocDirection()); + lqw.eq(bo.getLocDeviceTime() != null, GpsEquipmentSon::getLocDeviceTime, bo.getLocDeviceTime()); + return lqw; + } + + /** + * 新增GPS设备定位信息 + * + * @param bo GPS设备定位信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(GpsEquipmentSonBo bo) { + GpsEquipmentSon add = MapstructUtils.convert(bo, GpsEquipmentSon.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改GPS设备定位信息 + * + * @param bo GPS设备定位信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(GpsEquipmentSonBo bo) { + GpsEquipmentSon update = MapstructUtils.convert(bo, GpsEquipmentSon.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(GpsEquipmentSon entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除GPS设备定位信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsManmachineServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsManmachineServiceImpl.java new file mode 100644 index 00000000..5585919a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsManmachineServiceImpl.java @@ -0,0 +1,131 @@ +package org.dromara.gps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.gps.domain.bo.GpsManmachineBo; +import org.dromara.gps.domain.vo.GpsManmachineVo; +import org.dromara.gps.domain.GpsManmachine; +import org.dromara.gps.mapper.GpsManmachineMapper; +import org.dromara.gps.service.IGpsManmachineService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * GPS人机关联Service业务层处理 + * + * @author Lion Li + * @date 2025-08-28 + */ +@RequiredArgsConstructor +@Service +public class GpsManmachineServiceImpl extends ServiceImpl implements IGpsManmachineService { + + private final GpsManmachineMapper baseMapper; + + /** + * 查询GPS人机关联 + * + * @param clientId 主键 + * @return GPS人机关联 + */ + @Override + public GpsManmachineVo queryById(String clientId){ + return baseMapper.selectVoById(clientId); + } + + /** + * 分页查询GPS人机关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return GPS人机关联分页列表 + */ + @Override + public TableDataInfo queryPageList(GpsManmachineBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的GPS人机关联列表 + * + * @param bo 查询条件 + * @return GPS人机关联列表 + */ + @Override + public List queryList(GpsManmachineBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(GpsManmachineBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(GpsManmachine::getClientId); + lqw.eq(bo.getUserId() != null, GpsManmachine::getUserId, bo.getUserId()); + return lqw; + } + + /** + * 新增GPS人机关联 + * + * @param bo GPS人机关联 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(GpsManmachineBo bo) { + GpsManmachine add = MapstructUtils.convert(bo, GpsManmachine.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setClientId(add.getClientId()); + } + return flag; + } + + /** + * 修改GPS人机关联 + * + * @param bo GPS人机关联 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(GpsManmachineBo bo) { + GpsManmachine update = MapstructUtils.convert(bo, GpsManmachine.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(GpsManmachine entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除GPS人机关联信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +}