Переглянути джерело

修改pdf批量下载文件命名规则和任务管理待办任务排序

lvy 1 місяць тому
батько
коміт
d029953a91

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/Task.java

@@ -178,4 +178,6 @@ public class Task extends BaseEntity {
     @ApiModelProperty("计量任务是否生成审计意见单 1是0否")
     private Integer isBuildAudit;
 
+    @ApiModelProperty("电签状态")
+    private Integer eStatus;
 }

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/BusinessTaskPageVO.java

@@ -58,4 +58,7 @@ public class BusinessTaskPageVO implements Serializable {
     @ApiModelProperty(value = "签字人员集合")
     private List<TaskParallel> taskApproveUserNamesList;
 
+    @ApiModelProperty("电签状态,用来判断是否同意过")
+    private Integer eStatus;
+
 }

+ 10 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1445,6 +1445,7 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
                  /*   result.forEach(query -> urls.add(
                             StringUtils.isNotEmpty(query.getNodePdfUrl()) ? query.getNodePdfUrl() + "@@@" + query.getName() + "-" + query.getId() : query.getPdfUrl() + "@@@" + query.getName() + "-" + query.getId()));
                    */
+                Map<String, Integer> nameMap = new HashMap<>();
                 for (int i=0;i<result.size();i++) {
                     String url_link = "";
                     List<TaskApprovalVO.ApprovalFile> files = jdbcTemplate.query("select name as fileName,domain_url as fileUrl from m_table_file where is_deleted = 0 and type in(10,11,12)and tab_id = ?", new BeanPropertyRowMapper<>(TaskApprovalVO.ApprovalFile.class), result.get(i).getWbsId());
@@ -1472,7 +1473,15 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
                     } else if (url != null && url.size() == 1) {
                         url_link = url.get(0);
                     }
-                    urls.add(url_link + "@@@" + result.get(i).getName() + "-" + result.get(i).getId());
+                    String fileName = result.get(i).getName();
+                    fileName = fileName == null ? "找不到文件题目" : fileName.replaceAll("\\\\", "_").replaceAll("/", "_");
+                    if (nameMap.containsKey(fileName)) {
+                        fileName = fileName + "_" + nameMap.get(fileName);
+                        nameMap.put(fileName, nameMap.get(fileName) + 1);
+                    } else {
+                        nameMap.put(fileName, 1);
+                    }
+                    urls.add(url_link + "@@@" + fileName);
                 }
 
                 //删除空数据

+ 14 - 5
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1303,7 +1303,8 @@ public class TaskController extends BladeController {
         int size = dto.getSize();
         //封装入参SQL
         List<Object> params = new ArrayList<>();
-        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type in(1,3,4,8,9,10)");
+        String sqlResult = "SELECT * ";
+        StringBuilder sqlString = new StringBuilder(" FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type in(1,3,4,8,9,10)");
         if (ObjectUtil.isNotEmpty(dto.getTypeValue())) {
             sqlString.append(" AND type = ?");
             params.add(dto.getTypeValue());
@@ -1379,7 +1380,8 @@ public class TaskController extends BladeController {
                     sqlString.append("EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.status = ? AND u_task_parallel.task_user = ?)");
                     params.add(1);
                     params.add(SecureUtil.getUserId());
-
+                    sqlResult = "SELECT *, (SELECT ifnull(e_visa_status, -1)  FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.STATUS = 1 " +
+                            "AND u_task_parallel.task_user = " + SecureUtil.getUserId() + " and is_deleted = 0 order by id desc limit 1) as e_status";
                     //如果是待办页面,且 任务状态下拉框 选择的不是 待审批状态 的任务,那么直接返回null
                 } else if (ObjectUtil.isNotEmpty(dto.getStatusValue()) && !dto.getStatusValue().equals(1)) {
                     return null;
@@ -1390,6 +1392,8 @@ public class TaskController extends BladeController {
                     params.add(1);
                     params.add(SecureUtil.getUserId());
                     sqlString.append(" AND status = 1");
+                    sqlResult = "SELECT *, (SELECT ifnull(e_visa_status, -1)  FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.STATUS = 1 " +
+                            "AND u_task_parallel.task_user = " + SecureUtil.getUserId() + " and is_deleted = 0 order by id desc limit 1) as e_status";
                 }
 
             } else if (dto.getSelectedType().equals(2)) { //已办页面
@@ -1407,7 +1411,7 @@ public class TaskController extends BladeController {
 //        sqlString.append(" AND (SELECT COUNT(1)  FROM u_information_query WHERE u_task.form_data_id = id and is_deleted=0) > 0");
 
         //总数量
-        String sqlCount = sqlString.toString().replace("*", "count(1)");
+        String sqlCount = "select count(1) " +  sqlString;
         Optional<Integer> totalCountOptional = Optional.ofNullable(jdbcTemplate.queryForObject(sqlCount, Integer.class, params.toArray()));
         int totalCount = totalCountOptional.orElse(0);
 
@@ -1423,13 +1427,17 @@ public class TaskController extends BladeController {
             }
         } else {
             //Web端默认倒叙
-            sqlString.append(" ORDER BY create_time DESC LIMIT ? OFFSET ?");
+            if (!sqlResult.equals("SELECT * ")) {
+                sqlString.append(" ORDER BY e_status asc, create_time DESC LIMIT ? OFFSET ?");
+            } else {
+                sqlString.append(" ORDER BY create_time DESC LIMIT ? OFFSET ?");
+            }
         }
         params.add(size);
         params.add((current - 1) * size);
 
         //执行SQL获取数据
-        String sqlPage = sqlString.toString();
+        String sqlPage = sqlResult + sqlString;
         List<Task> resultList = jdbcTemplate.query(
                 sqlPage,
                 new BeanPropertyRowMapper<>(Task.class),
@@ -1467,6 +1475,7 @@ public class TaskController extends BladeController {
                     vo.setApprovalType(task.getApprovalType());
                     vo.setFormDataId(task.getFormDataId());
                     vo.setProcessInstanceId(task.getProcessInstanceId());
+                    vo.setEStatus(task.getEStatus());
                     List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
                     if (taskParallelList != null && taskParallelList.size() > 0) {
                         //如果是垂直签,且是待办页面,判断是否是当前用户审批轮次,不是当前用户审批轮次就不显示该任务

+ 15 - 5
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -39,6 +39,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.evisa.feign.EVisaClient;
+import org.springblade.evisa.redissionUtil.DistributedRedisLock;
 import org.springblade.evisa.vo.EVisaTaskApprovalVO;
 import org.springblade.flow.core.constant.ProcessConstant;
 import org.springblade.flow.core.feign.IFlowClient;
@@ -1566,11 +1567,20 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             //这里发起的默认为普通流程
             task.setType(1);
             task.setStatus(1);
-            //保存附表信息
-            this.taskParallelService.saveBatch(taskParallelArray);
-
-            //保存主表数据
-            this.save(task);
+            try {
+                if (DistributedRedisLock.acquire("TaskService_StartApproval_" + task.getFormDataId(), 20)) {
+                    long count = this.count(Wrappers.<Task>lambdaQuery().eq(Task::getFormDataId, task.getFormDataId()).ne(Task::getStatus, 3));
+                    if (count > 0) {
+                        return false;
+                    }
+                    //保存附表信息
+                    this.taskParallelService.saveBatch(taskParallelArray);
+                    //保存主表数据
+                    this.save(task);
+                }
+            } finally {
+                DistributedRedisLock.release("TaskService_StartApproval_" + task.getFormDataId());
+            }
         }
         return true;
     }