feat(ops): 新增安保模块数据模型与 Mapper

新增安保区域人员绑定表 ops_area_security_user 和安保工单扩展表
ops_order_security_ext,以及对应的 DO 和 Mapper 接口。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-03-11 17:32:56 +08:00
parent b8d0a77156
commit d53d1c4584
6 changed files with 289 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
package com.viewsh.module.ops.security.dal.dataobject.area;
import com.viewsh.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* 区域-安保人员绑定 DO
*
* @author lzh
*/
@TableName("ops_area_security_user")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OpsAreaSecurityUserDO extends BaseDO {
/**
* 主键
*/
@TableId
private Long id;
/**
* 区域ID关联 ops_bus_area.id
*/
private Long areaId;
/**
* 安保人员用户ID关联 system_users.id
*/
private Long userId;
/**
* 安保人员姓名(冗余)
*/
private String userName;
/**
* 所属班组ID
*/
private Long teamId;
/**
* 是否启用
*/
private Boolean enabled;
/**
* 排序值
*/
private Integer sort;
}

View File

@@ -0,0 +1,100 @@
package com.viewsh.module.ops.security.dal.dataobject.workorder;
import com.viewsh.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDateTime;
/**
* 安保工单扩展 DO
*
* @author lzh
*/
@TableName("ops_order_security_ext")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OpsOrderSecurityExtDO extends BaseDO {
/**
* 主键
*/
@TableId
private Long id;
/**
* 工单ID
*
* 关联 {@link com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderDO#getId()}
*/
private Long opsOrderId;
// ==================== 告警来源 ====================
/**
* 关联告警ID告警工单必填手动工单可空
*/
private String alarmId;
/**
* 告警类型intrusion=入侵/leave_post=离岗/fire=火灾/fence=越界)
*/
private String alarmType;
/**
* 摄像头ID
*/
private String cameraId;
/**
* ROI区域ID
*/
private String roiId;
/**
* 告警截图URL
*/
private String imageUrl;
// ==================== 处理人信息(冗余快照) ====================
/**
* 处理人user_id
*/
private Long assignedUserId;
/**
* 处理人姓名
*/
private String assignedUserName;
/**
* 班组ID
*/
private Long assignedTeamId;
// ==================== 处理结果(完成时提交) ====================
/**
* 处理结果描述
*/
private String result;
/**
* 处理结果图片URLJSON数组
*/
private String resultImgUrls;
// ==================== 关键时间点 ====================
/**
* 派单时间
*/
private LocalDateTime dispatchedTime;
/**
* 确认时间
*/
private LocalDateTime confirmedTime;
/**
* 完成时间
*/
private LocalDateTime completedTime;
}

View File

@@ -0,0 +1,37 @@
package com.viewsh.module.ops.security.dal.mysql.area;
import com.viewsh.framework.mybatis.core.mapper.BaseMapperX;
import com.viewsh.module.ops.security.dal.dataobject.area.OpsAreaSecurityUserDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 区域-安保人员绑定 Mapper
*
* @author lzh
*/
@Mapper
public interface OpsAreaSecurityUserMapper extends BaseMapperX<OpsAreaSecurityUserDO> {
/**
* 查询区域内所有启用的安保人员
*/
default List<OpsAreaSecurityUserDO> selectListByAreaId(Long areaId) {
return selectList(new LambdaQueryWrapper<OpsAreaSecurityUserDO>()
.eq(OpsAreaSecurityUserDO::getAreaId, areaId)
.eq(OpsAreaSecurityUserDO::getEnabled, true)
.orderByAsc(OpsAreaSecurityUserDO::getSort));
}
/**
* 根据区域ID和用户ID查询唯一性校验用
*/
default OpsAreaSecurityUserDO selectByAreaIdAndUserId(Long areaId, Long userId) {
return selectOne(new LambdaQueryWrapper<OpsAreaSecurityUserDO>()
.eq(OpsAreaSecurityUserDO::getAreaId, areaId)
.eq(OpsAreaSecurityUserDO::getUserId, userId));
}
}

View File

@@ -0,0 +1,37 @@
package com.viewsh.module.ops.security.dal.mysql.workorder;
import com.viewsh.framework.mybatis.core.mapper.BaseMapperX;
import com.viewsh.module.ops.security.dal.dataobject.workorder.OpsOrderSecurityExtDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 安保工单扩展 Mapper
*
* @author lzh
*/
@Mapper
public interface OpsOrderSecurityExtMapper extends BaseMapperX<OpsOrderSecurityExtDO> {
/**
* 根据工单ID查询扩展信息
*/
default OpsOrderSecurityExtDO selectByOpsOrderId(Long opsOrderId) {
return selectOne(OpsOrderSecurityExtDO::getOpsOrderId, opsOrderId);
}
/**
* 插入或选择性更新扩展信息
* <p>
* 已存在时按 ID 更新,不存在时插入
*/
default int insertOrUpdateSelective(OpsOrderSecurityExtDO entity) {
OpsOrderSecurityExtDO existing = selectByOpsOrderId(entity.getOpsOrderId());
if (existing == null) {
return insert(entity);
} else {
entity.setId(existing.getId());
return updateById(entity);
}
}
}