feat(equipment): 新增高德轨迹服务相关功能与设备终端管理
- 新增 AmapTrackUtil 工具类,封装高德猎鹰轨迹服务 API 调用 - 在 Device 实体中增加高德服务、终端、轨迹 ID 字段(sid, tid, trid) - 新增设备终端分页查询接口 /pageTerminal 及对应实现 - 新增围栏与设备关联实体 DeviceFenceTerminal 及 Mapper - 扩展 DeviceGeoFence 相关注入高德服务及围栏 ID 字段 - 新增添加/删除围栏终端绑定接口及业务逻辑 - 新增轨迹服务模块(TrackService)包括 Controller、Service、BO、DTO 等完整结构 - 在 DeviceMapper.xml 中补充终端相关字段查询及筛选条件 - 新增 TerminalDeviceBo、TerminalDelBo、TerminalQueryBo 等数据传输对象 - 补充设备查询条件支持高德终端状态及服务 ID 过滤 - 新增围栏终端关联表 device_fence_terminal 并注册至菜单配置 - 完善设备分配逻辑以兼容角色权限判断及终端信息展示
This commit is contained in:
@ -167,4 +167,20 @@ public class Device extends TenantEntity {
|
||||
*/
|
||||
private Integer onlineStatus;
|
||||
|
||||
/**
|
||||
* 高德服务ID
|
||||
*/
|
||||
@Schema(title = "服务ID(高德)")
|
||||
private Long sid;
|
||||
/**
|
||||
* 高德终端ID
|
||||
*/
|
||||
@Schema(title = "终端ID(高德)")
|
||||
private Long tid;
|
||||
/**
|
||||
* 高德轨迹ID
|
||||
*/
|
||||
@Schema(title = "轨迹ID(高德)")
|
||||
private Long trid;
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.fuyuanshen.equipment.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fuyuanshen.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fuyuanshen.common.tenant.core.TenantEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
@ -18,7 +19,7 @@ import java.io.Serial;
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("device_fence_access_record")
|
||||
public class DeviceFenceAccessRecord extends BaseEntity {
|
||||
public class DeviceFenceAccessRecord extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
package com.fuyuanshen.equipment.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 围栏终端关联
|
||||
*
|
||||
* @author Lion Li
|
||||
*/
|
||||
@Data
|
||||
@TableName("device_fence_terminal")
|
||||
public class DeviceFenceTerminal {
|
||||
/**
|
||||
* 围栏ID
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private Long fenceId;
|
||||
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
||||
private Long deviceId;
|
||||
}
|
||||
@ -58,6 +58,14 @@ public class DeviceGeoFence extends BaseEntity {
|
||||
* 是否激活
|
||||
*/
|
||||
private Long isActive;
|
||||
/**
|
||||
* 高德服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
/**
|
||||
* 高德围栏ID
|
||||
*/
|
||||
private Long gfid;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
package com.fuyuanshen.equipment.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fuyuanshen.common.mybatis.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 轨迹服务对象 track_service
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-24
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("track_service")
|
||||
public class TrackService extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 猎鹰服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String sname;
|
||||
|
||||
|
||||
}
|
||||
@ -70,6 +70,14 @@ public class DeviceGeoFenceBo extends BaseEntity {
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 高德服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
/**
|
||||
* 高德围栏ID
|
||||
*/
|
||||
private Long gfid;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
package com.fuyuanshen.equipment.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class FenceTerminalBo {
|
||||
/**
|
||||
* 围栏ID
|
||||
*/
|
||||
private Long fenceId;
|
||||
/**
|
||||
* 设备IDs
|
||||
*/
|
||||
private List<Long> deviceIds;
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.fuyuanshen.equipment.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TerminalDelBo {
|
||||
/**
|
||||
* 猎鹰服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
/**
|
||||
* 轨迹ID
|
||||
*/
|
||||
private Long trid;
|
||||
/**
|
||||
* 终端ID
|
||||
*/
|
||||
private Long tid;
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.fuyuanshen.equipment.domain.bo;
|
||||
|
||||
import com.fuyuanshen.equipment.domain.form.DeviceForm;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TerminalDeviceBo {
|
||||
/**
|
||||
* 猎鹰服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
/**
|
||||
* 设备列表
|
||||
*/
|
||||
List<DeviceForm> deviceList;
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package com.fuyuanshen.equipment.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Value;
|
||||
|
||||
@Data
|
||||
public class TerminalQueryBo {
|
||||
/**
|
||||
* 猎鹰服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
/**
|
||||
* 名称查询
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 终端ID
|
||||
*/
|
||||
private Long tid;
|
||||
/**
|
||||
* 关键字搜索
|
||||
*/
|
||||
private String keywords;
|
||||
/**
|
||||
* 分页
|
||||
*/
|
||||
private int page = 1;
|
||||
/**
|
||||
* 每页数量
|
||||
*/
|
||||
private int pagesize = 10;
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
package com.fuyuanshen.equipment.domain.bo;
|
||||
|
||||
import com.fuyuanshen.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fuyuanshen.equipment.domain.TrackService;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 轨迹服务业务对象 track_service
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-24
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = TrackService.class, reverseConvertGenerate = false)
|
||||
public class TrackServiceBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 猎鹰服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String sname;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
package com.fuyuanshen.equipment.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor // 必须
|
||||
public class TerminalDeviceDto {
|
||||
/**
|
||||
* 终端设备名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 终端设备ID
|
||||
*/
|
||||
private Long tid;
|
||||
/**
|
||||
* 终端设备描述
|
||||
*/
|
||||
private String desc;
|
||||
/**
|
||||
* 终端设备创建时间
|
||||
*/
|
||||
private String createtime;
|
||||
/**
|
||||
* 终端设备最后定位时间
|
||||
*/
|
||||
private String locatetime;
|
||||
}
|
||||
@ -122,6 +122,18 @@ public class DeviceQueryCriteria extends BaseEntity {
|
||||
* online_status
|
||||
*/
|
||||
private Integer onlineStatus;
|
||||
/**
|
||||
* 高德终端ID是否存在
|
||||
*/
|
||||
private Boolean isTid;
|
||||
/**
|
||||
* 高德服务ID
|
||||
*/
|
||||
private String sid;
|
||||
/**
|
||||
* 围栏ID
|
||||
*/
|
||||
private Long fenceId;
|
||||
|
||||
/**
|
||||
* 绑定状态
|
||||
|
||||
@ -101,6 +101,14 @@ public class DeviceGeoFenceVo implements Serializable {
|
||||
*/
|
||||
// @ExcelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 高德服务ID
|
||||
*/
|
||||
private Long sid;
|
||||
/**
|
||||
* 高德围栏ID
|
||||
*/
|
||||
private Long gfid;
|
||||
|
||||
|
||||
public void setAreaTypeNameByAreaType() {
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
package com.fuyuanshen.equipment.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import com.fuyuanshen.common.excel.annotation.ExcelDictFormat;
|
||||
import com.fuyuanshen.common.excel.convert.ExcelDictConvert;
|
||||
import com.fuyuanshen.equipment.domain.TrackService;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 轨迹服务视图对象 track_service
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-24
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = TrackService.class)
|
||||
public class TrackServiceVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ExcelProperty(value = "")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 猎鹰服务ID
|
||||
*/
|
||||
@ExcelProperty(value = "猎鹰服务ID")
|
||||
private Long sid;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
@ExcelProperty(value = "服务名称")
|
||||
private String sname;
|
||||
|
||||
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package com.fuyuanshen.equipment.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
@ -103,5 +104,20 @@ public class WebDeviceVo implements Serializable {
|
||||
* 分享用户数量
|
||||
*/
|
||||
private Integer shareUsersNumber;
|
||||
/**
|
||||
* 高德服务ID
|
||||
*/
|
||||
@Schema(title = "服务ID(高德)")
|
||||
private Long sid;
|
||||
/**
|
||||
* 高德终端ID
|
||||
*/
|
||||
@Schema(title = "终端ID(高德)")
|
||||
private Long tid;
|
||||
/**
|
||||
* 高德轨迹ID
|
||||
*/
|
||||
@Schema(title = "轨迹ID(高德)")
|
||||
private Long trid;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user