lrj 7 months ago
parent
commit
5275a66466

+ 19 - 0
src/main/java/cn/cslg/pas/common/model/projectTask/SubmitResultDTO.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.model.projectTask;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+
+@Data
+public class SubmitResultDTO {
+    private Integer taskId;
+    private List<String> files;
+    private Integer projectId;
+    private String handler;
+    private Integer handlerType;
+    private String result;
+    private String description;
+    private Date deadLineTime;//截止日期
+}

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/projectTask/TaskFormDTO.java

@@ -20,4 +20,5 @@ public class TaskFormDTO {
      * 备注
      * 备注
      */
      */
     private String description;
     private String description;
+    private Integer lastTaskId;
 }
 }

+ 17 - 6
src/main/java/cn/cslg/pas/controller/projectTask/ExamineController.java

@@ -3,9 +3,7 @@ package cn.cslg.pas.controller.projectTask;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.cronModel.Records;
-import cn.cslg.pas.common.model.projectTask.AddFileExamineTaskDTO;
-import cn.cslg.pas.common.model.projectTask.GetExamineHistoryDTO;
-import cn.cslg.pas.common.model.projectTask.GetExamineMessageDTO;
+import cn.cslg.pas.common.model.projectTask.*;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.AssoTaskFileVO;
 import cn.cslg.pas.common.vo.business.AssoTaskFileVO;
@@ -26,6 +24,7 @@ import java.util.List;
 
 
 /**
 /**
  * 项目任务的Controller层
  * 项目任务的Controller层
+ *
  * @Author xiexiang
  * @Author xiexiang
  * @Date 2023/11/22
  * @Date 2023/11/22
  */
  */
@@ -38,6 +37,8 @@ public class ExamineController {
 
 
     @Autowired
     @Autowired
     private AssoTaskFileService assoTaskFileService;
     private AssoTaskFileService assoTaskFileService;
+    @Autowired
+    private TaskHandleResultService taskHandleResultService;
 
 
     @Operation(summary = "添加挖掘项目开卷审核任务")
     @Operation(summary = "添加挖掘项目开卷审核任务")
     @PostMapping("/addFileExamineTask")
     @PostMapping("/addFileExamineTask")
@@ -45,18 +46,28 @@ public class ExamineController {
         Integer id = projectTaskService.addFileExamineTask(addFileExamineTaskDTO);
         Integer id = projectTaskService.addFileExamineTask(addFileExamineTaskDTO);
         return Response.success(id);
         return Response.success(id);
     }
     }
+
     @Operation(summary = "添加挖掘项目开卷审核任务")
     @Operation(summary = "添加挖掘项目开卷审核任务")
     @PostMapping("/getExamineMessage")
     @PostMapping("/getExamineMessage")
     public Response getExamineMessage(@RequestBody GetExamineMessageDTO getExamineMessageDTO) throws IOException {
     public Response getExamineMessage(@RequestBody GetExamineMessageDTO getExamineMessageDTO) throws IOException {
-        Integer taskId =getExamineMessageDTO.getTaskId();
+        Integer taskId = getExamineMessageDTO.getTaskId();
         List<AssoTaskFileVO> assoTaskFiles = assoTaskFileService.getAssoTaskFile(taskId);
         List<AssoTaskFileVO> assoTaskFiles = assoTaskFileService.getAssoTaskFile(taskId);
         return Response.success(assoTaskFiles);
         return Response.success(assoTaskFiles);
     }
     }
+
     @Operation(summary = "添加挖掘项目开卷审核任务")
     @Operation(summary = "添加挖掘项目开卷审核任务")
     @PostMapping("/getExamineHistory")
     @PostMapping("/getExamineHistory")
     public Response getExamineHistory(@RequestBody GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
     public Response getExamineHistory(@RequestBody GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
-        List<AssoTaskFileVO> assoTaskFiles = projectTaskService.getExamineHistory(getExamineHistoryDTO);
-        return Response.success(assoTaskFiles);
+        List<TaskResultVO> taskResultVOs = projectTaskService.getExamineHistory(getExamineHistoryDTO);
+        return Response.success(taskResultVOs);
     }
     }
 
 
+    @Operation(summary = "添加挖掘项目开卷审核任务")
+    @PostMapping("/submitResult")
+    public Response submitResult(@RequestBody SubmitResultDTO submitResultDTO) throws IOException {
+        Integer id = taskHandleResultService.addTaskAuditResult(submitResultDTO);
+        return Response.success(id);
+    }
+
+
 }
 }

+ 2 - 1
src/main/java/cn/cslg/pas/domain/business/AssoHandleResultFile.java

@@ -39,5 +39,6 @@ public class AssoHandleResultFile extends BaseEntity<AssoHandleResultFile> {
      */
      */
     @TableField(value = "create_time")
     @TableField(value = "create_time")
     private Date createTime;
     private Date createTime;
-
+    @TableField(value = "root_file_guid")
+    private String rootFileGuid;
 }
 }

+ 77 - 124
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -1358,6 +1358,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         Integer handleType = taskFormDTO.getHandlerType();
         Integer handleType = taskFormDTO.getHandlerType();
         String handleName = taskFormDTO.getHandler();
         String handleName = taskFormDTO.getHandler();
         Date deadLineTime = taskFormDTO.getDeadLineTime();
         Date deadLineTime = taskFormDTO.getDeadLineTime();
+        Integer lastTaskId = taskFormDTO.getLastTaskId();
         ProjectTask projectTask = new ProjectTask();
         ProjectTask projectTask = new ProjectTask();
         projectTask.setName(name);
         projectTask.setName(name);
         projectTask.setHandlerType(handleType);
         projectTask.setHandlerType(handleType);
@@ -1369,6 +1370,24 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         //获取登录人信息
         //获取登录人信息
         PersonnelVO personnelVO = new PersonnelVO();
         PersonnelVO personnelVO = new PersonnelVO();
         personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        if (lastTaskId != null) {
+            ProjectTask projectTask1 = this.getById(lastTaskId);
+            projectTask.setLastTaskId(lastTaskId);
+            projectTask.setProjectId(projectTask1.getProjectId());
+            Integer rootTaskId = projectTask.getAssoTaskId();
+            if (rootTaskId == null) {
+                rootTaskId = projectTask1.getId();
+            }
+            projectTask.setAssoTaskId(rootTaskId);
+            String lastPath = projectTask1.getTaskPath();
+            if (lastPath == null) {
+                lastPath = "";
+            } else {
+                lastPath += "/";
+            }
+            projectTask.setTaskPath(lastPath + projectTask1.getId());
+
+        }
         //设置任务的发起人
         //设置任务的发起人
         projectTask.setCreateId(personnelVO.getId());
         projectTask.setCreateId(personnelVO.getId());
         projectTask.insert();
         projectTask.insert();
@@ -1404,10 +1423,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     /**
     /**
      * 根据任务id查询任务详情以及处理结果以及审核历史
      * 根据任务id查询任务详情以及处理结果以及审核历史
      *
      *
-     * @param taskId
+     * @param getExamineHistoryDTO
      * @return
      * @return
      */
      */
-    public TaskDetailsVO getExamineHistory(GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
+    public List<TaskResultVO> getExamineHistory(GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
+        List<TaskResultVO> taskDetailsVOs = new ArrayList<>();
         Integer taskId = getExamineHistoryDTO.getTaskId();
         Integer taskId = getExamineHistoryDTO.getTaskId();
         String fileGuid = getExamineHistoryDTO.getFileGuid();
         String fileGuid = getExamineHistoryDTO.getFileGuid();
         String rootGuid = fileGuid;
         String rootGuid = fileGuid;
@@ -1433,137 +1453,70 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         List<ProjectTask> projectTasks = this.list(queryWrapper);
         List<ProjectTask> projectTasks = this.list(queryWrapper);
         List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
         List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
 
 
-        LambdaQueryWrapper<AssoTaskFile> taskFileQueryWrapper = new LambdaQueryWrapper<>();
-        taskFileQueryWrapper.in(AssoTaskFile::getTaskId, taskIds);
-        if (fileGuid != null) {
-            taskFileQueryWrapper.eq(AssoTaskFile::getRootFileGuid, rootGuid);
-        }
-        List<AssoTaskFile> assoTaskFiles =assoTaskFileService.list(taskFileQueryWrapper);
-        List<String> fileGuids =assoTaskFiles.stream().map(AssoTaskFile::getFileGuid).collect(Collectors.toList());
-
-        LambdaQueryWrapper<TaskHandleResult> resultLambdaQueryWrapper=new LambdaQueryWrapper<>();
-        resultLambdaQueryWrapper.in(TaskHandleResult::getTaskId,taskIds);
-        List<TaskHandleResult> taskHandleResults =taskHandleResultService.list(resultLambdaQueryWrapper);
 
 
-        taskHandleResults.forEach(item->{
+        LambdaQueryWrapper<TaskHandleResult> resultLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        resultLambdaQueryWrapper.in(TaskHandleResult::getTaskId, taskIds);
+        List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(resultLambdaQueryWrapper);
 
 
-        });
-        //新建返回VO类
-        TaskDetailsVO taskDetailsVO = new TaskDetailsVO();
-        List<HandleResultFileVO> handleResultFileVOS = new ArrayList<>();
-        List<AuditHistoryVO> auditHistoryVOS = new ArrayList<>();
-        //根据taskId查询此条任务详情
-        ProjectTask currentTask = this.getById(taskId);
-        //根据此条任务详情获取assoTaskId
-        //使用Optional避免空指针异常:使用Optional来处理可能为空的变量,例如currentTask和assoTask。
-        Optional<ProjectTask> currentTaskOptional = Optional.ofNullable(currentTask);
-        Integer assoTaskId = currentTaskOptional.map(ProjectTask::getAssoTaskId).orElse(null);
-        String taskPath = currentTaskOptional.map(ProjectTask::getTaskPath).orElse(null);
-        List<ProjectTask> allProjectTasks = new ArrayList<>();
-        if (assoTaskId != null) {
-            //根据assoTaskId获取最初任务的详情
-            ProjectTaskVO projectTaskVO = new ProjectTaskVO();
-            ProjectTask assoTask = this.getById(assoTaskId);
-            if (assoTask != null) {
-                //装载最初任务详情
-                BeanUtils.copyProperties(assoTask, projectTaskVO);
-                taskDetailsVO.setProjectTaskVO(projectTaskVO);
-                //根据assoTaskId查询所有任务的id
-                List<Integer> ids = new ArrayList<>();
-                ids.add(taskId);
-                if (taskPath != null) {
-                    List<String> a = Arrays.asList(taskPath.split("/"));
-                    List<Integer> b = FormatUtil.StringTOIntegerList(a);
-                    ids.addAll(b);
-                }
-                LambdaQueryWrapper<ProjectTask> allTaskWrapper = new LambdaQueryWrapper<>();
-                allTaskWrapper.in(ProjectTask::getId, ids);
-                allProjectTasks = this.list(allTaskWrapper);
+        List<Integer> resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<AssoHandleResultFile> resultFileWrapper = new LambdaQueryWrapper<>();
+        resultFileWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
+        if (fileGuid != null) {
+            resultFileWrapper.eq(AssoHandleResultFile::getRootFileGuid, rootGuid);
+        }
+        List<AssoHandleResultFile> resultFiles = assoHandleResultFileService.list(resultFileWrapper);
+        List<String> fileGuids = resultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
+        List<SystemFile> systemFiles = new ArrayList<>();
+        if (!fileGuids.isEmpty()) {
+            String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+            systemFiles = JSONObject.parseArray(res, SystemFile.class);
+        }
+
+        for (TaskHandleResult taskHandleResult : taskHandleResults) {
+            Integer id = taskHandleResult.getId();
+            TaskResultVO taskResultVO = new TaskResultVO();
+            BeanUtils.copyProperties(taskHandleResult, taskResultVO);
+            List<String> temGuids = resultFiles.stream().filter(item -> item.getTaskHandleResultId().equals(id)).map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
+            if (temGuids != null && temGuids.size() > 0) {
+                List<SystemFile> systemFileList = systemFiles.stream().filter(item -> temGuids.contains(item.getGuid())).collect(Collectors.toList());
+                taskResultVO.setFiles(systemFileList);
+                taskDetailsVOs.add(taskResultVO);
             }
             }
-        }
 
 
+        }
+        //装载名称
+        this.loadTaskResultVos(taskDetailsVOs);
+        return taskDetailsVOs;
+    }
 
 
-        //审核历史返回VO以及集合
-        if (allProjectTasks != null) {
-            auditHistoryVOS = allProjectTasks.stream()
-                    //过滤筛选掉分配任务的信息
-                    .filter(item -> item.getId() != item.getAssoTaskId())
-                    .map(item -> {
-                        //新建VO
-                        AuditHistoryVO auditHistoryVO = new AuditHistoryVO();
-                        ProjectTaskVO auditHistoryTaskVO = new ProjectTaskVO();
-                        BeanUtils.copyProperties(item, auditHistoryTaskVO);
-                        //处理结果VO
-                        TaskHandleResultVO taskHandleResultVO = new TaskHandleResultVO();
-                        LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
-                        queryWrapper.eq(TaskHandleResult::getTaskId, item.getId());
-                        List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
-                        if (taskHandleResults.size() != 0) {
-                            TaskHandleResult taskHandleResult = taskHandleResults.get(0);
-                            if (taskHandleResult != null) {
-                                BeanUtils.copyProperties(taskHandleResult, taskHandleResultVO);
-                                auditHistoryVO.setProjectTaskVO(auditHistoryTaskVO);
-                                auditHistoryVO.setTaskHandleResultVO(taskHandleResultVO);
-                                return auditHistoryVO;
-                            }
-                        }
-                        return null;//返回空值不装到列表中
-                    })
-                    //过滤掉空对象
-                    .filter(Objects::nonNull)
-                    .sorted(Comparator.comparing(
-                            a -> a.getTaskHandleResultVO(),
-                            Comparator.nullsLast(Comparator.comparing(TaskHandleResultVO::getCreateTime, Comparator.reverseOrder()))))
-                    .collect(Collectors.toList());
+    /**
+     * 装载任务详情的集合
+     *
+     * @param taskResultVOs
+     * @throws IOException
+     */
+    public void loadTaskResultVos(List<TaskResultVO> taskResultVOs) throws IOException {
+        //装载项目名称
+        List<String> createIds = taskResultVOs.stream().map(TaskResultVO::getCreateId).collect(Collectors.toList());
 
 
-            taskDetailsVO.setAuditHistoryVOS(auditHistoryVOS);
+        List<Personnel> personnels = new ArrayList<>();
+        //查询创建人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
         }
         }
-        //全部的文件信息(获取所有的任务的id,查出所有的结果id)
-        List<Integer> allTaskIds = allProjectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
-        LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.in(TaskHandleResult::getTaskId, allTaskIds);
-        List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
 
 
-        List<Integer> resultIds = new ArrayList<>();
-        if (taskHandleResults != null && !taskHandleResults.isEmpty()) {
-            resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
-        }
-        //根据所有的结果ids查询所有fileGuids
-        if (resultIds != null && !resultIds.isEmpty()) {
-            LambdaQueryWrapper<AssoHandleResultFile> allGuidsWrapper = new LambdaQueryWrapper<>();
-            allGuidsWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
-            List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(allGuidsWrapper);
-            List<String> fileGuids = new ArrayList<>();
-            List<SystemFile> systemFiles = new ArrayList<>();
-            if (!assoHandleResultFiles.isEmpty()) {
-                fileGuids = assoHandleResultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
-            }
-            //调用文件系统查询文件信息接口
-            if (!fileGuids.isEmpty()) {
-                String res = fileManagerService.getSystemFileFromFMS(fileGuids);
-                systemFiles = JSONObject.parseArray(res, SystemFile.class);
-            }
-            if (!systemFiles.isEmpty()) {
-                for (AssoHandleResultFile assoHandleResultFile : assoHandleResultFiles) {
-                    HandleResultFileVO handleResultFileVO = new HandleResultFileVO();
-                    //装载文件信息
-                    SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(assoHandleResultFile.getFileGuid())).findFirst().orElse(null);
-                    if (systemFile != null) {
-                        BeanUtils.copyProperties(assoHandleResultFile, handleResultFileVO);
-                        handleResultFileVO.setGuid(assoHandleResultFile.getFileGuid());
-                        handleResultFileVO.setSource(2);
-                        handleResultFileVO.setType(systemFile.getType());
-                        handleResultFileVO.setOriginalName(systemFile.getOriginalName());
-                    }
-                    handleResultFileVOS.add(handleResultFileVO);
-                }
+        //装载所有审查历史中的人员name
+        for (TaskResultVO taskResultVO : taskResultVOs) {
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(taskResultVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                taskResultVO.setCreateName(personnel.getPersonnelName());
+            } else {
+                throw new XiaoShiException("未获取到分配任务的负责人id信息");
             }
             }
         }
         }
-        taskDetailsVO.setSystemFileList(handleResultFileVOS.stream()
-                .sorted(Comparator.comparing(HandleResultFileVO::getCreateTime).reversed())
-                .collect(Collectors.toList()));
-        //装载名称
-        this.loadTaskDetails(taskDetailsVO);
-        return taskDetailsVO;
+        return;
     }
     }
+
 }
 }

+ 86 - 6
src/main/java/cn/cslg/pas/service/business/TaskHandleResultService.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.dto.business.ProjectTaskDTO;
 import cn.cslg.pas.common.dto.business.TaskHandleResultDTO;
 import cn.cslg.pas.common.dto.business.TaskHandleResultDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.model.projectTask.*;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.utils.StringUtils;
@@ -17,16 +18,16 @@ import cn.cslg.pas.service.common.FileManagerService;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
+import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -60,7 +61,7 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
     @Autowired
     @Autowired
     private ReportProjectService reportProjectService;
     private ReportProjectService reportProjectService;
     @Autowired
     @Autowired
-    private PatentDigProjectFilesService patentDigProjectFilesService;
+    private AssoTaskFileService assoTaskFileService;
 
 
     /**
     /**
      * 添加任务处理结果
      * 添加任务处理结果
@@ -102,7 +103,7 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
         ProjectTask currentProjectTask = projectTaskService.getById(currentTaskId);
         ProjectTask currentProjectTask = projectTaskService.getById(currentTaskId);
         //如果当前处理的是审核任务或者项目开卷审核任务,进入以下流程
         //如果当前处理的是审核任务或者项目开卷审核任务,进入以下流程
         Integer taskType = currentProjectTask.getType();
         Integer taskType = currentProjectTask.getType();
-        if (taskType == 5 || taskType == 1||taskType==7) {
+        if (taskType == 5 || taskType == 1 || taskType == 7) {
             //判断下一个审核人
             //判断下一个审核人
             String nextAuditor = taskHandleResult.getNextAuditor();
             String nextAuditor = taskHandleResult.getNextAuditor();
             if (StringUtils.isNotEmpty(nextAuditor)) {
             if (StringUtils.isNotEmpty(nextAuditor)) {
@@ -248,4 +249,83 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
         return getHandleResultFileVO;
         return getHandleResultFileVO;
     }
     }
 
 
+    @Transactional(rollbackFor = Exception.class)
+    public Integer addTaskAuditResult(SubmitResultDTO submitResultDTO) throws IOException {
+        Integer taskId = submitResultDTO.getTaskId();
+        Integer projectId = submitResultDTO.getProjectId();
+        Integer handlerType = submitResultDTO.getHandlerType();
+        String handler = submitResultDTO.getHandler();
+        Date deadLineTime =submitResultDTO.getDeadLineTime();
+        List<String> extraFiles = submitResultDTO.getFiles();
+        Integer createId = loginUtils.getId();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        TaskHandleResult taskHandleResult = new TaskHandleResult();
+        BeanUtils.copyProperties(submitResultDTO, taskHandleResult);
+        if (handlerType != null && handlerType.equals(0)) {
+            taskHandleResult.setIfInner(true);
+        } else {
+            taskHandleResult.setIfInner(false);
+        }
+        taskHandleResult.setCreateId(personnelVO.getId());
+        //任务处理结果入库
+        taskHandleResult.insert();
+        Integer resultId = taskHandleResult.getId();
+        //根据taskId 查询待审核文件
+        List<AssoTaskFile> assoTaskFiles = new ArrayList<>();
+        LambdaQueryWrapper<AssoTaskFile> taskFileQueryWrapper = new LambdaQueryWrapper<>();
+        taskFileQueryWrapper.eq(AssoTaskFile::getTaskId, taskId);
+        assoTaskFiles = assoTaskFileService.list(taskFileQueryWrapper);
+        List<AssoHandleResultFile> assoHandleResultFiles = new ArrayList<>();
+        List<File> files = new ArrayList<>();
+        for (AssoTaskFile assoTaskFile : assoTaskFiles) {
+            String rootFileGuid = assoTaskFile.getRootFileGuid();
+            if (rootFileGuid == null) {
+                rootFileGuid = assoTaskFile.getFileGuid();
+            }
+            File file = fileManagerService.getTempFileByGuid(assoTaskFile.getFileGuid());
+            files.add(file);
+            List<String> guids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
+            if (guids != null && guids.size() > 0) {
+                AssoHandleResultFile assoHandleResultFile = new AssoHandleResultFile();
+                assoHandleResultFile.setRootFileGuid(rootFileGuid);
+                assoHandleResultFile.setFileGuid(guids.get(0));
+                assoHandleResultFile.setTaskHandleResultId(resultId);
+                assoHandleResultFiles.add(assoHandleResultFile);
+                assoHandleResultFile.setCreateId(createId + "");
+            }
+        }
+        if (extraFiles != null && extraFiles.size() > 0) {
+            extraFiles.forEach(item -> {
+                AssoHandleResultFile assoHandleResultFile = new AssoHandleResultFile();
+                assoHandleResultFile.setFileGuid(item);
+                assoHandleResultFile.setTaskHandleResultId(resultId);
+                assoHandleResultFile.setCreateId(createId + "");
+                assoHandleResultFiles.add(assoHandleResultFile);
+            });
+        }
+        assoHandleResultFileService.saveBatch(assoHandleResultFiles);
+
+        if (handler != null) {
+         List<String> guids=   fileManagerService.uploadFileGetGuid2(files);
+            FileFormDTO fileFormDTO =new FileFormDTO();
+            List<FileDTO> fileDTOS =new ArrayList<>();
+
+            guids.forEach(item->{
+                FileDTO fileDTO =new FileDTO();
+                fileDTO.setGuid(item);
+                fileDTOS.add(fileDTO);
+            });
+            fileFormDTO.setFiles(fileDTOS);
+            TaskFormDTO taskFormDTO =new TaskFormDTO();
+            taskFormDTO.setLastTaskId(taskId);
+            taskFormDTO.setHandler(handler);
+            taskFormDTO.setHandlerType(handlerType);
+            taskFormDTO.setDeadLineTime(deadLineTime);
+            AddFileExamineTaskDTO addFileExamineTaskDTO =new AddFileExamineTaskDTO();
+            addFileExamineTaskDTO.setTaskForm(taskFormDTO);
+            addFileExamineTaskDTO.setFileForm(fileFormDTO);
+           projectTaskService.addFileExamineTask(addFileExamineTaskDTO);
+        }
+        return taskHandleResult.getId();
+    }
 }
 }

+ 23 - 2
src/main/java/cn/cslg/pas/service/common/FileManagerService.java

@@ -1,21 +1,24 @@
 package cn.cslg.pas.service.common;
 package cn.cslg.pas.service.common;
 
 
 import cn.cslg.pas.common.dto.FMSDeleteFileDTO;
 import cn.cslg.pas.common.dto.FMSDeleteFileDTO;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.Gson;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.*;
 import okhttp3.*;
+import org.apache.commons.compress.utils.IOUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.FileCopyUtils;
 import org.springframework.util.FileCopyUtils;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
@@ -228,4 +231,22 @@ public class FileManagerService {
                 .build();
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
     }
+
+    public  File getTempFileByGuid(String guid)throws IOException{
+        String res = this.getSystemFileFromFMS(Arrays.asList(guid));
+        List<SystemFile> systemFiles = JSONArray.parseArray(res, SystemFile.class);
+        SystemFile systemFile = systemFiles.get(0);
+        String suffix = systemFile.getFileName().substring(systemFile.getFileName().lastIndexOf("."));
+        //调用文件系统取出文件接口,获得文件流
+        byte[] bytes = this.downloadSystemFileFromFMS(guid);
+        //创建临时文件tempFile,并将文件读取到tempFile
+        File tempFile = File.createTempFile(systemFile.getFileName() + "temp", suffix);
+        try (
+                InputStream inputStream = new ByteArrayInputStream(bytes);
+                FileOutputStream outputStream = new FileOutputStream(tempFile);
+        ) {
+            IOUtils.copy(inputStream, outputStream); // 将输入流复制到临时文件
+        }
+        return  tempFile;
+    }
 }
 }