Browse Source

关联电子文件到归档

huangtf 2 years ago
parent
commit
8bdce83b97

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -404,7 +404,7 @@
                pdf_file_url as pdfFileUrl,
                sort
         from u_archive_file
-        where contract_id = #{contractId} and is_deleted = 0;
+        where contract_id = #{contractId} and is_deleted = 0 and source_type = 1;
     </select>
 
 </mapper>

+ 13 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -39,6 +39,7 @@ import org.springblade.flow.core.vo.FlowProcessVO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.ProjectClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
@@ -107,6 +108,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     private final WbsTreeContractClient wbsTreeContractClient;
 
+    private final ArchiveTreeContractClient archiveTreeContractClient;
+
     @Autowired
     StringRedisTemplate RedisTemplate;
 
@@ -968,6 +971,16 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 .set(InformationQuery::getReportNumber, null)
                 .set(InformationQuery::getAuditUserIdAndName, null)
                 .in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
+
+        //TODO 测试完成后打开
+//        InformationQuery query = this.informationQueryService.getById(formDataId);
+//        if (query != null) {
+//            try {
+//                archiveTreeContractClient.writeBusinessData(query.getWbsId(),query.getContractId(),formDataId);
+//            } catch (Exception e) {
+//            }
+//        }
+
     }
 
     /**

+ 19 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -23,6 +23,7 @@ import lombok.AllArgsConstructor;
 
 import javax.validation.Valid;
 
+import lombok.extern.slf4j.Slf4j;
 import org.checkerframework.checker.units.qual.A;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.cache.utils.CacheUtil;
@@ -37,7 +38,10 @@ import org.springblade.manager.dto.ArchiveTreeContractDTO;
 import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
 import org.springblade.manager.entity.ArchiveTree;
+import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.service.IArchiveTreeService;
+import org.springblade.manager.service.IContractInfoService;
 import org.springblade.manager.service.impl.ArchiveTreeContractSyncImpl;
 import org.springblade.manager.vo.ArchiveTreeContractVO2;
 
@@ -64,6 +68,7 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
  * @author 00
  * @since 2023-02-18
  */
+@Slf4j
 @RestController
 @AllArgsConstructor
 @RequestMapping("/archiveTreeContract")
@@ -76,6 +81,8 @@ public class ArchiveTreeContractController extends BladeController {
 
     private final ArchiveTreeContractSyncImpl archiveTreeContractSync;
 
+    private final IContractInfoService contractInfoService;
+
     /**
      * 详情
      */
@@ -382,11 +389,20 @@ public class ArchiveTreeContractController extends BladeController {
         return R.data(archiveTreeContractService.getChildrenNodeByNodeId(nodeId));
     }
 
-    @PostMapping("getChildrenNodeByNodeId")
+    @PostMapping("syncBusinessData")
     @ApiOperation(value = "同步业务数据", notes = "传入节点id")
     public R syncBusinessData(Long projectId,Long contractId) {
+        ContractInfo contract = contractInfoService.getById(contractId);
+
+        Integer isArchivesAuto = contract.getIsArchivesAuto();
+        if(isArchivesAuto!=-1 && isArchivesAuto!=null && isArchivesAuto!=0){
+            return R.fail("当前合同段已经在同步中,请耐心等待");
+        }
+        log.info("开始自动组卷...." + contractId);
+        //设置自动组卷中
+        contractInfoService.updateIsArchivesAutoById(contractId,1);
 
-        archiveTreeContractSync.syncBusinessData(projectId,contractId);
-        return R.success("同步成功");
+        archiveTreeContractSync.syncBusinessDataThread(projectId,contractId);
+        return R.success("开始同步合同段,请耐心等待" );
     }
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java

@@ -81,4 +81,6 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     R getTreeNodeByValueAndContractId(String queryValue, String contractId);
 
+    void updateIsArchivesAutoById(Long id, Integer isArchivesAuto);
+
 }

+ 31 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -2,6 +2,7 @@ package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.entity.InformationQuery;
 import org.springblade.business.feign.ArchiveFileClient;
@@ -20,10 +21,13 @@ import org.springblade.manager.utils.ForestNodeMerger;
 import org.springblade.manager.vo.ArchiveTreeContractVO2;
 import org.springblade.manager.vo.ArchiveTreeVO2;
 import org.springblade.manager.vo.WbsTreeContractVO6;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.concurrent.ExecutorService;
 
+@Slf4j
 @Service
 @AllArgsConstructor
 public class ArchiveTreeContractSyncImpl {
@@ -43,6 +47,9 @@ public class ArchiveTreeContractSyncImpl {
     private final InformationQueryClient informationQueryClient;
 
 
+    private ExecutorService executorService;
+
+
     /**
      * 普通同步
      *
@@ -230,6 +237,30 @@ public class ArchiveTreeContractSyncImpl {
         return saveList;
     }
 
+    /**
+     * 同步线程
+     * @param projectId
+     * @param contractId
+     */
+    public void  syncBusinessDataThread(Long projectId,Long contractId) {
+
+        executorService.execute(()->{
+            try{
+                //将项目未锁定案卷拆卷
+                syncBusinessData(projectId,contractId);
+
+                contractInfoService.updateIsArchivesAutoById(contractId, 0);
+
+            }catch (Exception e){
+                e.printStackTrace();
+                log.error("同步报错。"+e.getMessage()+"--projectId:"+projectId+"-contractId:"+contractId);
+                //设置自动组卷结束
+                contractInfoService.updateIsArchivesAutoById(contractId, 0);
+            }
+        });
+
+    }
+
 
     /**
      * 同步某个合同段的质检资料到归档
@@ -238,14 +269,6 @@ public class ArchiveTreeContractSyncImpl {
      */
     public void  syncBusinessData(Long projectId,Long contractId) {
 
-        //检查是否有配置关联质检的节
-        //新增的文件题名
-        List<InformationQuery> newInformationQueryList = new ArrayList<>();
-        //新增的文件
-        List<ArchiveFile> newArchiveFiles = new ArrayList<>();
-        //更新的文件
-        List<ArchiveFile> updateArchiveFiles = new ArrayList<>();
-
         //项目信息
         ProjectInfo projectInfo = projectInfoService.getOne(projectId);
 

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -887,5 +887,12 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         return wbsTreeContractVOSLazy;
     }
 
+    @Override
+    public void updateIsArchivesAutoById(Long id, Integer isArchivesAuto) {
+        ContractInfo contractInfo = this.getById(id);
+        contractInfo.setIsArchivesAuto(isArchivesAuto);
+        this.updateById(contractInfo);
+    }
+
 
 }