feat(ops): 客流工单周期化,同区域复用活跃工单并逐级升级优先级
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

解决同一区域客流持续达标时重复创建工单的问题。改为:无活跃工单时
创建新工单,有未派发工单(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:
lzh
2026-02-08 00:21:14 +08:00
parent 4f737a5dd1
commit 0775ead5ff
6 changed files with 454 additions and 35 deletions

View File

@@ -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实现