ソースを参照

关联原生电子文件到归档

huangtf 2 年 前
コミット
186f24194a

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1164,6 +1164,8 @@ public class InformationWriteQueryController extends BladeController {
                                     }
                                 }
                             }
+
+                            iTaskService.delArchiveFileBusinessData(query.getProjectId(),query.getWbsId());
                         }
 
                         //更新Redis缓存

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -83,4 +83,9 @@ public interface ITaskService extends BaseService<Task> {
     Map<String, String> queryContractAllBatch(String contract);
 
     void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String newFileUrl);
+
+    /**
+     * 清除废除任务是的业务数据
+     */
+    void delArchiveFileBusinessData(Long projectId,Long wbsId);
 }

+ 62 - 25
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1041,22 +1041,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     .in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
         }
 
-        //TODO 测试完成后打开
-        InformationQuery query = this.informationQueryService.getById(formDataId);
-        if (query != null) {
-
-            ArchiveProjectConfig archiveProjectConfig = archiveAutoClient.getByProjectIdOrNew(query.getProjectId());
-
-            //测试阶段,必须打开项目配置才能同步wbs节点
-            if (archiveProjectConfig!= null && archiveProjectConfig.getFactorType().contains("6")) {
-                //todo 等测试OK再打开
-                try {
-                    archiveTreeContractClient.writeBusinessData(query.getWbsId(),query.getContractId(),formDataId);
-                } catch (Exception e) {
-                }
-            }
-        }
-
+        //关联原生电子文件到归档
+        handleArchiveFileBusinessData(formDataId,status);
     }
 
     /**
@@ -1070,6 +1056,37 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 .set(ArchiveFile::getEVisaFile, newFileUrl);
         this.archiveFileService.update(wrapper.in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))));
     }
+
+
+    /**
+     * 关联原生电子文件到归档
+     * @param formDataId
+     * @param status 任务状态
+     */
+    public void handleArchiveFileBusinessData(String formDataId, Integer status)
+    {
+        InformationQuery query = this.informationQueryService.getById(formDataId);
+        if (query != null) {
+            ArchiveProjectConfig archiveProjectConfig = archiveAutoClient.getByProjectIdOrNew(query.getProjectId());
+
+            //测试阶段,必须打开项目配置才能同步wbs节点
+            if (archiveProjectConfig != null && archiveProjectConfig.getFactorType().contains("6")) {
+                //废除
+                if (status == 0) {
+                    delArchiveFileBusinessData(query.getProjectId(), query.getWbsId());
+                } else //电签完成
+                {
+                    try {
+                        archiveTreeContractClient.writeBusinessData(query.getWbsId(), query.getContractId(), formDataId);
+                    } catch (Exception e) {
+                    }
+                }
+
+            }
+        }
+    }
+
+
     @Override
     public void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String formDataId) {
 
@@ -1080,7 +1097,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
         ContractInfo contractIndfo = contractClient.getContractById(contractId);
 
-        ArchiveFile archiveFile = this.archiveFileService.getOne(Wrappers.<ArchiveFile>lambdaQuery()
+        List<ArchiveFile> archiveFiles = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery()
                 .eq(ArchiveFile::getNodeId, nodeId.toString())
                 .eq(ArchiveFile::getNodeExtId, keyId)
                 .eq(ArchiveFile::getIsDeleted, 0));
@@ -1089,20 +1106,21 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         listFiles.add(query.getEVisaPdfUrl());
         //Long fileSize = FileUtils.getOssFileSizeCount(listFiles);
 
-        if (archiveFile != null) {
-            archiveFile.setEVisaFile(query.getEVisaPdfUrl());
-            archiveFile.setPdfFileUrl(query.getEVisaPdfUrl()); // 这里将pdfFileUrl也更新了,因为需求中没有限制只能更新eVisaFile属性
-            archiveFile.setFileSize(query.getEVisaPdfSize());
-            this.archiveFileService.updateById(archiveFile);
-
+        if (archiveFiles != null && archiveFiles.size() > 0) {
+            for (ArchiveFile archiveFile: archiveFiles) {
+                archiveFile.setEVisaFile(query.getEVisaPdfUrl());
+                archiveFile.setPdfFileUrl(query.getEVisaPdfUrl()); // 这里将pdfFileUrl也更新了,因为需求中没有限制只能更新eVisaFile属性
+                archiveFile.setFileSize(query.getEVisaPdfSize());
+                this.archiveFileService.updateById(archiveFile);
+            }
         } else {
             Date createTime = null;
             WbsTreeContract wbsTreeContract = wbsTreeContractClient.getContractNodeByPrimaryKeyId(keyId.toString());
             if (wbsTreeContract!= null ) {
                 createTime = wbsTreeContract.getCreateTime();
             }
-            archiveFile = getArchiveFile(query,nodeId,keyId,query.getEVisaPdfSize(),contractIndfo.archivesUnit(),createTime);
-            this.archiveFileService.save(archiveFile);
+            ArchiveFile newArchiveFile = getArchiveFile(query,nodeId,keyId,query.getEVisaPdfSize(),contractIndfo.archivesUnit(),createTime);
+            this.archiveFileService.save(newArchiveFile);
         }
     }
 
@@ -1144,4 +1162,23 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         //archiveFile.setFileTime(info.getCreateTime());
     }
 
+    /**
+     * 废除任务时删除原生电子文件数据
+     * @param projectId
+     * @param wbsId
+     */
+    public void delArchiveFileBusinessData(Long projectId,Long wbsId) {
+        List<ArchiveFile> archiveFiles = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery()
+                .eq(ArchiveFile::getProjectId, projectId)
+                .eq(ArchiveFile::getNodeExtId, wbsId)
+                .eq(ArchiveFile::getIsDeleted, 0));
+
+        if (archiveFiles!= null && archiveFiles.size() > 0) {
+            List<Long> ids = archiveFiles.stream()
+                    .map(ArchiveFile::getId)
+                    .collect(Collectors.toList());
+            archiveFileService.deleteLogic(ids);
+        }
+    }
+
 }