|
|
@@ -40,6 +40,7 @@ import com.xjrsoft.module.magicapi.vo.MagicApiInfoVo;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
import com.xjrsoft.module.organization.entity.UserRoleRelation;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudentAssessmentCategory;
|
|
|
import com.xjrsoft.module.system.entity.File;
|
|
|
import com.xjrsoft.module.system.entity.Stamp;
|
|
|
import com.xjrsoft.module.system.service.IFileService;
|
|
|
@@ -3175,9 +3176,19 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
.leftJoin(WorkflowSchema.class, WorkflowSchema::getId, WorkflowCirculated::getSchemaId));
|
|
|
|
|
|
String[] taskIds = page.getRecords().stream().map(CirculatedTaskPageVo::getTaskId).toArray(String[]::new);
|
|
|
+ List<String> processIds = page.getRecords().stream()
|
|
|
+ .map(CirculatedTaskPageVo::getProcessId) // 使用map方法将对象映射为属性
|
|
|
+ .collect(Collectors.toList());
|
|
|
List<Task> list = taskService.createTaskQuery().taskIdIn(taskIds).list();
|
|
|
+ QueryWrapper<WorkflowExtra> workflowExtraQueryWrapper = new QueryWrapper<>();
|
|
|
+ workflowExtraQueryWrapper
|
|
|
+ .select("t.process_id as process_id, MAX(t.current_progress) as current_progress")
|
|
|
+ .in("t.process_id", processIds)
|
|
|
+ .groupBy("t.process_id");
|
|
|
+ List<WorkflowExtra> workflowExtraList = xjrWorkflowExtraMapper.selectList(workflowExtraQueryWrapper);
|
|
|
for (CirculatedTaskPageVo record : page.getRecords()) {
|
|
|
Optional<Task> thisTask = list.stream().filter(x -> x.getId().equals(record.getTaskId())).findFirst();
|
|
|
+ Optional<WorkflowExtra> thisWorkflowExtra = workflowExtraList.stream().filter(x -> x.getProcessId().equals(record.getProcessId())).findFirst();
|
|
|
if (thisTask.isPresent()) {
|
|
|
if (thisTask.get().isSuspended()) {
|
|
|
record.setStatus(2);
|
|
|
@@ -3188,8 +3199,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
record.setStatus(1);
|
|
|
}
|
|
|
|
|
|
+ thisWorkflowExtra.ifPresent(workflowExtra -> record.setCurrentProgress(workflowExtra.getCurrentProgress()));
|
|
|
}
|
|
|
-
|
|
|
return ConventPage.getPageOutput(page);
|
|
|
}
|
|
|
|
|
|
@@ -4480,17 +4491,37 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
addProcessRecord(task, schemaId, message, record);
|
|
|
|
|
|
+ deleteAutoAgreePrepareNodeInRecord(task, schemaId, "【" + approveName + "】准备审批");
|
|
|
// 如果还有用户任务 则递归调用
|
|
|
invokeAutoAgree(processInstanceId, schemaId, workflowSchemaConfig, list);
|
|
|
} else {
|
|
|
String message = "【" + approveName + "】【自动同意】 审批, 审批意见为:“【" + allOpinions + "】”,由【" + task.getName() + "】流转到 结束节点";
|
|
|
|
|
|
addProcessRecord(task, schemaId, message, record);
|
|
|
+ deleteAutoAgreePrepareNodeInRecord(task, schemaId, "【" + approveName + "】准备审批");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除发起节点自动审批的准备审批记录
|
|
|
+ * @param task
|
|
|
+ * @param schemaId
|
|
|
+ * @param message
|
|
|
+ */
|
|
|
+ private void deleteAutoAgreePrepareNodeInRecord(Task task, Long schemaId, String message){
|
|
|
+ IXjrWorkflowOperateRecordService xjrWorkflowOperateRecordService = SpringUtil.getBean(IXjrWorkflowOperateRecordService.class);
|
|
|
+
|
|
|
+ QueryWrapper<XjrWorkflowOperateRecord> wrapper = new QueryWrapper<XjrWorkflowOperateRecord>()
|
|
|
+ .eq("node_id", task.getId())
|
|
|
+ .eq("process_id", task.getProcessInstanceId())
|
|
|
+ .eq("schema_id", schemaId)
|
|
|
+ .eq("operate_info", message);
|
|
|
+
|
|
|
+ xjrWorkflowOperateRecordService.remove(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 判断是否由需要指定审批人 老版
|
|
|
@@ -4847,7 +4878,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
xjrWorkflowOperateRecord.setSchemaId(workflowSchema.getId());
|
|
|
xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
- xjrWorkflowOperateRecord.setUsageScenario(2);
|
|
|
+ xjrWorkflowOperateRecord.setUsageScenario(1);
|
|
|
xjrWorkflowOperateRecord.setOperateInfo("【" + user.getName() + "】 创建流程");
|
|
|
|
|
|
xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
|
|
|
@@ -5469,7 +5500,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
setComment(p.getComment());
|
|
|
setStartTime(p.getStartTime());
|
|
|
setCirculateMessage(p.getCirculateMessage());
|
|
|
- setNodeName("准备审批");
|
|
|
+ setNodeName(p.getNodeName());
|
|
|
setApproveResult("准备审批");
|
|
|
Pattern pattern = Pattern.compile("【(.*?)】");
|
|
|
Matcher matcher = pattern.matcher(p.getComment());
|