From 6fcd9c21f19f0352bb3a2fc43c218ce32637bd1b Mon Sep 17 00:00:00 2001 From: yxt_djz Date: Thu, 16 Feb 2023 15:58:39 +0800 Subject: [PATCH] =?UTF-8?q?flowable=20=E6=8A=84=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/api/flow/FlowableFallback.java | 5 + .../flowable/api/flow/FlowableFeign.java | 7 ++ .../anrui/flowable/FlowableApplication.java | 2 +- .../flowable/biz/flow/FlowableMapper.java | 2 + .../anrui/flowable/biz/flow/FlowableRest.java | 114 +++++++++++++++++- .../flowable/biz/flow/FlowableService.java | 4 + .../flowable/biz/process/ProcessService.java | 4 + .../anrui/flowable/feign/MessageFeign.java | 19 +++ .../flowable/feign/form/MessageFlowVo.java | 21 ++++ .../feign/form/MessageFlowableQuery.java | 33 +++++ .../portal/api/flow/FlowableFallback.java | 7 ++ .../anrui/portal/api/flow/FlowableFeign.java | 14 +++ .../flow/PCHistTaskListAndCommentList.java | 24 ++++ .../portal/api/sysflowcc/SysFlowccFeign.java | 5 + .../api/sysflowcc/SysFlowccFeignFallback.java | 5 + .../portal/api/sysuser/SysUserFeign.java | 4 +- .../api/sysuser/SysUserFeignFallback.java | 5 + .../api/sysuser/UserByRolesAndOrgQuery.java | 22 ++++ .../anrui/portal/biz/flow/FlowableRest.java | 60 +++++++++ .../portal/biz/sysflowcc/SysFlowccMapper.java | 1 + .../portal/biz/sysflowcc/SysFlowccRest.java | 20 ++- .../biz/sysflowcc/SysFlowccService.java | 6 + .../anrui/portal/biz/sysuser/SysUserRest.java | 5 + .../portal/biz/sysuser/SysUserService.java | 21 ++++ .../biz/sysuserrole/SysUserRoleMapper.java | 1 + .../biz/sysuserrole/SysUserRoleMapper.xml | 10 ++ .../biz/sysuserrole/SysUserRoleService.java | 3 + 27 files changed, 420 insertions(+), 4 deletions(-) create mode 100644 anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/MessageFeign.java create mode 100644 anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowVo.java create mode 100644 anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowableQuery.java create mode 100644 anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/PCHistTaskListAndCommentList.java create mode 100644 anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserByRolesAndOrgQuery.java diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java index 194c325bde..bf8f8ab797 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java @@ -9,6 +9,11 @@ import java.util.Map; @Component public class FlowableFallback implements FlowableFeign { + @Override + public ResultBean cc(Map map) { + return null; + } + @Override public ResultBean businessStart(BusinessVariables bv) { return null; diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java index 4748b54b55..7092aee393 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java @@ -18,6 +18,13 @@ import java.util.Map; path = "v1/flow", fallback = FlowableFallback.class) public interface FlowableFeign { + /** + * 抄送 + * + * @return + */ + @PostMapping("/cc") + public ResultBean cc(@RequestBody Map map); /** * 业务系统发起流程申请 * diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/FlowableApplication.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/FlowableApplication.java index 81ec6b7f8f..0364a9492d 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/FlowableApplication.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/FlowableApplication.java @@ -18,7 +18,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; "org.flowable.ui.modeler", "org.flowable.ui.common","com.yxt.anrui.flowable.*" }) @EnableDiscoveryClient -@EnableFeignClients(basePackages = {"com.yxt.anrui.portal"}) +@EnableFeignClients(basePackages = {"com.yxt.anrui.portal.*","com.yxt.anrui.flowable.*"}) public class FlowableApplication { public static void main(String[] args) { diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.java index b595586365..5da11e285f 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.java @@ -15,4 +15,6 @@ public interface FlowableMapper extends BaseMapper { FlowProcinst getFlowProcinstById(@Param("id") String id); @Select("select * from act_hi_procinst where proc_inst_id_=#{id}") Map getProcessInstanceById(@Param("id") String procInsId); + @Select("select * from act_re_procdef where id_=#{id}") + Map getProcessDefByDefId(@Param("id") String id); } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java index 05b07b2c6c..ef7bfbc0f4 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java @@ -26,6 +26,7 @@ package com.yxt.anrui.flowable.biz.flow; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.yxt.anrui.flowable.api.flow.*; @@ -33,9 +34,15 @@ import com.yxt.anrui.flowable.api.flowcomment.FlowComment; import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService; import com.yxt.anrui.flowable.biz.process.ProcessService; +import com.yxt.anrui.flowable.feign.MessageFeign; +import com.yxt.anrui.flowable.feign.form.MessageFlowVo; +import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign; +import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.portal.api.sysuser.UserByRolesAndOrgQuery; import com.yxt.anrui.portal.api.sysuser.UserQuery; import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.query.PagerQuery; @@ -44,9 +51,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; import org.flowable.bpmn.model.FlowElement; import org.flowable.bpmn.model.UserTask; +import org.flowable.engine.HistoryService; import org.flowable.engine.TaskService; import org.flowable.task.api.DelegationState; import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -83,6 +92,101 @@ public class FlowableRest implements FlowableFeign { protected TaskService taskService; @Resource private ProcessService processService; + @Resource + private SysFlowccFeign sysFlowccFeign; + @Autowired + private MessageFeign messageFeign; + @Resource + protected HistoryService historyService; + /** + * 流程抄送的功能 + * @param map + * @return + */ + @Override + public ResultBean cc(Map map) { + log.info("FlowableRest-cc:{}",JSONObject.toJSONString(map)); + Object bv1 = map.get("bv"); + BusinessVariables bv= new BusinessVariables(); + BeanUtil.copyProperties(bv1,bv); + Object uff1 = map.get("uff"); + UpdateFlowFieldVo uff= new UpdateFlowFieldVo(); + BeanUtil.copyProperties(uff1,uff); + + //流程定义的id + String modelId = bv.getModelId(); + //抄送的角色的sid + ResultBean roleSidByModelId = sysFlowccFeign.getRoleSidByModelId(modelId); + //组织机构sid + String orgSidPath = bv.getOrgSidPath(); + if(!roleSidByModelId.getSuccess()){ + return roleSidByModelId; + } + SysFlowccVo data = roleSidByModelId.getData(); + if(StringUtils.isBlank(data.getRoleSid())){ + return ResultBean.fireFail().setMsg("抄送失败,没有配置对应的角色!"); + } + List list = Arrays.asList(data.getRoleSid().split(",")); + UserByRolesAndOrgQuery userQuery = new UserByRolesAndOrgQuery(); + userQuery.setRoleSids(list); + userQuery.setOrgSidPath(orgSidPath); + List sysUserVos = sysUserFeign.getUserByRoles(userQuery).getData(); + if(sysUserVos==null||sysUserVos.size()<1){ + return ResultBean.fireFail().setMsg("抄送失败,没有用户!"); + } + StringBuilder userName=new StringBuilder(); + StringBuilder userSids=new StringBuilder(); + sysUserVos.forEach(f->{ + userName.append(f.getName()).append(","); + userSids.append(f.getSid()).append(","); + }); + userSids.deleteCharAt(userSids.length()-1); + //抄送的业务逻辑 + MessageFlowableQuery mfq = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(uff, messageFlowVo); + mfq.setUfVo(messageFlowVo); + //移动端的参数 + //Map app = (Map) bv.getFormVariables().get("app"); + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .includeProcessVariables().taskId(bv.getTaskId()).singleResult(); + if(historicTaskInstance==null){ + log.info("抄送失败:没有获取到业务参数!"); + return ResultBean.fireFail().setMsg("抄送失败!"); + } + Map processVariables = historicTaskInstance.getProcessVariables(); + if(historicTaskInstance==null){ + log.info("抄送失败:没有获取到业务参数!"); + return ResultBean.fireFail().setMsg("抄送失败!"); + } + Map app=new HashMap<>(); + if(processVariables.get("app")!=null){ + app= (Map) processVariables.get("app"); + } + log.info("抄送方法-historicTaskInstance:{}",JSONObject.toJSONString(historicTaskInstance)); + mfq.setAppMap(app); + mfq.setBusinessSid(bv.getBusinessSid()); + + mfq.setMsgContent( "系统抄送的流程审批,请查看"); +// act_re_procdef + Map process= processService.getProcessDefByDefId(historicTaskInstance.getProcessDefinitionId()); + log.info("抄送成功-process:{}",process); + if(process==null){ + return ResultBean.fireFail().setMsg("抄送失败,流程定义不存在!"); + } + mfq.setModuleName(process.get("NAME_")); + mfq.setMsgTitle(process.get("NAME_")); + mfq.setUserSids(userSids.toString()); + ResultBean resultBean = messageFeign.pushMessageCC(mfq); + log.info("抄送成功:{}",userName.toString()); + log.info("抄送成功-resultBean:{}",resultBean); + if(!resultBean.getSuccess()){ + log.info("抄送失败,同送消息异常!:{}",JSONObject.toJSONString(resultBean)); + return ResultBean.fireFail().setMsg("抄送失败,同送消息异常!"); + } + return ResultBean.fireSuccess().setMsg("抄送"+userName.toString()+"成功!"); + } + @Override public ResultBean businessStart(BusinessVariables bv) { return flowableService.businessStart( bv); @@ -193,7 +297,15 @@ public class FlowableRest implements FlowableFeign { Logger log= LoggerFactory.getLogger(FlowableRest.class); @Override public ResultBean handleProsess(BusinessVariables dto) { - return handleProsess(dto,true); + ResultBean updateFlowFieldVoResultBean = handleProsess(dto, true); + if(updateFlowFieldVoResultBean.getSuccess()){ + HashMap map = new HashMap<>(); + map.put("bv",dto); + map.put("uff",updateFlowFieldVoResultBean.getData()); + cc(map); + } + return updateFlowFieldVoResultBean; + } /** diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableService.java index 5f76908824..e35c89c6ab 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableService.java @@ -274,4 +274,8 @@ public class FlowableService extends MybatisBaseService getProcessInstanceById(String procInsId) { return baseMapper.getProcessInstanceById(procInsId); } + + public Map getProcessDefByDefId(String processDefinitionId) { + return baseMapper.getProcessDefByDefId(processDefinitionId); + } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/process/ProcessService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/process/ProcessService.java index 7e9b8f617f..a6adc99a70 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/process/ProcessService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/process/ProcessService.java @@ -160,4 +160,8 @@ public class ProcessService { public Map getProcessInstanceById(String procInsId) { return flowableService.getProcessInstanceById(procInsId); } + + public Map getProcessDefByDefId(String processDefinitionId) { + return flowableService.getProcessDefByDefId(processDefinitionId); + } } \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/MessageFeign.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/MessageFeign.java new file mode 100644 index 0000000000..89a54bf1d3 --- /dev/null +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/MessageFeign.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.flowable.feign; + +import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +@Api(tags = "消息体") +@FeignClient( + contextId = "message-center-Message", + name = "message-center", + path = "v1/message") +public interface MessageFeign { + @ApiOperation("流程审批推送消息") + @PostMapping("/pushMessageCC") + ResultBean pushMessageCC(@RequestBody MessageFlowableQuery query); +} diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowVo.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowVo.java new file mode 100644 index 0000000000..eff65718d6 --- /dev/null +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowVo.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.flowable.feign.form; + +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/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowableQuery.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowableQuery.java new file mode 100644 index 0000000000..cbc6dcc7db --- /dev/null +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/feign/form/MessageFlowableQuery.java @@ -0,0 +1,33 @@ +package com.yxt.anrui.flowable.feign.form; + +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 { + @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; + @ApiModelProperty("抄送的用户的sid") + private String userSids; + +} diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java index 90e4b70e96..4efb6015cf 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java @@ -9,6 +9,8 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.springframework.stereotype.Component; +import java.util.List; + @Component public class FlowableFallback implements FlowableFeign{ /* @Override @@ -56,6 +58,11 @@ public class FlowableFallback implements FlowableFeign{ return null; } + @Override + public ResultBean> flowRecordAndComment(String procInsId, String deployId) { + return null; + } + @Override public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) { return null; diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java index 2ab5d5f835..1e880d7177 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java @@ -13,6 +13,8 @@ import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Api(tags = "Flowable") @FeignClient( contextId = "anrui-portal-flow-Flowable", @@ -124,6 +126,18 @@ public interface FlowableFeign { public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId, @ApiParam(value = "目前没用") @PathVariable(value = "deployId") String deployId); + /** + * 流程历史流转记录 包含了评论的数据 + * + * @param procInsId 流程实例id + * @param deployId 目前没用 + * @return + */ + @ApiOperation(value = "流程历史流转记录") + @GetMapping(value = "/task/flowRecordAndComment/{procInsId}/{deployId}") + public ResultBean>flowRecordAndComment(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId, + @ApiParam(value = "目前没用") @PathVariable(value = "deployId") String deployId); + /** * 驳回任务 * diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/PCHistTaskListAndCommentList.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/PCHistTaskListAndCommentList.java new file mode 100644 index 0000000000..6c9ec25ab6 --- /dev/null +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/PCHistTaskListAndCommentList.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.portal.api.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.Map; +@Data +public class PCHistTaskListAndCommentList { + private static final long serialVersionUID = -3272069366532392941L; + @ApiModelProperty(value = "流程状态") + @JsonProperty("state") + private String state; + @ApiModelProperty(value = "时间") + @JsonProperty("time") + private Date time; + @ApiModelProperty(value = "审批记录") + @JsonProperty("flowableRecordVo") + private Map flowableRecordVo; + @ApiModelProperty("流程评论") + @JsonProperty("processCommentVo") + private Map processCommentVo; +} diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeign.java index c6ead5aa95..67a8ce6780 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeign.java @@ -75,4 +75,9 @@ public interface SysFlowccFeign { @GetMapping("/fetchDetailsBySid/{sid}") @ResponseBody public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); + + @ApiOperation("根据流程的id查询抄送的角色") + @PostMapping("/getRoleSidByModelId/{modelId}") + @ResponseBody + public ResultBean getRoleSidByModelId(@PathVariable("modelId") String modelId); } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeignFallback.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeignFallback.java index 26e9ced562..22e7497fac 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeignFallback.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowcc/SysFlowccFeignFallback.java @@ -69,4 +69,9 @@ public class SysFlowccFeignFallback implements SysFlowccFeign { ResultBean rb = ResultBean.fireFail(); return rb.setMsg("接口anrui-portal/sysflowcc/fetchDetailsBySid无法访问"); } + + @Override + public ResultBean getRoleSidByModelId(String modelId) { + return null; + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java index 9efab60f57..94b21f6987 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java @@ -248,5 +248,7 @@ public interface SysUserFeign { @GetMapping(value = "/getOrgListByUserSid") ResultBean> getOrgListByUserSid(@RequestParam("userSid") String userSid); - + @ApiOperation(value = "根据多个角色sid以及机构sid获取本机构链角色的用户") + @PostMapping(value = "/getUserByRoles") + ResultBean> getUserByRoles(@RequestBody UserByRolesAndOrgQuery userQuery); } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java index 30191e9dac..c5ccb7abfe 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java @@ -225,4 +225,9 @@ public class SysUserFeignFallback implements SysUserFeign { public ResultBean> getOrgListByUserSid(String userSid) { return null; } + + @Override + public ResultBean> getUserByRoles(UserByRolesAndOrgQuery userQuery) { + return null; + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserByRolesAndOrgQuery.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserByRolesAndOrgQuery.java new file mode 100644 index 0000000000..345adf93a3 --- /dev/null +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserByRolesAndOrgQuery.java @@ -0,0 +1,22 @@ +package com.yxt.anrui.portal.api.sysuser; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/6/21 8:47 + * @Description + */ +@Data +public class UserByRolesAndOrgQuery implements Query { + + @ApiModelProperty(value = "角色sid必传项") + private List roleSids; + @ApiModelProperty(value = "用户部门sid路径是必传项") + private String orgSidPath; + +} diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java index 55e1c0eec8..1480d1785a 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java @@ -27,6 +27,7 @@ package com.yxt.anrui.portal.biz.flow; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yxt.anrui.flowable.api.processcomment.ProcessCommentFeign; import com.yxt.anrui.portal.api.flow.*; import com.yxt.anrui.portal.api.flow.app.FlowTaskDoQuery; import com.yxt.anrui.portal.api.flow.app.FlowTaskDoVo; @@ -35,6 +36,10 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; import com.yxt.anrui.portal.api.sysuser.SysUser; import com.yxt.anrui.portal.biz.sysstafforg.SysStaffOrgService; import com.yxt.anrui.portal.biz.sysuser.SysUserService; +import com.yxt.anrui.terminal.api.app.flowable.AppFlowableRecordAndCommentVo; +import com.yxt.anrui.terminal.api.app.flowable.AppFlowableRecordQuery; +import com.yxt.anrui.terminal.api.app.flowable.AppFlowableRecordVo; +import com.yxt.anrui.terminal.api.app.flowable.ProcessCommentVo; import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -44,6 +49,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -71,6 +79,8 @@ public class FlowableRest implements FlowableFeign { private SysStaffOrgService sysStaffOrgService; @Autowired private SysUserService sysUserService; + @Autowired + private ProcessCommentFeign processCommentFeign; /* @Override @@ -142,6 +152,56 @@ public class FlowableRest implements FlowableFeign { return resultBean; } + @Override + public ResultBean> flowRecordAndComment(String procInsId, String deployId) { + ResultBean flowRecordVoResultBean = flowableService.flowRecord(procInsId, deployId); + com.yxt.anrui.flowable.api.flowtask.FlowRecordVo flowRecordVo = flowRecordVoResultBean.getData(); + // private List flowList = new ArrayList<>(); + List flowList = new ArrayList<>(); + //流转记录 + List flowList1 = flowRecordVo.getFlowList(); + flowList1.forEach(f->{ + PCHistTaskListAndCommentList a=new PCHistTaskListAndCommentList(); + a.setTime(f.getFinishTime()==null?new Date():f.getFinishTime()); + Map stringObjectMap = BeanUtil.beanToMap(f); + a.setFlowableRecordVo(stringObjectMap); + a.setState(0+""); + flowList.add(a); + }); + //评论记录 + ResultBean> commentList = getCommentList(procInsId,deployId); + commentList.getData().forEach(f->{ + PCHistTaskListAndCommentList a=new PCHistTaskListAndCommentList(); + Date time = f.getCreateTime(); + a.setTime(time); + f.setTitle(f.getTaskUserInfo().getAssigneeName()+"添加了评论"); + Map stringObjectMap = BeanUtil.beanToMap(f); + a.setProcessCommentVo(stringObjectMap); + a.setState(1+""); + flowList.add(a); + }); + flowList.sort((t1, t2) -> t2.getTime().compareTo(t1.getTime())); + //flowRecordVo.setFlowList(flowList); + ResultBean> resultBean = new ResultBean>().success(); + resultBean.setData(flowList); + return resultBean; + } + + public ResultBean> getCommentList(String procInsId, String deployId) { + ResultBean> rb = ResultBean.fireFail(); + ResultBean> commentList = processCommentFeign.getCommentList(procInsId); + List list=new ArrayList<>(); + commentList.getData().forEach(f->{ + ProcessCommentVo processCommentVo = new ProcessCommentVo(); + BeanUtil.copyProperties(f,processCommentVo); + processCommentVo.setCreateTime(f.getTime()); + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + String format = sdf.format(f.getTime()); + processCommentVo.setTime(format); + list.add(processCommentVo); + }); + return rb.success().setData(list); + } @Override public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) { return flowableService.taskReject(businessSid, flowTaskVo); diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccMapper.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccMapper.java index afb0de9772..01a2d507ef 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccMapper.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccMapper.java @@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.portal.api.sysflowcc.SysFlowccDetailsVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccRest.java index a8925898c2..dbf6314efb 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccRest.java @@ -25,6 +25,9 @@ *********************************************************/ package com.yxt.anrui.portal.biz.sysflowcc; +import com.yxt.anrui.portal.api.sysuserrole.SysUserRole; +import com.yxt.anrui.portal.api.sysuserrole.SysUserRoleFeign; +import com.yxt.anrui.portal.biz.sysuserrole.SysUserRoleService; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -62,7 +65,8 @@ public class SysFlowccRest implements SysFlowccFeign { @Autowired private SysFlowccService sysFlowccService; - + @Autowired + private SysUserRoleService sysUserRoleService; @Override @ApiOperation("根据条件分页查询数据的列表") @PostMapping("/listPage") @@ -102,4 +106,18 @@ public class SysFlowccRest implements SysFlowccFeign { vo.setRoleNames(Arrays.asList(roleNames)); return rb.success().setData(vo); } + + @Override + public ResultBean getRoleSidByModelId(String modelId) { + ResultBean> rb = ResultBean.fireFail(); + ResultBean roleSidByModelId = sysFlowccService.getRoleSidByModelId(modelId); + /*if(!roleSidByModelId.getSuccess()){ + return rb; + }*/ + /*SysFlowccVo data = roleSidByModelId.getData(); + String roleSid = data.getRoleSid(); + List list = Arrays.asList(roleSid.split(",")); + ResultBean> userIdListByRoleSid = sysUserRoleService.getUserSidListByRoleSid(list);*/ + return roleSidByModelId; + } } diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccService.java index b44260ce6f..b8143567a2 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccService.java @@ -147,4 +147,10 @@ public class SysFlowccService extends MybatisBaseService getRoleSidByModelId(String modelId) { + ResultBean rb = ResultBean.fireFail(); + SysFlowccVo sysFlowccVo = baseMapper.selectByFlowKey(modelId); + return rb.success().setData(sysFlowccVo); + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java index 34df3813a4..4aee2d5096 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java @@ -644,4 +644,9 @@ public class SysUserRest implements SysUserFeign { public ResultBean> getOrgListByUserSid(String userSid) { return sysUserService.getOrgListByUserSid(userSid); } + + @Override + public ResultBean> getUserByRoles(UserByRolesAndOrgQuery userQuery) { + return sysUserService.getUserByRoles(userQuery); + } } diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java index 01f86fc085..e09d400bbc 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java @@ -41,6 +41,7 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -1322,4 +1323,24 @@ public class SysUserService extends MybatisBaseService { } return rb.success(); } + + public ResultBean> getUserByRoles(UserByRolesAndOrgQuery userQuery) { + List roleSids = userQuery.getRoleSids(); + String orgSidPath = userQuery.getOrgSidPath(); + List list=new ArrayList<>(); + for(String s:roleSids){ + UserQuery uq=new UserQuery(); + uq.setRoleSid(s); + uq.setOrgSidPath(orgSidPath); + ResultBean> userByRole = getUserByRole(uq); + if(userByRole.getSuccess()){ + List data = userByRole.getData(); + data.forEach( f->{ + list.add(f); + }); + } + } + ResultBean> objectResultBean = ResultBean.fireSuccess(); + return objectResultBean.setData(list); + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.java index d4256c7e05..d780841cee 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.java @@ -50,4 +50,5 @@ public interface SysUserRoleMapper extends BaseMapper { List getUserRoleSidByUserSid(@Param("userSid")String userSid); List getUserIdListByRoleSid(@Param("roleList") List roleList); + List getUserSidListByRoleSid(@Param("roleList") List roleList); } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.xml b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.xml index cc2d1772f8..3e70908ac5 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.xml +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleMapper.xml @@ -28,4 +28,14 @@ GROUP BY sur.userSid + \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleService.java index e5d23a4b9c..4a0fa69516 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuserrole/SysUserRoleService.java @@ -120,4 +120,7 @@ public class SysUserRoleService extends MybatisBaseService> getUserIdListByRoleSid(List roleList) { return new ResultBean>().success().setData(baseMapper.getUserIdListByRoleSid(roleList)); } + public ResultBean> getUserSidListByRoleSid(List roleList) { + return new ResultBean>().success().setData(baseMapper.getUserSidListByRoleSid(roleList)); + } } \ No newline at end of file