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();