Browse Source

监管流程部分接口

master
dimengzhe 2 years ago
parent
commit
844ce97c85
  1. 24
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/FlowDelegateQuery.java
  2. 20
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/MessageFlowVo.java
  3. 19
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flowtask/DelegateQuery.java
  4. 7
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow/FlowableMapper.java
  5. 4
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow/FlowableService.java
  6. 13
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowRest.java
  7. 219
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowService.java
  8. 6
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flowtask/FlowTaskService.java
  9. 4
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/process/ProcessService.java
  10. 28
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/message/message/MessageFeign.java
  11. 12
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/message/message/MessageFeignFallBack.java
  12. 31
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/message/message/MessageFlowableQuery.java
  13. 25
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccFeign.java
  14. 9
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccFeignFallback.java
  15. 24
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccVo.java
  16. 4
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserFeign.java
  17. 5
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserFeignFallback.java
  18. 20
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysuser/UserByRolesAndProQuery.java
  19. 56
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/Message.java
  20. 72
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageDto.java
  21. 20
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageFlowVo.java
  22. 56
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageFlowableDto.java
  23. 33
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageFlowableQueryForCC.java
  24. 29
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageJsonDto.java
  25. 39
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagelist/MessageList.java
  26. 39
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagelist/MessageListDto.java
  27. 30
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagetype/MessageType.java
  28. 26
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagetype/MessageTypeVo.java
  29. 20
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java
  30. 259
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageService.java
  31. 15
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java
  32. 11
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml
  33. 25
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java
  34. 18
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagetype/MessageTypeMapper.java
  35. 17
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagetype/MessageTypeMapper.xml
  36. 39
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagetype/MessageTypeService.java
  37. 28
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/feign/flowable/SysProUrlFeign.java
  38. 12
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/feign/flowable/SysProUrlFeignFallBack.java
  39. 52
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/feign/flowable/SysProUrlVo.java
  40. 25
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowcc.java
  41. 16
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.java
  42. 4
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.xml
  43. 26
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccRest.java
  44. 19
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccService.java
  45. 24
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccVo.java
  46. 2
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserMapper.java
  47. 6
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserMapper.xml
  48. 12
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserRest.java
  49. 30
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java
  50. 20
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserStaffVo.java
  51. 20
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/UserByRolesAndProQuery.java
  52. 24
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/flowable/FlowDelegateQuery.java
  53. 37
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/feign/FlowFeign.java
  54. 12
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/feign/fallback/FlowFallback.java
  55. 7
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/paymentapply/PaymentApplyRest.java
  56. 15
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/paymentapply/PaymentApplyService.java
  57. 7
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseRest.java
  58. 15
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseService.java
  59. 7
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/sealrecord/SealRecordRest.java
  60. 14
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/sealrecord/SealRecordService.java
  61. 7
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/warehousingpledge/WarehousingPledgeRest.java
  62. 17
      yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/warehousingpledge/WarehousingPledgeService.java

24
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/FlowDelegateQuery.java

@ -0,0 +1,24 @@
package com.yxt.supervise.flowable.api.flow2;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class FlowDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

20
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/MessageFlowVo.java

@ -0,0 +1,20 @@
package com.yxt.supervise.flowable.api.flow2;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class MessageFlowVo {
private String sid;
private String procDefId;
private String nodeState;
private String procInsId;
private String taskDefKey;
private String taskId;
private String nextNodeUserSids;
}

19
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flowtask/DelegateQuery.java

@ -0,0 +1,19 @@
package com.yxt.supervise.flowable.api.flowtask;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class DelegateQuery {
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人")
private String assignee;
}

7
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow/FlowableMapper.java

@ -11,8 +11,13 @@ import java.util.Map;
@Mapper
public interface FlowableMapper extends BaseMapper<Flowable> {
void insetFlowableTask(Map<String,Object> params);
void insetFlowableTask(Map<String, Object> params);
FlowProcinst getFlowProcinstById(@Param("id") String id);
@Select("select * from act_hi_procinst where proc_inst_id_=#{id}")
Map<String, String> getProcessInstanceById(@Param("id") String procInsId);
@Select("select * from act_re_procdef where id_=#{id}")
Map<String, String> getProcessDefByDefId(String processDefinitionId);
}

4
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow/FlowableService.java

@ -273,4 +273,8 @@ public class FlowableService extends MybatisBaseService<FlowableMapper, Flowable
public Map<String, String> getProcessInstanceById(String procInsId) {
return baseMapper.getProcessInstanceById(procInsId);
}
public Map<String, String> getProcessDefByDefId(String processDefinitionId) {
return baseMapper.getProcessDefByDefId(processDefinitionId);
}
}

13
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowRest.java

@ -5,6 +5,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.supervise.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.supervise.flowable.sqloperationsymbol.BusinessVariables;
import io.swagger.annotations.ApiOperation;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
@ -47,7 +48,7 @@ public class FlowRest {
//获取下一环节待办人
if (StringUtils.isBlank(bv.getNextNodeUserSids())) {
ResultBean<String> userResultBean = flowService.getNextNodeUser(bv);
if(userResultBean.getSuccess()){
if (userResultBean.getSuccess()) {
return rb.setMsg(userResultBean.getMsg());
}
bv.setNextNodeUserSids(userResultBean.getData());
@ -57,6 +58,8 @@ public class FlowRest {
return startResultBean;
}
@ApiOperation(value = "办理")
@PostMapping(value = "/handleProsess")
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = flowService.handleProsess(bv, true);
@ -79,7 +82,7 @@ public class FlowRest {
UpdateFlowFieldVo ufVo = updateFlowFieldVoResultBean.getData();
ufVo.setTaskId(bv.getTaskId());
map.put("uff", ufVo);
// flowService.cc(map, bv.getTaskDefKey());
flowService.cc(map, bv.getTaskDefKey());
});
} catch (Exception e) {
e.printStackTrace();
@ -90,4 +93,10 @@ public class FlowRest {
return updateFlowFieldVoResultBean;
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(FlowDelegateQuery flowDelegateQuery) {
return flowService.delegate(flowDelegateQuery);
}
}

219
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowService.java

@ -1,21 +1,29 @@
package com.yxt.supervise.flowable.biz.flow2;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.supervise.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.supervise.flowable.api.flow2.MessageFlowVo;
import com.yxt.supervise.flowable.api.flowcomment.FlowComment;
import com.yxt.supervise.flowable.api.flowtask.DelegateQuery;
import com.yxt.supervise.flowable.api.flowtask.LatestTaskVo;
import com.yxt.supervise.flowable.api.processcomment.ProcessCommentDto;
import com.yxt.supervise.flowable.biz.flowtask.FlowTaskService;
import com.yxt.supervise.flowable.biz.process.ExpressionCmd;
import com.yxt.supervise.flowable.biz.process.ProcessService;
import com.yxt.supervise.flowable.biz.processcomment.ProcessCommentService;
import com.yxt.supervise.flowable.common.ProcessConstants;
import com.yxt.supervise.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.supervise.system.sysuser.SysUserFeign;
import com.yxt.supervise.system.sysuser.SysUserVo;
import com.yxt.supervise.system.sysuser.UserQuery;
import com.yxt.supervise.system.sysuser.UserssQuery;
import com.yxt.supervise.message.message.MessageFeign;
import com.yxt.supervise.message.message.MessageFlowableQuery;
import com.yxt.supervise.system.sysflowcc.SysFlowccFeign;
import com.yxt.supervise.system.sysflowcc.SysFlowccVo;
import com.yxt.supervise.system.sysuser.*;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.*;
import org.flowable.common.engine.impl.identity.Authentication;
@ -25,6 +33,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;
@ -55,6 +64,16 @@ public class FlowService {
protected TaskService taskService;
@Autowired
private FlowTaskService flowTaskService;
@Autowired
private ProcessCommentService processCommentService;
@Autowired
private HistoryService historyService;
@Autowired
private ProcessService processService;
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysFlowccFeign sysFlowccFeign;
public ResultBean<String> getNextNodeUser(BusinessVariables bv) {
ResultBean<String> rb = ResultBean.fireFail();
@ -503,4 +522,196 @@ public class FlowService {
}
}
public ResultBean delegate(FlowDelegateQuery flowDelegateQuery) {
ResultBean rb = ResultBean.fireFail();
DelegateQuery delegateQuery = new DelegateQuery();
BeanUtil.copyProperties(flowDelegateQuery, delegateQuery);
ResultBean delegate = flowTaskService.delegate(delegateQuery);
String userSid = flowDelegateQuery.getUserSid();
String assigneeSid = flowDelegateQuery.getAssignee();
String instanceId = flowDelegateQuery.getInstanceId();
String views = "";
if (StringUtils.isNotBlank(flowDelegateQuery.getViews())) {
views = flowDelegateQuery.getViews();
}
ResultBean<SysUserVo> userVoResultBean1 = sysUserFeign.fetchBySid(userSid);
String userName = "";
if (userVoResultBean1.getData() != null) {
userName = userVoResultBean1.getData().getName();
}
ResultBean<SysUserVo> userVoResultBean2 = sysUserFeign.fetchBySid(assigneeSid);
ProcessCommentDto processCommentDto = new ProcessCommentDto();
processCommentDto.setReviewerSid(userSid);
if (userVoResultBean2.getData() != null) {
String changeName = userVoResultBean2.getData().getName();
processCommentDto.setReviewer(userName);
processCommentDto.setContent(userName + "加签给" + changeName + ":" + views);
}
processCommentDto.setTime(new Date());
processCommentDto.setProcessId(instanceId);
processCommentService.saveOrUpdateDto(processCommentDto);
//加签内容推送至待阅
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery()
.includeProcessVariables().taskId(delegateQuery.getTaskId()).singleResult();
if (historicTaskInstance == null) {
return rb.setMsg("分享失败!");
}
MessageFlowVo messageFlowVo = new MessageFlowVo();
String procDefId = historicTaskInstance.getProcessDefinitionId();
String procInsId = historicTaskInstance.getProcessInstanceId();
String nodeState = historicTaskInstance.getName();
String taskDefKey = historicTaskInstance.getTaskDefinitionKey();
messageFlowVo.setProcDefId(procDefId);
messageFlowVo.setTaskId(delegateQuery.getTaskId());
messageFlowVo.setNodeState(nodeState);
messageFlowVo.setProcInsId(procInsId);
messageFlowVo.setTaskDefKey(taskDefKey);
Map<String, Object> processVariables = historicTaskInstance.getProcessVariables();
MessageFlowableQuery mfq = new MessageFlowableQuery();
mfq.setUfVo(messageFlowVo);
String createrOrgPath = (String) processVariables.get("createrOrgPath");
if (historicTaskInstance == null) {
return rb.setMsg("分享失败!");
}
//
String assignee = (String) processVariables.get("assignee");
ResultBean<SysUserVo> stringResultBean = sysUserFeign.fetchBySid(assignee);
String assigneeName = "";
if (stringResultBean.getData() != null) {
assigneeName = stringResultBean.getData().getName();
}
Map<String, Object> app = new HashMap<>();
if (processVariables.get("app") != null) {
app = (Map<String, Object>) processVariables.get("app");
}
String businessSid = (String) processVariables.get("businessSid");
mfq.setBusinessSid(businessSid);
mfq.setMsgContent(userName + "分享的流程审批,请查看");
// act_re_procdef
Map<String, String> process = processService.getProcessDefByDefId(historicTaskInstance.getProcessDefinitionId());
mfq.setModuleName(process.get("NAME_"));
if (processVariables.containsKey("orderNames")) {
mfq.setMsgTitle(processVariables.get("orderNames").toString());
} else {
mfq.setMsgTitle(process.get("NAME_"));
}
mfq.setUserSids(assigneeSid);
mfq.setUserSid(assignee);
mfq.setApplicationName(assigneeName);
ResultBean<String> resultBean = messageFeign.pushMessageShare(mfq);
return rb.success();
}
/**
* 流程抄送的功能
*
* @param map
* @return
*/
public ResultBean cc(Map<String, Object> 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<String> stringList = Arrays.asList(modelId.split(":"));
modelId = stringList.get(0);
//抄送的角色的sid
ResultBean<SysFlowccVo> roleSidByModelId = sysFlowccFeign.getRoleSidByModelId(modelId);
//组织机构sid
String projectSid = bv.getProjectSid();
if (roleSidByModelId.getData() == null) {
log.info("抄送失败,没有配置对应的角色!");
return rb.setMsg("抄送失败,没有配置对应的角色!");
}
SysFlowccVo data = roleSidByModelId.getData();
if (StringUtils.isBlank(data.getRoleSid())) {
log.info("抄送失败,没有配置对应的角色!");
return rb.setMsg("抄送失败,没有配置对应的角色!");
}
List<String> list = Arrays.asList(data.getRoleSid().split(","));
UserByRolesAndProQuery userQuery = new UserByRolesAndProQuery();
userQuery.setRoleSids(list);
userQuery.setProjectSid(projectSid);
List<SysUserVo> 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<String, Object> processVariables = historicTaskInstance.getProcessVariables();
String createrOrgPath = (String) processVariables.get("createrOrgPath");
if (historicTaskInstance == null) {
log.info("抄送失败:没有获取到业务参数!");
return rb.setMsg("抄送失败!");
}
//
String assignee = (String) processVariables.get("assignee");
ResultBean<SysUserVo> stringResultBean = sysUserFeign.fetchBySid(assignee);
String assigneeName = "";
if (stringResultBean.getData() != null) {
assigneeName = stringResultBean.getData().getName();
}
Map<String, Object> app = new HashMap<>();
if (processVariables.get("app") != null) {
app = (Map<String, Object>) processVariables.get("app");
}
log.info("抄送方法-historicTaskInstance:{}", JSONObject.toJSONString(historicTaskInstance));
mfq.setBusinessSid(bv.getBusinessSid());
mfq.setMsgContent(assigneeName + "抄送的流程审批,请查看");
// act_re_procdef
Map<String, String> 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_"));
}
userSids.deleteCharAt(userSids.length() - 1);
mfq.setUserSids(userSids.toString());
mfq.setUserSid(assignee);
mfq.setApplicationName(assigneeName);
ResultBean<String> 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() + "成功!");
}
}

6
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flowtask/FlowTaskService.java

@ -2117,4 +2117,10 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
mapParam.setUserSid(nextNodeUserSids_);
return rb.success().setData(mapParam);
}
public ResultBean delegate(DelegateQuery delegateQuery) {
ResultBean rb = ResultBean.fireFail();
taskService.delegateTask(delegateQuery.getTaskId(), delegateQuery.getAssignee());
return rb.success();
}
}

4
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/process/ProcessService.java

@ -156,4 +156,8 @@ public class ProcessService {
public Map<String, String> getProcessInstanceById(String procInsId) {
return flowableService.getProcessInstanceById(procInsId);
}
public Map<String, String> getProcessDefByDefId(String processDefinitionId) {
return flowableService.getProcessDefByDefId(processDefinitionId);
}
}

28
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/message/message/MessageFeign.java

@ -0,0 +1,28 @@
package com.yxt.supervise.message.message;
import com.yxt.common.core.result.ResultBean;
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;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@FeignClient(
contextId = "supervise-message-Message",
name = "supervise-message",
path = "v1/Message",
fallback = MessageFeignFallBack.class)
public interface MessageFeign {
@ApiOperation("流程审批推送消息 抄送")
@PostMapping("/pushMessageCC")
public ResultBean<String> pushMessageCC(MessageFlowableQuery query);
@ApiOperation("分享")
@PostMapping("/pushMessageShare")
ResultBean<String> pushMessageShare(@RequestBody MessageFlowableQuery query);
}

12
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/message/message/MessageFeignFallBack.java

@ -0,0 +1,12 @@
package com.yxt.supervise.message.message;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Component
public class MessageFeignFallBack {
}

31
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/message/message/MessageFlowableQuery.java

@ -0,0 +1,31 @@
package com.yxt.supervise.message.message;
import com.yxt.supervise.flowable.api.flow2.MessageFlowVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class MessageFlowableQuery {
@ApiModelProperty("业务sid")
private String businessSid;
@ApiModelProperty("模块名称")
private String moduleName;
@ApiModelProperty("消息内容")
private String msgContent;
@ApiModelProperty("消息标题")
private String msgTitle;
@ApiModelProperty("流程相关参数")
private MessageFlowVo ufVo;
@ApiModelProperty("申请人")
private String applicationName;
@ApiModelProperty("抄送的用户sid")
private String userSids;
@ApiModelProperty("当前所登陆账号的sid")
private String userSid;
}

25
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccFeign.java

@ -0,0 +1,25 @@
package com.yxt.supervise.system.sysflowcc;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.system.sysorganization.SysOrganizationFeignFallback;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@FeignClient(
contextId = "supervise-system-SysFlowcc",
name = "supervise-system",
path = "v1/sysflowcc",
fallback = SysFlowccFeignFallback.class)
public interface SysFlowccFeign {
@ApiOperation("根据流程的id查询抄送的角色")
@PostMapping("/getRoleSidByModelId/{modelId}")
public ResultBean<SysFlowccVo> getRoleSidByModelId(@PathVariable("modelId") String modelId);
}

9
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccFeignFallback.java

@ -0,0 +1,9 @@
package com.yxt.supervise.system.sysflowcc;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
public class SysFlowccFeignFallback {
}

24
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccVo.java

@ -0,0 +1,24 @@
package com.yxt.supervise.system.sysflowcc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class SysFlowccVo {
private String sid; // sid
@ApiModelProperty("流程key")
private String flowKey; // 流程key
@ApiModelProperty("流程名称")
private String flowName; // 流程名称
@ApiModelProperty("角色sid")
private String roleSid; // 角色sid
@ApiModelProperty("角色名称")
private String roleName; // 角色名称
}

4
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserFeign.java

@ -239,4 +239,8 @@ public interface SysUserFeign {
@ApiModelProperty("根据项目和角色获取用户")
@GetMapping("getUserByRoleAndProject2")
public ResultBean<List<SysUserVo>> getUserByRoleAndProject2(@SpringQueryMap UserssQuery userQuery);
@ApiOperation(value = "根据多个角色sid以及项目sid获取用户")
@PostMapping(value = "/getUserByRoles")
public ResultBean<List<SysUserVo>> getUserByRoles(UserByRolesAndProQuery userQuery);
}

5
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserFeignFallback.java

@ -229,4 +229,9 @@ public class SysUserFeignFallback implements SysUserFeign {
public ResultBean<List<SysUserVo>> getUserByRoleAndProject2(UserssQuery userQuery) {
return null;
}
@Override
public ResultBean<List<SysUserVo>> getUserByRoles(UserByRolesAndProQuery userQuery) {
return null;
}
}

20
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/system/sysuser/UserByRolesAndProQuery.java

@ -0,0 +1,20 @@
package com.yxt.supervise.system.sysuser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class UserByRolesAndProQuery {
@ApiModelProperty(value = "角色sid必传项")
private List<String> roleSids;
@ApiModelProperty(value = "项目sid")
private String projectSid;
}

56
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/Message.java

@ -1,5 +1,7 @@
package com.yxt.supervise.message.api.message;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -8,5 +10,57 @@ import lombok.Data;
* @date: 2023/11/24
**/
@Data
public class Message {
public class Message extends BaseEntity {
private static final long serialVersionUID = 3595229268842695762L;
@ApiModelProperty("消息类别sid")
private String msgTypeSid;
@ApiModelProperty("消息类别名称")
private String msgType;
@ApiModelProperty("消息标题")
private String msgTitle;
@ApiModelProperty("消息内容")
private String msgContent;
@ApiModelProperty("来源(资源名称)")
private String msgSource;
@ApiModelProperty("发送人sid")
private String senderSid;
@ApiModelProperty("发起人姓名")
private String senderName;
@ApiModelProperty("发送人部门Id")
private String senderDeptSid;
@ApiModelProperty("发起人部门名称")
private String senderDeptName;
@ApiModelProperty("业务Id(扩展字段,与工作相关)")
private String businessSid;
@ApiModelProperty("插件Sid")
private String moduleSid;
@ApiModelProperty("具体页面action")
private String moduleAction;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("参数(规则),json类型的传参(必须为 string、string)")
private String args_json;
@ApiModelProperty("目标网页地址")
private String h5_url;
@ApiModelProperty("小程序页面地址")
private String xcx_url;
@ApiModelProperty("推送的消息打开的action(APP),推送参数对应class_name")
private String msgTargetUri;
}

72
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageDto.java

@ -0,0 +1,72 @@
package com.yxt.supervise.message.api.message;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class MessageDto implements Dto {
private static final long serialVersionUID = -4643392187155889939L;
@ApiModelProperty("消息体sid")
private String sid;
@ApiModelProperty("消息类别sid")
private String msgTypeSid;
@ApiModelProperty("消息类别名称")
private String msgType;
@ApiModelProperty("消息标题")
private String msgTitle;
@ApiModelProperty("消息内容")
private String msgContent;
@ApiModelProperty("来源(资源名称)")
private String msgSource;
@ApiModelProperty("发送人sid")
private String senderSid;
@ApiModelProperty("发起人姓名")
private String senderName;
@ApiModelProperty("发送人部门Id")
private String senderDeptSid;
@ApiModelProperty("发起人部门名称")
private String senderDeptName;
@ApiModelProperty("业务Id(扩展字段,与工作相关)")
private String businessSid;
@ApiModelProperty("插件Sid")
private String moduleSid;
@ApiModelProperty("具体页面action")
private String moduleAction;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("参数(规则),json类型的传参(必须为 string、string)")
private String args_json;
@ApiModelProperty("目标网页地址")
private String h5_url;
@ApiModelProperty("小程序页面地址")
private String xcx_url;
@ApiModelProperty("推送的消息打开的action(APP),推送参数对应class_name")
private String msgTargetUri;
@ApiModelProperty("推送taskId")
private String taskId;
}

20
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageFlowVo.java

@ -0,0 +1,20 @@
package com.yxt.supervise.message.api.message;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class MessageFlowVo {
private String sid;
private String procDefId;
private String nodeState;
private String procInsId;
private String taskDefKey;
private String taskId;
private String nextNodeUserSids;
}

56
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageFlowableDto.java

@ -0,0 +1,56 @@
package com.yxt.supervise.message.api.message;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class MessageFlowableDto implements Dto {
private static final long serialVersionUID = 3316247196699190882L;
@ApiModelProperty("接收人的sid集合")
private List<String> list = new ArrayList<>();
@ApiModelProperty("消息标题")
private String msgTitle;
@ApiModelProperty("消息内容")
private String msgContent;
@ApiModelProperty("json组装")
private MessageJsonDto json;
@ApiModelProperty("创建人名称")
private String createName;
@ApiModelProperty("接收人的id集合")
private List<String> receiveIdList;
@ApiModelProperty("模块名称")
private String moduleName;
@ApiModelProperty("具体页面的url")
private String moduleAction;
@ApiModelProperty("PC具体页面的url")
private String moduleAction2;
@ApiModelProperty("业务sid")
private String businessSid;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("插件sid")
private String moduleSid;
@ApiModelProperty("任务id")
private String taskId;
private String userSid;
}

33
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageFlowableQueryForCC.java

@ -0,0 +1,33 @@
package com.yxt.supervise.message.api.message;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class MessageFlowableQueryForCC {
@ApiModelProperty("业务sid")
private String businessSid;
@ApiModelProperty("模块名称")
private String moduleName;
@ApiModelProperty("消息内容")
private String msgContent;
@ApiModelProperty("消息标题")
private String msgTitle;
@ApiModelProperty("流程相关参数")
private MessageFlowVo ufVo;
@ApiModelProperty("申请人")
private String applicationName;
@ApiModelProperty("抄送的用户sid")
private String userSids;
@ApiModelProperty("当前所登陆账号的sid")
private String userSid;
}

29
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageJsonDto.java

@ -0,0 +1,29 @@
package com.yxt.supervise.message.api.message;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class MessageJsonDto implements Dto {
private static final long serialVersionUID = -4851888900240321450L;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("节点名称")
private String taskName;
@ApiModelProperty("流程实例id")
private String procInsId;
@ApiModelProperty("节点id")
private String taskDefKey;
@ApiModelProperty("流程定义id")
private String deployId;
@ApiModelProperty("流程定义id")
private String procDefId;
}

39
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagelist/MessageList.java

@ -0,0 +1,39 @@
package com.yxt.supervise.message.api.messagelist;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class MessageList extends BaseEntity {
private static final long serialVersionUID = 2636101214854588182L;
@ApiModelProperty("消息sid")
private String msgSid;
@ApiModelProperty("接收人sid")
private String receiverSid;
@ApiModelProperty("接收人姓名")
private String receiverName;
@ApiModelProperty("接收人部门sid")
private String receiverDeptSid;
@ApiModelProperty("接收人部门名称")
private String receiverDeptName;
@ApiModelProperty("接收人删除状态")
private Integer rDelStatus;
@ApiModelProperty("发送人删除状态")
private Integer sDelStatus;
@ApiModelProperty("状态(阅读状态,0未阅,1已阅)")
private Integer state = 0;
}

39
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagelist/MessageListDto.java

@ -0,0 +1,39 @@
package com.yxt.supervise.message.api.messagelist;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class MessageListDto implements Dto {
private static final long serialVersionUID = 8092414395907587688L;
@ApiModelProperty("消息sid")
private String msgSid;
@ApiModelProperty("接收人sid")
private String receiverSid;
@ApiModelProperty("接收人姓名")
private String receiverName;
@ApiModelProperty("接收人部门sid")
private String receiverDeptSid;
@ApiModelProperty("接收人部门名称")
private String receiverDeptName;
@ApiModelProperty("接收人删除状态")
private Integer rDelStatus;
@ApiModelProperty("发送人删除状态")
private Integer sDelStatus;
@ApiModelProperty("状态(阅读状态,0未阅,1已阅)")
private Integer state = 0;
}

30
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagetype/MessageType.java

@ -0,0 +1,30 @@
package com.yxt.supervise.message.api.messagetype;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class MessageType extends BaseEntity {
private static final long serialVersionUID = -8661966988081336951L;
@ApiModelProperty("消息类别名称")
private String msgType;
@ApiModelProperty("横排消息类别图标")
private String crossIconUrl;
@ApiModelProperty("纵排消息类别图标")
private String longIconUrl;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("消息标识:0001为小程序、0002为app")
private String identifier;
}

26
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/messagetype/MessageTypeVo.java

@ -0,0 +1,26 @@
package com.yxt.supervise.message.api.messagetype;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/29
**/
@Data
public class MessageTypeVo {
@ApiModelProperty(value = "消息类别sid")
private String msgTypeSid;
@ApiModelProperty(value = "消息类别名称")
private String msgType;
@ApiModelProperty(value = "横排消息类别图标")
private String crossIconUrl;
@ApiModelProperty(value = "纵排消息类别图标")
private String longIconUrl;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否有未读")
private Boolean isHave;
}

20
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java

@ -1,5 +1,10 @@
package com.yxt.supervise.message.biz.message;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.message.api.message.MessageFlowableQueryForCC;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -11,4 +16,19 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("v1/Message")
public class MessageRest {
@Autowired
private MessageService messageService;
@ApiOperation("流程审批推送消息 抄送")
@PostMapping("/pushMessageCC")
public ResultBean<String> pushMessageCC(MessageFlowableQueryForCC query) {
return messageService.pushMessageForCC(query);
}
@ApiOperation("流程审批推送消息 分享")
@PostMapping("/pushMessageShare")
public ResultBean<String> pushMessageShare(MessageFlowableQueryForCC query) {
return messageService.pushMessageShare(query);
}
}

259
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageService.java

@ -1,9 +1,29 @@
package com.yxt.supervise.message.biz.message;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.supervise.message.api.message.Message;
import com.yxt.common.base.utils.JPushServer;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.message.api.message.*;
import com.yxt.supervise.message.api.messagelist.MessageListDto;
import com.yxt.supervise.message.api.messagetype.MessageTypeVo;
import com.yxt.supervise.message.biz.messagelist.MessageListService;
import com.yxt.supervise.message.biz.messagetype.MessageTypeService;
import com.yxt.supervise.message.feign.flowable.SysProUrlFeign;
import com.yxt.supervise.message.feign.flowable.SysProUrlVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
/**
* @description:
* @author: dimengzhe
@ -11,4 +31,241 @@ import org.springframework.stereotype.Service;
**/
@Service
public class MessageService extends MybatisBaseService<MessageMapper, Message> {
@Autowired
private SysProUrlFeign sysProUrlFeign;
@Autowired
private MessageTypeService messageTypeService;
@Autowired
private MessageListService messageListService;
public ResultBean<String> pushMessageForCC(MessageFlowableQueryForCC query) {
ResultBean<String> rb = ResultBean.fireFail();
MessageFlowVo ufVo = query.getUfVo();
String procId = ufVo.getProcInsId();
String procDefId = ufVo.getProcDefId();
String moduleName = query.getModuleName();
String msgContent = query.getMsgContent();
String msgTitle = query.getMsgTitle();
String applicationName = query.getApplicationName();
String nextNodeUserSids = query.getUserSids();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
receiveSidList = receiveSidList.stream().distinct().collect(Collectors.toList());
MessageFlowableDto messageFlowableDto = new MessageFlowableDto();
MessageJsonDto messageJsonDto = new MessageJsonDto();
BeanUtil.copyProperties(ufVo, messageJsonDto);
//查询流程审批的页面操作地址组装json的参数
//根据taskDef和移动端标识
//PC取前端页面
ResultBean<SysProUrlVo> selectUrlByPCKey = sysProUrlFeign.selectUrlByKey(procDefId, ufVo.getTaskDefKey(), "2", "1");
SysProUrlVo sysProUrlPCVo = selectUrlByPCKey.getData();
messageFlowableDto.setModuleAction2(sysProUrlPCVo.getUrl());
messageJsonDto.setTaskName(ufVo.getNodeState());
messageJsonDto.setProcInsId(ufVo.getProcInsId());
messageJsonDto.setDeployId(procDefId);
messageJsonDto.setProcDefId(procDefId);
messageFlowableDto.setJson(messageJsonDto);
messageFlowableDto.setList(receiveSidList);
messageFlowableDto.setModuleName(moduleName);
messageFlowableDto.setMsgContent(msgContent);
messageFlowableDto.setMsgTitle(msgTitle);
messageFlowableDto.setCreateName(applicationName);
messageFlowableDto.setTaskId(ufVo.getTaskId());
messageFlowableDto.setUserSid(query.getUserSid());
ResultBean<String> stringResultBean = getMessageRead(messageFlowableDto);
String msgSid = stringResultBean.getData();
return rb.success().setMsg(msgSid);
}
/**
* 抄送消息
*
* @param dto
* @return
*/
public ResultBean<String> getMessageRead(MessageFlowableDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String msgTitle = dto.getMsgTitle();
String msgContent = dto.getMsgContent();
List<String> list = dto.getList();
List<String> receiveIdList = dto.getReceiveIdList();
// 1、保存消息体
MessageDto messageDto = new MessageDto();
List<MessageTypeVo> messageBean = messageTypeService.selectMsgTypeList("0003");
messageBean.removeAll(Collections.singleton(null));
if (!messageBean.isEmpty()) {
for (MessageTypeVo message : messageBean) {
if (message.getMsgType().contains("抄送")) {
messageDto.setMsgTypeSid(message.getMsgTypeSid());
messageDto.setMsgType(message.getMsgType());
}
}
}
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<String, Object> jsonMap = BeanUtil.beanToMap(dto.getJson());
messageDto.setArgs_json(JSONObject.toJSONString(jsonMap));
messageDto.setMsgTargetUri(dto.getModuleAction());
messageDto.setModuleAction(dto.getModuleAction2());
messageDto.setSenderName(dto.getCreateName());
messageDto.setSenderSid(dto.getUserSid());
String msgSid = saveOrUpdateMessage(messageDto).getData();
String msgTypeSid = messageDto.getMsgTypeSid();
// 2、保存至消息列表
// 使用多线程保存
List<Future<?>> futures = new ArrayList<Future<?>>();
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));
messageListService.saveOrUpdateDto(messageList);
System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName());
} catch (Exception e) {
e.printStackTrace();
}
}
});
futures.add(f);
}
executor.shutdown();
return rb.success().setData(msgSid);
}
public ResultBean<String> saveOrUpdateMessage(MessageDto dto) {
if (StringUtils.isBlank(dto.getSid())) { // 新增
Message message = new Message();
BeanUtil.copyProperties(dto, message, "sid");
if (StringUtils.isNotBlank(dto.getTaskId())) {
message.setSid(dto.getTaskId());
} else {
message.setSid(UUID.randomUUID().toString());
}
Boolean flag = save(message);
if (flag) {
return new ResultBean().success().setMsg("保存成功").setData(message.getSid());
} else {
return new ResultBean().fail().setMsg("保存失败");
}
} else { // 修改
Message message = fetchBySid(dto.getSid());
BeanUtil.copyProperties(dto, message);
Boolean flag = updateById(message);
if (flag) {
return new ResultBean().success().setMsg("修改成功").setData(message.getSid());
} else {
return new ResultBean().fail().setMsg("修改失败");
}
}
}
public ResultBean<String> pushMessageShare(MessageFlowableQueryForCC query) {
ResultBean<String> rb = ResultBean.fireFail();
MessageFlowVo ufVo = query.getUfVo();
String procDefId = ufVo.getProcDefId();
String moduleName = query.getModuleName();
String msgContent = query.getMsgContent();
String msgTitle = query.getMsgTitle();
String applicationName = query.getApplicationName();
String nextNodeUserSids = query.getUserSids();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
MessageFlowableDto messageFlowableDto = new MessageFlowableDto();
MessageJsonDto messageJsonDto = new MessageJsonDto();
BeanUtil.copyProperties(ufVo, messageJsonDto);
//查询流程审批的页面操作地址组装json的参数
//根据taskDef和移动端标识
//PC取前端页面
ResultBean<SysProUrlVo> selectUrlByPCKey = sysProUrlFeign.selectUrlByKey(procDefId, ufVo.getTaskDefKey(), "2", "1");
SysProUrlVo sysProUrlPCVo = selectUrlByPCKey.getData();
messageFlowableDto.setModuleAction2(sysProUrlPCVo.getUrl());
messageJsonDto.setTaskName(ufVo.getNodeState());
messageJsonDto.setProcInsId(ufVo.getProcInsId());
messageJsonDto.setDeployId(procDefId);
messageJsonDto.setProcDefId(procDefId);
messageFlowableDto.setJson(messageJsonDto);
messageFlowableDto.setList(receiveSidList);
messageFlowableDto.setModuleName(moduleName);
messageFlowableDto.setMsgContent(msgContent);
messageFlowableDto.setMsgTitle(msgTitle);
messageFlowableDto.setCreateName(applicationName);
messageFlowableDto.setTaskId(ufVo.getTaskId());
messageFlowableDto.setUserSid(query.getUserSid());
ResultBean<String> stringResultBean = getMessageShare(messageFlowableDto);
String msgSid = stringResultBean.getData();
return rb.success().setMsg(msgSid);
}
private ResultBean<String> getMessageShare(MessageFlowableDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String msgTitle = dto.getMsgTitle();
String msgContent = dto.getMsgContent();
List<String> list = dto.getList();
// 1、保存消息体
MessageDto messageDto = new MessageDto();
List<MessageTypeVo> messageBean = messageTypeService.selectMsgTypeList("0003");
messageBean.removeAll(Collections.singleton(null));
if (!messageBean.isEmpty()) {
for (MessageTypeVo message : messageBean) {
if (message.getMsgType().contains("分享")) {
messageDto.setMsgTypeSid(message.getMsgTypeSid());
messageDto.setMsgType(message.getMsgType());
}
}
}
messageDto.setSenderSid(dto.getUserSid());
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<String, Object> jsonMap = BeanUtil.beanToMap(dto.getJson());
messageDto.setArgs_json(JSONObject.toJSONString(jsonMap));
messageDto.setMsgTargetUri(dto.getModuleAction());
messageDto.setModuleAction(dto.getModuleAction2());
messageDto.setSenderName(dto.getCreateName());
String msgSid = saveOrUpdateMessage(messageDto).getData();
String msgTypeSid = messageDto.getMsgTypeSid();
// 2、保存至消息列表
// 使用多线程保存
List<Future<?>> futures = new ArrayList<Future<?>>();
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));
messageListService.saveOrUpdateDto(messageList);
System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName());
} catch (Exception e) {
e.printStackTrace();
}
}
});
futures.add(f);
}
executor.shutdown();
return rb.success().setData(msgSid);
}
}

15
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java

@ -0,0 +1,15 @@
package com.yxt.supervise.message.biz.messagelist;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.supervise.message.api.messagelist.MessageList;
import org.apache.ibatis.annotations.Mapper;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Mapper
public interface MessageListMapper extends BaseMapper<MessageList> {
int selectListCount(String msgTypeSid);
}

11
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.supervise.message.biz.messagelist.MessageListMapper">
<select id="selectListCount" resultType="int">
SELECT count(*)
FROM message_list ml
left join message m ON m.sid = ml.msgSid
WHERE M.msgTypeSid = #{msgTypeSid}
AND ML.state = 0
</select>
</mapper>

25
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java

@ -0,0 +1,25 @@
package com.yxt.supervise.message.biz.messagelist;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.supervise.message.api.messagelist.MessageList;
import com.yxt.supervise.message.api.messagelist.MessageListDto;
import org.springframework.stereotype.Service;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Service
public class MessageListService extends MybatisBaseService<MessageListMapper, MessageList> {
public void saveOrUpdateDto(MessageListDto dto) {
MessageList entity = new MessageList();
dto.fillEntity(entity);
this.saveOrUpdate(entity);
}
public int selectListCount(String msgTypeSid) {
return baseMapper.selectListCount(msgTypeSid);
}
}

18
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagetype/MessageTypeMapper.java

@ -0,0 +1,18 @@
package com.yxt.supervise.message.biz.messagetype;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.supervise.message.api.messagetype.MessageType;
import com.yxt.supervise.message.api.messagetype.MessageTypeVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Mapper
public interface MessageTypeMapper extends BaseMapper<MessageType> {
List<MessageTypeVo> selectMsgTypeList(String identifier);
}

17
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagetype/MessageTypeMapper.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.supervise.message.biz.messagetype.MessageTypeMapper">
<select id="selectMsgTypeList" resultType="com.yxt.supervise.message.api.messagetype.MessageTypeVo">
SELECT mt.sid msgTypeSid,<!--消息类别sid-->
mt.msgType,
mt.crossIconUrl,<!--横排图标地址-->
mt.longIconUrl,<!--纵排图标地址-->
mt.sort<!--排序-->
FROM message_type mt
<where>
<if test="identifier != null and identifier != ''">
identifier = #{identifier}
</if>
</where>
</select>
</mapper>

39
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagetype/MessageTypeService.java

@ -0,0 +1,39 @@
package com.yxt.supervise.message.biz.messagetype;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.supervise.message.api.messagetype.MessageType;
import com.yxt.supervise.message.api.messagetype.MessageTypeVo;
import com.yxt.supervise.message.biz.messagelist.MessageListService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Service
public class MessageTypeService extends MybatisBaseService<MessageTypeMapper, MessageType> {
@Autowired
private MessageListService messageListService;
public List<MessageTypeVo> selectMsgTypeList(String identifier) {
List<MessageTypeVo> messageWxTypeVoList = baseMapper.selectMsgTypeList(identifier);
for (MessageTypeVo msgType : messageWxTypeVoList) {
boolean isHave = false;
String msgTypeSid = msgType.getMsgTypeSid();
//查询该消息类别下是否包含未读的消息
int count = messageListService.selectListCount(msgTypeSid);
if (count > 0) {
isHave = true;
msgType.setIsHave(isHave);
} else {
msgType.setIsHave(isHave);
}
}
return messageWxTypeVoList;
}
}

28
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/feign/flowable/SysProUrlFeign.java

@ -0,0 +1,28 @@
package com.yxt.supervise.message.feign.flowable;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@FeignClient(
contextId = "supervise-flowable-SysProUrlFeign",
name = "supervise-flowable",
path = "v1/flowable/proUrl",
fallback = SysProUrlFeignFallBack.class)
public interface SysProUrlFeign {
@ApiOperation("查询流程与业务表单的url")
@GetMapping("/selectUrlByKeyWithTerminal")
ResultBean<SysProUrlVo> selectUrlByKey(@ApiParam(value = "流程定义id") @RequestParam(value = "procDefId") String procDefId,
@ApiParam(value = "节点id") @RequestParam(value = "taskDefKey") String taskDefKey,
@ApiParam(value = "类型:1办理,2详情") @RequestParam(value = "type") String type
, @ApiParam(value = "终端:1pc,2移动") @RequestParam(value = "terminal") String terminal);
}

12
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/feign/flowable/SysProUrlFeignFallBack.java

@ -0,0 +1,12 @@
package com.yxt.supervise.message.feign.flowable;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Component
public class SysProUrlFeignFallBack {
}

52
yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/feign/flowable/SysProUrlVo.java

@ -0,0 +1,52 @@
package com.yxt.supervise.message.feign.flowable;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class SysProUrlVo {
/**
* 表单主键
*/
private String url;
/**
* 类型办理或者详情
*/
private String type;
/**
* 终端pc/mobile
*/
private String terminal;
/**
* 表单id
*/
private String formId;
/**
* 名称
*/
private String title;
/**
* 流程定义id
*/
private String proc_def_id;
/**
* 节点id
*/
private String taskDefKey;
/**
* app插件名称模块名称
*/
private String modulePluginName;
}

25
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowcc.java

@ -0,0 +1,25 @@
package com.yxt.supervise.system.sysflowcc;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class SysFlowcc extends BaseEntity {
private static final long serialVersionUID = -1073201441501781817L;
@ApiModelProperty("流程key")
private String flowKey; // 流程key
@ApiModelProperty("流程名称")
private String flowName; // 流程名称
@ApiModelProperty("角色sid")
private String roleSid; // 角色sid
@ApiModelProperty("角色名称")
private String roleName; // 角色名称
}

16
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.java

@ -0,0 +1,16 @@
package com.yxt.supervise.system.sysflowcc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Mapper
public interface SysFlowccMapper extends BaseMapper<SysFlowcc> {
@Select("select * from sys_flowcc where flowKey = #{flowKey}")
SysFlowccVo selectByFlowKey(String modelId);
}

4
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.xml

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.supervise.system.sysflowcc.SysFlowccMapper">
</mapper>

26
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccRest.java

@ -0,0 +1,26 @@
package com.yxt.supervise.system.sysflowcc;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@RestController
@RequestMapping("v1/sysflowcc")
public class SysFlowccRest {
@Autowired
private SysFlowccService sysFlowccService;
@ApiOperation("根据流程的id查询抄送的角色")
@PostMapping("/getRoleSidByModelId/{modelId}")
public ResultBean<SysFlowccVo> getRoleSidByModelId(@PathVariable("modelId") String modelId){
return sysFlowccService.getRoleSidByModelId(modelId);
}
}

19
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccService.java

@ -0,0 +1,19 @@
package com.yxt.supervise.system.sysflowcc;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Service
public class SysFlowccService extends MybatisBaseService<SysFlowccMapper,SysFlowcc> {
public ResultBean<SysFlowccVo> getRoleSidByModelId(String modelId) {
ResultBean<SysFlowccVo> rb = ResultBean.fireFail();
SysFlowccVo sysFlowccVo = baseMapper.selectByFlowKey(modelId);
return rb.success().setData(sysFlowccVo);
}
}

24
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccVo.java

@ -0,0 +1,24 @@
package com.yxt.supervise.system.sysflowcc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class SysFlowccVo {
private String sid; // sid
@ApiModelProperty("流程key")
private String flowKey; // 流程key
@ApiModelProperty("流程名称")
private String flowName; // 流程名称
@ApiModelProperty("角色sid")
private String roleSid; // 角色sid
@ApiModelProperty("角色名称")
private String roleName; // 角色名称
}

2
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserMapper.java

@ -185,4 +185,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
List<SysUserVo> getUserOrgBySid(@Param("sid")String sid);
SysUserVo getUserByUserSid(String sid);
List<SysUserStaffVo> getUserListAll();
}

6
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserMapper.xml

@ -402,4 +402,10 @@
left join sys_staffinfo si on si.sid = su.staffSid
where su.sid = #{sid}
</select>
<select id="getUserListAll" resultType="com.yxt.supervise.system.sysuser.SysUserStaffVo">
select su.sid userSid,si.name staffName from sys_user su
left join sys_staffinfo si on si.sid = su.staffSid
where su.isAdmin is null
</select>
</mapper>

12
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserRest.java

@ -22,6 +22,7 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.system.sysuser.app.AppUserOrgInfoVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
@ -771,4 +772,15 @@ public class SysUserRest implements SysUserFeign {
ResultBean<SysUserVo> getUserByUserSid(@RequestParam("sid")String sid){
return sysUserService.getUserByUserSid(sid);
}
@ApiOperation(value = "根据多个角色sid以及项目sid获取用户")
@PostMapping(value = "/getUserByRoles")
public ResultBean<List<SysUserVo>> getUserByRoles(UserByRolesAndProQuery userQuery) {
return sysUserService.getUserByRoles(userQuery);
}
@ApiOperation(value = "所有人员")
@PostMapping(value = "/getUserListAll")
ResultBean<List<SysUserStaffVo>> getUserListAll(){
return sysUserService.getUserListAll();
}
}

30
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java

@ -1597,7 +1597,7 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
List<String> finalStringList = stringList;
sysUserVoList = sysUserVoList.stream().filter(v-> finalStringList.contains(v.getSid())).collect(Collectors.toList());
}else{
return rb.setMsg("请设置项目相关人员");
return rb;
}
return rb.success().setData(sysUserVoList);
}
@ -1637,4 +1637,32 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
SysUserVo sysUserVo = baseMapper.getUserByUserSid(sid);
return rb.success().setData(sysUserVo);
}
public ResultBean<List<SysUserVo>> getUserByRoles(UserByRolesAndProQuery userQuery) {
ResultBean<List<SysUserVo>> rb = ResultBean.fireFail();
List<String> roleSids = userQuery.getRoleSids();
String projectSid = userQuery.getProjectSid();
List<SysUserVo> list = new ArrayList<>();
for (String s : roleSids) {
UserQuery uq = new UserQuery();
uq.setRoleSid(s);
uq.setProjectSid(projectSid);
ResultBean<List<SysUserVo>> userByRole = getUserByRoleAndProject(uq);
if (userByRole.getSuccess()) {
List<SysUserVo> data = userByRole.getData();
data.forEach(f -> {
list.add(f);
});
} else {
log.error("角色获取人员--s:" + userByRole.getMsg());
}
}
return rb.success().setData(list);
}
public ResultBean<List<SysUserStaffVo>> getUserListAll() {
ResultBean<List<SysUserStaffVo>> rb = ResultBean.fireFail();
List<SysUserStaffVo> sysUserStaffVoList = baseMapper.getUserListAll();
return rb.success().setData(sysUserStaffVoList);
}
}

20
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserStaffVo.java

@ -0,0 +1,20 @@
package com.yxt.supervise.system.sysuser;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class SysUserStaffVo implements Vo {
private static final long serialVersionUID = 8585964732292394355L;
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("人员")
private String staffName;
}

20
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/UserByRolesAndProQuery.java

@ -0,0 +1,20 @@
package com.yxt.supervise.system.sysuser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class UserByRolesAndProQuery {
@ApiModelProperty(value = "角色sid必传项")
private List<String> roleSids;
@ApiModelProperty(value = "项目sid")
private String projectSid;
}

24
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/flowable/FlowDelegateQuery.java

@ -0,0 +1,24 @@
package com.yxt.supervise.enterprisecentre.api.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Data
public class FlowDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

37
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/feign/FlowFeign.java

@ -0,0 +1,37 @@
package com.yxt.supervise.enterprisecentre.biz.feign;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.enterprisecentre.api.flowable.BusinessVariables;
import com.yxt.supervise.enterprisecentre.api.flowable.FlowDelegateQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.UpdateFlowFieldVo;
import com.yxt.supervise.enterprisecentre.biz.feign.fallback.FlowFallback;
import com.yxt.supervise.enterprisecentre.biz.feign.fallback.FlowableFallback;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@FeignClient(
contextId = "supervise-flowable-Flow",
name = "supervise-flowable",
path = "v2/flow",
fallback = FlowFallback.class)
public interface FlowFeign {
@ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess")
public ResultBean<UpdateFlowFieldVo> startProcess(BusinessVariables bv);
@ApiOperation(value = "办理")
@PostMapping(value = "/handleProsess")
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(FlowDelegateQuery flowDelegateQuery);
}

12
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/feign/fallback/FlowFallback.java

@ -0,0 +1,12 @@
package com.yxt.supervise.enterprisecentre.biz.feign.fallback;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/30
**/
@Component
public class FlowFallback {
}

7
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/paymentapply/PaymentApplyRest.java

@ -5,6 +5,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.enterprisecentre.api.flowable.BusinessVariables;
import com.yxt.supervise.enterprisecentre.api.flowable.FlowDelegateQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeVo;
import com.yxt.supervise.enterprisecentre.api.paymentapply.*;
@ -100,5 +101,11 @@ public class PaymentApplyRest {
return paymentApplyService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(FlowDelegateQuery query) {
return paymentApplyService.delegate(query);
}
}

15
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/paymentapply/PaymentApplyService.java

@ -16,6 +16,7 @@ import com.yxt.supervise.enterprisecentre.api.paymentapply.*;
import com.yxt.supervise.enterprisecentre.api.paymentapply.flowable.PaymentApplyTaskQuery;
import com.yxt.supervise.enterprisecentre.api.paymentapply.flowable.SubmitPaymentApplyDto;
import com.yxt.supervise.enterprisecentre.api.sealrecord.SysUserVo;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowTaskFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowableFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.SysUserFeign;
@ -41,6 +42,8 @@ public class PaymentApplyService extends MybatisBaseService<PaymentApplyMapper,
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
public ResultBean<String> saveorUpdatePayment(PaymentApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
@ -160,7 +163,7 @@ public class PaymentApplyService extends MybatisBaseService<PaymentApplyMapper,
bv.setProjectSid(dto.getProjectSid());
if (r == 1) {
bv.setModelId(ProcDefEnum.PAYMENTAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
@ -232,7 +235,7 @@ public class PaymentApplyService extends MybatisBaseService<PaymentApplyMapper,
bv.setModelId(paymentApply.getProcDefId());
bv.setProjectSid(paymentApply.getProjectSid());
if (bv.getTaskId().equals(paymentApply.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
@ -364,4 +367,12 @@ public class PaymentApplyService extends MybatisBaseService<PaymentApplyMapper,
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(FlowDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

7
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseRest.java

@ -5,6 +5,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.enterprisecentre.api.flowable.BusinessVariables;
import com.yxt.supervise.enterprisecentre.api.flowable.FlowDelegateQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeVo;
import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseDetailsVo;
@ -103,5 +104,11 @@ public class QualityReleaseRest {
return qualityReleaseService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(FlowDelegateQuery query) {
return qualityReleaseService.delegate(query);
}
}

15
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseService.java

@ -15,6 +15,7 @@ import com.yxt.supervise.enterprisecentre.api.qualityrelease.*;
import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.ReleaseTaskQuery;
import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.SubmitReleaseDto;
import com.yxt.supervise.enterprisecentre.api.sealrecord.SysUserVo;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowTaskFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowableFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.SysUserFeign;
@ -37,6 +38,8 @@ public class QualityReleaseService extends MybatisBaseService<QualityReleaseMapp
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
public ResultBean<String> saveorUpdateRelease(QualityReleaseDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
@ -137,7 +140,7 @@ public class QualityReleaseService extends MybatisBaseService<QualityReleaseMapp
bv.setProjectSid(dto.getProjectSid());
if (r == 1) {
bv.setModelId(ProcDefEnum.QUALITYRELEASE.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
@ -210,7 +213,7 @@ public class QualityReleaseService extends MybatisBaseService<QualityReleaseMapp
bv.setModelId(qualityRelease.getProcDefId());
bv.setProjectSid(qualityRelease.getProjectSid());
if (bv.getTaskId().equals(qualityRelease.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
@ -342,4 +345,12 @@ public class QualityReleaseService extends MybatisBaseService<QualityReleaseMapp
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(FlowDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

7
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/sealrecord/SealRecordRest.java

@ -260,4 +260,11 @@ public class SealRecordRest implements SealRecordFeign {
}
return ResultBean.fireSuccess().setData(urlPath);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(FlowDelegateQuery query) {
return sealRecordService.delegate(query);
}
}

14
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/sealrecord/SealRecordService.java

@ -80,6 +80,9 @@ public class SealRecordService extends MybatisBaseService<SealRecordMapper, Seal
private EnterpriseProjectFeign enterpriseProjectFeign;
@Autowired
private SysFormLinkFeign sysFormLinkFeign;
@Autowired
private FlowFeign flowFeign;
private QueryWrapper<SealRecord> createQueryWrapper(SealRecordQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -362,7 +365,7 @@ public class SealRecordService extends MybatisBaseService<SealRecordMapper, Seal
bv.setUserSid(dto.getUser_sid());
bv.setFormVariables(variables);
bv.setModelId(ProcDefEnum.SEALSONAPPLICATION.getProDefId());
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> resultBean1 = flowFeign.startProcess(bv);
if(!resultBean1.getSuccess()){
return resultBean1;
}
@ -491,7 +494,7 @@ public class SealRecordService extends MybatisBaseService<SealRecordMapper, Seal
return rb.setMsg("project_sid不能为空!");
}
if (bv.getTaskId().equals(sealRecord.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
@ -640,4 +643,11 @@ public class SealRecordService extends MybatisBaseService<SealRecordMapper, Seal
return flowTaskFeign.getFlowViewer(procInsId);
}
public ResultBean delegate(FlowDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

7
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/warehousingpledge/WarehousingPledgeRest.java

@ -5,6 +5,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.enterprisecentre.api.flowable.BusinessVariables;
import com.yxt.supervise.enterprisecentre.api.flowable.FlowDelegateQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeQuery;
import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeVo;
import com.yxt.supervise.enterprisecentre.api.warehousingpledge.WarehousingPledgeDetailsVo;
@ -103,5 +104,11 @@ public class WarehousingPledgeRest {
return warehousingPledgeService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(FlowDelegateQuery query) {
return warehousingPledgeService.delegate(query);
}
}

17
yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/warehousingpledge/WarehousingPledgeService.java

@ -15,6 +15,7 @@ import com.yxt.supervise.enterprisecentre.api.sealrecord.SysUserVo;
import com.yxt.supervise.enterprisecentre.api.warehousingpledge.*;
import com.yxt.supervise.enterprisecentre.api.warehousingpledge.flowable.PledgeTaskQuery;
import com.yxt.supervise.enterprisecentre.api.warehousingpledge.flowable.SubmitPledgeDto;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowTaskFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.FlowableFeign;
import com.yxt.supervise.enterprisecentre.biz.feign.SysUserFeign;
@ -39,6 +40,10 @@ public class WarehousingPledgeService extends MybatisBaseService<WarehousingPled
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
/**
* 新增修改
*
@ -150,7 +155,7 @@ public class WarehousingPledgeService extends MybatisBaseService<WarehousingPled
bv.setProjectSid(dto.getProjectSid());
if (r == 1) {
bv.setModelId(ProcDefEnum.WAREHOUSINGPLEDGE.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
@ -184,7 +189,7 @@ public class WarehousingPledgeService extends MybatisBaseService<WarehousingPled
bv.setModelId(warehousingPledge.getProcDefId());
bv.setProjectSid(warehousingPledge.getProjectSid());
if (bv.getTaskId().equals(warehousingPledge.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
@ -354,4 +359,12 @@ public class WarehousingPledgeService extends MybatisBaseService<WarehousingPled
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(FlowDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

Loading…
Cancel
Save