feat(security): 安保派单补充处理人手机号,接口返回 phone 和 cameraName
- SecurityAreaAssignStrategy 注入 AdminUserApi,从用户表查询 nickname 和 mobile 替代冗余字段 - OpsOrderSecurityExtDO 新增 assignedUserPhone 字段 - SecurityOrderEventListener.handleDispatched 写入 assignedUserId、 assignedUserName、assignedUserPhone 到扩展表 - SecurityOrderExtQueryHandler 接口返回补充 assignedUserPhone 和 cameraName Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -70,6 +70,10 @@ public class OpsOrderSecurityExtDO extends BaseDO {
|
||||
* 处理人姓名
|
||||
*/
|
||||
private String assignedUserName;
|
||||
/**
|
||||
* 处理人手机号
|
||||
*/
|
||||
private String assignedUserPhone;
|
||||
/**
|
||||
* 班组ID
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
: "工单已派发";
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
|
||||
Reference in New Issue
Block a user