From fbd91f8337aa72bd7f45ceb5aa25b6daa20ebcea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=BF=97=E6=B5=A9?= <8583167+chen-zh@user.noreply.gitee.com> Date: Sat, 25 Jul 2026 01:58:42 +0000 Subject: [PATCH] =?UTF-8?q?!92=20czh-20260725-=E5=A2=9E=E5=BC=BA=E8=87=AA?= =?UTF-8?q?=E6=88=91=E6=8E=92=E9=99=A4=E9=80=BB=E8=BE=91=E5=B9=B6=E7=BB=9F?= =?UTF-8?q?=E4=B8=80fastjson2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Merge branch 'master' of gitee.com:sz_30/supervison-java into feature/… * czh-20260725-增强自我排除逻辑并统一fastjson2 * czh-20260724-即时通API接口改为sendBatch * czh-20260724-增加即时通请求体日志 * czh-20260724-IM模块统一使用fastjson2 * czh-20260724-添加bundle到gitignore * czh-20260724-增补意见即时通推送和回显功能 --- .../modules/ksim/client/KsimApiClient.java | 3 +- .../ksim/controller/KsimTestController.java | 6 +-- .../impl/TaskApprovalOpinionServiceImpl.java | 37 +++++++++++++------ 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/client/KsimApiClient.java b/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/client/KsimApiClient.java index 56ba2e5..0f07f05 100644 --- a/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/client/KsimApiClient.java +++ b/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/client/KsimApiClient.java @@ -59,7 +59,8 @@ public class KsimApiClient { headers.add("imOpenApiToken", token); String bodyJson = JSON.toJSONString(dto); - String url = ksimProperties.getHost() + "/api-open/v1/msg/send"; + String url = ksimProperties.getHost() + "/api-open/v1/msg/sendBatch"; + log.info("【即时通推送-消息发送】请求体: {}", bodyJson); ResponseEntity resp = RestUtil.request(url, HttpMethod.POST, headers, null, JSON.parseObject(bodyJson), JSONObject.class); diff --git a/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/controller/KsimTestController.java b/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/controller/KsimTestController.java index 926fd85..95c4cb8 100644 --- a/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/controller/KsimTestController.java +++ b/jeecg-boot-module/jeecg-module-im/src/main/java/org/jeecg/modules/ksim/controller/KsimTestController.java @@ -1,7 +1,7 @@ package org.jeecg.modules.ksim.controller; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.util.RestUtil; @@ -103,7 +103,7 @@ public class KsimTestController { dto.setLinkUrl(linkUrl); } - String msgUrl = host + "/api-open/v1/msg/send"; + String msgUrl = host + "/api-open/v1/msg/sendBatch"; requestInfo.put("msgRequestUrl", msgUrl); requestInfo.put("msgRequestBody", dto); diff --git a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/taskapprovalopinion/service/impl/TaskApprovalOpinionServiceImpl.java b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/taskapprovalopinion/service/impl/TaskApprovalOpinionServiceImpl.java index dfe5e9e..fba7599 100644 --- a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/taskapprovalopinion/service/impl/TaskApprovalOpinionServiceImpl.java +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/taskapprovalopinion/service/impl/TaskApprovalOpinionServiceImpl.java @@ -104,7 +104,7 @@ public class TaskApprovalOpinionServiceImpl extends ServiceImpl handlerNames = getDistinctHandlerNames(opinion.getProcessInstId(), loginUser.getUsername()); + List handlerNames = getDistinctHandlerNames(opinion.getProcessInstId(), loginUser.getUsername(), loginUser.getRealname()); pushResult.put("pushed", !handlerNames.isEmpty()); pushResult.put("toUsers", handlerNames); pushResult.put("content", content); @@ -287,7 +287,7 @@ public class TaskApprovalOpinionServiceImpl extends ServiceImpl getDistinctHandlerNames(String processInstId, String excludeUserName) { + private List getDistinctHandlerNames(String processInstId, String excludeUserId, String excludeRealName) { if (jdbcTemplate == null || oConvertUtils.isEmpty(processInstId)) { return Collections.emptyList(); } @@ -295,19 +295,34 @@ public class TaskApprovalOpinionServiceImpl extends ServiceImpl> rows = jdbcTemplate.queryForList( "select distinct op_user_id, op_user_name from task_approval_opinion where process_inst_id = ?", processInstId); - Set names = new LinkedHashSet<>(); + Set userIds = new LinkedHashSet<>(); for (Map row : rows) { - Object nameVal = row.get("op_user_name"); Object idVal = row.get("op_user_id"); - if (nameVal != null) { - String name = String.valueOf(nameVal).trim(); - String userId = idVal != null ? String.valueOf(idVal).trim() : ""; - if (!name.isEmpty() && !userId.equals(excludeUserName)) { - names.add(name); - } + Object nameVal = row.get("op_user_name"); + if (idVal == null) { + continue; } + String userId = String.valueOf(idVal).trim(); + if (userId.isEmpty()) { + continue; + } + String name = nameVal != null ? String.valueOf(nameVal).trim() : ""; + + // 主判断:工号匹配则排除(最可靠) + if (userId.equals(excludeUserId)) { + log.info("【增补意见-即时通推送】排除本人(工号匹配), userId: {}, name: {}", userId, name); + continue; + } + // 辅助判断:姓名匹配则排除(防止工号异常等边界情况) + if (oConvertUtils.isNotEmpty(excludeRealName) && name.equals(excludeRealName)) { + log.info("【增补意见-即时通推送】排除本人(姓名匹配), name: {}, userId: {}", name, userId); + continue; + } + userIds.add(userId); } - return names.stream().collect(Collectors.toList()); + log.info("【增补意见-即时通推送】查询经办人完成, processInstId: {}, DB记录数: {}, 排除后: {}", + processInstId, rows.size(), userIds.size()); + return userIds.stream().collect(Collectors.toList()); } catch (Exception e) { log.debug("查询经办人失败, processInstId={}", processInstId, e); return Collections.emptyList();