feat(ops): 客流工单周期化,同区域复用活跃工单并逐级升级优先级
解决同一区域客流持续达标时重复创建工单的问题。改为:无活跃工单时 创建新工单,有未派发工单(PENDING/QUEUED)时升级优先级一级,有已派发 工单时忽略,所有分支均重置阈值计数器。工单终态时清除活跃标记。 - 新增 TrafficActiveOrderRedisDAO 管理区域活跃工单 Redis 标记 - 新增 CleanOrderService.upgradeOneLevelPriority 逐级升级优先级 - 改造 CleanOrderCreateEventHandler 实现客流触发周期化分支逻辑 - 新增 OpsOrderMapper.selectActiveTrafficOrder 作为 DB 兜底查询 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,21 @@ public interface OpsOrderMapper extends BaseMapperX<OpsOrderDO> {
|
||||
.orderByAsc(OpsOrderDO::getCreateTime));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询区域内客流触发的活跃工单(非终态)
|
||||
*
|
||||
* @param areaId 区域ID
|
||||
* @return 最近创建的活跃客流工单,不存在返回 null
|
||||
*/
|
||||
default OpsOrderDO selectActiveTrafficOrder(Long areaId) {
|
||||
return selectOne(new LambdaQueryWrapperX<OpsOrderDO>()
|
||||
.eq(OpsOrderDO::getAreaId, areaId)
|
||||
.eq(OpsOrderDO::getTriggerSource, "IOT_TRAFFIC")
|
||||
.notIn(OpsOrderDO::getStatus, "COMPLETED", "CANCELLED")
|
||||
.orderByDesc(OpsOrderDO::getCreateTime)
|
||||
.last("LIMIT 1"));
|
||||
}
|
||||
|
||||
// 注意:分页查询方法需要在Service层实现,这里只提供基础查询方法
|
||||
// 具体分页查询请参考Service实现
|
||||
|
||||
|
||||
Reference in New Issue
Block a user