From 9394b29f118acb6286c9c619f34c2684ef5d9d30 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Wed, 1 Mar 2023 15:24:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=82=E5=AE=B6=E9=87=87=E8=B4=AD=E5=88=86?= =?UTF-8?q?=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/message/MessageFeign.java | 4 + .../api/message/MessageFeignFallback.java | 5 + .../message/MessageFlowableQueryForCC.java | 2 + .../biz/message/MessageRest.java | 5 + .../biz/message/MessageService.java | 178 +++++++++++++++++- 5 files changed, 187 insertions(+), 7 deletions(-) diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java index 0b08aaa..840959a 100644 --- a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java @@ -88,4 +88,8 @@ public interface MessageFeign { @PostMapping("/sendOrderMessage") ResultBean sendOrderMessage(@RequestBody OrderMesageDto dto); + @ApiOperation("流程审批推送消息 分享") + @PostMapping("/pushMessageShare") + ResultBean pushMessageShare(@RequestBody MessageFlowableQueryForCC query); + } \ No newline at end of file diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java index fca066f..3436a6a 100644 --- a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java @@ -88,4 +88,9 @@ public class MessageFeignFallback implements MessageFeign { public ResultBean sendOrderMessage(OrderMesageDto dto) { return null; } + + @Override + public ResultBean pushMessageShare(MessageFlowableQueryForCC query) { + return null; + } } \ No newline at end of file diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQueryForCC.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQueryForCC.java index 12527c3..bf52479 100644 --- a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQueryForCC.java +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQueryForCC.java @@ -30,5 +30,7 @@ public class MessageFlowableQueryForCC implements Query { private String applicationName; @ApiModelProperty("抄送的用户sid") private String userSids; + @ApiModelProperty("当前所登陆账号的sid") + private String userSid; } diff --git a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java index 8547e55..763457f 100644 --- a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java +++ b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java @@ -145,4 +145,9 @@ public class MessageRest implements MessageFeign { public ResultBean sendOrderMessage(OrderMesageDto dto) { return messageService.sendOrderMessage(dto); } + + @Override + public ResultBean pushMessageShare(MessageFlowableQueryForCC query) { + return messageService.pushMessageShare(query); + } } diff --git a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java index e631691..53cccd7 100644 --- a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java +++ b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java @@ -215,6 +215,7 @@ public class MessageService extends MybatisBaseService { /** * 流程审批推送消息 + * * @param dto * @return */ @@ -270,7 +271,7 @@ public class MessageService extends MybatisBaseService { messageList.setReceiverSid(list.get(finalI)); //根据接收人sid查询接收人名称 ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(list.get(finalI)); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); } if (orgPathList.size() > 0) { @@ -305,6 +306,7 @@ public class MessageService extends MybatisBaseService { /** * 抄送消息 + * * @param dto * @return */ @@ -363,7 +365,7 @@ public class MessageService extends MybatisBaseService { messageList.setReceiverSid(list.get(finalI)); //根据接收人sid查询接收人名称 ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(list.get(finalI)); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); } if (orgPathList.size() > 0) { @@ -400,6 +402,7 @@ public class MessageService extends MybatisBaseService { /** * 流程审批组装消息信息 + * * @param query * @return */ @@ -456,6 +459,7 @@ public class MessageService extends MybatisBaseService { /** * 抄送组装消息信息 + * * @param query * @return */ @@ -469,7 +473,7 @@ public class MessageService extends MybatisBaseService { String msgContent = query.getMsgContent(); String msgTitle = query.getMsgTitle(); String applicationName = query.getApplicationName(); - String nextNodeUserSids = query.getUserSids(); + String nextNodeUserSids = query.getUserSids(); List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); //根据用户的sid查询用户的id ResultBean stringList1 = sysUserFeign.selectIdBySid(receiveSidList); @@ -580,7 +584,7 @@ public class MessageService extends MybatisBaseService { messageList.setReceiverSid(sid); //根据接收人sid查询接收人名称 ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(sid); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); } messageListService.save(messageList); @@ -661,7 +665,7 @@ public class MessageService extends MybatisBaseService { messageList.setReceiverSid(sid); //根据接收人sid查询接收人名称 ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(sid); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); } messageListService.save(messageList); @@ -692,6 +696,7 @@ public class MessageService extends MybatisBaseService { /** * 移动端框架发布推送消息 + * * @param dto * @return */ @@ -739,7 +744,7 @@ public class MessageService extends MybatisBaseService { messageList.setReceiverSid(receverSid); //根据接收人sid查询接收人名称 ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(receverSid); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); } messageListService.save(messageList); @@ -800,6 +805,7 @@ public class MessageService extends MybatisBaseService { /** * 简易订单解锁提醒 + * * @param dto * @return */ @@ -852,7 +858,7 @@ public class MessageService extends MybatisBaseService { messageList.setReceiverSid(createBySidList.get(finalI)); //根据接收人sid查询接收人名称 ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(createBySidList.get(finalI)); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); } messageListService.saveOrUpdateDto(messageList); @@ -881,4 +887,162 @@ public class MessageService extends MybatisBaseService { } return rb.success(); } + + /** + * 流程审批分享 + * @param query + * @return + */ + public ResultBean pushMessageShare(MessageFlowableQueryForCC query) { + ResultBean rb = ResultBean.fireFail(); + MessageFlowVo ufVo = query.getUfVo(); + String procDefId = ufVo.getProcDefId(); + Map appMap = query.getAppMap(); + String moduleName = query.getModuleName(); + String msgContent = query.getMsgContent(); + String msgTitle = query.getMsgTitle(); + String applicationName = query.getApplicationName(); + ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(query.getUserSid()); + if(sysUserInfoVoResultBean.getData() != null){ + applicationName = sysUserInfoVoResultBean.getData().getStaffName(); + } + + String nextNodeUserSids = query.getUserSids(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + //根据用户的sid查询用户的id + ResultBean stringList1 = sysUserFeign.selectIdBySid(receiveSidList); + List reveiveIdList = Arrays.asList(stringList1.getData().split(",")); + MessageFlowableDto messageFlowableDto = new MessageFlowableDto(); + MessageJsonDto messageJsonDto = new MessageJsonDto(); + BeanUtil.copyProperties(ufVo, messageJsonDto); + //查询流程审批的页面操作地址组装json的参数 + //根据taskDef和移动端标识 + /**-----------------移动端相关参数开始----------------*/ + ResultBean selectUrlByKey = sysProUrlFeign.selectUrlByKey(procDefId, ufVo.getTaskDefKey(), "1", "2"); + SysProUrlVo sysProUrlVo = selectUrlByKey.getData(); + messageFlowableDto.setBusinessSid(query.getBusinessSid()); + messageFlowableDto.setApp_type("2"); + if (sysProUrlVo.getUrl().contains("#")) { + messageFlowableDto.setModuleAction(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(0)); + } else { + messageFlowableDto.setModuleAction(sysProUrlVo.getUrl()); + } + /**-----------------移动端相关参数结束----------------*/ + //PC取前端页面 + ResultBean selectUrlByPCKey = sysProUrlFeign.selectUrlByKey(procDefId, ufVo.getTaskDefKey(), "2", "1"); + SysProUrlVo sysProUrlPCVo = selectUrlByPCKey.getData(); + messageFlowableDto.setModuleAction2(sysProUrlPCVo.getUrl()); + messageFlowableDto.setModuleSid(Arrays.asList(sysProUrlVo.getModulePluginName().split("#")).get(0)); + messageJsonDto.setTaskName(ufVo.getNodeState()); + messageJsonDto.setProcInsId(ufVo.getProcInsId()); + messageJsonDto.setAppMap(appMap); + messageJsonDto.setDeployId(procDefId); + messageFlowableDto.setJson(messageJsonDto); + messageFlowableDto.setList(receiveSidList); + messageFlowableDto.setReceiveIdList(reveiveIdList); + messageFlowableDto.setModuleName(moduleName); + messageFlowableDto.setMsgContent(msgContent); + messageFlowableDto.setMsgTitle(msgTitle); + messageFlowableDto.setCreateName(applicationName); + messageFlowableDto.setTaskId(ufVo.getTaskId()); + ResultBean stringResultBean = getMessageShare(messageFlowableDto); + String msgSid = stringResultBean.getData(); + return rb.success().setMsg(msgSid); + } + + /** + * 流程审批分享 + * + * @param dto + * @return + */ + public ResultBean getMessageShare(MessageFlowableDto dto) { + ResultBean rb = ResultBean.fireFail(); + String msgTitle = dto.getMsgTitle(); + String msgContent = dto.getMsgContent(); + List list = dto.getList(); + List receiveIdList = dto.getReceiveIdList(); + List orgPathList = dto.getOrgPathList(); + // 1、保存消息体 + AppMessageDto messageDto = new AppMessageDto(); + List messageBean = messageTypeService.selectMsgTypeList("0003"); + messageBean.removeAll(Collections.singleton(null)); + if (!messageBean.isEmpty()) { + for (MessageTypeVo message : messageBean) { + if (message.getMsgType().equals("抄送")) { + messageDto.setMsgTypeSid(message.getMsgTypeSid()); + messageDto.setMsgType(message.getMsgType()); + } + } + } + if (StringUtils.isNotBlank(dto.getTaskId())) { + messageDto.setTaskId(dto.getTaskId()); + } + messageDto.setMsgTitle(msgTitle); + messageDto.setMsgContent(msgContent); + messageDto.setMsgSource("分享"); + messageDto.setApp_type(dto.getApp_type()); + messageDto.setModuleSid(dto.getModuleSid()); + messageDto.setBusinessSid(dto.getBusinessSid()); + //将json与appMap中的参数融合 + Map jsonMap = BeanUtil.beanToMap(dto.getJson()); + jsonMap.putAll(dto.getJson().getAppMap()); + messageDto.setArgs_json(JSONObject.toJSONString(jsonMap)); + messageDto.setMsgTargetUri(dto.getModuleAction()); + messageDto.setModuleAction(dto.getModuleAction2()); + messageDto.setSenderName(dto.getCreateName()); + String msgSid = saveOrUpdateAppMessage(messageDto).getData(); + String msgTypeSid = messageDto.getMsgTypeSid(); + // 2、保存至消息列表 + // 使用多线程保存 + List> futures = new ArrayList>(); + ExecutorService executor = Executors.newFixedThreadPool(4); + for (int i = 0; i < list.size(); i++) { + int finalI = i; + Future f = executor.submit(new Runnable() { + @Override + public void run() { + try { + System.out.println("run start-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); + MessageListDto messageList = new MessageListDto(); + messageList.setMsgSid(msgSid); + messageList.setRDelStatus(0); + messageList.setSDelStatus(0); + messageList.setReceiverSid(list.get(finalI)); + //根据接收人sid查询接收人名称 + ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(list.get(finalI)); + if (sysUserInfoVoResultBean.getData() != null) { + messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); + } + if (orgPathList.size() > 0) { + messageList.setReceiverDeptSid(orgPathList.get(finalI)); + } + messageListService.saveOrUpdateDto(messageList); + System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + futures.add(f); + } + executor.shutdown(); + //标题、内容、消息类别key、消息类别名称、 + YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean(); + factoryBean.setResources(new ClassPathResource("application.yml")); + Properties properties = factoryBean.getObject(); + if ("pro".equals(properties.get("spring.profiles.active"))) { + for (int i = 0; i < receiveIdList.size(); i++) { + //正式 + JPushServer.sendPushAliass(msgTitle, msgContent, msgTypeSid, "分享", receiveIdList.get(i)); + } + } else { + for (int i = 0; i < receiveIdList.size(); i++) { + //测试或者本地 + JPushServer.sendPushAliass(msgTitle, msgContent, msgTypeSid, "分享", "T" + receiveIdList.get(i)); + } + } + return rb.success().setData(msgSid); + } + } \ No newline at end of file