Merge branch 'master' of http://124.222.218.198:3000/XW-AIOT/aiot-platform-cloud into feature/cleaning-inspection
This commit is contained in:
@@ -40,13 +40,8 @@ public class OrderQueueDTO {
|
||||
|
||||
/**
|
||||
* 队列分数(用于排序)
|
||||
* 计算公式:优先级分数 + 时间戳
|
||||
* - P0: 0 + timestamp
|
||||
* - P1: 1000000 + timestamp
|
||||
* - P2: 2000000 + timestamp
|
||||
* - P3: 3000000 + timestamp
|
||||
*
|
||||
* 用于数据库层面的排序,优先级高的排在前面,同优先级按时间排序
|
||||
* 计算公式:优先级分 + 楼层差分 - 等待老化分
|
||||
* 分数越小越靠前,用于等待队列的动态重排
|
||||
*/
|
||||
private Double queueScore;
|
||||
|
||||
@@ -95,6 +90,31 @@ public class OrderQueueDTO {
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 评分基准楼层
|
||||
*/
|
||||
private Integer baseFloorNo;
|
||||
|
||||
/**
|
||||
* 目标工单楼层
|
||||
*/
|
||||
private Integer targetFloorNo;
|
||||
|
||||
/**
|
||||
* 楼层差
|
||||
*/
|
||||
private Integer floorDiff;
|
||||
|
||||
/**
|
||||
* 等待分钟数
|
||||
*/
|
||||
private Long waitMinutes;
|
||||
|
||||
/**
|
||||
* 分数更新时间
|
||||
*/
|
||||
private LocalDateTime scoreUpdateTime;
|
||||
|
||||
// ========== 兼容旧字段名的getter方法 ==========
|
||||
|
||||
/**
|
||||
|
||||
@@ -164,6 +164,15 @@ public interface OrderQueueService {
|
||||
*/
|
||||
List<OrderQueueDTO> getWaitingTasksByUserIdFromDb(Long userId);
|
||||
|
||||
/**
|
||||
* 按当前上下文重算指定执行人等待队列的总分并返回最新排序结果
|
||||
*
|
||||
* @param userId 执行人ID
|
||||
* @param fallbackAreaId 当没有执行中工单时可使用的楼层基准区域ID
|
||||
* @return 已按最新总分排序的 WAITING 工单列表
|
||||
*/
|
||||
List<OrderQueueDTO> rebuildWaitingTasksByUserId(Long userId, Long fallbackAreaId);
|
||||
|
||||
/**
|
||||
* 获取用户的暂停任务列表(PAUSED状态,按暂停时间排序)
|
||||
*
|
||||
|
||||
@@ -16,11 +16,18 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode AREA_PARENT_LOOP = new ErrorCode(1_020_001_003, "不能将父级设置为自己或子孙节点");
|
||||
ErrorCode AREA_CODE_EXISTS = new ErrorCode(1_020_001_004, "区域编码已存在");
|
||||
|
||||
// ========== 安保工单 1-020-003-000 ============
|
||||
ErrorCode SECURITY_ORDER_NOT_FOUND = new ErrorCode(1_020_003_000, "工单不存在");
|
||||
ErrorCode SECURITY_ORDER_TYPE_MISMATCH = new ErrorCode(1_020_003_001, "工单类型不匹配,期望安保工单");
|
||||
ErrorCode SECURITY_AREA_USER_DUPLICATE = new ErrorCode(1_020_003_002, "该安保人员已绑定到此区域");
|
||||
ErrorCode SECURITY_AREA_USER_NOT_FOUND = new ErrorCode(1_020_003_003, "绑定记录不存在");
|
||||
|
||||
// ========== 区域设备关联 1-020-002-000 ============
|
||||
ErrorCode DEVICE_NOT_FOUND = new ErrorCode(1_020_002_000, "设备不存在");
|
||||
ErrorCode DEVICE_ALREADY_BOUND = new ErrorCode(1_020_002_001, "该工牌已绑定至此区域");
|
||||
ErrorCode DEVICE_TYPE_ALREADY_BOUND = new ErrorCode(1_020_002_002, "该区域已绑定{},一个区域只能绑定一个");
|
||||
ErrorCode DEVICE_RELATION_NOT_FOUND = new ErrorCode(1_020_002_003, "设备关联关系不存在");
|
||||
ErrorCode IOT_SERVICE_UNAVAILABLE = new ErrorCode(1_020_002_004, "IoT 设备服务不可用,请稍后重试");
|
||||
|
||||
// ========== 巡检模块 1-020-003-000 ============
|
||||
ErrorCode INSPECTION_TEMPLATE_NOT_FOUND = new ErrorCode(1_020_003_000, "巡检模板不存在");
|
||||
|
||||
@@ -18,7 +18,8 @@ public enum OperatorTypeEnum implements ArrayValuable<String> {
|
||||
SYSTEM("SYSTEM", "系统"),
|
||||
CLEANER("CLEANER", "保洁员"),
|
||||
INSPECTOR("INSPECTOR", "巡检员"),
|
||||
ADMIN("ADMIN", "管理员");
|
||||
ADMIN("ADMIN", "管理员"),
|
||||
SECURITY_GUARD("SECURITY_GUARD", "安保员");
|
||||
|
||||
public static final String[] ARRAYS = Arrays.stream(values()).map(OperatorTypeEnum::getType).toArray(String[]::new);
|
||||
|
||||
|
||||
@@ -18,7 +18,8 @@ public enum SourceTypeEnum implements ArrayValuable<String> {
|
||||
TRAFFIC("TRAFFIC", "系统触发"),
|
||||
INSPECTION("INSPECTION", "巡检发现"),
|
||||
MANUAL("MANUAL", "手动创建"),
|
||||
SCHEDULE("SCHEDULE", "定时排班");
|
||||
SCHEDULE("SCHEDULE", "定时排班"),
|
||||
ALARM("ALARM", "告警触发");
|
||||
|
||||
public static final String[] ARRAYS = Arrays.stream(values()).map(SourceTypeEnum::getType).toArray(String[]::new);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user