diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/api/dto/message/UnifiedTodoVO.java b/laws-base/laws-base-core/src/main/java/com/jero/common/api/dto/message/UnifiedTodoVO.java index 5f0f4847..7d43fe60 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/api/dto/message/UnifiedTodoVO.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/api/dto/message/UnifiedTodoVO.java @@ -23,6 +23,8 @@ public class UnifiedTodoVO { private String processDefinitionId; @ApiModelProperty(value = "0:待办,2:已办,4:办结,8:待阅,10:已阅") private String isRemark; + @ApiModelProperty(value = "0:待办,2:已办,3:转办,4:办结") + private String isStatus; @ApiModelProperty(value = "转办时用") private String toUserId; @ApiModelProperty(value = "发送时的时间") diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java b/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java index 1514963a..88b9001f 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java @@ -349,6 +349,9 @@ public class CommonConstant { public static final String TODO_TYPE_0 = "0"; //已办 public static final String TODO_TYPE_2 = "2"; + //转办 + public static final String TODO_TYPE_3 = "3"; //办结 public static final String TODO_TYPE_4 = "4"; + } 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 index 58b48d7e..97a5fc19 100644 --- 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 @@ -4,6 +4,8 @@ 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.common.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.enums.CommitFlagEnum; @@ -11,13 +13,12 @@ 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.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -35,22 +36,28 @@ import java.util.Objects; @Service public class SendFeiShuServiceImpl implements ISendFeiShuService { - @Resource - private ISysUserService sysUserService; @Resource private ProcessApprovalRecordService processApprovalRecordService; @Resource private ProcessAllService processAllService; @Resource - private LawsUnifiedTodoLogService unifiedTodoLogService; + private ISysUserService sysUserService; @Resource private IFeiShuDockingService feiShuDockingService; + @Resource + private ISysBaseAPI sysBaseAPI; @Value("${feishu.isSendStatus}") private boolean isSendStatus; - @Value("${feishu.redirect_prefix}") - private String redirectPrefix; + @Value("${feishu.promoter_pc_link}") + private String promoterPcLink; + @Value("${feishu.review_pc_link}") + private String reviewPcLink; + @Value("${feishu.promoter_mobile_link}") + private String promoterMobileLink; + @Value("${feishu.review_mobile_link}") + private String reviewMobileLink; /** * @Author: liao @@ -66,6 +73,10 @@ public class SendFeiShuServiceImpl implements ISendFeiShuService { if(CollectionUtils.isEmpty(unifiedTodoVOList)){ return; } + sendData(unifiedTodoVOList); + } + + private void sendData(List unifiedTodoVOList){ for (UnifiedTodoVO unifiedTodoVO : unifiedTodoVOList) { ProcessApprovalRecord processApprovalRecord = @@ -81,21 +92,21 @@ public class SendFeiShuServiceImpl implements ISendFeiShuService { break; } String userId; - if (unifiedTodoVO.getToUserId() == null){ + if (StringUtils.isEmpty(unifiedTodoVO.getToUserId())){ 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 transferTaskId = processApprovalRecord.getTransferTaskId(); String taskId = processApprovalRecord.getTaskId(); InstanceDto instanceDto = new InstanceDto(); instanceDto.setPromoterUserId(processAll.getCreateUserId()); instanceDto.setReviewedIds(userId); - instanceDto.setTitle(noticeTitle); + String title = sysBaseAPI.translateDict("prc_type",String.valueOf(processAll.getPrcType())); + instanceDto.setTitle(title); + instanceDto.setProcessType(processAll.getPrcType()); instanceDto.setProcessInstanceId(processApprovalRecord.getProcessInstanceId()); - instanceDto.setTaskIds(taskId); + instanceDto.setTaskIds(StringUtils.isBlank(transferTaskId) ? taskId : transferTaskId); // PENDING: 审批中 APPROVED: 审批流程结束,结果为同意 REJECTED: 审批流程结束,结果为拒绝 // CANCELED: 审批发起人撤回 DELETED: 审批被删除 HIDDEN: 状态隐藏(不显示状态) TERMINATED:审批终止 @@ -103,21 +114,23 @@ public class SendFeiShuServiceImpl implements ISendFeiShuService { String status = ""; String instanceStatus = ""; //PENDING:待审批 APPROVED:任务同意 REJECTED:任务拒绝 TRANSFERRED:任务转交 - switch (unifiedTodoVO.getIsRemark()){ + switch (unifiedTodoVO.getIsStatus()){ // 0待办,2已办,4办结 - case CommonConstant.TODO_TYPE_0: status = instanceStatus = "PENDING"; break; + case CommonConstant.TODO_TYPE_0: status = instanceStatus = "PENDING"; + break; default: status = instanceStatus = Objects.equals(processApprovalRecord.getCommitFlag(), - CommitFlagEnum.PASS.getValue()) ? "APPROVED" : "REJECTED"; break; + CommitFlagEnum.PASS.getValue()) ? "APPROVED" : "REJECTED"; + break; } instanceDto.setInstanceStatus(instanceStatus); instanceDto.setTaskStatus(status); - instanceDto.setPromoterPcLink(redirectPrefix + "/workCenter/processCenter/processCenter"); - instanceDto.setReviewPcLink(redirectPrefix + "/workCenter/processCenter/processCenter"); + instanceDto.setPromoterPcLink(promoterPcLink); + instanceDto.setReviewPcLink(reviewPcLink); // todo 移动端跳转地址 - instanceDto.setPromoterMobileLink(redirectPrefix + "/workCenter/processCenter/processCenter"); - instanceDto.setReviewMobileLink(redirectPrefix + "/workCenter/processCenter/processCenter"); + instanceDto.setPromoterMobileLink(promoterMobileLink); + instanceDto.setReviewMobileLink(reviewMobileLink); 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 8c8d2931..82d8744a 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 @@ -204,10 +204,11 @@ public class UnifiedTodoServiceImpl implements PushWorkflowIntegrationAPI { if (StrUtil.isNotBlank(processAll.getProjectId())){ projectId = processAll.getProjectId(); } + String transferTaskId = processApprovalRecord.getTransferTaskId(); String url = hiworkFontUrl .replace("{projectId}",projectId) .replace("{taskName}",processApprovalRecord.getTaskName()) - .replace("{taskId}", taskId) + .replace("{taskId}", StringUtils.isBlank(transferTaskId) ? taskId : transferTaskId) .replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId()) .replace("{nodeId}",processApprovalRecord.getNodeId()); // 跳转链接 @@ -217,7 +218,7 @@ public class UnifiedTodoServiceImpl implements PushWorkflowIntegrationAPI { String appUrl = hiworkFontAppUrl .replace("{projectId}",projectId) .replace("{taskName}",processApprovalRecord.getTaskName()) - .replace("{taskId}", taskId) + .replace("{taskId}", StringUtils.isBlank(transferTaskId) ? taskId : transferTaskId) .replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId()) .replace("{nodeId}",processApprovalRecord.getNodeId()); String appBusinessLink = appUrl.replace("{url}", Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType()))); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java index 8dd6e3b4..5e63ef75 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java @@ -213,4 +213,12 @@ public class ProcessApprovalRecord { @TableField(exist = false) @ApiModelProperty(value = "快照Id") private String snapshotId; -} \ No newline at end of file + + + /** + * 转办任务id + */ + @TableField(value = "transfer_task_id") + @ApiModelProperty(value = "转办任务id") + private String transferTaskId; +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java index 621f559e..4c9aa0ce 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java @@ -192,6 +192,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { unifiedTodoVO.setRecordId(approvalRecord.getId()); unifiedTodoVO.setProcessDefinitionId(processDefinitionId); unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_0); + unifiedTodoVO.setIsStatus(CommonConstant.TODO_TYPE_0); list.add(unifiedTodoVO); pushWorkflowIntegrationAPI.sendTodoTask(list); } @@ -221,14 +222,21 @@ public class MyGlobalEventListener implements ActivitiEventListener { UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO(); unifiedTodoVO.setRecordId(approvalRecord.getId()); unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2); + unifiedTodoVO.setIsStatus(CommonConstant.TODO_TYPE_3); unifiedTodoVO.setProcessDefinitionId(processDefinitionId); list.add(unifiedTodoVO); pushWorkflowIntegrationAPI.sendTodoTask(list); + //更新转办任务id + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(ProcessApprovalRecord::getTaskId,taskId); + update.set(ProcessApprovalRecord::getTransferTaskId,taskId+"_"+System.currentTimeMillis()); + recordService.update(update); // 生成被转办人的待办 list.clear(); unifiedTodoVO.setToUserId(assignee); unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_0); + unifiedTodoVO.setIsStatus(CommonConstant.TODO_TYPE_0); list.add(unifiedTodoVO); pushWorkflowIntegrationAPI.sendTodoTask(list); } @@ -315,6 +323,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { unifiedTodoVO.setRecordId(approvalRecord.getId()); unifiedTodoVO.setProcessDefinitionId(processDefinitionId); unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2); + unifiedTodoVO.setIsStatus(CommonConstant.TODO_TYPE_2); list.add(unifiedTodoVO); pushWorkflowIntegrationAPI.sendTodoTask(list); } @@ -445,6 +454,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { unifiedTodoVO.setRecordId(approvalRecord.getId()); unifiedTodoVO.setProcessDefinitionId(processDefinitionId); unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2); + unifiedTodoVO.setIsStatus(CommonConstant.TODO_TYPE_2); list.add(unifiedTodoVO); } pushWorkflowIntegrationAPI.sendTodoTask(list); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java index 1bc42d40..ee50f348 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java @@ -80,7 +80,6 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl processInfoVO) { // 验证是否已发起流程 checkProcessStatus(processInfoVO.getBusinessInfoDTO().getManifestId()); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java index b99a9c13..13767405 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java @@ -80,7 +80,6 @@ public class ProcessNewStandardImportServiceImpl extends ServiceImpl processInfoVO) { // 流程Key String processDefinitionKey = ProcessType.NEW_STANDARD_IMPORT.getProcessKey();