统一待办集成
This commit is contained in:
-43
@@ -1,43 +0,0 @@
|
||||
package com.jero.modules.docking.hiwork.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/16 17:23
|
||||
* @Description: 统一待办集成-添加
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="统一待办集成-添加", description="统一待办集成-添加")
|
||||
public class HiworkTodoAdd {
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
@ApiModelProperty(value = "任务id")
|
||||
private String taskId;
|
||||
@ApiModelProperty(value = "流程类型,字典")
|
||||
private String processType;
|
||||
@ApiModelProperty(value = "是否会签")
|
||||
private Integer isCounterSignature;
|
||||
@ApiModelProperty(value = "节点编号")
|
||||
private String nodeNumber;
|
||||
@ApiModelProperty(value = "跳转链接")
|
||||
private String jumpLink;
|
||||
@ApiModelProperty(value = "APP跳转链接")
|
||||
private String appJumpLink;
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String creatorId;
|
||||
@ApiModelProperty(value = "接收人id")
|
||||
private String recipientId;
|
||||
@ApiModelProperty(value = "截止时间")
|
||||
private Long endTime;
|
||||
@ApiModelProperty(value = "业务主键")
|
||||
private String businessId;
|
||||
@ApiModelProperty(value = "待办、已办(1、待办 2已办 3结束 6 删除)")
|
||||
private String isTodo;
|
||||
}
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
package com.jero.modules.docking.hiwork.service;
|
||||
|
||||
import com.jero.modules.docking.hiwork.entity.HiworkTodoAdd;
|
||||
|
||||
import com.jero.common.api.dto.message.HiworkTodoAdd;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
+119
-76
@@ -1,41 +1,68 @@
|
||||
package com.jero.modules.docking.hiwork.service.impl;
|
||||
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.docking.hiwork.entity.HiworkTodoAdd;
|
||||
import com.jero.modules.docking.hiwork.service.IHiworkTodoService;
|
||||
import com.jero.modules.docking.hiwork.util.HiworkPostUtil;
|
||||
import com.jero.modules.docking.hiwork.entity.HiworkTodo;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.api.PushWorkflowIntegrationAPI;
|
||||
import com.jero.common.api.dto.message.HiworkTodoAdd;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.docking.hiwork.entity.HiworkTodo;
|
||||
import com.jero.modules.docking.hiwork.util.HiworkPostUtil;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
import org.activiti.engine.task.Task;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/13 14:23
|
||||
* @Description: 待办
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class HiworkTodoServiceImpl implements IHiworkTodoService {
|
||||
public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI {
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private ISysUserService sysUserService;
|
||||
@Autowired
|
||||
private TaskService taskService;
|
||||
@Autowired
|
||||
private RuntimeService runtimeService;
|
||||
@Autowired
|
||||
@Resource
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
@Resource
|
||||
private HiworkPostUtil hiworkPostUtil;
|
||||
@Resource
|
||||
private ProcessNodeService processNodeService;
|
||||
@Resource
|
||||
private ProcessAllService processAllService;
|
||||
|
||||
@Value("${hiwork.isWorkflow}")
|
||||
private boolean isWorkflow;
|
||||
@Value("${hiwork.sysCode}")
|
||||
private String hiworkSysCode;
|
||||
@Value("${hiwork.fontUrl}")
|
||||
private String hiworkFontUrl;
|
||||
|
||||
|
||||
private static final String PROCESS_TYPE = "标准法规SRMS";
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
@@ -44,75 +71,91 @@ public class HiworkTodoServiceImpl implements IHiworkTodoService {
|
||||
**/
|
||||
@Override
|
||||
public void sendTodoTask(List<HiworkTodoAdd> hiworkTodoAddList) {
|
||||
if(!isWorkflow){
|
||||
return;
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(hiworkTodoAddList)) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "hiworkTodoAddList");
|
||||
}
|
||||
try {
|
||||
List<HiworkTodo> hiworkTodoList = getHiworkTodos(hiworkTodoAddList);
|
||||
log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList));
|
||||
// 远程调用
|
||||
hiworkPostUtil.postTodo(hiworkTodoList);
|
||||
}catch (Exception e){
|
||||
log.error("统一待办推送异常",e);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<HiworkTodo> getHiworkTodos(List<HiworkTodoAdd> hiworkTodoAddList) {
|
||||
List<HiworkTodo> hiworkTodoList = new ArrayList<>();
|
||||
hiworkTodoAddList.forEach(hiworkTodoAdd -> {
|
||||
for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) {
|
||||
String recordId = hiworkTodoAdd.getRecordId();
|
||||
String processDefinitionId = hiworkTodoAdd.getProcessDefinitionId();
|
||||
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getById(recordId);
|
||||
if(Objects.isNull(processApprovalRecord)){
|
||||
continue;
|
||||
}
|
||||
|
||||
HiworkTodo hiworkTodo = new HiworkTodo();
|
||||
// 异步系统标识
|
||||
hiworkTodo.setSysCode(HiworkPostUtil.getSysCode());
|
||||
// 标题
|
||||
hiworkTodo.setNoticeTitle(hiworkTodoAdd.getTitle());
|
||||
hiworkTodo.setSysCode(hiworkSysCode);
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String date = new SimpleDateFormat("yyyy年MM月dd日").format(new Date());
|
||||
String noticeTitle = processApprovalRecord.getTaskName() + "(" + loginUser.getUsername() + date + ")";
|
||||
hiworkTodo.setNoticeTitle(noticeTitle);
|
||||
hiworkTodo.setProcessId(processApprovalRecord.getProcessInstanceId());
|
||||
hiworkTodo.setProcessName(processApprovalRecord.getTaskName());
|
||||
hiworkTodo.setProcessType(PROCESS_TYPE);
|
||||
hiworkTodo.setTaskId(processApprovalRecord.getTaskId());
|
||||
hiworkTodo.setTaskName(processApprovalRecord.getTaskName());
|
||||
|
||||
if (StringUtils.isBlank(hiworkTodoAdd.getTaskId())) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "taskId");
|
||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||
wrapper.eq(ProcessNode::getNodeName,processApprovalRecord.getTaskName());
|
||||
wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue());
|
||||
ProcessNode processNode = processNodeService.getOne(wrapper,false);
|
||||
if(!Objects.isNull(processNode)){
|
||||
if(processNode.getNodeName().contains("会签")){
|
||||
hiworkTodo.setMultiInstance(1);
|
||||
}
|
||||
hiworkTodo.setNodeBusiCode(processNode.getXmlNodeId());
|
||||
// 是否显示(0否,1是)
|
||||
hiworkTodo.setIsShow(String.valueOf(processNode.getIsView()));
|
||||
}
|
||||
Task task = taskService.createTaskQuery().taskId(hiworkTodoAdd.getTaskId()).singleResult();
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
||||
.processInstanceId(task.getProcessInstanceId()).singleResult();
|
||||
|
||||
// 流程实例id
|
||||
hiworkTodo.setProcessId(processInstance.getId());
|
||||
// 流程实例名称
|
||||
hiworkTodo.setProcessName(processInstance.getName());
|
||||
// 流程类型,字典
|
||||
hiworkTodo.setProcessType(hiworkTodoAdd.getProcessType());
|
||||
// 任务id
|
||||
hiworkTodo.setTaskId(hiworkTodoAdd.getTaskId());
|
||||
// 节点名称
|
||||
hiworkTodo.setTaskName(task.getName());
|
||||
// 是否会签
|
||||
hiworkTodo.setMultiInstance(hiworkTodoAdd.getIsCounterSignature());
|
||||
// 节点编号
|
||||
hiworkTodo.setNodeBusiCode(hiworkTodoAdd.getNodeNumber());
|
||||
// 跳转链接
|
||||
hiworkTodo.setBusinessLink(hiworkTodoAdd.getJumpLink());
|
||||
// APP跳转链接
|
||||
hiworkTodo.setAppBusinessLink(hiworkTodoAdd.getAppJumpLink());
|
||||
|
||||
if (StringUtils.isBlank(hiworkTodoAdd.getCreatorId())) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "creatorId");
|
||||
LambdaQueryWrapper<ProcessAll> queryProcessAll = new LambdaQueryWrapper<>();
|
||||
queryProcessAll.eq(ProcessAll::getProcessInstanceId,processApprovalRecord.getProcessInstanceId());
|
||||
ProcessAll processAll = processAllService.getOne(queryProcessAll);
|
||||
if(!Objects.isNull(processAll)){
|
||||
SysUser sysUser = sysUserService.getById(processAll.getCreateUserId());
|
||||
if(!Objects.isNull(sysUser)){
|
||||
hiworkTodo.setCreateUserCode(sysUser.getUsername());
|
||||
hiworkTodo.setCreateUserName(sysUser.getRealname());
|
||||
}
|
||||
hiworkTodo.setDueTime(processAll.getDueTime().getTime());
|
||||
hiworkTodo.setBid(processAll.getProjectId());
|
||||
String url = hiworkFontUrl.replace("{projectId}",processAll.getProjectId())
|
||||
.replace("{taskName}",processApprovalRecord.getTaskName())
|
||||
.replace("{taskId}",processApprovalRecord.getTaskId())
|
||||
.replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId())
|
||||
.replace("{nodeId}",processApprovalRecord.getNodeId());
|
||||
// 跳转链接
|
||||
hiworkTodo.setBusinessLink(url.replace("{url}", Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType()))));
|
||||
// APP跳转链接
|
||||
hiworkTodo.setAppBusinessLink(url.replace("{url}", Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType()))));
|
||||
}
|
||||
SysUser creatorUser = sysUserService.getById(hiworkTodoAdd.getCreatorId());
|
||||
// 创建人code
|
||||
hiworkTodo.setCreateUserCode(creatorUser.getUsername());
|
||||
// 创建人姓名
|
||||
hiworkTodo.setCreateUserName(creatorUser.getRealname());
|
||||
|
||||
if (StringUtils.isBlank(hiworkTodoAdd.getRecipientId())) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "recipientId");
|
||||
SysUser sysUser = sysUserService.getById(processApprovalRecord.getUserId());
|
||||
if(!Objects.isNull(sysUser)){
|
||||
hiworkTodo.setUserId(processApprovalRecord.getUserId());
|
||||
hiworkTodo.setUserCode(sysUser.getUsername());
|
||||
hiworkTodo.setUserName(sysUser.getRealname());
|
||||
}
|
||||
SysUser recipientUser = sysUserService.getById(hiworkTodoAdd.getRecipientId());
|
||||
// 接收人id
|
||||
hiworkTodo.setUserId(recipientUser.getId());
|
||||
// 接收人code
|
||||
hiworkTodo.setUserCode(recipientUser.getUsername());
|
||||
// 接收人姓名
|
||||
hiworkTodo.setUserName(recipientUser.getRealname());
|
||||
|
||||
// 截止时间
|
||||
hiworkTodo.setDueTime(hiworkTodoAdd.getEndTime());
|
||||
// 业务主键
|
||||
hiworkTodo.setBid(hiworkTodoAdd.getBusinessId());
|
||||
// 待办、已办
|
||||
hiworkTodo.setIsTodo(hiworkTodoAdd.getIsTodo());
|
||||
|
||||
hiworkTodo.setReceiveTime(Instant.now());
|
||||
hiworkTodo.setIsTodo(String.valueOf(processApprovalRecord.getFinishFlag()));
|
||||
hiworkTodoList.add(hiworkTodo);
|
||||
});
|
||||
|
||||
// 远程调用
|
||||
hiworkPostUtil.postTodo(hiworkTodoList);
|
||||
}
|
||||
return hiworkTodoList;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user