commit
This commit is contained in:
@@ -19,6 +19,7 @@ import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.json.Json;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -37,7 +38,8 @@ public class FlowCommonService {
|
||||
*/
|
||||
public void executeTask(Dict args){
|
||||
Long processTaskId = args.getLong(FlowConst.PROCESS_TASK_ID_KEY);
|
||||
String operator = SecurityUtil.getUserId();
|
||||
|
||||
String operator = SecurityUtil.getUserId();
|
||||
if (args.containsKey(FlowConst.EXT_ENABLE_OPERATOR)&&args.getBool(FlowConst.EXT_ENABLE_OPERATOR)){
|
||||
operator = FlowConst.ADMIN_ID;
|
||||
}
|
||||
@@ -46,6 +48,15 @@ public class FlowCommonService {
|
||||
if (submitType == null) {
|
||||
submitType = ProcessSubmitTypeEnum.AGREE.getCode();
|
||||
}
|
||||
|
||||
ProcessTask processTask = flowEngine.processTaskService().getById(processTaskId);
|
||||
ProcessTask parentTask = flowEngine.processTaskService().getById(processTask.getTaskParentId());
|
||||
Dict taskArgs = Json.fromJson(Dict.class, parentTask.getVariable());
|
||||
if(taskArgs.containsKey("tf_sourceTaskKey") && !taskArgs.getBool("tf_audit")) {
|
||||
submitType = ProcessSubmitTypeEnum.JUMP.getCode();
|
||||
args.put(FlowConst.TASK_NAME, taskArgs.getStr("tf_sourceTaskKey"));
|
||||
}
|
||||
|
||||
args.put(FlowConst.SUBMIT_TYPE, submitType);
|
||||
|
||||
// 设置办理人信息到表单参数
|
||||
|
||||
@@ -270,43 +270,43 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl<ProcessInstance>
|
||||
|
||||
@Override
|
||||
public HighLightVO highLight(Long processInstanceId) {
|
||||
HighLightVO vo = new HighLightVO();
|
||||
ProcessInstanceVO processInstance = findById(processInstanceId);
|
||||
HighLightVO vo = new HighLightVO();
|
||||
ProcessInstanceVO processInstance = findById(processInstanceId);
|
||||
|
||||
FlowEngine flowEngine = ServiceContext.find(FlowEngine.class);
|
||||
FlowEngine flowEngine = ServiceContext.find(FlowEngine.class);
|
||||
|
||||
if (processInstance != null) {
|
||||
ProcessModel processModel = flowEngine.processDefineService().getProcessModel(processInstance.getProcessDefineId());
|
||||
// 拿到正在进行中的任务==>活跃节点
|
||||
List<ProcessTask> processTaskList = flowEngine.processTaskService().getDoingTaskList(processInstanceId, new String[]{});
|
||||
// 拿到历史任务-按更新时间倒序
|
||||
List<ProcessTask> hisProcessTaskList = flowEngine.processTaskService().query(Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).desc(ProcessTask::getUpdatedAt));
|
||||
processTaskList.forEach(task -> {
|
||||
if (!vo.getActiveNodeNames().contains(task.getTaskName())) {
|
||||
vo.getActiveNodeNames().add(task.getTaskName());
|
||||
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, task.getTaskName(), vo);
|
||||
}
|
||||
});
|
||||
// 拿到非正常结束的流程实例状态值
|
||||
List<Integer> orderStatusList = Arrays.stream(ProcessInstanceStateEnum.values()).filter(item -> !item.equals(ProcessInstanceStateEnum.DOING) && !item.equals(ProcessInstanceStateEnum.FINISHED)).map(ProcessInstanceStateEnum::getCode).toList();
|
||||
// 非正常结束,需要进行特殊处理
|
||||
if (orderStatusList.contains(processInstance.getState())) {
|
||||
if (CollectionUtil.isNotEmpty(hisProcessTaskList)) {
|
||||
ProcessTask lastProcessTask = hisProcessTaskList.get(hisProcessTaskList.size() - 1);
|
||||
NodeModel nodeModel = processModel.getNode(lastProcessTask.getTaskName());
|
||||
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, nodeModel.getOutputs().get(0).getTo(), vo);
|
||||
}
|
||||
} else {
|
||||
List<EndModel> endModels = processModel.getModels(EndModel.class);
|
||||
if (endModels != null) {
|
||||
endModels.forEach(endModel -> {
|
||||
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, endModel.getName(), vo);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
if (processInstance != null) {
|
||||
ProcessModel processModel = flowEngine.processDefineService().getProcessModel(processInstance.getProcessDefineId());
|
||||
// 拿到正在进行中的任务==>活跃节点
|
||||
List<ProcessTask> processTaskList = flowEngine.processTaskService().getDoingTaskList(processInstanceId, new String[]{});
|
||||
// 拿到历史任务-按更新时间倒序
|
||||
List<ProcessTask> hisProcessTaskList = flowEngine.processTaskService().query(Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).desc(ProcessTask::getUpdatedAt));
|
||||
processTaskList.forEach(task -> {
|
||||
if (!vo.getActiveNodeNames().contains(task.getTaskName())) {
|
||||
vo.getActiveNodeNames().add(task.getTaskName());
|
||||
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, task.getTaskName(), vo);
|
||||
}
|
||||
});
|
||||
// 拿到非正常结束的流程实例状态值
|
||||
List<Integer> orderStatusList = Arrays.stream(ProcessInstanceStateEnum.values()).filter(item -> !item.equals(ProcessInstanceStateEnum.DOING) && !item.equals(ProcessInstanceStateEnum.FINISHED)).map(ProcessInstanceStateEnum::getCode).toList();
|
||||
// 非正常结束,需要进行特殊处理
|
||||
if (orderStatusList.contains(processInstance.getState())) {
|
||||
if (CollectionUtil.isNotEmpty(hisProcessTaskList)) {
|
||||
ProcessTask lastProcessTask = hisProcessTaskList.get(hisProcessTaskList.size() - 1);
|
||||
NodeModel nodeModel = processModel.getNode(lastProcessTask.getTaskName());
|
||||
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, nodeModel.getOutputs().get(0).getTo(), vo);
|
||||
}
|
||||
} else {
|
||||
List<EndModel> endModels = processModel.getModels(EndModel.class);
|
||||
if (endModels != null) {
|
||||
endModels.forEach(endModel -> {
|
||||
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, endModel.getName(), vo);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProcessTaskVO> approvalRecord(Long processInstanceId) {
|
||||
|
||||
@@ -195,6 +195,11 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
|
||||
// execution.getArgs().remove(key);
|
||||
// }
|
||||
|
||||
// 删一下吧,只保证退回的那个任务节点有这两个字段,不然要出问题喔
|
||||
if(execution.getArgs().containsKey("tf_sourceTaskKey")) {
|
||||
execution.getArgs().remove("tf_sourceTaskKey");
|
||||
execution.getArgs().remove("tf_audit");
|
||||
}
|
||||
processTask.setVariable(JSONUtil.toJsonStr(execution.getArgs()));
|
||||
processTask.setCreatedAt(now);
|
||||
processTask.setUpdatedAt(now);
|
||||
|
||||
Reference in New Issue
Block a user