|
|
@@ -87,19 +87,8 @@ import com.xjrsoft.module.workflow.dto.SetSuspendedDto;
|
|
|
import com.xjrsoft.module.workflow.dto.TransferDto;
|
|
|
import com.xjrsoft.module.workflow.dto.UpdateDraftDto;
|
|
|
import com.xjrsoft.module.workflow.dto.WithdrawDto;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowApproveRecord;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowCirculated;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowDelegate;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowDraft;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowExtra;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowRecord;
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowSchema;
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowDelegateMapper;
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowExtraMapper;
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowRecordMapper;
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowSchemaMapper;
|
|
|
-import com.xjrsoft.module.workflow.mapper.XjrWorkflowExtraMapper;
|
|
|
+import com.xjrsoft.module.workflow.entity.*;
|
|
|
+import com.xjrsoft.module.workflow.mapper.*;
|
|
|
import com.xjrsoft.module.workflow.model.ApiConfig;
|
|
|
import com.xjrsoft.module.workflow.model.ApiRequestParamsConfig;
|
|
|
import com.xjrsoft.module.workflow.model.AuthConfig;
|
|
|
@@ -112,13 +101,7 @@ import com.xjrsoft.module.workflow.model.RelationProcessConfig;
|
|
|
import com.xjrsoft.module.workflow.model.StartNodeConfig;
|
|
|
import com.xjrsoft.module.workflow.model.UserTaskConfig;
|
|
|
import com.xjrsoft.module.workflow.model.WorkflowSchemaConfig;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowApproveRecordService;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowCirculatedService;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowDraftService;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowExtraService;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowFormRelationService;
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowRecordService;
|
|
|
+import com.xjrsoft.module.workflow.service.*;
|
|
|
import com.xjrsoft.module.workflow.utils.WorkFlowUtil;
|
|
|
import com.xjrsoft.module.workflow.vo.AllRecordListVo;
|
|
|
import com.xjrsoft.module.workflow.vo.ApproveMultiInfoVo;
|
|
|
@@ -238,6 +221,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
private final WorkflowRecordMapper workflowRecordMapper;
|
|
|
|
|
|
+ private final XjrWorkflowOperateRecordMapper xjrWorkflowOperateRecordMapper;
|
|
|
+
|
|
|
private final IWorkflowCirculatedService circulatedService;
|
|
|
|
|
|
private final IWorkflowApproveRecordService approveRecordService;
|
|
|
@@ -560,7 +545,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().processInstanceId(superProcessInstanceId).variableName(WorkflowConstant.PROCESS_SCHEMA_NAME_KEY).singleResult();
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
|
|
|
Map<String, Object> superProcessMap = new HashMap<>();
|
|
|
superProcessMap.put("schemaName", historicVariableInstance.getValue() + "(上级流程)");
|
|
|
@@ -586,7 +572,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
superProcessMap.put("schemaName", schemaNameVar.getValue() + "(下级流程)");
|
|
|
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
superProcessMap.put("records", processRecordListVos);
|
|
|
|
|
|
otherProcessApproveRecord.add(superProcessMap);
|
|
|
@@ -595,7 +582,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
}
|
|
|
//TODO 新增返回值 返回 主/子 流程 审批记录
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
+ // List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
vo.setOtherProcessApproveRecord(otherProcessApproveRecord);
|
|
|
return vo;
|
|
|
@@ -799,7 +787,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().processInstanceId(superProcessInstanceId).variableName(WorkflowConstant.PROCESS_SCHEMA_NAME_KEY).singleResult();
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
|
|
|
Map<String, Object> superProcessMap = new HashMap<>();
|
|
|
superProcessMap.put("schemaName", historicVariableInstance.getValue() + "(上级流程)");
|
|
|
@@ -823,7 +812,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
superProcessMap.put("schemaName", schemaNameVar.getValue() + "(下级流程)");
|
|
|
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
superProcessMap.put("records", processRecordListVos);
|
|
|
|
|
|
otherProcessApproveRecord.add(superProcessMap);
|
|
|
@@ -832,7 +822,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
}
|
|
|
//TODO 新增返回值 返回 主/子 流程 审批记录
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ // List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(processId, 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
vo.setOtherProcessApproveRecord(otherProcessApproveRecord);
|
|
|
}
|
|
|
@@ -918,7 +909,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().processInstanceId(superProcessInstanceId).variableName(WorkflowConstant.PROCESS_SCHEMA_NAME_KEY).singleResult();
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
|
|
|
Map<String, Object> superProcessMap = new HashMap<>();
|
|
|
superProcessMap.put("schemaName", historicVariableInstance.getValue() + "(上级流程)");
|
|
|
@@ -942,7 +934,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
superProcessMap.put("schemaName", schemaNameVar.getValue() + "(下级流程)");
|
|
|
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
superProcessMap.put("records", processRecordListVos);
|
|
|
|
|
|
otherProcessApproveRecord.add(superProcessMap);
|
|
|
@@ -951,7 +944,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
}
|
|
|
//TODO 新增返回值 返回 主/子 流程 审批记录
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ //List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(processId, 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
vo.setOtherProcessApproveRecord(otherProcessApproveRecord);
|
|
|
}
|
|
|
@@ -1039,7 +1033,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().processInstanceId(superProcessInstanceId).variableName(WorkflowConstant.PROCESS_SCHEMA_NAME_KEY).singleResult();
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(superProcessInstanceId, 0);
|
|
|
|
|
|
Map<String, Object> superProcessMap = new HashMap<>();
|
|
|
superProcessMap.put("schemaName", historicVariableInstance.getValue() + "(上级流程)");
|
|
|
@@ -1063,7 +1058,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
superProcessMap.put("schemaName", schemaNameVar.getValue() + "(下级流程)");
|
|
|
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ //List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 0);
|
|
|
superProcessMap.put("records", processRecordListVos);
|
|
|
|
|
|
otherProcessApproveRecord.add(superProcessMap);
|
|
|
@@ -1072,7 +1068,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
}
|
|
|
//TODO 新增返回值 返回 主/子 流程 审批记录
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ // List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(processId, 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
vo.setOtherProcessApproveRecord(otherProcessApproveRecord);
|
|
|
|
|
|
@@ -1098,7 +1095,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().processInstanceId(superProcessInstanceId).variableName(WorkflowConstant.PROCESS_SCHEMA_NAME_KEY).singleResult();
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 1);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(superProcessInstanceId, 1);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(superProcessInstanceId, 1);
|
|
|
|
|
|
Map<String, Object> superProcessMap = new HashMap<>();
|
|
|
superProcessMap.put("schemaName", historicVariableInstance.getValue() + "(上级流程)");
|
|
|
@@ -1121,7 +1119,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
superProcessMap.put("schemaName", schemaNameVar.getValue() + "(下级流程)");
|
|
|
|
|
|
//获取主流程审批记录
|
|
|
- List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 1);
|
|
|
+ // List<ProcessRecordListVo> processRecordListVos = getProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 1);
|
|
|
+ List<ProcessRecordListVo> processRecordListVos = getCustomProcessRecordListVos(schemaNameVar.getProcessInstanceId(), 1);
|
|
|
superProcessMap.put("records", processRecordListVos);
|
|
|
|
|
|
otherProcessApproveRecord.add(superProcessMap);
|
|
|
@@ -1130,7 +1129,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
}
|
|
|
//TODO 新增返回值 返回 主/子 流程 审批记录
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 1);
|
|
|
+ // List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 1);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(processId, 1);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
vo.setOtherProcessApproveRecord(otherProcessApproveRecord);
|
|
|
return vo;
|
|
|
@@ -2019,6 +2019,20 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
String oldTaskName = task.getName();
|
|
|
record.setCirculateMessage(circulateMessage);
|
|
|
|
|
|
+ //新增流程自定义发起流程记录
|
|
|
+ XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
+ xjrWorkflowOperateRecord.setNodeId(task.getId());
|
|
|
+ xjrWorkflowOperateRecord.setNodeName(task.getName());
|
|
|
+ xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
+ xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
|
|
|
+ xjrWorkflowOperateRecord.setSchemaId(schemaId);
|
|
|
+ xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+ //时间设值必须写在complete上面,防止用户任务节点监听时的流程信息,在次任务前面。
|
|
|
+ xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
+ //当前任务的名称
|
|
|
+ String oldTaskNameCustom = task.getName();
|
|
|
+ xjrWorkflowOperateRecord.setCirculateMessage(circulateMessage);
|
|
|
+
|
|
|
taskService.complete(task.getId());
|
|
|
List<Task> list = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
|
|
|
result = isPrevChooseApprove(workflowSchemaConfig, list, variableMap);
|
|
|
@@ -2032,6 +2046,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
//新增工作流程信息数据
|
|
|
addWorkflowRecord(userTaskConfig, nextTaskNameList, user, record, oldTaskName, buttonConfig.getButtonName(), dto.getApprovedContent(), task, resultName);
|
|
|
|
|
|
+ addCustomWorkflowRecord(userTaskConfig, nextTaskNameList, user, xjrWorkflowOperateRecord, oldTaskNameCustom, buttonConfig.getButtonName(), dto.getApprovedContent(), task, resultName);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//如果是驳回
|
|
|
@@ -2066,6 +2082,21 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
// record.setMessage("【审批人:" + user.getName() + "】 将 【任务:" + task.getName() + "】 驳回到 【任务:" + rejectUserTaskConfig.getName() + "】");
|
|
|
record.setMessage("审批信息:【" + user.getName() + "】【驳回】审批,由【" + task.getName() + "】 流转到【" + rejectUserTaskConfig.getName() + "】");
|
|
|
workflowRecordMapper.insert(record);
|
|
|
+
|
|
|
+ //新增自定义流程发起流程记录
|
|
|
+ XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
+ xjrWorkflowOperateRecord.setNodeId(task.getId());
|
|
|
+ xjrWorkflowOperateRecord.setNodeName(task.getName());
|
|
|
+ xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
+ xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
|
|
|
+ xjrWorkflowOperateRecord.setSchemaId(schemaId);
|
|
|
+ xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+ xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now().minusSeconds(+1));//时间设置提前1秒钟,好排序
|
|
|
+
|
|
|
+// record.setMessage("【审批人:" + user.getName() + "】 将 【任务:" + task.getName() + "】 驳回到 【任务:" + rejectUserTaskConfig.getName() + "】");
|
|
|
+ String message = "审批人:" + user.getName() + ", 审批结果:驳回, 审批内容:驳回, 审批日期:" + LocalDateTime.now();
|
|
|
+ xjrWorkflowOperateRecord.setOperateInfo(message);
|
|
|
+ xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
|
|
|
});
|
|
|
|
|
|
}
|
|
|
@@ -2095,6 +2126,19 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
workflowRecordMapper.insert(record);
|
|
|
|
|
|
+ //新增流程发起流程记录
|
|
|
+ XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
+ xjrWorkflowOperateRecord.setNodeId(task.getId());
|
|
|
+ xjrWorkflowOperateRecord.setNodeName(task.getName());
|
|
|
+ xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
+ xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
|
|
|
+ xjrWorkflowOperateRecord.setSchemaId(schemaId);
|
|
|
+ xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+ xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
+
|
|
|
+ String message = "审批人:" + user.getName() + ", 审批结果:结束, 审批内容:结束流程, 审批日期:" + LocalDateTime.now();
|
|
|
+ xjrWorkflowOperateRecord.setOperateInfo(message);
|
|
|
+ xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
|
|
|
}
|
|
|
|
|
|
updateFileInfo(dto.getFileFolderIds(), task.getProcessInstanceId());
|
|
|
@@ -2371,6 +2415,17 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
//时间设值必须写在complete上面,防止用户任务节点监听时的流程信息,在次任务前面。
|
|
|
record.setRecordTime(LocalDateTime.now());
|
|
|
|
|
|
+ //批量审批流程信息记录
|
|
|
+ XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
+ xjrWorkflowOperateRecord.setNodeId(task.getId());
|
|
|
+ xjrWorkflowOperateRecord.setNodeName(task.getName());
|
|
|
+ xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
+ xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
|
|
|
+ xjrWorkflowOperateRecord.setSchemaId(schemaId);
|
|
|
+ xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+ //时间设值必须写在complete上面,防止用户任务节点监听时的流程信息,在次任务前面。
|
|
|
+ xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
+
|
|
|
//新增审批详情返回给前端
|
|
|
ApproveMultiVo approveMultiVo = new ApproveMultiVo();
|
|
|
WorkflowExtra extraFirst = workflowExtras.stream().filter(x -> x.getTaskId().equals(task.getId())).findFirst().orElse(new WorkflowExtra());
|
|
|
@@ -2380,6 +2435,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
if (dto.getApprovedType() == WorkflowApproveType.AGREE.getCode()) {
|
|
|
//新增工作流程信息数据
|
|
|
addWorkflowRecord(userTaskConfig, nextTaskNameList, user, record, task.getName(), "同意", dto.getApprovedContent(), task, resultName);
|
|
|
+ addCustomWorkflowRecord(userTaskConfig, nextTaskNameList, user, xjrWorkflowOperateRecord, task.getName(), "同意", dto.getApprovedContent(), task, resultName);
|
|
|
|
|
|
if (nextTaskNameList.size() == 0) {
|
|
|
String message = "【" + user.getName() + "】【同意】审批,审批意见为:“【" + dto.getApprovedContent() + "】”,由【" + task.getName() + "】 流转到【结束节点】";
|
|
|
@@ -2402,6 +2458,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
if (dto.getApprovedType() == WorkflowApproveType.DISAGREE.getCode()) {
|
|
|
//新增工作流程信息数据
|
|
|
addWorkflowRecord(userTaskConfig, nextTaskNameList, user, record, task.getName(), "拒绝", dto.getApprovedContent(), task, resultName);
|
|
|
+ addCustomWorkflowRecord(userTaskConfig, nextTaskNameList, user, xjrWorkflowOperateRecord, task.getName(), "拒绝", dto.getApprovedContent(), task, resultName);
|
|
|
if (nextTaskNameList.size() == 0) {
|
|
|
String message = "【" + user.getName() + "】【拒绝】审批,审批意见为:“【" + dto.getApprovedContent() + "】”,由【" + task.getName() + "】 流转到【结束节点】";
|
|
|
approveMultiVo.setApproveDetail(message);
|
|
|
@@ -2746,7 +2803,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
throw new MyException("当前任务没有开始节点");
|
|
|
}
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
+ // List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
|
|
|
//将map 转为 java类
|
|
|
@@ -2811,7 +2869,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
if (!userNodeConfigOp.isPresent()) {
|
|
|
throw new MyException("当前任务没有开始节点");
|
|
|
}
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
+ //List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(task.getProcessInstanceId(), 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
|
|
|
//查询任务关联任务
|
|
|
@@ -2905,7 +2964,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
WorkflowSchemaConfig workflowSchemaConfig = JSONUtil.toBean(workflowSchema.getJsonContent(), WorkflowSchemaConfig.class);
|
|
|
|
|
|
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ //List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(processId, 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(processId, 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
|
|
|
List<Object> allFormConfigs = workflowSchemaConfig.getChildNodeConfig().stream().filter(x -> x.containsKey("formConfigs")).map(x -> x.get("formConfigs")).collect(Collectors.toList());
|
|
|
@@ -2983,7 +3043,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
if (!userNodeConfigOp.isPresent()) {
|
|
|
throw new MyException("当前任务没有开始节点");
|
|
|
}
|
|
|
- List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(historicTaskInstance.getProcessInstanceId(), 0);
|
|
|
+ //List<ProcessRecordListVo> recordListVos = getProcessRecordListVos(historicTaskInstance.getProcessInstanceId(), 0);
|
|
|
+ List<ProcessRecordListVo> recordListVos = getCustomProcessRecordListVos(historicTaskInstance.getProcessInstanceId(), 0);
|
|
|
vo.setTaskRecords(recordListVos);
|
|
|
|
|
|
//查询任务关联任务
|
|
|
@@ -3192,13 +3253,13 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
List<String> currentTask = list.stream().map(Task::getTaskDefinitionKey).distinct().collect(Collectors.toList());
|
|
|
vo.setCurrentNodes(currentTask);
|
|
|
}
|
|
|
-
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<ProcessRecordListVo> getProcessRecord(String processInstanceId) {
|
|
|
- return getProcessRecordListVos(processInstanceId, 0);
|
|
|
+ //return getProcessRecordListVos(processInstanceId, 0);
|
|
|
+ return getCustomProcessRecordListVos(processInstanceId, 0);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -3639,6 +3700,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
record.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
record.setRecordTime(LocalDateTime.now());
|
|
|
String oldTaskName = workflowExtra.getTaskName();
|
|
|
+
|
|
|
//如果传入的是开始节点的值 默认是关闭流程 重新发起
|
|
|
if (StrUtil.equals(dto.getActivityId(), historicProcessInstance.getStartActivityId())) {
|
|
|
|
|
|
@@ -4329,6 +4391,63 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
return recordListVos;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据流程id 获取流程流转信息(自定义)
|
|
|
+ *
|
|
|
+ * @param processInstanceId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<ProcessRecordListVo> getCustomProcessRecordListVos(String processInstanceId, int onlySelf) {
|
|
|
+
|
|
|
+ User user = StpUtil.getTokenSession().get(GlobalConstant.LOGIN_USER_INFO_KEY, new User());
|
|
|
+ List<Long> roleIds = StpUtil.getTokenSession().get(GlobalConstant.LOGIN_USER_ROLE_ID_KEY, new ArrayList<>());
|
|
|
+ LambdaQueryWrapper<XjrWorkflowOperateRecord> workflowOperateRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (onlySelf == YesOrNoEnum.YES.getCode()) {//仅查看本人
|
|
|
+ if (roleIds.contains(GlobalConstant.SUPER_ADMIN_ROLE_ID)) {//管理员数据
|
|
|
+ workflowOperateRecordLambdaQueryWrapper.eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId)
|
|
|
+ .orderByAsc(XjrWorkflowOperateRecord::getRecordTime)
|
|
|
+ .like(XjrWorkflowOperateRecord::getOperateInfo, user.getName())
|
|
|
+ .or()
|
|
|
+ .like(XjrWorkflowOperateRecord::getOperateInfo, "流程结束")
|
|
|
+ .eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId)
|
|
|
+ .or()
|
|
|
+ .like(XjrWorkflowOperateRecord::getOperateInfo, "脚本节点")
|
|
|
+ .eq(XjrWorkflowOperateRecord::getCreateUserId, StpUtil.getLoginIdAsLong())//脚本任务
|
|
|
+ .eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId);
|
|
|
+ } else {//其他人数据
|
|
|
+ workflowOperateRecordLambdaQueryWrapper.eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId)
|
|
|
+ .orderByAsc(XjrWorkflowOperateRecord::getRecordTime)
|
|
|
+ .eq(XjrWorkflowOperateRecord::getCreateUserId, StpUtil.getLoginIdAsLong())
|
|
|
+ .like(XjrWorkflowOperateRecord::getOperateInfo, user.getName())
|
|
|
+ .or()
|
|
|
+ .like(XjrWorkflowOperateRecord::getOperateInfo, user.getName())
|
|
|
+ .eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId)
|
|
|
+ .or()
|
|
|
+ .like(XjrWorkflowOperateRecord::getOperateInfo, "脚本节点")
|
|
|
+ .eq(XjrWorkflowOperateRecord::getCreateUserId, StpUtil.getLoginIdAsLong())//脚本任务
|
|
|
+ .eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ workflowOperateRecordLambdaQueryWrapper.eq(XjrWorkflowOperateRecord::getProcessId, processInstanceId)
|
|
|
+ .orderByAsc(XjrWorkflowOperateRecord::getRecordTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<XjrWorkflowOperateRecord> workflowOperateRecords = xjrWorkflowOperateRecordMapper.selectList(workflowOperateRecordLambdaQueryWrapper);
|
|
|
+
|
|
|
+ List<ProcessRecordListVo> recordListVos = new ArrayList<>(workflowOperateRecords.size());
|
|
|
+ for (XjrWorkflowOperateRecord workflowOperateRecord : workflowOperateRecords) {
|
|
|
+ ProcessRecordListVo recordListVo = new ProcessRecordListVo();
|
|
|
+ recordListVo.setNodeType(workflowOperateRecord.getNodeType());
|
|
|
+ recordListVo.setNodeName(workflowOperateRecord.getNodeName());
|
|
|
+ recordListVo.setComment(workflowOperateRecord.getOperateInfo());
|
|
|
+ recordListVo.setStartTime(workflowOperateRecord.getRecordTime());
|
|
|
+ recordListVo.setCirculateMessage(workflowOperateRecord.getCirculateMessage());
|
|
|
+ recordListVos.add(recordListVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ return recordListVos;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private void invokeAutoAgree(String processInstanceId, Long schemaId, WorkflowSchemaConfig workflowSchemaConfig, List<Task> taskList) {
|
|
|
|
|
|
@@ -4387,6 +4506,9 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
List<Long> allUserIds = new ArrayList<>();//所有自动同意审批的用户id
|
|
|
//新增流程发起流程记录
|
|
|
WorkflowRecord record = new WorkflowRecord();
|
|
|
+ //自定义流程发起记录
|
|
|
+ XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
+
|
|
|
//候选审批人包含流程任务发起人
|
|
|
if (autoAgreeConfig.contains(WorkflowAutoAgreeType.APPROVED_INCLUDE_INITIATOR.getCode())) {
|
|
|
if (approveUserIds.contains(startUserId)) {
|
|
|
@@ -4454,6 +4576,9 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
if (isAgree) {
|
|
|
//自动同意之后完成本次任务
|
|
|
record.setRecordTime(LocalDateTime.now());
|
|
|
+
|
|
|
+ xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
+
|
|
|
taskService.complete(task.getId());
|
|
|
List<Task> list = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
|
|
|
String allOpinions = StringPool.EMPTY;
|
|
|
@@ -4467,12 +4592,19 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
String allNextTaskName = StrUtil.join(StringPool.SPACE, list.parallelStream().map(t -> "【" + t.getName() + "】").collect(Collectors.toList()));
|
|
|
|
|
|
String message = "【" + approveName + "】【自动同意】 审批, 审批意见为:“【" + allOpinions + "】”,由【" + task.getName() + "】流转到 " + allNextTaskName;
|
|
|
+ String operateInfo = "审批人:" + approveName + ", 审批结果:" + allOpinions + ", 审批内容:自动同意, 审批日期:" + LocalDateTime.now();
|
|
|
+
|
|
|
addProcessRecord(task, schemaId, message, record);
|
|
|
+ addCustomProcessRecord(task, schemaId, operateInfo, xjrWorkflowOperateRecord);
|
|
|
+
|
|
|
// 如果还有用户任务 则递归调用
|
|
|
invokeAutoAgree(processInstanceId, schemaId, workflowSchemaConfig, list);
|
|
|
} else {
|
|
|
String message = "【" + approveName + "】【自动同意】 审批, 审批意见为:“【" + allOpinions + "】”,由【" + task.getName() + "】流转到 结束节点";
|
|
|
+ String operateInfo = "审批人:" + approveName + ", 审批结果:" + allOpinions + ", 审批内容:自动同意, 审批日期:" + LocalDateTime.now();
|
|
|
+
|
|
|
addProcessRecord(task, schemaId, message, record);
|
|
|
+ addCustomProcessRecord(task, schemaId, operateInfo, xjrWorkflowOperateRecord);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -4788,6 +4920,22 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private void addCustomProcessRecord(Task task, Long schemaId, String message, XjrWorkflowOperateRecord record) {
|
|
|
+
|
|
|
+ IXjrWorkflowOperateRecordService xjrWorkflowOperateRecordService = SpringUtil.getBean(IXjrWorkflowOperateRecordService.class);
|
|
|
+ //新增流程发起流程记录
|
|
|
+ record.setNodeId(task.getId());
|
|
|
+ record.setNodeName(task.getName());
|
|
|
+ record.setNodeType(WorkflowConstant.START_EVENT_TYPE_NAME);
|
|
|
+ record.setProcessId(task.getProcessInstanceId());
|
|
|
+ record.setSchemaId(schemaId);
|
|
|
+ record.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+
|
|
|
+ record.setOperateInfo(message);
|
|
|
+
|
|
|
+ xjrWorkflowOperateRecordService.save(record);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 记录开始节点
|
|
|
@@ -5045,6 +5193,89 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
workflowRecordMapper.insert(record);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增工作流程信息数据
|
|
|
+ *
|
|
|
+ * @param userTaskConfig 用户任务配置信息
|
|
|
+ * @param nextTaskNameList 下一个节点的名称集合
|
|
|
+ * @param user 当前用户的对象
|
|
|
+ * @param record 工作流程信息的对象
|
|
|
+ * @param oldTaskName 前一个节点的名称
|
|
|
+ * @param buttonName 按钮名称
|
|
|
+ */
|
|
|
+ private void addCustomWorkflowRecord(UserTaskConfig userTaskConfig, List<String> nextTaskNameList, User user, XjrWorkflowOperateRecord record, String oldTaskName, String buttonName, String approvedContent, Task task, Object resultName) {
|
|
|
+ //单实例
|
|
|
+ if (userTaskConfig.getCountersignConfig().getMultipleInstancesType() == WorkflowMultiInstanceType.NONE.getCode()) {
|
|
|
+ //用户节点到结束节点或者脚本节点,点击按钮时,也需要设置流程信息
|
|
|
+ if (nextTaskNameList.size() == 0 && !buttonName.equals("")) {
|
|
|
+ String message = "审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now();
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ //单流向
|
|
|
+ if (nextTaskNameList.size() == 1) {
|
|
|
+ String message = "审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now();
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }//多流向
|
|
|
+ if (nextTaskNameList.size() > 1) {
|
|
|
+ String message = "审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now();
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //多实例,判断是不是会签流程,以及会签流程的状态
|
|
|
+ else {
|
|
|
+ //判断是否达到完成条件
|
|
|
+ List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().processInstanceIdIn(task.getProcessInstanceId()).list();
|
|
|
+ Boolean getCompleteConditional = isGetCompleteConditional(userTaskConfig, list);
|
|
|
+
|
|
|
+ //审批但未达到完成条件;审批信息:[会签][用户名] [审批按钮名称]审批,审批意见为:“[审批意见]”。
|
|
|
+ if (getCompleteConditional) {
|
|
|
+ //获取当前节点是否完成会签或者会签失败
|
|
|
+ if (ObjectUtil.isNotEmpty(resultName)) { //resultName只能从这个节点拿,不然会签节点后直接结束流程,就会拿不到流程变量信息
|
|
|
+ Boolean isSuccess = Boolean.valueOf(resultName.toString());
|
|
|
+ //审批达到完成条件,完成会签;审批信息:[会签][用户名] [审按名称]审批,审批见为:[审批意见]”,达到会签完成条件,由[上一节点名称]流转到下,多流向的情况则由[上一节点名称] 流转到[多流向节点名称]。
|
|
|
+ if (isSuccess) {
|
|
|
+ //用户节点到结束节点或者脚本节点,点击按钮时,也需要设置流程信息
|
|
|
+ if (nextTaskNameList.size() == 0 && !buttonName.equals("")) {
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ //单流向
|
|
|
+ if (nextTaskNameList.size() == 1) {
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }//多流向
|
|
|
+ if (nextTaskNameList.size() > 1) {
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //审批达到完成条件,会签失败;例如:审批信息:[会签][用户名][审按名称]审批,审批意见为:“[审批意见]”,未达到会签完成条件,由[管理层审批]流转到(部门审批]
|
|
|
+ if (buttonName.equals(WorkflowApproveType.DISAGREE.getValue())) {
|
|
|
+ //用户节点到结束节点或者脚本节点,点击按钮时,也需要设置流程信息
|
|
|
+ if (nextTaskNameList.size() == 0 && !buttonName.equals("")) {
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",未达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ //单流向
|
|
|
+ if (nextTaskNameList.size() == 1) {
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",未达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }//多流向
|
|
|
+ if (nextTaskNameList.size() > 1) {
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",未达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //审批但未达到完成条件;审批信息:[会签][用户名] [审批按钮名称]审批,审批意见为:“[审批意见]”。
|
|
|
+ String message = "【会签】审批人:" + user.getName() + ", 审批结果:" + buttonName + ", 审批内容:" + approvedContent + ", 审批日期:" + LocalDateTime.now() + ",未达到会签完成条件";
|
|
|
+ record.setOperateInfo(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ xjrWorkflowOperateRecordMapper.insert(record);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 判断多实例是否达到完成条件
|
|
|
*
|