Forráskód Böngészése

垂直审批个人只查看当前轮次任务

liuyc 1 éve
szülő
commit
bc3d03999c

+ 2 - 2
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AliOssBuilder.java

@@ -52,10 +52,10 @@ public class AliOssBuilder {
         // 设置失败请求重试次数,默认为3次。
         conf.setMaxErrorRetry(5);
         OssProperties ossProperties = new OssProperties();
-        ossProperties.setEndpoint(oss.getEndpoint());
+        //ossProperties.setEndpoint(oss.getEndpoint());
 
         //本地测试
-        //ossProperties.setEndpoint("https://oss-cn-hangzhou.aliyuncs.com/");
+        ossProperties.setEndpoint("https://oss-cn-hangzhou.aliyuncs.com/");
 
         ossProperties.setAccessKey(oss.getAccessKey());
         ossProperties.setSecretKey(oss.getSecretKey());

+ 27 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1129,9 +1129,16 @@ public class TaskController extends BladeController {
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "资料填报-任务管理-任务查看分页查询", notes = "传入BusinessTaskDTO")
     public R<IPage<BusinessTaskPageVO>> page(@RequestBody BusinessTaskDTO dto) throws IOException {
+        if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
+            throw new ServiceException("未获取到当前用户信息,请联系管理员");
+        }
+        if (ObjectUtil.isEmpty(dto.getProjectIdValue())) {
+            throw new ServiceException("未获取到当前用户所在的项目信息,请联系管理员");
+        }
         if (ObjectUtil.isEmpty(dto.getCurrentContractId())) {
             throw new ServiceException("未获取到当前用户所在的合同段信息,请联系管理员");
         }
+        ProjectInfo projectInfo = jdbcTemplate.query("select approval_type from m_project_info where id = " + dto.getProjectIdValue(), new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
         int current = dto.getCurrent();
         int size = dto.getSize();
         //封装入参SQL
@@ -1297,6 +1304,24 @@ public class TaskController extends BladeController {
                     vo.setProcessInstanceId(task.getProcessInstanceId());
                     List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
                     if (taskParallelList != null && taskParallelList.size() > 0) {
+                        //如果是垂直签,判断是否是当前用户审批轮次,不是当前用户审批轮次就不显示该任务
+                        if (projectInfo != null && projectInfo.getApprovalType() == 1) {
+                            boolean shouldDisplayTask = false; //标记是否显示当前任务
+                            for (TaskParallel taskParallel : taskParallelList) {
+                                if (SecureUtil.getUserId().equals(Long.parseLong(taskParallel.getTaskUser()))) {
+                                    shouldDisplayTask = true; //当前用户是审批人,需要显示任务
+                                    break;
+                                } else if (taskParallel.getStatus() != 2) {
+                                    //之前的审批人员任务未完成,不显示任务
+                                    break;
+                                }
+                            }
+                            if (!shouldDisplayTask) {
+                                //跳过当前任务
+                                return null;
+                            }
+                        }
+
                         List<String> names = taskParallelList.stream().map(TaskParallel::getTaskUserName).collect(Collectors.toList());
                         if (names.size() > 0) {
                             vo.setTaskApproveUserNames(StringUtils.join(names, ","));
@@ -1330,6 +1355,7 @@ public class TaskController extends BladeController {
                     }
                     return vo;
                 })
+                .filter(Objects::nonNull) //过滤掉为null的任务
                 .collect(Collectors.toList());
         page.setRecords(pageList);
         page.setTotal(totalCount);
@@ -1433,7 +1459,7 @@ public class TaskController extends BladeController {
             } else {
                 sqlString.append(" AND EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 99 AND u_task_parallel.status != 3)");
             }
-        }else {
+        } else {
             if (StringUtils.isNotBlank(dto.getEVisaUserName())) {
                 sqlString.append(" AND EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 1 AND u_task_parallel.status = 2 AND u_task_parallel.task_user_name LIKE ?)");
                 params.add("%" + dto.getEVisaUserName() + "%");