fix:即时通消息通知带工号

This commit is contained in:
2025-12-22 16:03:46 +08:00
parent e493869fdc
commit aab726ddfc
11 changed files with 110 additions and 31 deletions

View File

@@ -70,6 +70,14 @@ public enum ApprovalFileDataStatusEnum {
return status != null ? status.getKey() : null;
}
/**
* 根据key获取desc
*/
public static String getDescByKey(String key) {
ApprovalFileDataStatusEnum status = getByKey(key);
return status != null ? status.getDescription() : null;
}
/**
* 检查key是否有效
*/

View File

@@ -25,4 +25,16 @@ public enum ApproveTypeEnum {
return description;
}
/**
* 根据key获取枚举
*/
public static String getDescByCode(int code) {
for (ApproveTypeEnum approveTypeEnum : values()) {
if (approveTypeEnum.getCode() == code) {
return approveTypeEnum.getDescription();
}
}
return "";
}
}

View File

@@ -5,9 +5,9 @@ package com.sdm.common.entity.enums;
*/
public enum MessageTemplateEnum {
TASK_ISSUE("任务通知", "收到一条下发的任务:%s请前去[任务管理-我执行的]进行处理"),
DATA_ALERT("数据通知", "您的数据存储空间已达阈值,前往[系统管理-数据存储-存储设置]查看"),
APPROVE_ALERT("审批通知", "收到一条%s审批任务代办,请前往任务中心-代办任务-流程任务审批"),
TASK_ISSUE("任务通知", "收到下发的仿真任务:%s请前往仿真数据管理平台查看"),
DATA_ALERT("数据通知", "您的数据存储空间已达阈值,前往仿真数据管理平台查看"),
APPROVE_ALERT("审批通知", "收到一条%s消息,请前往仿真数据管理平台查看"),
HPC_START("作业通知", "作业已发起"),
HPC_END("作业通知", "作业已结束")
;

View File

@@ -19,4 +19,9 @@ public class SendMsgReq {
@Schema(description = "业务参数")
private String params;
/**
* 是否发送cid消息
*/
private boolean sendCid = true;
}

View File

@@ -20,6 +20,9 @@ public class CIDUserResp implements Serializable{
@Schema(description = "用户名(登录或展示用,可选,建议唯一)")
private String username;
@Schema(description = "工号")
private String jobNumber;
@Schema(description = "手机号(需符合手机号格式,可选,建议唯一)")
private String phone;

View File

@@ -5,9 +5,12 @@ import com.alibaba.fastjson2.JSONObject;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApproveTypeEnum;
import com.sdm.common.entity.enums.MessageTemplateEnum;
import com.sdm.common.entity.req.system.FlowStatusParam;
import com.sdm.common.entity.req.system.LaunchApproveReq;
import com.sdm.common.entity.req.system.SendMsgReq;
import com.sdm.common.feign.inter.system.IMessageFeignClient;
import com.sdm.common.log.CoreLogger;
import com.sdm.common.utils.HttpClientUtil;
import com.sdm.outbridge.service.lyric.IFreeLinkService;
@@ -68,6 +71,9 @@ public class SimulationApproveServiceImpl implements ISimulatinoApprovalService
@Autowired
private IFreeLinkService freeLinkService;
@Autowired
private IMessageFeignClient messageFeignClient;
/**
* 向CID发起审批流程
* @param flowId
@@ -256,15 +262,22 @@ public class SimulationApproveServiceImpl implements ISimulatinoApprovalService
{
sdmResponse.setData(cidFlowId);
// 同步即时通
SendMsgReq req = new SendMsgReq();
req.setUserId(String.valueOf(flowBean.userId));
req.setContent("收到一条审批消息");
SdmResponse response = freeLinkService.syncMsgToFreelink(req);
sendMessage(MessageTemplateEnum.APPROVE_ALERT, ApproveTypeEnum.getDescByCode(flowBean.approveType));
}
}
return sdmResponse;
}
private void sendMessage(MessageTemplateEnum templateEnum, String taskName) {
SendMsgReq req = new SendMsgReq();
req.setTitle(templateEnum.getTitle());
req.setContent(templateEnum.getContent(taskName));
req.setTenantId(ThreadLocalContext.getTenantId().toString());
req.setUserId(ThreadLocalContext.getUserId().toString());
req.setSendCid(false);
messageFeignClient.sendMessage(req);
}
/**
* 查询当前评审流程的状态详情
* @param flowId

View File

@@ -3,9 +3,15 @@ package com.sdm.system.service.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.req.system.SendMsgReq;
import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.resp.system.CIDUserResp;
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
import com.sdm.common.utils.HttpClientUtil;
import com.sdm.outbridge.service.lyric.IFreeLinkService;
import com.sdm.outbridge.mode.FreeLinkMsg;
import com.sdm.outbridge.mode.FreelinkAndDingdingInformReq;
import com.sdm.outbridge.service.lyric.LyricIntegrateService;
import com.sdm.system.service.ISimulationMessageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,28 +29,60 @@ public class SimulationMessageServiceImpl implements ISimulationMessageService {
@Value("${cid.msg.sendMessage}")
private String sendMessagePath;
@Value("${thirdparty.freelink.sendUserId}")
private String sendUserId;
@Value("${thirdparty.freelink.switchFlag}")
private String switchFlag;
@Autowired
private HttpClientUtil httpClientUtil;
@Autowired
private IFreeLinkService freeLinkService;
private LyricIntegrateService lyricIntegrateService;
@Autowired
SysUserFeignClientImpl sysUserFeignClient;
@Override
public SdmResponse sendMessage(SendMsgReq req) {
String url = cidUrl + sendMessagePath;
try {
log.info("[sendMessage] url:{}, param:{}", url, JSONUtil.toJsonStr(req));
String resultString = httpClientUtil.doPostJson(url, JSON.toJSONString(req));
SdmResponse response = JSON.parseObject(resultString, SdmResponse.class);
if (response.isSuccess()) {
// 同步即时通
SdmResponse sdmResponse = freeLinkService.syncMsgToFreelink(req);
// if (!sdmResponse.isSuccess()) {
// return sdmResponse;
// }
return response;
if (req.isSendCid()) {
String resultString = httpClientUtil.doPostJson(url, JSON.toJSONString(req));
SdmResponse response = JSON.parseObject(resultString, SdmResponse.class);
if (!response.isSuccess()) {
return SdmResponse.failed("发送消息通知失败:");
}
}
return SdmResponse.failed("发送消息通知失败:");
FreelinkAndDingdingInformReq param = new FreelinkAndDingdingInformReq();
// 根据userId查询工号
UserQueryReq userReq = new UserQueryReq();
userReq.setUserId(ThreadLocalContext.getUserId());
userReq.setTenantId(ThreadLocalContext.getTenantId());
SdmResponse<CIDUserResp> sdmResponse = sysUserFeignClient.queryUserDetail(userReq);
if (sdmResponse.getData() != null) {
param.setJobNo(sdmResponse.getData().getJobNumber());
}
FreeLinkMsg freeLinkMsg = new FreeLinkMsg();
if (switchFlag.equals("true")) {
userReq.setUserId(Long.valueOf(req.getUserId()));
SdmResponse<CIDUserResp> response = sysUserFeignClient.queryUserDetail(userReq);
if (response.getData() != null) {
freeLinkMsg.setId(response.getData().getJobNumber());
}
} else {
freeLinkMsg.setId(sendUserId);
}
freeLinkMsg.setType("text");
freeLinkMsg.setMsg(req.getContent());
freeLinkMsg.setUser("66666");
freeLinkMsg.setPawd("lyric@123");
freeLinkMsg.setFreelinkAppId("d7eb3ef7c8e8c93e7c6e978fee848646");
param.setFreeLinkMsg(freeLinkMsg);
SdmResponse response1 = lyricIntegrateService.pushFreeLinkMsg(param);
return response1;
} catch (Exception e) {
log.error("发送消息通知失败", e);
return SdmResponse.failed("发送消息通知失败");

View File

@@ -174,9 +174,9 @@ cid:
saveLog: /spdm-log/saveLog
thirdparty:
api:
# 即时通消息通知
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
freelink:
sendUserId: Q12345
switchFlag: false
security:
whitelist:

View File

@@ -174,9 +174,9 @@ cid:
saveLog: /spdm-log/saveLog
thirdparty:
api:
# 即时通消息通知
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
freelink:
sendUserId: Q12345
switchFlag: false
security:
whitelist:

View File

@@ -174,9 +174,9 @@ cid:
saveLog: /spdm-log/saveLog
thirdparty:
api:
# 即时通消息通知
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
freelink:
sendUserId: Q12345
switchFlag: false
security:
whitelist:

View File

@@ -174,9 +174,9 @@ cid:
saveLog: /spdm-log/saveLog
thirdparty:
api:
# 即时通消息通知
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
freelink:
sendUserId: Q12345
switchFlag: false
security:
whitelist: