From 6d498f3b74512521927cff55211412247a600ec7 Mon Sep 17 00:00:00 2001 From: feng <18691763612@163.com> Date: Fri, 26 Sep 2025 15:51:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E6=80=A5=E6=94=AF=E6=8C=81=E7=AC=AC?= =?UTF-8?q?=E4=BA=8C=E4=B8=AA=E4=B8=93=E4=B8=9A=E4=BA=BA=E5=91=98=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E5=9B=9B=E6=96=B9=E9=80=9A=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/sql/20250926-应急表工单表加字段.sql | 10 +++ .../com/renkang/emergency/entity/Order.java | 28 +++++++ .../service/impl/EmergencyApiServiceImpl.java | 83 ++++++++++++++----- .../impl/EmergencyOrderApiServiceImpl.java | 2 +- .../service/impl/OrderServiceImpl.java | 4 +- 5 files changed, 104 insertions(+), 23 deletions(-) create mode 100644 db/sql/20250926-应急表工单表加字段.sql diff --git a/db/sql/20250926-应急表工单表加字段.sql b/db/sql/20250926-应急表工单表加字段.sql new file mode 100644 index 0000000..fd1d6c5 --- /dev/null +++ b/db/sql/20250926-应急表工单表加字段.sql @@ -0,0 +1,10 @@ + +-- ---------------------------- +-- Table structure for emergency_order +-- ---------------------------- +ALTER TABLE `emergency_order` + ADD COLUMN `major_user_two_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员id', + ADD COLUMN `major_user_two_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员姓名', + ADD COLUMN `major_user_two_sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员性别', + ADD COLUMN `major_user_two_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员电话', + ADD COLUMN `major_user_two_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人头像'; \ No newline at end of file diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Order.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Order.java index 2059030..066a962 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Order.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Order.java @@ -246,6 +246,34 @@ public class Order implements Serializable { @Excel(name = "专业人头像", width = 15) @Schema(title = "专业人头像") private java.lang.String majorUserAvatar; + + /** + * 第二位参与的专业人员id + * PS: 新疆项目的临时解决方案 ,为满足四方通话的需求 ,可能会在发起应急的时候拉第二位专业人员加入对话 + */ + @Schema(title = "第二位参与的专业人员id") + private java.lang.String majorUserTwoId; + /** + * 第二位参与的专业人员姓名 + */ + @Schema(title = "第二位参与的专业人员姓名") + private java.lang.String majorUserTwoName; + /** + * 第二位参与的专业人员性别 + */ + @Schema(title = "第二位参与的专业人员性别") + private java.lang.String majorUserTwoSex; + /** + * 第二位参与的专业人员电话 + */ + @Schema(title = "第二位参与的专业人员电话") + private java.lang.String majorUserTwoMobile; + /** + * 第二位参与的专业人头像 + */ + @Schema(title = "第二位参与的专业人头像") + private java.lang.String majorUserTwoAvatar; + /** * 驻场人员id */ diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java index 0b85df9..9f51f70 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java @@ -744,12 +744,10 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { @Override public Result> createGroupMag(String name, String longitude, String latitude, String type) { - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - + //查是否有已经存在的应急工单,有则直接返回相关信息 Order order = emergencyResourceApiServiceImpl.sessionNowSession(sysUser.getId()); - - List userList = new ArrayList<>(2); + List userList = new ArrayList<>(); if (order != null) { Map res = new HashMap<>(); res.put("userId", sysUser.getId()); @@ -757,30 +755,38 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { res.put("tfNew", "0"); userList.add(order.getOperationUserId()); userList.add(order.getMajorUserId()); + if(null != order.getMajorUserTwoId()){ + userList.add(order.getMajorUserTwoId()); + } res.put("member", userList); res.put("id", order.getId()); return Result.OK(res); } - // 当前值班人员 + // 查询当前应急中心值班人员 Call rs = this.officerOnDuty(); - if (rs == null || CollectionUtils.isEmpty(rs.getMajors()) || CollectionUtils.isEmpty(rs.getOperators())) { return Result.error("没有接受方人员!"); } - + List yesIds = new ArrayList<>(); String majorsId = rs.getMajors().get(0).getUserId(); String operatorsId = rs.getOperators().get(0).getUserId(); - - List yesIds = new ArrayList<>(); + String majorsTwoId = null; + if(rs.getMajors().size() > 1){ + //20250926前是 多个值班人员随机取第一个 , 后改成取两个专业人员 , 将两个专业人员都拉入群聊 + majorsTwoId = rs.getMajors().get(1).getUserId(); + yesIds.add(majorsTwoId); + userList.add(majorsTwoId); + } + userList.add(operatorsId); + userList.add(majorsId); yesIds.add(sysUser.getId()); yesIds.add(majorsId); yesIds.add(operatorsId); - + //获取参与应急的人员信息 ConSessionRequestDO conSessionRequestDO = selectConSessionRequestDO(yesIds, "", name); conSessionRequestDO.setUserId(sysUser.getId()); - - + //调用IM创建群组 Result> imrs = iMHelloApi.creatGroupMagNew(conSessionRequestDO); boolean isSuccess = imrs.isSuccess(); if (!isSuccess) { @@ -788,28 +794,63 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { } String sessionId = (String) imrs.getResult().get("groupId"); String callType = StrUtil.isNotBlank(type) ? "2" : "1"; + //发送IM 提醒消息 sendInitMsg(sessionId, callType, sysUser.getId()); EmergencyCall emergencyCall = new EmergencyCall(); emergencyCall.setCallType(callType); emergencyCall.setLongitude(Double.valueOf(longitude)); emergencyCall.setLatitude(Double.valueOf(latitude)); emergencyCall.setCenterId(rs.getCenterId()); + //保存应急工单 String orderId = this.call(emergencyCall); - CallBack callBack = new CallBack(); - callBack.setOrderId(orderId); - callBack.setMajorUserId(majorsId); - callBack.setOperationUserId(operatorsId); - callBack.setSessionId(sessionId); - callBack.setCenterId(rs.getCenterId()); - this.callBack(callBack); - userList.add(operatorsId); - userList.add(majorsId); + //保存参与应急的人员信息 PS: 不想大改之前的代码逻辑此处 没有将同一条记录的赋值逻辑合并 + saveOderOperationInfo(orderId,sessionId,majorsId,operatorsId,majorsTwoId,rs.getCenterId(),conSessionRequestDO.getAccountList()); imrs.getResult().put("member", userList); imrs.getResult().put("tfNew", "1"); imrs.getResult().put("id", orderId); return imrs; } + public void saveOderOperationInfo(String orderId, String sessionId, String majorsId, String operatorsId, String majorsTwoId, + String centerId ,List accountList) { + Map userMap = accountList.stream().collect(Collectors.toMap(LoginUserNew::getId, user -> user)); + Date now = new Date(); + Order order = new Order(); + order.setId(orderId); + order.setSessionId(sessionId); + order.setSessionNow(true); + order.setOrderStatus(EmergencyConstants.ORDER_STATUS_1_NEW); + order.setIsDispatch(EmergencyConstants.ORDER_SEND_STATUS_1); + order.setCenterId(centerId); + if(null != operatorsId && null != userMap.get(operatorsId)){ + LoginUserNew operationUser = userMap.get(operatorsId); + order.setOperationUserId(operatorsId); + order.setOperationUserName(handleNull(operationUser).getRealname()); + order.setOperationUserSex(ifNullReturnEmpty(handleNull(operationUser).getSex())); + order.setOperationUserMobile(handleNull(operationUser).getPhone()); + order.setOperationUserAvatar(handleNull(operationUser).getAvatar()); + order.setOperationResponseTime(now); + } + if(null != majorsId && null != userMap.get(majorsId)){ + LoginUserNew majorUser = userMap.get(majorsId); + order.setMajorUserId(majorsId); + order.setMajorUserName(handleNull(majorUser).getRealname()); + order.setMajorUserSex(ifNullReturnEmpty(handleNull(majorUser).getSex())); + order.setMajorUserMobile(handleNull(majorUser).getPhone()); + order.setMajorUserAvatar(handleNull(majorUser).getAvatar()); + order.setMajorResponseTime(now); + } + if(null != majorsTwoId && null != userMap.get(majorsTwoId)){ + LoginUserNew majorUserTwo = userMap.get(majorsTwoId); + order.setMajorUserTwoId(majorsTwoId); + order.setMajorUserTwoName(handleNull(majorUserTwo).getRealname()); + order.setMajorUserTwoSex(ifNullReturnEmpty(handleNull(majorUserTwo).getSex())); + order.setMajorUserTwoMobile(handleNull(majorUserTwo).getPhone()); + order.setMajorUserTwoAvatar(handleNull(majorUserTwo).getAvatar()); + } + orderMapper.updateById(order); + } + @Override public Result> createGroupMagIntervene(String name, String longitude, String latitude, String type) { // 干预每次发起都是创建新的应急单 diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java index a89de21..967faaf 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java @@ -625,7 +625,7 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { String userId = GlobalUtils.getLoginUser().getId(); LambdaQueryWrapper queryWrapper = GlobalUtils.getLambdaQueryWrapper(); if (EmergencyConstants.MAJOR.equals(type)) { - queryWrapper.eq(Order::getMajorUserId, userId); + queryWrapper.and(orWrapper -> orWrapper.eq(Order::getMajorUserId, userId).or().eq(Order::getMajorUserTwoId, userId)); } if (EmergencyConstants.OPERATION.equals(type)) { queryWrapper.eq(Order::getOperationUserId, userId); diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/OrderServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/OrderServiceImpl.java index c3f16ed..15c5bf7 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/OrderServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/OrderServiceImpl.java @@ -169,7 +169,9 @@ public class OrderServiceImpl extends ServiceImpl implements QueryWrapper queryWrapper = new QueryWrapper<>(); handleQueryWrapper(order, order.getSalvageUserName(), queryWrapper); - queryWrapper.lambda().eq(Order::getMajorUserId, loginUser.getId()); + //queryWrapper.lambda().eq(Order::getMajorUserId, loginUser.getId()); + queryWrapper.lambda().and(orWrapper -> orWrapper.eq(Order::getMajorUserId, loginUser.getId()).or().eq(Order::getMajorUserTwoId, loginUser.getId())); + if (StrUtil.isBlank(order.getOrderStatus())) { queryWrapper.lambda().in(Order::getOrderStatus, Arrays.asList(EmergencyConstants.ORDER_STATUS_5_NEW, EmergencyConstants.ORDER_STATUS_1_NEW)); }