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 5eb18271a3..4286cafc9f 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 @@ -205,6 +205,13 @@ public class FlowableRest implements FlowableFeign { if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人 userSids.append(processVariables.get("sendRecommendSid").toString()).append(","); } + //查询是否有设置转办的,抄送给设置转办人员 + List zbUserSids = processCommentService.selectByIdAndComment("转办",bv.getInstanceId()); + zbUserSids.removeAll(Collections.singleton(null)); + if(!zbUserSids.isEmpty()){ + String zbUser = String.join(",",zbUserSids); + userSids.append(zbUser).append(","); + } userSids.deleteCharAt(userSids.length() - 1); mfq.setUserSids(userSids.toString()); mfq.setOrgPath(createrOrgPath); diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowRest.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowRest.java index 0df8db0cf7..255bfa6c0a 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowRest.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowRest.java @@ -44,19 +44,9 @@ public class FlowRest implements FlowFeign { @Autowired private FlowService flowService; - @Autowired - private SysFlowccFeign sysFlowccFeign; - @Autowired - private SysUserFeign sysUserFeign; @Autowired - protected HistoryService historyService; - - @Autowired - private ProcessService processService; - - @Autowired - private MessageFeign messageFeign; + private SysUserFeign sysUserFeign; @Override public ResultBean startProcess(BusinessVariables bv) { @@ -99,7 +89,7 @@ public class FlowRest implements FlowFeign { UpdateFlowFieldVo ufVo = updateFlowFieldVoResultBean.getData(); ufVo.setTaskId(bv.getTaskId()); map.put("uff", ufVo); - cc(map, bv.getTaskDefKey()); + flowService.cc(map, bv.getTaskDefKey()); }); } catch (Exception e) { e.printStackTrace(); @@ -110,110 +100,5 @@ public class FlowRest implements FlowFeign { return updateFlowFieldVoResultBean; } - /** - * 流程抄送的功能 - * - * @param map - * @return - */ - public ResultBean cc(Map map, String taskDefKey) { - ResultBean rb = ResultBean.fireFail(); - 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); - uff.setTaskDefKey(taskDefKey); - //流程定义的id - String modelId = bv.getModelId(); - //将modelId根据冒号:分成三部分,取第一部分作为key - List stringList = Arrays.asList(modelId.split(":")); - modelId = stringList.get(0); - //抄送的角色的sid - ResultBean roleSidByModelId = sysFlowccFeign.getRoleSidByModelId(modelId); - //组织机构sid - String orgSidPath = bv.getOrgSidPath(); - if (roleSidByModelId.getData() == null) { - log.info("抄送失败,没有配置对应的角色!"); - return rb.setMsg("抄送失败,没有配置对应的角色!"); - } - SysFlowccVo data = roleSidByModelId.getData(); - if (StringUtils.isBlank(data.getRoleSid())) { - log.info("抄送失败,没有配置对应的角色!"); - return rb.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) { - log.info("抄送失败,没有用户!"); - return rb.setMsg("抄送失败,没有用户!"); - } - StringBuilder userName = new StringBuilder(); - StringBuilder userSids = new StringBuilder(); - sysUserVos.forEach(f -> { - userName.append(f.getName()).append(","); - userSids.append(f.getSid()).append(","); - }); - - //抄送的业务逻辑 - MessageFlowableQuery mfq = new MessageFlowableQuery(); - MessageFlowVo messageFlowVo = new MessageFlowVo(); - BeanUtil.copyProperties(uff, messageFlowVo); - mfq.setUfVo(messageFlowVo); - //移动端的参数 - HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() - .includeProcessVariables().taskId(bv.getTaskId()).singleResult(); - if (historicTaskInstance == null) { - log.info("抄送失败:没有获取到业务参数!"); - return rb.setMsg("抄送失败!"); - } - Map processVariables = historicTaskInstance.getProcessVariables(); - String createrOrgPath = (String) processVariables.get("createrOrgPath"); - if (historicTaskInstance == null) { - log.info("抄送失败:没有获取到业务参数!"); - return rb.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) { - log.info("抄送失败,流程定义不存在!"); - return rb.setMsg("抄送失败,流程定义不存在!"); - } - mfq.setModuleName(process.get("NAME_")); - if (processVariables.containsKey("orderNames")) { - mfq.setMsgTitle(processVariables.get("orderNames").toString()); - } else { - mfq.setMsgTitle(process.get("NAME_")); - } - if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人 - userSids.append(processVariables.get("sendRecommendSid").toString()).append(","); - } - userSids.deleteCharAt(userSids.length() - 1); - mfq.setUserSids(userSids.toString()); - mfq.setOrgPath(createrOrgPath); - ResultBean resultBean = messageFeign.pushMessageCC(mfq); - log.info("抄送成功:{}", userName.toString()); - log.info("抄送成功-resultBean:{}", resultBean); - if (!resultBean.getSuccess()) { - log.info("抄送失败,同送消息异常!:{}", JSONObject.toJSONString(resultBean)); - return rb.setMsg("抄送失败,同送消息异常!"); - } - return rb.success().setMsg("抄送" + userName.toString() + "成功!"); - } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java index 8349c2bee1..2ef8b208b8 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java @@ -1,5 +1,6 @@ package com.yxt.anrui.flowable.biz.flow2; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -12,16 +13,19 @@ import com.yxt.anrui.flowable.api.processcomment.ProcessCommentDto; import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService; import com.yxt.anrui.flowable.biz.process.ExpressionCmd; +import com.yxt.anrui.flowable.biz.process.ProcessService; import com.yxt.anrui.flowable.biz.processcomment.ProcessCommentService; import com.yxt.anrui.flowable.common.ProcessConstants; +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.sysflowableconfig.SysFlowableConfigFeign; import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery; import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo; -import com.yxt.anrui.portal.api.sysuser.SysUserFeign; -import com.yxt.anrui.portal.api.sysuser.SysUserVo; -import com.yxt.anrui.portal.api.sysuser.UserQuery; -import com.yxt.anrui.portal.api.sysuser.UserssQuery; +import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign; +import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo; +import com.yxt.anrui.portal.api.sysuser.*; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.result.ResultBean; @@ -33,6 +37,7 @@ import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.DelegationState; import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -70,6 +75,17 @@ public class FlowService extends MybatisBaseService { @Autowired private ProcessCommentService processCommentService; + @Autowired + protected HistoryService historyService; + + @Autowired + private ProcessService processService; + + @Autowired + private MessageFeign messageFeign; + @Autowired + private SysFlowccFeign sysFlowccFeign; + public ResultBean getNextNodeUser(BusinessVariables bv) { ResultBean rb = ResultBean.fireFail(); //根据业务参数取流程流转的环节 信息 @@ -121,7 +137,6 @@ public class FlowService extends MybatisBaseService { map.put("candidateGroups", candidateGroups); list.add(map); } -// List> list= JSON.parseObject(JSON.toJSONString(flowElements), new TypeReference>>() {}); return rb.setData(list); } @@ -301,7 +316,7 @@ public class FlowService extends MybatisBaseService { updateFlowFieldVo.setTaskDefKey(vo.getTaskDefKey()); updateFlowFieldVo.setProcDefId(bv.getModelId()); updateFlowFieldVo.setSid(bv.getBusinessSid()); - rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功"); + return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功"); } } if (bv.getUserSid().equals(nextNodeUserSids)) { @@ -326,7 +341,7 @@ public class FlowService extends MybatisBaseService { updateFlowFieldVo.setTaskDefKey(vo.getTaskDefKey()); updateFlowFieldVo.setProcDefId(bv.getModelId()); updateFlowFieldVo.setSid(bv.getBusinessSid()); - rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功"); + return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功"); } } updateFlowFieldVo.setProcInsId(task.getProcessInstanceId()); @@ -586,7 +601,119 @@ public class FlowService extends MybatisBaseService { } return rb.success().setData(nextNodeUserSids_); } + } + /** + * 流程抄送的功能 + * + * @param map + * @return + */ + public ResultBean cc(Map map, String taskDefKey) { + ResultBean rb = ResultBean.fireFail(); + 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); + uff.setTaskDefKey(taskDefKey); + //流程定义的id + String modelId = bv.getModelId(); + //将modelId根据冒号:分成三部分,取第一部分作为key + List stringList = Arrays.asList(modelId.split(":")); + modelId = stringList.get(0); + //抄送的角色的sid + ResultBean roleSidByModelId = sysFlowccFeign.getRoleSidByModelId(modelId); + //组织机构sid + String orgSidPath = bv.getOrgSidPath(); + if (roleSidByModelId.getData() == null) { + log.info("抄送失败,没有配置对应的角色!"); + return rb.setMsg("抄送失败,没有配置对应的角色!"); + } + SysFlowccVo data = roleSidByModelId.getData(); + if (StringUtils.isBlank(data.getRoleSid())) { + log.info("抄送失败,没有配置对应的角色!"); + return rb.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) { + log.info("抄送失败,没有用户!"); + return rb.setMsg("抄送失败,没有用户!"); + } + StringBuilder userName = new StringBuilder(); + StringBuilder userSids = new StringBuilder(); + sysUserVos.forEach(f -> { + userName.append(f.getName()).append(","); + userSids.append(f.getSid()).append(","); + }); + + //抄送的业务逻辑 + MessageFlowableQuery mfq = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(uff, messageFlowVo); + mfq.setUfVo(messageFlowVo); + //移动端的参数 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .includeProcessVariables().taskId(bv.getTaskId()).singleResult(); + if (historicTaskInstance == null) { + log.info("抄送失败:没有获取到业务参数!"); + return rb.setMsg("抄送失败!"); + } + Map processVariables = historicTaskInstance.getProcessVariables(); + String createrOrgPath = (String) processVariables.get("createrOrgPath"); + if (historicTaskInstance == null) { + log.info("抄送失败:没有获取到业务参数!"); + return rb.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) { + log.info("抄送失败,流程定义不存在!"); + return rb.setMsg("抄送失败,流程定义不存在!"); + } + mfq.setModuleName(process.get("NAME_")); + if (processVariables.containsKey("orderNames")) { + mfq.setMsgTitle(processVariables.get("orderNames").toString()); + } else { + mfq.setMsgTitle(process.get("NAME_")); + } + if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人 + userSids.append(processVariables.get("sendRecommendSid").toString()).append(","); + } + //查询是否有设置转办的,抄送给设置转办人员 + List zbUserSids = processCommentService.selectByIdAndComment("转办",bv.getInstanceId()); + zbUserSids.removeAll(Collections.singleton(null)); + if(!zbUserSids.isEmpty()){ + String zbUser = String.join(",",zbUserSids); + userSids.append(zbUser).append(","); + } + userSids.deleteCharAt(userSids.length() - 1); + mfq.setUserSids(userSids.toString()); + mfq.setOrgPath(createrOrgPath); + ResultBean resultBean = messageFeign.pushMessageCC(mfq); + log.info("抄送成功:{}", userName.toString()); + log.info("抄送成功-resultBean:{}", resultBean); + if (!resultBean.getSuccess()) { + log.info("抄送失败,同送消息异常!:{}", JSONObject.toJSONString(resultBean)); + return rb.setMsg("抄送失败,同送消息异常!"); + } + return rb.success().setMsg("抄送" + userName.toString() + "成功!"); } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.java index 2974556ee8..dcc3730a67 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.java @@ -69,4 +69,6 @@ public interface ProcessCommentMapper extends BaseMapper { ProcessComment fetchBySid(@Param("sid")String sid); void insertByDto(ProcessCommentDto dto); + + List selectByIdAndComment(@Param("comment") String comment, @Param("instanceId") String instanceId); } \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.xml b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.xml index 3551c99e56..b44df399cb 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.xml +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.xml @@ -17,4 +17,8 @@ insert into `process_comment` ( `sid`, `reviewer`, `reviewerSid`, `time`, `content`, `processId`, `processInstSid`,processFile) values(#{sid},#{reviewer},#{reviewerSid},#{time},#{content},#{processId},#{processInstSid},#{processFile}); + + \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java index 05da790cc9..4095efe52f 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java @@ -135,4 +135,8 @@ public class ProcessCommentService extends MybatisBaseService selectByIdAndComment(String comment, String instanceId) { + return baseMapper.selectByIdAndComment(comment, instanceId); + } } \ No newline at end of file