From 0dfc66948847fb6cf6245bcc3541f555f966f939 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 25 Mar 2026 14:26:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(security):=20=E5=AE=89=E4=BF=9D=E6=B4=BE?= =?UTF-8?q?=E5=8D=95=E8=A1=A5=E5=85=85=E5=A4=84=E7=90=86=E4=BA=BA=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=EF=BC=8C=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=20phone=20=E5=92=8C=20cameraName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SecurityAreaAssignStrategy 注入 AdminUserApi,从用户表查询 nickname 和 mobile 替代冗余字段 - OpsOrderSecurityExtDO 新增 assignedUserPhone 字段 - SecurityOrderEventListener.handleDispatched 写入 assignedUserId、 assignedUserName、assignedUserPhone 到扩展表 - SecurityOrderExtQueryHandler 接口返回补充 assignedUserPhone 和 cameraName Co-Authored-By: Claude Opus 4.6 (1M context) --- .../workorder/OpsOrderSecurityExtDO.java | 4 ++++ .../listener/SecurityOrderEventListener.java | 11 ++++++++--- .../dispatch/SecurityAreaAssignStrategy.java | 18 +++++++++++++++++- .../SecurityOrderExtQueryHandler.java | 2 ++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/dal/dataobject/workorder/OpsOrderSecurityExtDO.java b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/dal/dataobject/workorder/OpsOrderSecurityExtDO.java index 055e6fc..2af6096 100644 --- a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/dal/dataobject/workorder/OpsOrderSecurityExtDO.java +++ b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/dal/dataobject/workorder/OpsOrderSecurityExtDO.java @@ -70,6 +70,10 @@ public class OpsOrderSecurityExtDO extends BaseDO { * 处理人姓名 */ private String assignedUserName; + /** + * 处理人手机号 + */ + private String assignedUserPhone; /** * 班组ID */ diff --git a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java index c3c6a2d..eb00851 100644 --- a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java +++ b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java @@ -154,15 +154,20 @@ public class SecurityOrderEventListener { // ==================== 状态处理方法 ==================== private void handleDispatched(Long orderId, OrderStateChangedEvent event) { - // 1. 记录下发时间 + // 1. 记录下发时间 + 处理人信息 + Long assigneeId = event.getPayloadLong("assigneeId"); + String assigneeName = (String) event.getPayload().get("assigneeName"); + String assigneePhone = (String) event.getPayload().get("assigneePhone"); + OpsOrderSecurityExtDO extUpdate = new OpsOrderSecurityExtDO(); extUpdate.setOpsOrderId(orderId); extUpdate.setDispatchedTime(LocalDateTime.now()); + extUpdate.setAssignedUserId(assigneeId); + extUpdate.setAssignedUserName(assigneeName); + extUpdate.setAssignedUserPhone(assigneePhone); securityExtMapper.insertOrUpdateSelective(extUpdate); // 2. 业务日志 - Long assigneeId = event.getPayloadLong("assigneeId"); - String assigneeName = (String) event.getPayload().get("assigneeName"); String message = assigneeName != null ? String.format("工单已派发给 %s", assigneeName) : "工单已派发"; diff --git a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/dispatch/SecurityAreaAssignStrategy.java b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/dispatch/SecurityAreaAssignStrategy.java index f007585..32404c5 100644 --- a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/dispatch/SecurityAreaAssignStrategy.java +++ b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/dispatch/SecurityAreaAssignStrategy.java @@ -8,6 +8,8 @@ import com.viewsh.module.ops.core.dispatch.strategy.AssignStrategy; import com.viewsh.module.ops.enums.WorkOrderTypeEnum; import com.viewsh.module.ops.security.dal.dataobject.area.OpsAreaSecurityUserDO; import com.viewsh.module.ops.security.dal.mysql.area.OpsAreaSecurityUserMapper; +import com.viewsh.module.system.api.user.AdminUserApi; +import com.viewsh.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -35,6 +37,9 @@ public class SecurityAreaAssignStrategy implements AssignStrategy { @Resource private OpsAreaSecurityUserMapper areaSecurityUserMapper; + @Resource + private AdminUserApi adminUserApi; + @PostConstruct public void init() { dispatchEngine.registerAssignStrategy(BUSINESS_TYPE, this); @@ -67,8 +72,19 @@ public class SecurityAreaAssignStrategy implements AssignStrategy { // 选择 sort 值最小的人员(sort 越小优先级越高,由 Mapper 已按 sort ASC 排序) OpsAreaSecurityUserDO chosen = users.get(0); + + // 从系统用户表查询 nickname 和 mobile + String assigneeName = chosen.getUserName(); // 兜底使用冗余字段 + String assigneePhone = null; + AdminUserRespDTO user = adminUserApi.getUser(chosen.getUserId()).getCheckedData(); + if (user != null) { + assigneeName = user.getNickname(); + assigneePhone = user.getMobile(); + } + AssigneeRecommendation recommendation = AssigneeRecommendation.of( - chosen.getUserId(), chosen.getUserName(), 50, "区域排序优先分配"); + chosen.getUserId(), assigneeName, 50, "区域排序优先分配"); + recommendation.setAssigneePhone(assigneePhone); recommendation.setAreaId(areaId); return recommendation; } diff --git a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/securityorder/SecurityOrderExtQueryHandler.java b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/securityorder/SecurityOrderExtQueryHandler.java index 3ce9c25..f5a21e3 100644 --- a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/securityorder/SecurityOrderExtQueryHandler.java +++ b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/service/securityorder/SecurityOrderExtQueryHandler.java @@ -91,10 +91,12 @@ public class SecurityOrderExtQueryHandler implements OrderExtQueryHandler { extInfo.put("alarmId", ext.getAlarmId()); extInfo.put("alarmType", ext.getAlarmType()); extInfo.put("cameraId", ext.getCameraId()); + extInfo.put("cameraName", ext.getCameraName()); extInfo.put("roiId", ext.getRoiId()); extInfo.put("imageUrl", OssPresignHelper.presignQuietly(fileApi, ext.getImageUrl())); extInfo.put("assignedUserId", ext.getAssignedUserId()); extInfo.put("assignedUserName", ext.getAssignedUserName()); + extInfo.put("assignedUserPhone", ext.getAssignedUserPhone()); extInfo.put("assignedTeamId", ext.getAssignedTeamId()); extInfo.put("result", ext.getResult()); extInfo.put("resultImgUrls", OssPresignHelper.presignJsonArrayQuietly(fileApi, ext.getResultImgUrls()));