From 67aefbe2e3ddb7de3b8f66043a3a38d40bd021e7 Mon Sep 17 00:00:00 2001 From: mzr Date: Thu, 12 Jun 2025 16:26:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(uapbd):=20=E6=B7=BB=E5=8A=A0=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=8F=91=E9=80=81=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nccloud/api/uapbd/msg/MsgResource.java | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 uapbd/src/public/nccloud/api/uapbd/msg/MsgResource.java diff --git a/uapbd/src/public/nccloud/api/uapbd/msg/MsgResource.java b/uapbd/src/public/nccloud/api/uapbd/msg/MsgResource.java new file mode 100644 index 0000000..21c1c93 --- /dev/null +++ b/uapbd/src/public/nccloud/api/uapbd/msg/MsgResource.java @@ -0,0 +1,129 @@ +package nccloud.api.uapbd.msg; + +import com.alibaba.fastjson.JSONObject; +import nc.bs.dao.DAOException; +import nc.bs.logging.Logger; +import nc.bs.pub.pf.PfMessageUtil; +import nc.bs.trade.business.HYSuperDMO; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDateTime; +import nc.vo.pub.msg.CommonMessageVO; +import nc.vo.pub.msg.UserNameObject; +import nc.vo.sm.UserVO; +import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.baseapp.core.log.NCCForUAPLogger; +import nccloud.commons.lang.StringUtils; +import nccloud.ws.rest.resource.AbstractNCCRestResource; +import org.json.JSONString; + +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +/** + * 消息发送api + * + * @author mzr + * @date 2025/06/12 + */ +@Path("uapbd/msg") +public class MsgResource extends AbstractNCCRestResource { + + public String getModule() { + return "uapbd"; + } + + private HYSuperDMO superDMO = null; + + + public HYSuperDMO getSuperDMO() { + if (superDMO == null) { + superDMO = new HYSuperDMO(); + } + return superDMO; + } + + @POST + @Path("operation/save") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString save(JSONObject jsonObject) { + String content = (String) jsonObject.get("content"); + String roleId = (String) jsonObject.get("roleId"); + try { + // 通知消息字段,最大为4000位。 + if (content.length() > 1500) { + content = content.substring(0, 1500); + } + + // 定义接收消息人员信息集合 + ArrayList userList = new ArrayList<>(); + + // 根据传递的角色查询要发送消息的用户信息 + UserVO[] userVOS = getUserByRole(roleId); + if (userVOS == null) { + return ResultMessageUtil.toJSON(false, "未查询到用户"); + } + + for (UserVO smUser : userVOS) { + // 用户档案主键 + String cuserid = smUser.getCuserid(); + // 用户名称 + String user_name = smUser.getUser_name(); + // 用户编码 + String user_code = smUser.getUser_code(); + + UserNameObject userNameObject = new UserNameObject(user_name);// 用户名称 + userNameObject.setUserCode(user_code);// 用户编码 + userNameObject.setUserPK(cuserid);// 用户档案主键 + userList.add(userNameObject); + } + UserNameObject[] users = userList.toArray(new UserNameObject[0]); + + CommonMessageVO commonMessageVO = new CommonMessageVO(); + commonMessageVO.setReceiver(users); + commonMessageVO.setTitle("BOM变更信息通知"); + commonMessageVO.setSender("NC_USER0000000000000"); + commonMessageVO.setSendDataTime(new UFDateTime()); + commonMessageVO.setPriority(1); + commonMessageVO.setMessageContent(content); + + PfMessageUtil.sendNoticeMessage(commonMessageVO); + + return ResultMessageUtil.toJSON(true, "消息发送成功"); + } catch (BusinessException e) { + Logger.error("MsgResource-exp:" + e.getMessage()); + return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); + } + } + + /** + * 查询用户 + */ + private UserVO[] getUserByRole(String roleId) { + UserVO[] vos = null; + if (StringUtils.isEmpty(roleId) || "~".equals(roleId)) { + return null; + } + String strWhere = " dr = 0 AND cuserid in (" + + "select cuserid from sm_user_role where pk_role = [roleId] and (disabledate is null or disabledate >= [now]) " + + ")"; + strWhere = strWhere.replace("[roleId]", roleId); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = sdf.format(new Date()); + strWhere = strWhere.replace("[now]", time); + NCCForUAPLogger.debug("time = " + time); + try { + vos = (UserVO[]) getSuperDMO().queryByWhereClause(UserVO.class, strWhere); + } catch (DAOException e) { + Logger.error("MsgResource-getUserByRole-exp:" + e.getMessage()); + } + return vos; + + } + +}