Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

liuyc 2 жил өмнө
parent
commit
453beb8718
18 өөрчлөгдсөн 267 нэмэгдсэн , 145 устгасан
  1. 2 0
      blade-common/src/main/java/org/springblade/common/constant/OssConstant.java
  2. 4 14
      blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/NewIOSSClient.java
  3. 55 53
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java
  4. 1 1
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/OssTemplateRe.java
  5. 11 11
      blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/NewIOSSClientImpl.java
  6. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java
  7. 8 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java
  8. 17 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  9. 13 4
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  10. 39 31
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java
  11. 52 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  12. 0 6
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  13. 20 20
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java
  14. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.java
  15. 18 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml
  16. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveAutoRuleSyncImpl.java
  17. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java
  18. 10 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

+ 2 - 0
blade-common/src/main/java/org/springblade/common/constant/OssConstant.java

@@ -20,4 +20,6 @@ public interface OssConstant {
      * 分隔符
      */
     String SEPARATOR = "__";
+
+    String SYS_DIRECTORY = "sys";
 }

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

@@ -28,20 +28,10 @@ public interface NewIOSSClient {
     @PostMapping(UPLOAD_FILE_INFO)
     BladeFile uploadFile(@RequestParam String fileName, @RequestParam String localFileUrl);
 
-    /**
-     *  规则  projectId/filePath/fileName,
-     *  如果projectId为空则为filePath/fileName
-     *  如果filePath为空,则为 upload/20230202/fileName
-     *  如果filePath为OssConstant.TEMP_DIRECTORY,一律放进临时目录 OssConstant.TEMP_DIRECTORY/fileName
-     * @param fileName
-     * @param localFileUrl
-     * @param filePath
-     * @param projectId
-     * @return
-     */
-    @PostMapping(UPLOAD_FILE_INFO_WITH_PATH)
-    BladeFile uploadFile(@RequestParam String fileName, @RequestParam  String localFileUrl,
-                         @RequestParam(required=false)  String filePath,@RequestParam(required=false) Long projectId);
+
+//    @PostMapping(UPLOAD_FILE_INFO_WITH_PATH)
+//    BladeFile uploadFile(@RequestParam String fileName, @RequestParam  String localFileUrl,
+//                         @RequestParam(required=false)  String filePath,@RequestParam(required=false) Long projectId);
 
     @PostMapping(UPLOAD_FILE_INFO_BYTE)
     BladeFile updateFile(@RequestBody byte[] fileByte, @RequestParam String fileName);

+ 55 - 53
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java

@@ -173,7 +173,7 @@ public class AliossTemplateRe implements OssTemplateRe {
         try {
             this.makeBucket(bucketName);
             String originalName = key;
-            key = this.getFileName(key);
+            //key = this.getFileName(key);
             if(key.indexOf("/")>=0){
                 originalName = key.substring(key.lastIndexOf("/")+1 , key.length());
             }else{
@@ -318,58 +318,60 @@ public class AliossTemplateRe implements OssTemplateRe {
         return initResult;
     }
 
-    public BladeFile putFileWithPath(String fileName, String filePath,Long projectId, InputStream stream) {
-        try {
-
-            String suffix = "";
-            int indexOfDot = fileName.lastIndexOf('.');
-            if (indexOfDot > 0) {
-                suffix = fileName.substring(indexOfDot + 1);
-            }
-
-            String ossUrl = "";
-            // 判断容器是否存在,不存在就创建
-            String bucket=getBucketName();
-            if (!ossClient.doesBucketExist(bucket)) {
-                ossClient.createBucket(bucket);
-                CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
-                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
-                ossClient.createBucket(createBucketRequest);
-            }
-            // 设置文件路径和名称
-            //判断是否为存储成   upload/20230322/xxxx.pdf 还是指定目录 aaaa/bbbb.pdf
-            if (StringUtils.isEmpty(filePath)) {
-                Date now = new Date();
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-                String formattedDate = sdf.format(now);
-                filePath = OssConstant.NORMAL_DIRECTORY + "/" + formattedDate;
-            }
-
-            //如果有项目ID,则存为 项目id/....  ,否则直接在最外层, 临时目录除外
-            if (!filePath.equals(OssConstant.TEMP_DIRECTORY)) {
-                if (projectId != null  ) {
-                    filePath = projectId + "/" + filePath;
-                }
-            }
-
-            String fileUrl = filePath + "/" + fileName;
-            ObjectMetadata objectMetadata = new ObjectMetadata();
-            objectMetadata.setContentType(getcontentType(suffix));
-            ossUrl = getOssHost() + fileUrl;
-
-            // 上传文件
-            PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucket, fileUrl, stream,objectMetadata));
-
-            BladeFile file = new BladeFile();
-            file.setOriginalName(fileName);
-            file.setName(fileName);
-            file.setDomain(this.getOssHost(bucket));
-            file.setLink(ossUrl);
-            return file;
-        } catch (Throwable var9) {
-            throw var9;
-        }
-    }
+    //不使用
+//    public BladeFile putFileWithPath(String fileName, String filePath,Long projectId, InputStream stream) {
+//
+//        try {
+//
+//            String suffix = "";
+//            int indexOfDot = fileName.lastIndexOf('.');
+//            if (indexOfDot > 0) {
+//                suffix = fileName.substring(indexOfDot + 1);
+//            }
+//
+//            String ossUrl = "";
+//            // 判断容器是否存在,不存在就创建
+//            String bucket=getBucketName();
+//            if (!ossClient.doesBucketExist(bucket)) {
+//                ossClient.createBucket(bucket);
+//                CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
+//                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
+//                ossClient.createBucket(createBucketRequest);
+//            }
+//            // 设置文件路径和名称
+//            //判断是否为存储成   upload/20230322/xxxx.pdf 还是指定目录 aaaa/bbbb.pdf
+//            if (StringUtils.isEmpty(filePath)) {
+//                Date now = new Date();
+//                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+//                String formattedDate = sdf.format(now);
+//                filePath = OssConstant.NORMAL_DIRECTORY + "/" + formattedDate;
+//            }
+//
+//            //如果有项目ID,则存为 项目id/....  ,否则直接在最外层, 临时目录除外
+//            if (!filePath.equals(OssConstant.TEMP_DIRECTORY)) {
+//                if (projectId != null  ) {
+//                    filePath = projectId + "/" + filePath;
+//                }
+//            }
+//
+//            String fileUrl = filePath + "/" + fileName;
+//            ObjectMetadata objectMetadata = new ObjectMetadata();
+//            objectMetadata.setContentType(getcontentType(suffix));
+//            ossUrl = getOssHost() + fileUrl;
+//
+//            // 上传文件
+//            PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucket, fileUrl, stream,objectMetadata));
+//
+//            BladeFile file = new BladeFile();
+//            file.setOriginalName(fileName);
+//            file.setName(fileName);
+//            file.setDomain(this.getOssHost(bucket));
+//            file.setLink(ossUrl);
+//            return file;
+//        } catch (Throwable var9) {
+//            throw var9;
+//        }
+//    }
 
 
     //判断文件的格式

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

@@ -19,5 +19,5 @@ public interface OssTemplateRe extends OssTemplate {
     InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest request);
 
     //指定路径上传
-    BladeFile putFileWithPath(String fileName, String filePath,Long projectId, InputStream stream);
+//    BladeFile putFileWithPath(String fileName, String filePath,Long projectId, InputStream stream);
 }

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

@@ -72,15 +72,15 @@ public class NewIOSSClientImpl implements NewIOSSClient {
         return null;
     }
 
-    @Override
-    public BladeFile uploadFile(String fileName, String localFileUrl,String filePath, Long projectId) {
-        try {
-            //获取文件流
-            InputStream inputStream = new FileInputStream(new File(localFileUrl));
-            return this.ossBuilder.template().putFileWithPath(fileName,filePath, projectId,inputStream);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
+//    @Override
+//    public BladeFile uploadFile(String fileName, String localFileUrl,String filePath, Long projectId) {
+//        try {
+//            //获取文件流
+//            InputStream inputStream = new FileInputStream(new File(localFileUrl));
+//            return this.ossBuilder.template().putFileWithPath(fileName,filePath, projectId,inputStream);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+//    }
 }

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java

@@ -1,5 +1,7 @@
 package org.springblade.manager.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -144,22 +146,26 @@ public class ArchiveTree extends BaseEntity {
 	* 自动立卷类型 1最高 2分类并卷 3单独并卷
 	*/
     @ApiModelProperty(value = "自动立卷类型")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer archiveAutoType;
 	/**
 	* 自动立卷设置的节点ID
 	*/
     @ApiModelProperty(value = "自动立卷设置的节点ID")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long archiveAutoNodeId;
 
     /**
      * 分类并卷的分类ID,当archiveAutoType=2时,用来确定同一类型。新增时随机生成,一同提交设置的节点都是同一类。 编辑时 采用已有的
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long archiveAutoGroupId;
 
     /**
      * 是否自动立卷规则选择设置的节点 选中的节点设为1 方便页面显示列表,方便同步判断
      */
     @ApiModelProperty(value = "是否为设置的节点")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer archiveAutoGroupSelect;
 
     private Long fromId;

+ 8 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java

@@ -16,9 +16,13 @@
  */
 package org.springblade.manager.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.core.mp.base.BaseEntity;
@@ -142,20 +146,24 @@ public class ArchiveTreeContract extends BaseEntity {
 	/**
 	* 自动立卷类型 1最高 2分类并卷 3单独组卷   说明:1规则下可以有2或3;2和3两种规则互斥,2下不能有3,3下不能有2;
 	*/
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer archiveAutoType;
 	/**
 	* 默认组卷设置的最高并卷节点Id  当archiveAutoType不为2,和3时用来限制范围
 	*/
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long archiveAutoNodeId;
 
 	/**
 	 * 分类并卷的分类ID,当archiveAutoType=2时,用来确定同一类型。新增时随机生成,一同提交设置的节点都是同一类。 编辑时 采用已有的
 	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long archiveAutoGroupId;
 
 	/**
 	 * 设置分类并卷选择的节点设为1,其下范围内节点设为0
 	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer archiveAutoGroupSelect;
 
 

+ 17 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -272,7 +272,7 @@ public class ArchiveFileController extends BladeController {
      * 档案统计-原生数字化文件数量
      */
     @GetMapping("/allArchiveFileByContractType")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 11)
     @ApiOperation(value = "档案统计-原生数字化文件数量")
     public R allArchiveFileByContractType(Long projectId) {
         List<Map<String, Object>> mapList = archiveFileClient.getAllArchiveFileByContractType(projectId);
@@ -283,7 +283,7 @@ public class ArchiveFileController extends BladeController {
      * 档案统计-档案总存储
      */
     @GetMapping("/allArchiveFileSize")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 12)
     @ApiOperation(value = "档案统计-档案总存储")
     public R allArchiveFileSize(Long projectId) {
         //统计案卷文件大小
@@ -296,4 +296,19 @@ public class ArchiveFileController extends BladeController {
         String size = org.springblade.common.utils.FileUtils.formatSize(fileSize );
         return R.data(size);
     }
+    /**
+     * 批量编辑
+     */
+    @PostMapping("/batchUpdate")
+    @ApiOperationSupport(order = 13)
+    @ApiOperation(value = "批量编辑")
+    public R<Boolean> batchUpdate(@RequestBody ArchiveFileVO vo){
+        try {
+            this.archiveFileClient.updateArchiveFileSort(vo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.data(false);
+        }
+        return R.data(true);
+    }
 }

+ 13 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -26,6 +26,7 @@ import javax.validation.Valid;
 
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.service.IArchiveAutoPdfService;
+import org.springblade.business.entity.ArchiveFile;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -277,9 +278,9 @@ public class ArchivesAutoController extends BladeController {
 	@ApiOperation(value = "获取归档树同级节点", notes = "传入节点id")
 	public R test1() {
 
-		//archiveAutoPdfService.test1();
-		Long projectId = 1645263362890129410L;
-		List<ArchiveTreeContract> list = archiveTreeContractClient.getListByProjectId(projectId);
+		archiveAutoPdfService.test1();
+//		Long projectId = 1645263362890129410L;
+//		List<ArchiveTreeContract> list = archiveTreeContractClient.getListByProjectId(projectId);
 		//archivesAutoService.refreshFileNumberNoSlipt(list,null);
 		return R.data("");
 	}
@@ -408,5 +409,13 @@ public class ArchivesAutoController extends BladeController {
 		return R.data("刷新成功");
 	}
 
-
+	/**
+	 * 批量编辑
+	 */
+	@PostMapping("/batchUpdate")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "批量编辑", notes = "传入archivesAutoVo")
+	public R batchUpdate(@Valid @RequestBody ArchivesAutoVO archivesAutoVo) {
+		return R.status(archivesAutoService.updateBatchById(JSONArray.parseArray(JSONObject.toJSONString(archivesAutoVo.getList()), ArchivesAuto.class)));
+	}
 }

+ 39 - 31
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -82,36 +82,36 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 //        List<String> files = new ArrayList<>();
 //        files.add(file2);
 //        BladeFile bladeFile = newIOSSClient.uploadFile1(file2,"123");
-        String urls1 = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/20230427/ed4305eb971b062046c1ffd4e2da3c32.pdf";
-        String urls2 = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/20230427/f1ddb3bd25c076824ef366a9e242ff23.pdf";
-        List<String> urls = new ArrayList<>();
-        String localPath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        urls.add(urls1);
-        urls.add(urls2);
-        List<String> pageUrls = FileUtils.doForPageNumberUseItextpdf(urls,localPath,newIOSSClient,1578599210897772545L);
-        System.out.println();
+//        String urls1 = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/20230427/ed4305eb971b062046c1ffd4e2da3c32.pdf";
+//        String urls2 = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/20230427/f1ddb3bd25c076824ef366a9e242ff23.pdf";
+//        List<String> urls = new ArrayList<>();
+//        String localPath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+//        urls.add(urls1);
+//        urls.add(urls2);
+//        List<String> pageUrls = FileUtils.doForPageNumberUseItextpdf(urls,localPath,newIOSSClient,1578599210897772545L);
+//        System.out.println();
 
 
-//        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<>();
-//
-//        DataVO dataVO = FormulaUtil.convertCellToIndex("C2");
-//        String key =  "1__"+ dataVO.getY() + "_" + dataVO.getX();
-//        DataInfo.put(key,"档号123456");
-//
-//        DataVO dataVO1 = FormulaUtil.convertCellToIndex("A9");
-//        String key1 =  "2__"+ dataVO1.getY() + "_" + dataVO1.getX();
-//        DataInfo.put(key1,"hahahahaa");
-//        try {
-//            String url = getBussPdfInfo(pkeyId.toString(),DataInfo,excelUrl,file_path,null,null);
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//
-//        System.out.println();
+        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<>();
+
+        DataVO dataVO = FormulaUtil.convertCellToIndex("C2");
+        String key =  "1__"+ dataVO.getY() + "_" + dataVO.getX();
+        DataInfo.put(key,"档号123456");
+
+        DataVO dataVO1 = FormulaUtil.convertCellToIndex("A9");
+        String key1 =  "2__"+ dataVO1.getY() + "_" + dataVO1.getX();
+        DataInfo.put(key1,"hahahahaa");
+        try {
+            String url = getBussPdfInfo(pkeyId.toString(),DataInfo,excelUrl,file_path,null,null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        System.out.println();
 
 
     }
@@ -420,8 +420,10 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
             //合并当前所有选择的试验pdf
             FileUtils.mergePdfPublicMethods(localUrls, localPdf);
-            BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", localPdf, OssConstant.ARCHIVE_DIRECTORY,projectId);
+//            BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", localPdf, OssConstant.ARCHIVE_DIRECTORY,projectId);
 
+            String absoluteFileName = FileUtils.getOssPath(OssConstant.ARCHIVE_DIRECTORY,fileName,projectId);
+            BladeFile bladeFile = newIOSSClient.uploadFile(absoluteFileName + ".pdf", localPdf);
 
 //            ByteArrayOutputStream bos = new ByteArrayOutputStream();
 //            FileUtils.PdfCopyPublicMethods(bos, localUrls);
@@ -572,8 +574,10 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         FileOutputStream outputStream = new FileOutputStream(excelPath);
         workbook.write(outputStream);
         FileUtils.setExcelScaleToPdf(excelPath, localPdfPath);
-        BladeFile bladeFile = newIOSSClient.uploadFile(fileName + ".pdf", localPdfPath,ossPath, projectId);
+        String absoluteFileName = FileUtils.getOssPath(OssConstant.ARCHIVE_DIRECTORY,fileName,projectId);
+        BladeFile bladeFile = newIOSSClient.uploadFile(absoluteFileName + ".pdf", localPdfPath);
 
+        ///BladeFile bladeFile = newIOSSClient.uploadFile(fileName + ".pdf", localPdfPath,ossPath, projectId);
         String pdfLink = "";
         if (bladeFile!= null ){
             pdfLink = bladeFile.getLink();
@@ -778,7 +782,11 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
             fileName += (OssConstant.SEPARATOR + id);
 
             //上传到oss
-            BladeFile file  = newIOSSClient.uploadFile(fileName+ ".pdf", localPdf,filePath,pojectId);
+           String absoluteFileName = FileUtils.getOssPath(OssConstant.TEMP_DIRECTORY,fileName,null);
+           BladeFile file = newIOSSClient.uploadFile(absoluteFileName + ".pdf", localPdf);
+
+
+//            BladeFile file  = newIOSSClient.uploadFile(fileName+ ".pdf", localPdf,filePath,pojectId);
             url = file.getLink();
         } catch (Exception e) {
             e.printStackTrace();

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

@@ -493,7 +493,10 @@ public class FileUtils {
                     fos.close();
                     if (newIOSSClient!= null ) {
                         //BladeFile bladeFile  = newIOSSClient.updateFile(out.toByteArray(),fileName);
-                        BladeFile bladeFile  = newIOSSClient.uploadFile(fileName,filePath,OssConstant.ARCHIVE_DIRECTORY,projectId);
+
+                        String absoluteFileName = FileUtils.getOssPath(OssConstant.ARCHIVE_DIRECTORY,fileName,projectId);
+                        BladeFile bladeFile = newIOSSClient.uploadFile(absoluteFileName + ".pdf", filePath);
+                        //BladeFile bladeFile  = newIOSSClient.uploadFile(fileName,filePath,OssConstant.ARCHIVE_DIRECTORY,projectId);
                         result.add(bladeFile.getLink());
 //                        File f = new File(filePath);
 //                        f.deleteOnExit();
@@ -642,7 +645,55 @@ public class FileUtils {
         }
     }
 
+    /**
+     * 预览文件  getOssPath(OssConstant.TEMP_DIRECTORY,文件名,随便填)
+     *          /upload/showtmp/xxxx
+     * 归档文件  getOssPath(OssConstant.ARCHIVE_DIRECTORY,文件名,projectId)
+     *         /upload/projectId/archive/20200304/xxxx
+     *  系统级或者不填projectId  getOssPath("","12344555",null)
+     *         upload/sys/20230505/xxxxx
+     * 拼接oss绝对路径
+     * @param filePath
+     * @param fileName
+     * @param projectId
+     * @return
+     */
+    public static String getOssPath(String filePath, String fileName, Long projectId){
+
+        String ossPath = OssConstant.NORMAL_DIRECTORY;
+
+        //如果是临时预览目录,则在 /upload/showtmp/xxxx.pdf
+        if (filePath!=null && filePath.equals(OssConstant.TEMP_DIRECTORY)) {
+            ossPath = ossPath + "/" + filePath + "/" + fileName;
+            return ossPath;
+        }
+
+        //项目的在 /upload/项目id/下   系统的在 /upload/sys下
+        String projectDir = OssConstant.SYS_DIRECTORY;
+        if (projectId != null)
+        {
+            projectDir = projectId.toString();
+        }
+        Date now = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        String formattedDate = sdf.format(now);
+        if (org.springframework.util.StringUtils.isEmpty(filePath)) {
+            filePath = formattedDate;
+        }else {
+            filePath = filePath +  "/" + formattedDate;
+        }
+
+        ossPath = ossPath +  "/" + projectDir +  "/" +  filePath + "/" + fileName;
+
+        return ossPath;
+    }
+
 //    public static void main(String[] args) {
+//
+//        System.out.println(getOssPath(null,"12344555",12424445L));
+//        System.out.println(getOssPath(OssConstant.TEMP_DIRECTORY,"12344555",12424445L));
+//        System.out.println(getOssPath(OssConstant.ARCHIVE_DIRECTORY,"12344555",12424445L));
+//        System.out.println(getOssPath("","12344555",null));
 //        String url = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/1578599210897772545/archive/ed4305eb971b062046c1ffd4e2da3c32-page1-1.pdf";
 //        String url1 = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/ed4305eb971b062046c1ffd4e2da3c32-page1-1.pdf";
 //

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

@@ -77,9 +77,6 @@
         <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.archiveId != null and vo.archiveId != ''">
             and archive_id = #{vo.archiveId}
         </if>
@@ -120,9 +117,6 @@
         <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.archiveId != null and vo.archiveId != ''">
             and archive_id = #{vo.archiveId}
         </if>

+ 20 - 20
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java

@@ -278,26 +278,26 @@ public class FirstController extends BladeController {
                                                         x1 = 1;
                                                     }
                                                     String myData = dataMap.get(val) + "";
-                                                    if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
-                                                        if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-                                                            myData = myData.replace("[", "").replace("]", "");
-                                                            String[] dataVal = myData.split(",");
-                                                            String[] Start_dataStr = dataVal[0].split("T")[0].split("-");
-                                                            String StartDate = StringUtil.format("{}年{}月{}日", Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1);
-
-                                                            String[] end_dataStr = dataVal[1].split("T")[0].split("-");
-                                                            String endDate = StringUtil.format("{}年{}月{}日", end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1);
-
-                                                            if (StartDate.equals(endDate)) {
-                                                                myData = StartDate;
-                                                            } else {
-                                                                myData = StartDate + "-" + endDate;
-                                                            }
-                                                        } else {
-                                                            String[] dataStr = myData.split("T")[0].split("-");
-                                                            myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
-                                                        }
-                                                    }
+//                                                    if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
+//                                                        if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
+//                                                            myData = myData.replace("[", "").replace("]", "");
+//                                                            String[] dataVal = myData.split(",");
+//                                                            String[] Start_dataStr = dataVal[0].split("T")[0].split("-");
+//                                                            String StartDate = StringUtil.format("{}年{}月{}日", Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1);
+//
+//                                                            String[] end_dataStr = dataVal[1].split("T")[0].split("-");
+//                                                            String endDate = StringUtil.format("{}年{}月{}日", end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1);
+//
+//                                                            if (StartDate.equals(endDate)) {
+//                                                                myData = StartDate;
+//                                                            } else {
+//                                                                myData = StartDate + "-" + endDate;
+//                                                            }
+//                                                        } else {
+//                                                            String[] dataStr = myData.split("T")[0].split("-");
+//                                                            myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
+//                                                        }
+//                                                    }
 
                                                     if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
                                                         Element element = trs.get(y1).select("td").get(x1);

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

@@ -47,6 +47,8 @@ public interface ArchiveTreeMapper extends BaseMapper<ArchiveTree> {
     int removeAllSonNodeIdsForArchiveAutoRule_3(@Param("archiveAutoType") Integer archiveAutoType,
                                                 @Param("ancestors") String ancestors,
                                                 @Param("nodeId") Long nodeId);
+
+    int removeAllSonNodeforTypeIsNUll(@Param("ancestors") String ancestors,@Param("nodeId") Long nodeId);
     int removeNodeForArchiveAutoRule_Group(@Param("archiveAutoGroupId") Long archiveAutoGroupId);
     /**
      * 查看分类并卷规则-获取大类所有节点

+ 18 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml

@@ -310,6 +310,20 @@
         </if>
     </update>
 
+
+    <update id="removeAllSonNodeforTypeIsNUll">
+        update m_archive_tree
+        set
+            archive_auto_type = null,
+            archive_auto_group_select =NULL
+        where
+           is_deleted = 0
+           and ancestors like concat('', #{ancestors}, '%')
+           and archive_auto_type = 1
+           and archive_auto_node_id is NULL
+           or id=#{nodeId} ;
+    </update>
+
     <update id="removeAllSonNodeIdsForArchiveAutoRule_1">
         update m_archive_tree
         set
@@ -322,7 +336,8 @@
 
         update m_archive_tree
         set
-            archive_auto_type = NULL
+            archive_auto_type = NULL,
+            archive_auto_group_select =NULL
         where
             is_deleted = 0
           and ancestors like concat('', #{ancestors}, '%')
@@ -335,7 +350,8 @@
         update m_archive_tree
         set
             /*取消规则 恢复默认规则 不需要设置为null,如果最高并卷节点取消规则,archive_auto_node_id会为空,相当于无规则不会进到自动组卷流程*/
-            archive_auto_type = 1
+            archive_auto_type = 1,
+            archive_auto_group_select =NULL
         where
             is_deleted = 0
           and ancestors like concat('', #{ancestors}, '%')

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveAutoRuleSyncImpl.java

@@ -353,6 +353,9 @@ public class ArchiveAutoRuleSyncImpl {
                             //已经是客户级了不用理
                         }
                     }
+                }else{
+                    //type为null的,也要更新 防止在项目级取消规则了
+                    contractVO2.setFlag(1);
                 }
             }
             //archiveAutoType  与项目级一致  不用处理

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

@@ -214,6 +214,11 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			archiveTreeContractDTO.setTreeSort(parent.getTreeSort());
 			archiveTreeContractDTO.setContractId(parent.getContractId());
 			archiveTreeContractDTO.setTreeCode(parent.getTreeCode());
+
+			archiveTreeContractDTO.setArchiveAutoNodeId(parent.getArchiveAutoNodeId());
+			archiveTreeContractDTO.setArchiveAutoType(parent.getArchiveAutoType());
+			archiveTreeContractDTO.setArchiveAutoGroupId(parent.getArchiveAutoGroupId());
+			archiveTreeContractDTO.setArchiveAutoGroupSelect(0);
 		}
 
 		archiveTreeContractDTO.setIsDeleted(BladeConstant.DB_NOT_DELETED);
@@ -456,6 +461,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 		this.saveBatch(saveList);
 		this.updateBatchById(upList);
+
 		return true;
 	}
 

+ 10 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -317,6 +317,11 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             archiveTreeDTO.setTenantId(parent.getTenantId());
             String ancestors = parent.getAncestors() + StringPool.COMMA + archiveTreeDTO.getParentId();
             archiveTreeDTO.setAncestors(ancestors);
+
+            archiveTreeDTO.setArchiveAutoType(parent.getArchiveAutoType());
+            archiveTreeDTO.setArchiveAutoNodeId(parent.getArchiveAutoNodeId());
+            archiveTreeDTO.setArchiveAutoGroupId(parent.getArchiveAutoGroupId());
+            archiveTreeDTO.setArchiveAutoGroupSelect(0);
         }
 
         archiveTreeDTO.setIsDeleted(BladeConstant.DB_NOT_DELETED);
@@ -670,6 +675,11 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
                         String ancestors = node.getAncestors()+","+nodeId;
                         baseMapper.removeAllSonNodeIdsForArchiveAutoRule_3(node.getArchiveAutoType(),ancestors,nodeId);
                     }
+                }else{
+                    //为null的话 主要是出现脏数据。当做维护处理
+                    //可以把当前节点下的archive_auto_type=1,archive_auto_node_id为null的 数据archive_auto_type改为null
+                    String ancestors = node.getAncestors()+","+nodeId;
+                    baseMapper.removeAllSonNodeforTypeIsNUll(ancestors,nodeId);
                 }
             }
         }catch (Exception e){