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 760aa9c..68d4e5a 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 @@ -63,4 +63,8 @@ public interface MessageFeign { @ApiOperation("移动端流程审批推送消息") @PostMapping("/getMessage") ResultBean getMessage(@RequestBody MessageFlowableDto dto); + + @ApiOperation("流程审批推送消息") + @PostMapping("/pushMessage") + ResultBean pushMessage(@RequestBody MessageFlowableQuery 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 d39c917..d845a84 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 @@ -58,4 +58,9 @@ public class MessageFeignFallback implements MessageFeign { public ResultBean getMessage(MessageFlowableDto dto) { return null; } + + @Override + public ResultBean pushMessage(MessageFlowableQuery query) { + return null; + } } \ No newline at end of file diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowVo.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowVo.java new file mode 100644 index 0000000..8b64a17 --- /dev/null +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowVo.java @@ -0,0 +1,21 @@ +package com.yxt.messagecenter.api.message; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/8/25 15:58 + * @Description + */ +@Data +public class MessageFlowVo implements Vo { + + private String sid; + private String procDefId; + private String nodeState; + private String procInsId; + private String taskDefKey; + private String taskId; + private String nextNodeUserSids; +} diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQuery.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQuery.java new file mode 100644 index 0000000..498252b --- /dev/null +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableQuery.java @@ -0,0 +1,32 @@ +package com.yxt.messagecenter.api.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/8/25 15:12 + * @Description + */ +@Data +public class MessageFlowableQuery implements Query { + private static final long serialVersionUID = 3618558867479892211L; + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("流程相关参数") + private MessageFlowVo ufVo; + @ApiModelProperty("app所需参数") + private Map appMap; + @ApiModelProperty("申请人") + private String applicationName; + +} diff --git a/message-center-biz/src/main/java/com/yxt/messagecenter/MessageCenterApplication.java b/message-center-biz/src/main/java/com/yxt/messagecenter/MessageCenterApplication.java index 021396b..3b33c55 100644 --- a/message-center-biz/src/main/java/com/yxt/messagecenter/MessageCenterApplication.java +++ b/message-center-biz/src/main/java/com/yxt/messagecenter/MessageCenterApplication.java @@ -13,7 +13,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; "com.yxt.messagecenter" }) -@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm"}) +@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm","com.yxt.anrui.flowable"}) public class MessageCenterApplication { public static void main( String[] args ) 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 e1b1371..e9aed19 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 @@ -115,4 +115,9 @@ public class MessageRest implements MessageFeign { public ResultBean getMessage(MessageFlowableDto dto) { return messageService.getMessage(dto); } + + @Override + public ResultBean pushMessage(MessageFlowableQuery query) { + return messageService.pushMessage(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 a2d0cb9..95e1c1c 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 @@ -4,6 +4,12 @@ import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.flowable.api.flow.FlowableFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.api.sysprourl.SysProUrlFeign; +import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.JPushServer; import com.yxt.common.base.utils.PagerUtil; @@ -23,6 +29,7 @@ import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.stream.Collectors; /** * Project: message-center(消息中心)
@@ -44,6 +51,14 @@ public class MessageService extends MybatisBaseService { private MessageTypeService messageTypeService; @Autowired private MessageListService messageListService; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private SysProUrlFeign sysProUrlFeign; public PagerVo listPage(PagerQuery pq) { MessageQuery query = pq.getParams(); @@ -169,7 +184,7 @@ public class MessageService extends MybatisBaseService { dto.fillEntity(message); if (StringUtils.isNotBlank(dto.getTaskId())) { message.setSid(dto.getTaskId()); - }else{ + } else { message.setSid(UUID.randomUUID().toString()); } Boolean flag = save(message); @@ -254,8 +269,59 @@ public class MessageService extends MybatisBaseService { * msgTitle:排产申请 * content:xxx的排产申请 */ - JPushServer.sendPushAlias(msgTitle, dto.getCreateName() + "的" + dto.getModuleName(), msgTypeSid, "审批中心", receiveIdList.get(i)); + JPushServer.sendPushAlias(msgTitle, msgContent, msgTypeSid, "审批中心", receiveIdList.get(i)); } return rb.success().setData(msgSid); } + + public ResultBean pushMessage(MessageFlowableQuery query) { + ResultBean rb = ResultBean.fireFail(); + MessageFlowVo ufVo = query.getUfVo(); + String procInsId = ufVo.getProcInsId(); + 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> resultBean = flowTaskFeign.getLatestTasks(procInsId); + String nextNodeUserSids = resultBean.getData().get(0).getASSIGNEE_(); + 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)); + List codesInteger = Arrays.asList(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(1).split(",")).stream().map(Integer::parseInt).collect(Collectors.toList()); + int[] ints = codesInteger.stream().mapToInt(Integer::valueOf).toArray(); + ; + messageJsonDto.setButtons(ints); + } else { + messageFlowableDto.setModuleAction(sysProUrlVo.getUrl()); + } + messageFlowableDto.setModuleSid(Arrays.asList(sysProUrlVo.getModulePluginName().split("#")).get(0)); + messageJsonDto.setTaskName(ufVo.getNodeState()); + messageJsonDto.setProcInsId(ufVo.getProcInsId()); + messageJsonDto.setAppMap(appMap); + 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 = getMessage(messageFlowableDto); + String msgSid = stringResultBean.getData(); + return rb.success().setMsg(msgSid); + } } \ No newline at end of file