流程集成飞书推送待办
This commit is contained in:
+2
-1
@@ -69,6 +69,7 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
|
||||
private ISysRoleService sysRoleService;
|
||||
@Resource
|
||||
private LawsUnifiedTodoLogService lawsUnifiedTodoLogService;
|
||||
@Resource
|
||||
private CommonAPI commonAPI;
|
||||
@Value("${feishu.app_id}")
|
||||
private String appId;
|
||||
@@ -491,7 +492,7 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
|
||||
private void logMessage(String dto, JSONObject jsonResponse, String url, Integer messageType) {
|
||||
LawsUnifiedTodoLog logEntry = new LawsUnifiedTodoLog();
|
||||
logEntry.setJsonStr(dto);
|
||||
logEntry.setResponseBody("success");
|
||||
logEntry.setResponseBody(JSON.toJSONString(jsonResponse));
|
||||
logEntry.setState("0".equals(jsonResponse.getString("code")) ? 1 : 2);
|
||||
logEntry.setMessageType(messageType);
|
||||
logEntry.setUrl(url);
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package com.jero.modules.docking.hiwork.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.docking.hiwork.service.impl.HiworkService;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2024-03-01 14:01
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/hiWorkOa")
|
||||
@Slf4j
|
||||
public class HiWorkOaController {
|
||||
@Resource
|
||||
private HiworkService hiworkService;
|
||||
|
||||
@ApiOperation("获取操作失败流程数据")
|
||||
@PostMapping("/getSendOaErrorData")
|
||||
public Result<?> getSendOaErrorData(@RequestBody JSONObject jsonObject){
|
||||
return hiworkService.getSendOaErrorData(jsonObject);
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.jero.modules.docking.hiwork.service;
|
||||
|
||||
import com.jero.common.api.dto.message.UnifiedTodoVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/16 15:18
|
||||
* @Description: 统一消息集成
|
||||
*/
|
||||
public interface ISendFeiShuService {
|
||||
|
||||
/**
|
||||
* 发送飞书待办
|
||||
* @param unifiedTodoVOList
|
||||
*/
|
||||
void sendTodoTask(List<UnifiedTodoVO> unifiedTodoVOList);
|
||||
}
|
||||
+19
@@ -2,14 +2,19 @@ package com.jero.modules.docking.hiwork.service.impl;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.docking.hiwork.entity.HiworkUserInfo;
|
||||
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
|
||||
import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService;
|
||||
import com.jero.modules.system.service.ILoginService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
@@ -20,6 +25,8 @@ import javax.annotation.Resource;
|
||||
public class HiworkService {
|
||||
@Resource
|
||||
private ILoginService loginService;
|
||||
@Resource
|
||||
private LawsUnifiedTodoLogService lawsUnifiedTodoLogService;
|
||||
|
||||
@Value("${hiwork.appkey}")
|
||||
private String appkey;
|
||||
@@ -48,4 +55,16 @@ public class HiworkService {
|
||||
log.info("userid:"+userid);
|
||||
return loginService.loginByUserName(userid);
|
||||
}
|
||||
|
||||
public Result<?> getSendOaErrorData(JSONObject jsonObject){
|
||||
LambdaQueryWrapper<LawsUnifiedTodoLog> queryLawsUnifiedTodoLog = new LambdaQueryWrapper<>();
|
||||
queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getMessageType,1);
|
||||
queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getState,2);
|
||||
List<LawsUnifiedTodoLog> listLawsUnifiedTodoLog = lawsUnifiedTodoLogService.list(queryLawsUnifiedTodoLog);
|
||||
if(CollectionUtils.isEmpty(listLawsUnifiedTodoLog)){
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
return Result.OK();
|
||||
}
|
||||
}
|
||||
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package com.jero.modules.docking.hiwork.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.api.dto.message.UnifiedTodoVO;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.docking.feishu.dto.InstanceDto;
|
||||
import com.jero.modules.docking.feishu.service.IFeiShuDockingService;
|
||||
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
|
||||
import com.jero.modules.docking.hiwork.service.ISendFeiShuService;
|
||||
import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
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 SendFeiShuServiceImpl implements ISendFeiShuService {
|
||||
|
||||
@Resource
|
||||
private ISysUserService sysUserService;
|
||||
@Resource
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
@Resource
|
||||
private ProcessAllService processAllService;
|
||||
@Resource
|
||||
private LawsUnifiedTodoLogService unifiedTodoLogService;
|
||||
@Resource
|
||||
private IFeiShuDockingService feiShuDockingService;
|
||||
|
||||
@Value("${feishu.isSendStatus}")
|
||||
private boolean isSendStatus;
|
||||
|
||||
@Value("${feishu.redirect_prefix}")
|
||||
private String redirectPrefix;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/13 15:12
|
||||
* @Description: 统一待办集成
|
||||
*
|
||||
* @return*/
|
||||
@Override
|
||||
public void sendTodoTask(List<UnifiedTodoVO> unifiedTodoVOList) {
|
||||
if(!isSendStatus){
|
||||
return;
|
||||
}
|
||||
if(CollectionUtils.isEmpty(unifiedTodoVOList)){
|
||||
return;
|
||||
}
|
||||
|
||||
for (UnifiedTodoVO unifiedTodoVO : unifiedTodoVOList) {
|
||||
ProcessApprovalRecord processApprovalRecord =
|
||||
processApprovalRecordService.getById(unifiedTodoVO.getRecordId());
|
||||
if(Objects.isNull(processApprovalRecord)){
|
||||
break;
|
||||
}
|
||||
LambdaQueryWrapper<ProcessAll> queryProcessAll = new LambdaQueryWrapper<>();
|
||||
queryProcessAll.eq(ProcessAll::getProcessDefinitionId,unifiedTodoVO.getProcessDefinitionId());
|
||||
queryProcessAll.eq(ProcessAll::getProcessInstanceId,processApprovalRecord.getProcessInstanceId());
|
||||
ProcessAll processAll = processAllService.getOne(queryProcessAll,false);
|
||||
if(Objects.isNull(processAll)){
|
||||
break;
|
||||
}
|
||||
String userId;
|
||||
if (unifiedTodoVO.getToUserId() == null){
|
||||
userId = processApprovalRecord.getUserId();
|
||||
}else {
|
||||
userId = unifiedTodoVO.getToUserId();
|
||||
}
|
||||
String date = DateUtil.formatDateTime(new Date());
|
||||
SysUser sysUser = sysUserService.getById(userId);
|
||||
String noticeTitle = processApprovalRecord.getTaskName() + "(" + sysUser.getRealname() + " " + date + ")";
|
||||
String taskId = processApprovalRecord.getTaskId();
|
||||
InstanceDto instanceDto = new InstanceDto();
|
||||
instanceDto.setPromoterUserId(processAll.getCreateUserId());
|
||||
instanceDto.setReviewedIds(userId);
|
||||
instanceDto.setTitle(noticeTitle);
|
||||
instanceDto.setProcessInstanceId(processApprovalRecord.getProcessInstanceId());
|
||||
instanceDto.setTaskIds(taskId);
|
||||
|
||||
// PENDING: 审批中 APPROVED: 审批流程结束,结果为同意 REJECTED: 审批流程结束,结果为拒绝
|
||||
// CANCELED: 审批发起人撤回 DELETED: 审批被删除 HIDDEN: 状态隐藏(不显示状态) TERMINATED:审批终止
|
||||
instanceDto.setInstanceStartTime(processAll.getReceivedTaskTime());
|
||||
String status = "";
|
||||
String instanceStatus = "";
|
||||
//PENDING:待审批 APPROVED:任务同意 REJECTED:任务拒绝 TRANSFERRED:任务转交
|
||||
switch (unifiedTodoVO.getIsRemark()){
|
||||
// 0待办,2已办,4办结
|
||||
case CommonConstant.TODO_TYPE_0: status = instanceStatus = "PENDING"; break;
|
||||
default: status = instanceStatus =
|
||||
Objects.equals(processApprovalRecord.getCommitFlag(),
|
||||
CommitFlagEnum.PASS.getValue()) ? "APPROVED" : "REJECTED"; break;
|
||||
}
|
||||
|
||||
instanceDto.setInstanceStatus(instanceStatus);
|
||||
instanceDto.setTaskStatus(status);
|
||||
instanceDto.setPromoterPcLink(redirectPrefix + "/workCenter/processCenter/processCenter");
|
||||
instanceDto.setReviewPcLink(redirectPrefix + "/workCenter/processCenter/processCenter");
|
||||
// todo 移动端跳转地址
|
||||
instanceDto.setPromoterMobileLink(redirectPrefix + "/workCenter/processCenter/processCenter");
|
||||
instanceDto.setReviewMobileLink(redirectPrefix + "/workCenter/processCenter/processCenter");
|
||||
feiShuDockingService.synchronizeApprovalInstance(instanceDto);
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
@@ -20,6 +20,7 @@ import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
|
||||
import com.jero.modules.docking.hiwork.entity.UnifiedTodo;
|
||||
import com.jero.modules.docking.hiwork.service.ISendFeiShuService;
|
||||
import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService;
|
||||
import com.jero.modules.docking.hiwork.util.HiworkPostUtil;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
@@ -61,6 +62,8 @@ public class UnifiedTodoServiceImpl implements PushWorkflowIntegrationAPI {
|
||||
private RestTemplate restTemplate;
|
||||
@Resource
|
||||
private LawsUnifiedTodoLogService unifiedTodoLogService;
|
||||
@Resource
|
||||
private ISendFeiShuService sendFeiShuService;
|
||||
|
||||
@Value("${hiwork.ip}")
|
||||
private String ip;
|
||||
@@ -86,6 +89,9 @@ public class UnifiedTodoServiceImpl implements PushWorkflowIntegrationAPI {
|
||||
* @return*/
|
||||
@Override
|
||||
public void sendTodoTask(List<UnifiedTodoVO> unifiedTodoVOList) {
|
||||
// 发送飞书
|
||||
sendFeiShuService.sendTodoTask(unifiedTodoVOList);
|
||||
|
||||
if(!isWorkflow){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -330,7 +330,7 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
LambdaQueryWrapper<ProcessNodeLink> queryProcessNodeLink = new LambdaQueryWrapper<>();
|
||||
queryProcessNodeLink.eq(ProcessNodeLink::getProcessDefinitionId,processDefinitionId);
|
||||
queryProcessNodeLink.eq(ProcessNodeLink::getProcessNodeId,processNode.getId());
|
||||
queryProcessNodeLink.eq(ProcessNodeLink::getProcessDefinitionId, processDefinitionId);
|
||||
queryProcessNodeLink.eq(ProcessNodeLink::getProcessInstanceId, processInstanceId);
|
||||
queryProcessNodeLink.eq(ProcessNodeLink::getUserId,userId);
|
||||
long l = processNodeLinkService.count(queryProcessNodeLink);
|
||||
if(l > 0){
|
||||
|
||||
Reference in New Issue
Block a user