001/* 002 * Copyright 2024-2025, Warm-Flow (290631660@qq.com). 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * https://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.dromara.warm.flow.core.service; 017 018import org.dromara.warm.flow.core.dto.FlowParams; 019import org.dromara.warm.flow.core.entity.HisTask; 020import org.dromara.warm.flow.core.entity.Node; 021import org.dromara.warm.flow.core.entity.Task; 022import org.dromara.warm.flow.core.entity.User; 023import org.dromara.warm.flow.core.orm.service.IWarmService; 024 025import java.math.BigDecimal; 026import java.util.List; 027 028/** 029 * 历史任务记录Service接口 030 * 031 * @author warm 032 * @since 2023-03-29 033 */ 034public interface HisTaskService extends IWarmService<HisTask> { 035 036 /** 037 * 根据任务id和协作类型查询 038 * 039 * @param taskId 任务id 040 * @param cooperateTypes 协作类型集合 041 * @return List<HisTask> 042 */ 043 List<HisTask> listByTaskIdAndCooperateTypes(Long taskId, Integer... cooperateTypes); 044 045 /** 046 * 根据instanceId获取未退回的历史记录 047 * 048 * @param instanceId 流程实例id 049 */ 050 List<HisTask> getNoReject(Long instanceId); 051 052 /** 053 * 根据nodeCode和targetNodeCode获取未退回的历史记录 054 * @param nodeCode 节点编码 055 * @param targetNodeCode 目标节点编码 056 * @param hisTasks 历史任务集合 057 * @return HisTask 058 */ 059 HisTask getNoReject(String nodeCode, String targetNodeCode, List<HisTask> hisTasks); 060 061 /** 062 * 根据instanceId和流程编码获取未退回的历史记录 063 * 064 * @param instanceId 流程实例id 065 * @param nodeCodes 流程编码集合 066 * @return List<HisTask> 067 */ 068 List<HisTask> getByInsAndNodeCodes(Long instanceId, List<String> nodeCodes); 069 070 /** 071 * 根据instanceIds删除 072 * 073 * @param instanceIds 流程实例id集合 074 * @return boolean 075 */ 076 boolean deleteByInsIds(List<Long> instanceIds); 077 078 /** 079 * 设置流程历史任务信息 080 * 081 * @param task 当前任务 082 * @param nextNodes 后续任务 083 * @param flowParams 参数 084 */ 085 List<HisTask> setSkipInsHis(Task task, List<Node> nextNodes, FlowParams flowParams); 086 087 /** 088 * 设置协作历史记录 089 * 090 * @param task 当前任务 091 * @param node 当然任务节点 092 * @param flowParams 参数 093 * @param collaborators 协作人 094 * @return List<HisTask> 历史任务集合 095 */ 096 List<HisTask> setCooperateHis(Task task, Node node, FlowParams flowParams 097 , List<String> collaborators); 098 099 /** 100 * 委派历史任务 101 * 102 * @param task 当前任务 103 * @param flowParams 参数 104 * @param entrustedUser 委托人 105 * @return HisTask 历史任务 106 */ 107 HisTask setDeputeHisTask(Task task, FlowParams flowParams, User entrustedUser); 108 109 /** 110 * 设置会签票签历史任务 111 * 112 * @param task 当前任务 113 * @param flowParams 参数 114 * @param nodeRatio 节点比率 115 * @param isPass 是否通过 116 * @return HisTask 历史任务 117 */ 118 HisTask setSignHisTask(Task task, FlowParams flowParams, BigDecimal nodeRatio, boolean isPass); 119 120 /** 121 * 自动完成历史任务 122 * 123 * @param flowParams 流程参数 124 * @param flowStatus 流程状态 125 * @param task 当前任务 126 * @param userList 用户列表 127 */ 128 List<HisTask> autoHisTask(FlowParams flowParams, String flowStatus, Task task, List<User> userList, Integer cooperateType); 129 130 /** 131 * 设置流程历史任务信息 132 * 133 * @param task 当前任务 134 * @param nextNode 跳转的节点 135 * @param flowParams 流程参数 136 * @return HisTask 历史任务 137 * @author xiarg 138 * @since 2024/9/30 11:59 139 */ 140 HisTask setSkipHisTask(Task task, Node nextNode, FlowParams flowParams); 141}