luok 2 éve
szülő
commit
6c689be835

+ 2 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ProjectClient.java

@@ -35,5 +35,6 @@ public interface ProjectClient {
      */
     @GetMapping(API_PREFIX + "/updateIsArchivesAutoById")
     void updateIsArchivesAutoById(@RequestParam Long id,@RequestParam Integer isArchivesAuto);
-
+    @GetMapping(API_PREFIX + "/getList")
+    List<ProjectInfo> getList();
 }

+ 29 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/config/ScheduledTask.java

@@ -0,0 +1,29 @@
+package org.springblade.archive.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.manager.entity.ProjectInfo;
+import org.springblade.manager.feign.ProjectClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Component
+public class ScheduledTask {
+
+    @Autowired
+    private ProjectClient projectClient;
+
+    //@Scheduled(cron ="0/10 * * * * ?")
+    public void archiveAutoMethod() {
+        log.info("自动组卷定时任务开始");
+        List<ProjectInfo> list = projectClient.getList();
+        for(ProjectInfo projectInfo:list){
+
+        }
+        log.info("自动组卷定时任务结束");
+    }
+
+}

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/config/ThreadPoolConfig.java

@@ -13,7 +13,7 @@ public class ThreadPoolConfig {
 
     @Bean(name = "executorService")
     public ExecutorService executorService(){
-        return Executors.newFixedThreadPool(10);
+        return Executors.newFixedThreadPool(20);
     }
 
 }

+ 31 - 10
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -24,6 +24,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.service.IArchiveAutoPdfService;
 import org.springblade.business.entity.ArchiveFile;
@@ -36,6 +37,8 @@ import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.manager.feign.ProjectClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,6 +51,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
 import java.util.stream.Collectors;
 
 /**
@@ -56,6 +60,7 @@ import java.util.stream.Collectors;
  * @author BladeX
  * @since 2023-02-17
  */
+@Slf4j
 @RestController
 @AllArgsConstructor
 @RequestMapping("/archivesauto")
@@ -67,6 +72,8 @@ public class ArchivesAutoController extends BladeController {
 	private final IArchiveAutoPdfService archiveAutoPdfService;
 	private final ArchiveTreeContractClient archiveTreeContractClient;
 	private ProjectClient projectClient;
+	@Autowired
+	private ExecutorService executorService;
 	/**
 	 * 详情
 	 */
@@ -331,22 +338,36 @@ public class ArchivesAutoController extends BladeController {
 			ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
 			Integer isArchivesAuto = projectInfo.getIsArchivesAuto();
 			if(isArchivesAuto!=null && isArchivesAuto==1){
-				return R.fail("当前项目已经在自动组卷中");
+				return R.fail("当前项目已经在自动组卷中,请耐心等待");
 			}
 			//设置自动组卷中
 			projectClient.updateIsArchivesAutoById(projectId,1);
 
-			//将项目未锁定案卷拆卷
-			archivesAutoService.splitArchvies(projectId,contractId,nodeId);
-			//项目自动组卷入口
-			archivesAutoService.archiveAutoMethod(projectId,contractId,nodeId);
-			//刷新项目档号
-			archivesAutoService.refreshFileNumberNoSlipt(projectId,contractId,nodeId);
-			//设置自动组卷结束
-			projectClient.updateIsArchivesAutoById(projectId,0);
-			return R.data("自动组卷结束");
+			executorService.execute(()->{
+				try{
+					//将项目未锁定案卷拆卷
+					log.info("[自动组卷]{}","开始对未锁定案卷拆卷。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+					archivesAutoService.splitArchvies(projectId,contractId,nodeId);
+					//项目自动组卷入口
+					log.info("[自动组卷]{}","开始自动组卷。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+					archivesAutoService.archiveAutoMethod(projectId,contractId,nodeId);
+					//刷新项目档号
+					log.info("[自动组卷]{}","开始刷新组卷档号。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+					archivesAutoService.refreshFileNumberNoSlipt(projectId,contractId,nodeId);
+					//设置自动组卷结束
+					projectClient.updateIsArchivesAutoById(projectId,0);
+					log.info("[自动组卷]{}","自动组卷完成。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+				}catch (Exception e){
+					e.printStackTrace();
+					log.error("自动组卷保错。"+e.getMessage()+"--projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+					//设置自动组卷结束
+					projectClient.updateIsArchivesAutoById(projectId,0);
+				}
+			});
+			return R.data("自动组卷中,请耐心等待");
 		}catch (Exception e){
 			e.printStackTrace();
+			log.error("自动组卷保错。"+e.getMessage()+"--projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
 			//设置自动组卷结束
 			projectClient.updateIsArchivesAutoById(projectId,0);
 			return R.fail(e.getMessage());

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -398,7 +398,8 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
                         subIndex++;
                     }
                     try {
-                        String url = getBussPdfInfo(fileName + subIndex, pageMap, excelUrl, file_path,OssConstant.ARCHIVE_DIRECTORY,projectId);
+                        Integer fileNamenum=(pageIndex * pageSize)+subIndex;
+                        String url = getBussPdfInfo(fileName + fileNamenum, pageMap, excelUrl, file_path,OssConstant.ARCHIVE_DIRECTORY,projectId);
                         localUrls.add(url);
                     } catch (Exception e) {
                         e.printStackTrace();

+ 15 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.entity.ArchiveProjectConfig;
 import org.springblade.archive.entity.ArchivesAuto;
@@ -76,6 +77,7 @@ import java.util.stream.Collectors;
  * @author BladeX
  * @since 2023-02-17
  */
+@Slf4j
 @Service
 @AllArgsConstructor
 public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper, ArchivesAuto> implements IArchivesAutoService {
@@ -260,6 +262,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		List<String> removeFiles = new ArrayList<>();
 		//没合同段的默认整个项目
 		if (contractId == null) {
+			log.info("[自动组卷-拆卷]{}","对全项目未锁定案卷拆卷");
 			//清除案卷封面等pdf
 			List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlList(projectId);
 			if(archivesOutUrlList!=null && archivesOutUrlList.size()>0){
@@ -282,8 +285,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				}
 			}
 			executorService.execute(()->{
+				log.info("[自动组卷-拆卷]{}","删除旧封面,页码文件开始"+removeFiles);
 				iossClient.removeFiles(removeFiles);
-				log.debug("文件删完了");
+				log.info("[自动组卷-拆卷]{}","删除旧封面,页码文件结束"+removeFiles);
 			});
 
 			//取消未锁定案卷文件关联
@@ -292,6 +296,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		}else{
 			String treeCode = getAuthCode(contractId);
 			if (nodeId!= null) {
+				log.info("[自动组卷-拆卷]{}","对选择节点下未锁定案卷拆卷。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+
 				//有节点的按节点
 				String strNodeId  = nodeId.toString();
 				ArchiveTreeContract archiveTreeContract = archiveTreeContractClient.getArchiveTreeContractById(nodeId);
@@ -318,14 +324,17 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 						}
 					}
 				}
+
 				executorService.execute(()->{
+					log.info("[自动组卷-拆卷]{}","删除旧封面,页码文件开始"+removeFiles);
 					iossClient.removeFiles(removeFiles);
-					log.debug("文件删完了");
+					log.info("[自动组卷-拆卷]{}","删除旧封面,页码文件结束"+removeFiles);
 				});
 
 				baseMapper.splitArchviesByNode(projectId,ancestors,strNodeId);
 			}else{
 				//没节点的按合同段
+				log.info("[自动组卷-拆卷]{}","对合同段下未锁定案卷拆卷。projectId:"+projectId+"-contractId:"+contractId+"-treeCode:"+treeCode);
 				//清除案卷封面等pdf
 				List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlListByContract(projectId,contractId,treeCode);
 				if(archivesOutUrlList!=null && archivesOutUrlList.size()>0){
@@ -347,9 +356,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 						}
 					}
 				}
+
 				executorService.execute(()->{
+					log.info("[自动组卷-拆卷]{}","删除旧封面,页码文件开始"+removeFiles);
 					iossClient.removeFiles(removeFiles);
-					log.debug("文件删完了");
+					log.info("[自动组卷-拆卷]{}","删除旧封面,页码文件结束"+removeFiles);
 				});
 
 				//没节点的按合同段
@@ -1299,7 +1310,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					if(StringUtils.isEmpty(fileNumberPrefix)){
 						//节点没有值,就从合同段获取,没有合同段id的 用业主的合同段
 						Long nodeContractId = archivesAuto.getContractId();
-						if(nodeContractId!=null){
+						if(nodeContractId!=null && nodeContractId!=-1){
 							ContractInfo nodeContract = contractClient.getContractById(nodeContractId);
 							fileNumberPrefix = nodeContract.getPrefix();
 						}else{

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ProjectClientImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.feign;
 
+import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import lombok.AllArgsConstructor;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.service.IProjectInfoService;
@@ -33,4 +34,10 @@ public class ProjectClientImpl implements ProjectClient {
         projectInfo.setIsArchivesAuto(isArchivesAuto);
         projectInfoService.updateById(projectInfo);
     }
+
+    @Override
+    public List<ProjectInfo> getList() {
+        List<ProjectInfo> list = projectInfoService.list();
+        return list;
+    }
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -331,7 +331,7 @@
         order by ancestors asc,tree_sort asc
     </select>
     <select id="getListByProjectId" resultType="org.springblade.manager.entity.ArchiveTreeContract">
-        select id,project_id as projectId,parent_id as parentId,ancestors,node_name as nodeName,status,tree_code as treeCode, ext_type as extType,
+        select id,project_id as projectId,contract_id as contractId,parent_id as parentId,ancestors,node_name as nodeName,status,tree_code as treeCode, ext_type as extType,
                is_deleted as isDeleted,create_time as createTime, file_number_prefix as fileNumberPrefix
         from m_archive_tree_contract
         where project_id=#{projectId} and is_deleted = 0 order by tree_sort asc;

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -808,7 +808,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 		if (StringUtils.isEmpty(node.getSpecification())) {
 			//默认30mm ,对应枚举 1
-			node.setSpecification("1");
+			node.setSpecification("30");
 		}
 		//没有默认
 		if (StringUtils.isEmpty(node.getArchiveNameSuffix())) {