Explorar o código

Merge remote-tracking branch 'origin/master' into master

yangyj %!s(int64=2) %!d(string=hai) anos
pai
achega
5d84f8e5dd
Modificáronse 22 ficheiros con 157 adicións e 63 borrados
  1. 4 0
      blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/NewIOSSClient.java
  2. 3 1
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java
  3. 25 4
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java
  4. 5 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/NewIOSSClientImpl.java
  5. 4 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveExaminingReport.java
  6. 6 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java
  7. 12 0
      blade-service/blade-archive/pom.xml
  8. 18 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  9. 4 4
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  10. 8 5
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java
  11. 17 15
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExaminingReportImpl.java
  12. 23 9
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  13. 2 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  14. 5 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java
  15. 8 4
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  16. 1 5
      blade-service/blade-business/src/main/java/org/springblade/business/controller/MetadataController.java
  17. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  18. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  19. 5 2
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  20. 1 2
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/MetadataClassificationMapper.xml
  21. 2 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/MetadataClassificationServiceImpl.java
  22. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

+ 4 - 0
blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/NewIOSSClient.java

@@ -19,6 +19,7 @@ public interface NewIOSSClient {
     String UPLOAD_FILE_INFO_BYTE = API_PREFIX + "/uploadFileInfoByte";
     String UPLOAD_FILE_INFO_INPUT_STREAM = API_PREFIX + "/uploadFileInfoInputStream";
     String REMOVE_PDF_FILE = API_PREFIX + "/remove-file";
+    String REMOVE_PDF_FILES = API_PREFIX + "/remove-files";
     String UPLOAD_FILE_INFO_WITH_PATH = API_PREFIX + "/uploadFileInfoWithPath";
 
     @PostMapping(value = UPLOAD_FILE_INFO_INPUT_STREAM, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@@ -47,4 +48,7 @@ public interface NewIOSSClient {
 
     @PostMapping(REMOVE_PDF_FILE)
     void removeFile(@RequestParam String fileName);
+
+    @PostMapping(REMOVE_PDF_FILES)
+    void removeFiles(@RequestParam List<String> fileNames);
 }

+ 3 - 1
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java

@@ -214,7 +214,9 @@ public class AliossTemplateRe implements OssTemplateRe {
 
     public void removeFiles(List<String> fileNames) {
         try {
-            fileNames.forEach(this::removeFile);
+            fileNames.forEach((fileName) -> {
+                this.removeFile(fileName);
+            });
         } catch (Throwable var3) {
             throw var3;
         }

+ 25 - 4
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java

@@ -311,7 +311,14 @@ public class LargeFileEndpoint {
 		String filePath =ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
 
 		File tempFile = buildUploadFile(tempFileName);
-		param.getFile().transferTo(tempFile);
+
+		//为了防止win路径有时会抛异常,增加一个处理
+		try {
+			param.getFile().transferTo(tempFile);
+		} catch (Exception e) {
+			writeMultipartFileToFile(param,tempFile);
+		}
+
 
 		/**
 		 * 以上意思是把每个分片都保存成本地一个文件,如 测试.mp4.1 最后合并
@@ -360,9 +367,13 @@ public class LargeFileEndpoint {
 				NewBladeFile newBladeFile = new NewBladeFile();
 				if(param.getFilename().contains("pdf")){
 //					FileInputStream inputStream1 = new FileInputStream(filePath + param.getFilename());
-					PDDocument document = PDDocument.load(multipartFile.getInputStream());
-					//获取文件页数
-					newBladeFile.setPage(document.getPages().getCount());
+					try {
+						PDDocument document = PDDocument.load(multipartFile.getInputStream());
+						//获取文件页数
+						newBladeFile.setPage(document.getPages().getCount());
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
 					//pdf的路径就是文件上传的路径
 					newBladeFile.setPdfUrl(bladeFile.getLink());
 				}else if(param.getFilename().contains("xlsx") || param.getFilename().contains("xls")){
@@ -398,6 +409,16 @@ public class LargeFileEndpoint {
 		return result;
 	}
 
+	public void writeMultipartFileToFile(MultipartFileParam param, File tempFile) throws IOException {
+		byte[] data = param.getFile().getBytes(); // 获取二进制数据
+		FileOutputStream outputStream = new FileOutputStream(tempFile);
+		try {
+			outputStream.write(data); // 将二进制数据写入到文件中
+		} finally {
+			outputStream.close(); // 关闭输出流
+		}
+	}
+
 	/**
 	 *file 转 MultipartFile
 	 * **/

+ 5 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/NewIOSSClientImpl.java

@@ -55,6 +55,11 @@ public class NewIOSSClientImpl implements NewIOSSClient {
         ossBuilder.template().removeFile(fileName);
     }
 
+    @Override
+    public void removeFiles(List<String> fileNames) {
+        ossBuilder.template().removeFiles(fileNames);
+    }
+
     @Override
     public BladeFile uploadFile(String fileName, String localFileUrl) {
         try {

+ 4 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveExaminingReport.java

@@ -24,6 +24,10 @@ public class ArchiveExaminingReport extends BaseEntity {
     @ApiModelProperty(value = "检测文档PDF路径")
     private String reportPdfUrl;
 
+    //状态为0代表详情还没开始
+    @ApiModelProperty(value = "文档详情状态")
+    private Integer reportDetailStatus;
+
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "检测时间")
     private LocalDateTime examiningTime;

+ 6 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -81,6 +81,11 @@ public interface ArchiveFileClient {
     @PostMapping(API_PREFIX + "/batchDeleteArchiveFile")
     void batchDeleteArchiveFile(@RequestBody List<Long> ids);
 
+    /**
+     * 获取节点下未归档的文件
+     * @param nodeId
+     * @return
+     */
     @PostMapping(API_PREFIX + "/getListByNodeID")
-    List<ArchiveFile> getListByNodeID(@RequestParam String nodeId,@RequestParam Integer isArchive);
+    List<ArchiveFile> getListByNodeID(@RequestParam String nodeId);
 }

+ 12 - 0
blade-service/blade-archive/pom.xml

@@ -67,6 +67,12 @@
             <version>2.9.1.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-system-api</artifactId>
+            <version>2.9.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
         <dependency>
             <groupId>org.springblade</groupId>
             <artifactId>blade-core-cloud</artifactId>
@@ -120,6 +126,12 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-messaging</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-system-api</artifactId>
+            <version>2.9.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 18 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -17,6 +17,8 @@
 package org.springblade.archive.controller;
 
 import cn.hutool.core.text.split.SplitIter;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -29,6 +31,8 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -41,6 +45,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  *  控制器
@@ -57,6 +62,7 @@ public class ArchivesAutoController extends BladeController {
 	private final IArchivesAutoService archivesAutoService;
 
 	private final IArchiveAutoPdfService archiveAutoPdfService;
+	private final ArchiveTreeContractClient archiveTreeContractClient;
 
 	/**
 	 * 详情
@@ -87,8 +93,18 @@ public class ArchivesAutoController extends BladeController {
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入archivesAuto")
-	public R<IPage<ArchivesAutoVO>> page(ArchivesAutoVO archivesAuto, Query query) {
-		IPage<ArchivesAutoVO> pages = archivesAutoService.selectArchivesAutoPage(Condition.getPage(query), archivesAuto);
+	public R<IPage<ArchivesAutoVO>> page(ArchivesAutoVO queryVo, Query query) {
+//		IPage<ArchivesAutoVO> pages = archivesAutoService.selectArchivesAutoPage(Condition.getPage(query), archivesAuto);
+		if(queryVo.getNodeIds() == null || queryVo.getNodeIds().equals("")){
+			return  R.data(null);
+		}
+		List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds());
+		if(archiveTreeContracts != null && archiveTreeContracts.size() > 0){
+			List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(archiveTreeContracts.stream().map(ArchiveTreeContract::getId).distinct().collect(Collectors.toList())), String.class);
+			ids.add(queryVo.getNodeIds());
+			queryVo.setNodeIdArray(ids);
+		}
+		IPage<ArchivesAutoVO> pages = archivesAutoService.selectArchivesAutoFilePage(queryVo);
 		return R.data(pages);
 	}
 

+ 4 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -67,14 +67,14 @@
 
 
     <select id="selectArchivesAutoFileCount" resultType="java.lang.Integer">
-        select count(id) from u_archives_auto where is_deleted = 0
+        select count(id) from u_archives_auto where is_deleted = 0 and is_archive = 1
         <if test="vo.projectId != null and vo.projectId != ''">
             and project_id = #{vo.projectId}
         </if>
         <if test="vo.contractId != null and vo.contractId != ''">
             and contract_id = #{vo.contractId}
         </if>
-        <if test="vo.contractId != null and vo.contractId != ''">
+        <if test="vo.isAutoFile != null and vo.isAutoFile != ''">
             and is_auto_file = #{vo.isAutoFile}
         </if>
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
@@ -86,7 +86,7 @@
     </select>
 
     <select id="selectArchivesAutoFilePage" resultMap="archivesAutoResultMap">
-        select * from u_archives_auto where is_deleted = 0
+        select * from u_archives_auto where is_deleted = 0  and is_archive = 1
         <if test="vo.projectId != null and vo.projectId != ''">
             and project_id = #{vo.projectId}
         </if>
@@ -102,7 +102,7 @@
                 #{nodeId}
             </foreach>
         </if>
-        order by tree_sort DESC,auto_file_sort asc
+        order by tree_sort,auto_file_sort,file_number asc
     </select>
 
     <update id="updateArchivesAutoFileByNodeId" >

+ 8 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -19,6 +19,7 @@ import org.springblade.archive.utils.FileUtils;
 import org.springblade.archive.utils.FormulaUtil;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.OssConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -30,6 +31,7 @@ import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springblade.system.cache.ParamCache;
 import org.springframework.stereotype.Service;
 
 
@@ -81,7 +83,8 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 //        files.add(file2);
 //        BladeFile bladeFile = newIOSSClient.uploadFile1(file2,"123");
 
-        String file_path = "D:\\tmp";
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        boolean flag = FileUtils.LocalPath.equals(file_path);
         String excelUrl = file_path +  "\\备考表.xlsx";
 
         Map<String, Object> DataInfo = new HashMap<>();
@@ -265,8 +268,8 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
             String url = getPdfFileUrl(f);
             urls.add(url);
         }
-
-        List<String> pageUrls = FileUtils.doForPageNumberUseItextpdf(urls,newIOSSClient);
+        String localPath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        List<String> pageUrls = FileUtils.doForPageNumberUseItextpdf(urls,localPath,newIOSSClient);
         for(int i=0;i<waitArchiveFiles.size();i++){
             waitArchiveFiles.get(i).setPdfPageUrl(pageUrls.get(i));
         }
@@ -286,7 +289,7 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         // Step 1: Get the list of formulas using archiveFormulaConfigService
         List<ArchiveFormulaConfig> formulaConfigs = archiveFormulaConfigService.getByNumber(number);
 
-        String file_path = FileUtils.LocalPath;
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String excelUrl = getUrlByNumber(number);
         Map<String, Object> dataInfo = new HashMap<>();
 
@@ -751,7 +754,7 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
     public String MergePdfAndUpload(List<String> urlList,String fileName,String filePath,Long pojectId) {
        String url = "";
        Long id = SnowFlakeUtil.getId();
-       String localPdf = FileUtils.LocalPath + "/pdf/" + id + ".pdf";
+       String localPdf = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL) + "/pdf/" + id + ".pdf";
 
        try {
             //合并pdf

+ 17 - 15
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExaminingReportImpl.java

@@ -56,29 +56,23 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
     @Async
     @Override
     public void pushStatusBySocket(Long userId,Long id) throws IOException, InterruptedException {
-        Integer status=1;
-        Date date = new Date();
+        Integer statusR = 1;
+        Integer statusD = 0;
         //获取检测状态,如果正在检测,则数据变化时发送
         do {
             Thread.sleep(4000L);
             //判断报告状态
             ArchiveExaminingReport report = this.getById(id);
             Integer reportStatus = report.getStatus();
+            Integer detailStatus = report.getReportDetailStatus();
             //判断详情状态
-            ArchiveExaminingReportDetail detail = detailService.getOne(new LambdaQueryWrapper<ArchiveExaminingReportDetail>()
-                    .eq(ArchiveExaminingReportDetail::getReportId, id)
-                    .orderByDesc(ArchiveExaminingReportDetail::getCreateTime)
-                    .last("limit 1"));
-            if (detail == null){
-                detail = new ArchiveExaminingReportDetail();
-                detail.setCreateTime(date);
-            }
-            if (reportStatus != status || detail.getCreateTime() != date){
+
+            if (reportStatus != statusR || detailStatus != statusD){
                 webSocketServer.sendMessagesToArchive(userId+"","true");
-                status = reportStatus;
-                date = detail.getCreateTime();
+                statusR = reportStatus;
+                statusD = detailStatus;
             }
-        }while (status != 4);
+        }while (statusR != 4);
 
     }
 
@@ -121,6 +115,8 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子档案封装包规范性检测", 0, "无", 0));
             detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子档案封装包电子前面有效性检测", 0, "无", 0));
+            report.setReportDetailStatus(1);
+            this.updateById(report);
         }
         if (StringUtils.isNotBlank(vo.getIntegrality()) && "1".equals(vo.getIntegrality())) {
             Thread.sleep(5000L);
@@ -147,6 +143,8 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对信息包元数据完整性检测", 0, "无", 0));
             detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对信息包内容数据完整性检测", 0, "无", 0));
+            report.setReportDetailStatus(2);
+            this.updateById(report);
         }
             //可用性
         if (StringUtils.isNotBlank(vo.getUsability()) && "1".equals(vo.getUsability())) {
@@ -167,6 +165,8 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对信息包中包含的内容数据格式合规性检测", 0, "无", 0));
             detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对备份数据可恢复性检测", 0, "无", 0));
+            report.setReportDetailStatus(3);
+            this.updateById(report);
         }
             //安全性
         if (StringUtils.isNotBlank(vo.getSecurity()) && "1".equals(vo.getSecurity())) {
@@ -175,12 +175,14 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对系统环境中是否安装杀毒软件检测", 0, "无", 0));
             detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_SECURITY,
                     ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对病毒感染检测", 0, "无", 0));
+            report.setReportDetailStatus(4);
+            this.updateById(report);
         }
         //生成报告,生成PDF
         report.setStatus(3);
         this.updateById(report);
         String url = this.generateReportPdf(id);
-        Thread.sleep(3000L);
+        Thread.sleep(5000L);
         //完成
         report.setReportPdfUrl(url);
         report.setStatus(4);

+ 23 - 9
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -50,6 +50,7 @@ import org.springblade.manager.feign.WbsInfoClient;
 import org.springblade.manager.vo.ArchiveTreeContractVO2;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.ProjectClient;
+import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
@@ -77,6 +78,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 	private Map<String,Integer> indexMap = new HashMap<>(); //按立卷位区分和生成流水号
 	private IArchiveAutoPdfService archiveAutoPdfService;
+	private final NewIOSSClient iossClient;
 
 
 
@@ -295,11 +297,22 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		List<String> list = Arrays.asList(ids.split(","));
 		//查询出档案的文件
 		List<ArchiveFile> files = archiveFileClient.getAllArchiveFileByArchiveIds(list);
-		//销毁阿里云上文件
-
-		//删除文件
-		List<Long> collect = files.stream().map(file -> file.getId()).collect(Collectors.toList());
-		archiveFileClient.batchDeleteArchiveFile(collect);
+		if (files != null && files.size() > 0) {
+			//销毁阿里云上文件
+			List<String> removeFiles = new ArrayList<>();
+			for (ArchiveFile file : files) {
+				if (StringUtils.isNotBlank(file.getFileUrl())){
+					removeFiles.add(file.getFileUrl().substring(file.getFileUrl().lastIndexOf("upload")));
+				}
+				if (StringUtils.isNotBlank(file.getPdfFileUrl())){
+					removeFiles.add(file.getPdfFileUrl().substring(file.getPdfFileUrl().lastIndexOf("upload")));
+				}
+			}
+			iossClient.removeFiles(removeFiles);
+			//删除文件
+			List<Long> collect = files.stream().map(file -> file.getId()).collect(Collectors.toList());
+			archiveFileClient.batchDeleteArchiveFile(collect);
+		}
 		//删除案卷
 		baseMapper.deleteBatchIds(list);
 	}
@@ -650,7 +663,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			int specification = Integer.parseInt(specificationStr);
 			int specificationSize=specification*10;
 			//步骤3:查询节点下的未组卷文件
-			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString(),0);
+			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
 			//步骤4:遍历未归档文件
 			//待组卷文件集合
 			List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
@@ -745,7 +758,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			//根据分组ID来创建唯一案卷
 			Long archiveAutoGroupId=node.getArchiveAutoGroupId();
 			//步骤2:查询节点下的未归档文件
-			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString(),0);
+			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
 			//步骤3:遍历未归档文件
 			if(archiveFiles!=null){
 				for(ArchiveFile file:archiveFiles){
@@ -830,7 +843,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			}
 
 			//步骤3.2:查询出当前节点未组卷的文件
-			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString(),0);
+			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
 			//步骤3.3:遍历未组卷文件
 			int archiveFilesSize=0;
 			for(ArchiveFile file:archiveFiles){
@@ -943,7 +956,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				.eq("is_deleted",0)
 				.eq("is_archive",1)
 				.orderByAsc("tree_sort")
-				.orderByAsc("auto_file_sort");
+				.orderByAsc("auto_file_sort")
+				.orderByAsc("file_number");
 
 		return this.list(queryWrapper);
 	}

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -426,7 +426,7 @@ public class FileUtils {
      * @Author yangyj
      * @Date 2021.12.17 14:21
      **/
-    public static List<String> doForPageNumberUseItextpdf(List<String> uris, NewIOSSClient newIOSSClient)  {
+    public static List<String> doForPageNumberUseItextpdf(List<String> uris, String localPath ,NewIOSSClient newIOSSClient)  {
         List<String> result = new ArrayList<>();
         if(uris!= null && uris.size() > 0){
             int cursor=0;
@@ -487,7 +487,7 @@ public class FileUtils {
                     pdfStamper.close();
                     page = page + "-" + cursor + ".pdf";
                     String fileName = fileNameWithoutExtension +  "-" +  page;
-                    String filePath = LocalPath + fileName;
+                    String filePath = localPath + fileName;
                     if (newIOSSClient!= null ) {
                         BladeFile bladeFile  = newIOSSClient.updateFile(out.toByteArray(),fileName);
                         result.add(bladeFile.getLink());

+ 5 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java

@@ -145,8 +145,11 @@ public class EVisaTaskCheckController {
                 List<WbsTreeContract> node = wbsTreeContractClient.queryChildByParentId(contract,"", "");
                 List<Long> ids = new ArrayList<>();
                 for (WbsTreeContract treeContract : node) {
-                    WbsTreePrivate wbsTreePrivate = wbsTreePrivateClient.queryPeersNodeByProjectIdAndId(treeContract.getProjectId(), treeContract.getId());
-                    ids.add(wbsTreePrivate.getPKeyId());
+//                    WbsTreePrivate wbsTreePrivate = wbsTreePrivateClient.queryPeersNodeByProjectIdAndId(treeContract.getProjectId(), treeContract.getId());
+//                    ids.add(wbsTreePrivate.getPKeyId());
+                    if (StringUtils.isNotBlank(treeContract.getIsTypePrivatePid()+"")){
+                        ids.add(treeContract.getIsTypePrivatePid());
+                    }
                 }
                 JSONObject object = new JSONObject();
                 object.put("privatePKeyId",ids);

+ 8 - 4
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -2592,6 +2592,7 @@ public class InformationWriteQueryController extends BladeController {
 
                 List<WbsTreeContract> childList = new ArrayList<>();
                 if (submitNodeList.size() > 0) {
+                    //只取原始表
                     this.foreachQueryChild(submitNodeList, childList);
                     //将表格数据设置
                     selectedNodeList.addAll(childList);
@@ -2628,6 +2629,7 @@ public class InformationWriteQueryController extends BladeController {
 
                 List<WbsTreeContract> childList = new ArrayList<>();
                 if (submitNodeList.size() > 0) {
+                    //只取原始表
                     this.foreachQueryChild(submitNodeList, childList);
                     //将表格数据设置
                     selectedNodeList.addAll(childList);
@@ -2836,13 +2838,15 @@ public class InformationWriteQueryController extends BladeController {
      */
     private void foreachQueryChild(List<WbsTreeContract> parentList, List<WbsTreeContract> childList) {
         parentList.forEach(parent -> {
-            List<WbsTreeContract> childs = this.wbsTreeContractClient.queryChildByParentId(parent, "", "");
+            //List<WbsTreeContract> childS = this.wbsTreeContractClient.queryChildByParentId(parent, "", "");
 
-            if (childs != null && childs.size() > 0) {
+            //只获取原始表,不获取复制的表(业务说是从项目wbs处取表,目前直接从当前合同段取原始表,也是一样的)
+            List<WbsTreeContract> childS = jdbcTemplate.query("select * from m_wbs_tree_contract where old_id is null and is_cope_tab is null and is_deleted = 0 and parent_id = " + parent.getId() + " and contract_id = " + parent.getContractId(), new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            if (childS.size() > 0) {
                 //添加入结果集
-                childList.addAll(childs);
+                childList.addAll(childS);
                 //继续向下检查子集
-                this.foreachQueryChild(childs, childList);
+                this.foreachQueryChild(childS, childList);
             }
         });
     }

+ 1 - 5
blade-service/blade-business/src/main/java/org/springblade/business/controller/MetadataController.java

@@ -52,11 +52,7 @@ public class MetadataController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
     public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        boolean b = iMetadataClassificationService.deleteLogic(Func.toLongList(ids));
-        if(b){
-            return R.status(iMetadataClassificationService.deleteTableField(Func.toLongList(ids).get(0)));
-        }
-        return R.status(false);
+        return R.status(iMetadataClassificationService.deleteTableField(Func.toLongList(ids).get(0)));
     }
 
     /**

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -203,8 +203,8 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
     }
 
     @Override
-    public List<ArchiveFile> getListByNodeID(String nodeId,Integer isArchive) {
-        List<ArchiveFile> files = fileMapper.getListByNodeID(nodeId, isArchive);
+    public List<ArchiveFile> getListByNodeID(String nodeId) {
+        List<ArchiveFile> files = fileMapper.getListByNodeID(nodeId);
         return files;
     }
 

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

@@ -75,5 +75,5 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
     List<ArchiveFile> getAllArchiveFileByArchiveIds(@Param("ids") List<String> ids);
 
-	public List<ArchiveFile> getListByNodeID(@Param("nodeId") String nodeId,@Param("isArchive")Integer isArchive);
+	public List<ArchiveFile> getListByNodeID(@Param("nodeId") String nodeId);
 }

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

@@ -112,6 +112,9 @@
         <if test="vo.contractId != null and vo.contractId != ''">
             and contract_id = #{vo.contractId}
         </if>
+        <if test="vo.archive_id != null and vo.archive_id != ''">
+            and archive_id = #{vo.archive_id}
+        </if>
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
             and node_id in
             <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
@@ -290,7 +293,7 @@
     </select>
     <select id="getAllArchiveFileByArchiveIds" resultType="org.springblade.business.entity.ArchiveFile">
         SELECT * FROM u_archive_file
-        WHERE archive_id in
+        WHERE is_deleted = 0 and archive_id in
         <foreach collection="ids" item="id" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -302,7 +305,7 @@
         select * from u_archive_file
         where
           node_id = #{nodeId} and
-          is_archive = #{isArchive} and
+          ( is_archive = 0 OR is_archive IS NULL )  and
           is_deleted = 0
           order by sort
     </select>

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

@@ -77,10 +77,9 @@
         <foreach collection="ids" item="ids" index="ids" open="(" separator="," close=")">
             ${ids}
         </foreach>
---         and locate(#{type},file_storage_type) = 0
     </update>
     <update id="removeMetadataBytype">
         update u_metadata_classification set file_storage_type = REPLACE(file_storage_type,#{type},'')
-        where  locate(#{type},file_storage_type) = 0
+        where  locate(#{type},file_storage_type) > 0
     </update>
 </mapper>

+ 2 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/MetadataClassificationServiceImpl.java

@@ -65,7 +65,7 @@ public class MetadataClassificationServiceImpl
             }else{
                 MetadataClassification metadataClassification = baseMapper.selectMetadaOne(obj.getContainerName(), obj.getCode(),
                         "file_key_" + obj.getCode().toLowerCase(),obj.getId());
-                if(metadataClassification == null){
+                if(metadataClassification != null){
                     return false;
                 }
                 String filetype = "varchar";
@@ -106,6 +106,7 @@ public class MetadataClassificationServiceImpl
         try {
             MetadataClassification metadataClassification = baseMapper.selectById(ids);
             baseMapper.deleteTableField(metadataClassification.getContainerInitTabName(),metadataClassification.getFieldKey());
+            baseMapper.deleteById(ids);
         } catch (Exception e) {
             e.printStackTrace();
             return false;

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -104,7 +104,7 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
             return this.wbsTreeContractService.list(wrapper);
         } else {
             //.eq(WbsTreeContract::getType, "1")
-            return this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, treeNode.getId()).eq(WbsTreeContract::getContractId, treeNode.getContractId()));
+            return this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, treeNode.getId()).eq(WbsTreeContract::getContractId, treeNode.getContractId()).eq(WbsTreeContract::getStatus,1));
         }
     }