diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/feishu/service/impl/FeiShuDockingServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/feishu/service/impl/FeiShuDockingServiceImpl.java index ee59fd8f..801bdcfb 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/feishu/service/impl/FeiShuDockingServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/feishu/service/impl/FeiShuDockingServiceImpl.java @@ -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); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiWorkOaController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiWorkOaController.java new file mode 100644 index 00000000..6f491082 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiWorkOaController.java @@ -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); + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendFeiShuService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendFeiShuService.java new file mode 100644 index 00000000..d7e0f52b --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendFeiShuService.java @@ -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 unifiedTodoVOList); +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java index b07df9e3..d1668e13 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java @@ -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 queryLawsUnifiedTodoLog = new LambdaQueryWrapper<>(); + queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getMessageType,1); + queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getState,2); + List listLawsUnifiedTodoLog = lawsUnifiedTodoLogService.list(queryLawsUnifiedTodoLog); + if(CollectionUtils.isEmpty(listLawsUnifiedTodoLog)){ + return Result.OK(); + } + + return Result.OK(); + } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendFeiShuServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendFeiShuServiceImpl.java new file mode 100644 index 00000000..58b48d7e --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendFeiShuServiceImpl.java @@ -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 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 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); + } + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java index 8e9a9ef1..2b36b98b 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java @@ -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 unifiedTodoVOList) { + // 发送飞书 + sendFeiShuService.sendTodoTask(unifiedTodoVOList); + if(!isWorkflow){ return; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java index eef68d32..a5ab06a5 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java @@ -330,7 +330,7 @@ public class ProcessAllService extends ServiceImpl LambdaQueryWrapper 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){