|
@@ -47,6 +47,7 @@ import org.springblade.flow.core.feign.NewFlowClient;
|
|
import org.springblade.flow.core.vo.SendPageVO;
|
|
import org.springblade.flow.core.vo.SendPageVO;
|
|
import org.springblade.manager.entity.ContractInfo;
|
|
import org.springblade.manager.entity.ContractInfo;
|
|
import org.springblade.manager.entity.ContractRelationJlyz;
|
|
import org.springblade.manager.entity.ContractRelationJlyz;
|
|
|
|
+import org.springblade.manager.entity.ProjectInfo;
|
|
import org.springblade.manager.feign.ContractClient;
|
|
import org.springblade.manager.feign.ContractClient;
|
|
import org.springblade.manager.feign.ExcelTabClient;
|
|
import org.springblade.manager.feign.ExcelTabClient;
|
|
import org.springblade.resource.feign.CommonFileClient;
|
|
import org.springblade.resource.feign.CommonFileClient;
|
|
@@ -301,7 +302,7 @@ public class TaskController extends BladeController {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 批量审批(质检、试验 平行审批)
|
|
|
|
|
|
+ * 批量审批(质检、试验 平行或垂直审批)
|
|
*/
|
|
*/
|
|
@PostMapping("/batch-complete-approval-task")
|
|
@PostMapping("/batch-complete-approval-task")
|
|
@ApiOperationSupport(order = 8)
|
|
@ApiOperationSupport(order = 8)
|
|
@@ -311,6 +312,44 @@ public class TaskController extends BladeController {
|
|
String parallelProcessInstanceIds = batchTaskVO.getParallelProcessInstanceIds();
|
|
String parallelProcessInstanceIds = batchTaskVO.getParallelProcessInstanceIds();
|
|
if (StringUtils.isNotEmpty(taskIds)) {
|
|
if (StringUtils.isNotEmpty(taskIds)) {
|
|
String[] taskIdArray = taskIds.split(",");
|
|
String[] taskIdArray = taskIds.split(",");
|
|
|
|
+ if (taskIdArray.length == 0) {
|
|
|
|
+ throw new ServiceException("未获取到任务信息");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //校验当前项目是否为垂直审批
|
|
|
|
+ List<Task> taskList = taskService.getBaseMapper().selectList(Wrappers.<Task>lambdaQuery().select(Task::getProjectId, Task::getTaskName, Task::getProcessInstanceId).in(Task::getId, Arrays.asList(taskIdArray)));
|
|
|
|
+ for (Task task : taskList) {
|
|
|
|
+ if (ObjectUtil.isEmpty(task.getProjectId())) {
|
|
|
|
+ throw new ServiceException("未获取到任务【" + task.getTaskName() + "】对应的项目信息");
|
|
|
|
+ }
|
|
|
|
+ ProjectInfo projectInfo = jdbcTemplate.query("select approval_type from m_project_info where id = " + task.getProjectId(), new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
|
|
|
|
+ //如果是垂直审批,那么检查当前用户是否符合当前顺序
|
|
|
|
+ if (projectInfo != null && projectInfo.getApprovalType() != null && new Integer(1).equals(projectInfo.getApprovalType())) {
|
|
|
|
+ List<TaskParallel> taskParallelList = jdbcTemplate.query("select id,process_instance_id,task_user,task_user_name,status from u_task_parallel where process_instance_id ='" + task.getProcessInstanceId() + "'", new BeanPropertyRowMapper<>(TaskParallel.class));
|
|
|
|
+ taskParallelList.sort(Comparator.comparing(TaskParallel::getId)); //根据id排序
|
|
|
|
+ Map<String, List<TaskParallel>> taskParallelGroup = taskParallelList.stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
|
|
|
|
+ for (Map.Entry<String, List<TaskParallel>> taskObj : taskParallelGroup.entrySet()) {
|
|
|
|
+ //获取当前审批人前面的审批人信息
|
|
|
|
+ List<TaskParallel> frontTaskUser = new LinkedList<>();
|
|
|
|
+ for (TaskParallel taskParallel : taskObj.getValue()) {
|
|
|
|
+ Long userId = SecureUtil.getUserId();
|
|
|
|
+ if (!userId.toString().equals(taskParallel.getTaskUser())) {
|
|
|
|
+ frontTaskUser.add(taskParallel);
|
|
|
|
+ } else {
|
|
|
|
+ //如果是当前的审批人,那么直接跳过
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ List<TaskParallel> resultTaskStatus = frontTaskUser.stream().filter(f -> !f.getStatus().equals(2)).collect(Collectors.toList());
|
|
|
|
+ if (resultTaskStatus.size() > 0) {
|
|
|
|
+ String names = resultTaskStatus.stream().map(TaskParallel::getTaskUserName).collect(Collectors.joining("、"));
|
|
|
|
+ throw new ServiceException("当前任务【" + task.getTaskName() + "】还有【" + names + "】未完成审批,请您稍后再试");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //正常流程(平行签直接执行,垂直签会校验完再执行)
|
|
String[] parallelProcessInstanceIdArray = parallelProcessInstanceIds.split(",");
|
|
String[] parallelProcessInstanceIdArray = parallelProcessInstanceIds.split(",");
|
|
String[] approvalType = batchTaskVO.getApprovalType().split(",");
|
|
String[] approvalType = batchTaskVO.getApprovalType().split(",");
|
|
String[] formDataId = batchTaskVO.getFormDataId().split(",");
|
|
String[] formDataId = batchTaskVO.getFormDataId().split(",");
|
|
@@ -1427,6 +1466,8 @@ public class TaskController extends BladeController {
|
|
BusinessTaskFailedPageVO vo = new BusinessTaskFailedPageVO();
|
|
BusinessTaskFailedPageVO vo = new BusinessTaskFailedPageVO();
|
|
vo.setId(task.getId());
|
|
vo.setId(task.getId());
|
|
vo.setTaskName(task.getTaskName());
|
|
vo.setTaskName(task.getTaskName());
|
|
|
|
+ vo.setStartTime(task.getStartTime());
|
|
|
|
+ vo.setEndTime(task.getEndTime());
|
|
vo.setTaskStatusName(task.getStatus().equals(1) ? "待审批" : task.getStatus().equals(2) ? "已审批" : "已废除");
|
|
vo.setTaskStatusName(task.getStatus().equals(1) ? "待审批" : task.getStatus().equals(2) ? "已审批" : "已废除");
|
|
vo.setEVisaStatusName("电签失败");
|
|
vo.setEVisaStatusName("电签失败");
|
|
vo.setTaskReportUserName(nameMap.get(Long.parseLong(task.getReportUser())));
|
|
vo.setTaskReportUserName(nameMap.get(Long.parseLong(task.getReportUser())));
|