..
This commit is contained in:
@@ -17,9 +17,6 @@ import java.util.List;
|
||||
* <p>
|
||||
* 流程实例 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author mldong
|
||||
* @since 2023-09-26
|
||||
*/
|
||||
public interface ProcessInstanceService extends BaseService<ProcessInstance> {
|
||||
/**
|
||||
|
||||
@@ -28,12 +28,6 @@ public interface ProcessSurrogateService extends BaseService<ProcessSurrogate> {
|
||||
*/
|
||||
boolean update(ProcessSurrogate param);
|
||||
|
||||
/**
|
||||
* 自定义分页查询流程委托代理
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
// CommonPage<ProcessSurrogateVO> page(ProcessSurrogatePageParam param);
|
||||
/**
|
||||
* 通过id查询
|
||||
* @param id
|
||||
|
||||
@@ -9,9 +9,6 @@ import com.budwk.app.flow.vo.ProcessTaskActorVO;
|
||||
* <p>
|
||||
* 流程任务和参与人关系 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author mldong
|
||||
* @since 2023-09-26
|
||||
*/
|
||||
public interface ProcessTaskActorService extends BaseService<ProcessTaskActor> {
|
||||
/**
|
||||
@@ -28,12 +25,6 @@ public interface ProcessTaskActorService extends BaseService<ProcessTaskActor> {
|
||||
*/
|
||||
boolean update(ProcessTaskActor param);
|
||||
|
||||
/**
|
||||
* 自定义分页查询流程任务和参与人关系
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
// CommonPage<ProcessTaskActorVO> page(ProcessTaskActorPageParam param);
|
||||
/**
|
||||
* 通过id查询
|
||||
* @param id
|
||||
|
||||
@@ -11,77 +11,82 @@ import com.budwk.app.flow.entity.ProcessTask;
|
||||
import com.budwk.app.flow.vo.ProcessTaskVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 流程任务 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author mldong
|
||||
* @since 2023-09-26
|
||||
*/
|
||||
public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
/**
|
||||
* 添加流程任务
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
* 添加流程任务
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
boolean save(ProcessTask param);
|
||||
|
||||
/**
|
||||
* 更新流程任务
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
* 更新流程任务
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
boolean update(ProcessTask param);
|
||||
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
ProcessTaskVO findById(Long id);
|
||||
|
||||
/**
|
||||
* 保存流程任务
|
||||
*
|
||||
* @param processTask
|
||||
*/
|
||||
void saveProcessTask(ProcessTask processTask);
|
||||
|
||||
/**
|
||||
* 更新流程任务
|
||||
*
|
||||
* @param processTask
|
||||
*/
|
||||
void updateProcessTask(ProcessTask processTask);
|
||||
|
||||
/**
|
||||
* 根据流程实例ID获取正在进行的任务
|
||||
*
|
||||
* @param processInstanceId 流程实例ID
|
||||
* @param taskNames 任务名称
|
||||
* @param taskNames 任务名称
|
||||
* @return
|
||||
*/
|
||||
List<ProcessTask> getDoingTaskList(Long processInstanceId, String[] taskNames);
|
||||
|
||||
/**
|
||||
* 根据流程实例ID获取已完成的任务
|
||||
*
|
||||
* @param processInstanceId 流程实例ID
|
||||
* @param taskNames 任务名称
|
||||
* @param taskNames 任务名称
|
||||
* @return
|
||||
*/
|
||||
List<ProcessTask> getDoneTaskList(Long processInstanceId, String[] taskNames);
|
||||
|
||||
/**
|
||||
* 将流程任务修改为已完成
|
||||
*
|
||||
* @param processTaskId
|
||||
* @param operator 任务处理人
|
||||
* @param operator 任务处理人
|
||||
* @param args
|
||||
*/
|
||||
void finishProcessTask(Long processTaskId, String operator, Dict args);
|
||||
|
||||
/**
|
||||
* 废弃任务
|
||||
*
|
||||
* @param processTaskId
|
||||
* @param operator
|
||||
* @param args
|
||||
@@ -90,6 +95,7 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 根据任务模型和流程执行对象创建任务
|
||||
*
|
||||
* @param taskModel
|
||||
* @param execution
|
||||
* @return
|
||||
@@ -98,6 +104,7 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 通过id获取流程任务
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@@ -105,27 +112,32 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 向指定的任务id添加参与者
|
||||
*
|
||||
* @param processTaskId 任务id
|
||||
* @param actors 参与者
|
||||
* @param actors 参与者
|
||||
*/
|
||||
void addTaskActor(Long processTaskId, List<String> actors);
|
||||
|
||||
/**
|
||||
* 向指定的任务id添加参与者
|
||||
*
|
||||
* @param processTaskId 流程任务id
|
||||
* @param actors 参与者
|
||||
* @param actors 参与者
|
||||
*/
|
||||
void addCandidateActor(Long processTaskId, List<String> actors);
|
||||
|
||||
/**
|
||||
* 向指定任务移除参与者
|
||||
*
|
||||
* @param processTaskId 任务id
|
||||
* @param actors 参与者
|
||||
* @param actors 参与者
|
||||
*/
|
||||
void removeTaskActor(Long processTaskId, List<String> actors);
|
||||
|
||||
/**
|
||||
* 根据taskId、operator,判断操作人operator是否允许执行任务
|
||||
* @param task 任务对象
|
||||
*
|
||||
* @param task 任务对象
|
||||
* @param operator 操作人
|
||||
* @return boolean 是否允许操作
|
||||
*/
|
||||
@@ -133,6 +145,7 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 根据任务ID获取参与者ID
|
||||
*
|
||||
* @param processTaskId
|
||||
* @return
|
||||
*/
|
||||
@@ -140,7 +153,8 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 根据当前任务对象驳回至上一步处理
|
||||
* @param model 流程定义模型,用以获取上一步模型对象
|
||||
*
|
||||
* @param model 流程定义模型,用以获取上一步模型对象
|
||||
* @param currentTask 当前任务对象
|
||||
* @return Task 任务对象
|
||||
*/
|
||||
@@ -148,6 +162,7 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 获取可跳转的任务节点名称
|
||||
*
|
||||
* @param processInstanceId
|
||||
* @return
|
||||
*/
|
||||
@@ -155,6 +170,7 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 创建会签任务
|
||||
*
|
||||
* @param taskModel
|
||||
* @param execution
|
||||
* @return
|
||||
@@ -163,16 +179,26 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
|
||||
/**
|
||||
* 根据执行对象、自定义节点模型创建历史任务记录
|
||||
*
|
||||
* @param execution 执行对象
|
||||
* @param model 自定义节点模型
|
||||
* @param model 自定义节点模型
|
||||
* @return 历史任务
|
||||
*/
|
||||
ProcessTask history(Execution execution, CustomModel model);
|
||||
|
||||
/**
|
||||
* 根据流程实例ID获取最新的进行中的任务
|
||||
*
|
||||
* @param processInstanceId
|
||||
* @return
|
||||
*/
|
||||
ProcessTaskVO latest(Long processInstanceId);
|
||||
|
||||
/**
|
||||
* 转办任务
|
||||
*
|
||||
* @param taskId 任务ID
|
||||
* @param transferUserId 转办用户ID
|
||||
*/
|
||||
void transfer(Long taskId, String transferUserId);
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
|
||||
if (CollectionUtil.isEmpty(actors)) return;
|
||||
List<String> dbActors = getTaskActors(processTaskId);
|
||||
List<String> newActors = actors.stream().filter(actor -> !dbActors.contains(actor)).toList();
|
||||
Sql sql = Sqls.create("select id,username,loginname,unitName from vw_user where id in (@ids)");
|
||||
Sql sql = Sqls.create("select id,username,loginname,unitName,unitId from vw_user where id in (@ids)");
|
||||
sql.setParam("ids", newActors);
|
||||
List<NutMap> list = listMap(sql);
|
||||
|
||||
@@ -222,19 +222,11 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
|
||||
processTaskActor.setActorName(actor.getString("username"));
|
||||
processTaskActor.setActorAccount(actor.getString("loginname"));
|
||||
processTaskActor.setActorUnitName(actor.getString("unitName"));
|
||||
processTaskActor.setActorUnitId(actor.getString("unitId"));
|
||||
processTaskActor.setCreatedAt(System.currentTimeMillis());
|
||||
System.out.println(StrUtil.format("给任务:{},添加参与者:{}", processTaskId, actor.toString()));
|
||||
insert(processTaskActor);
|
||||
}
|
||||
|
||||
// actors.stream().filter(actor -> !dbActors.contains(actor)).forEach(actor -> {
|
||||
// ProcessTaskActor processTaskActor = new ProcessTaskActor();
|
||||
// processTaskActor.setProcessTaskId(processTaskId);
|
||||
// processTaskActor.setActorId(actor);
|
||||
// processTaskActor.setCreatedAt(System.currentTimeMillis());
|
||||
// System.out.println(StrUtil.format("给任务:{},添加参与者:{}", processTaskId, actor));
|
||||
// insert(processTaskActor);
|
||||
// });
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -465,6 +457,41 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
|
||||
return findById(processTaskList.get(0).getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void transfer(Long taskId, String transferUserId) {
|
||||
// 设置原任务状态为已转办
|
||||
ProcessTask task = fetch(taskId);
|
||||
task.setTaskState(ProcessTaskStateEnum.TRANSFER.getCode());
|
||||
Dict variable = FlowUtil.variableToDict(task.getVariable());
|
||||
variable.put(FlowConst.TASK_FORM_DATA_PREFIX + "transferUserId", transferUserId);
|
||||
task.setVariable(JSONUtil.toJsonStr(variable));
|
||||
updateIgnoreNull(task);
|
||||
|
||||
// 创建转办任务
|
||||
ProcessTask newTask = BeanUtil.copyProperties(task, ProcessTask.class, "id");
|
||||
newTask.setTaskParentId(taskId);
|
||||
newTask.setId(null);
|
||||
newTask.setCreatedAt(null);
|
||||
newTask.setUpdatedAt(null);
|
||||
newTask.setCreatedBy(null);
|
||||
newTask.setUpdatedBy(null);
|
||||
variable.put(FlowConst.TASK_FORM_DATA_PREFIX + "transferUserId", null);
|
||||
newTask.setVariable(JSONUtil.toJsonStr(variable));
|
||||
newTask.setTaskState(ProcessTaskStateEnum.DOING.getCode());
|
||||
dao().insert(newTask);
|
||||
|
||||
// 创建转办任务参与者
|
||||
addTaskActor(newTask.getId(), List.of(transferUserId));
|
||||
|
||||
// 发布流程任务开始事件
|
||||
List<ProcessTask> processTaskList = List.of(task);
|
||||
processTaskList.forEach(processTask -> {
|
||||
ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_START).sourceId(processTask.getId()).build());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据Task模型的assignee、assignmentHandler属性以及运行时数据,确定参与者
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user