“zhifk” 2 years ago
parent
commit
3c5f75bf74
14 changed files with 244 additions and 79 deletions
  1. 27 0
      blade-common/src/main/java/org/springblade/common/utils/FileUtils.java
  2. 11 0
      blade-common/src/main/java/org/springblade/common/vo/FileSize.java
  3. 21 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java
  4. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelEditCallback.java
  5. 4 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  6. 2 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java
  7. 55 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  8. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java
  9. 16 5
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java
  10. 25 57
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  11. 42 6
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  12. 14 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FormulaUtil.java
  13. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java
  14. 20 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

+ 27 - 0
blade-common/src/main/java/org/springblade/common/utils/FileUtils.java

@@ -1,10 +1,16 @@
 package org.springblade.common.utils;
 
+import lombok.SneakyThrows;
+import org.springblade.common.vo.FileSize;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 
 public class FileUtils  {
@@ -31,4 +37,25 @@ public class FileUtils  {
         return convertFile;
     }
 
+    //获取文件大小
+    public static List<FileSize> getOssFileSize(List<String> fileList){
+        List<FileSize> reData =new ArrayList<>();
+        if(fileList!=null){
+            for(String fileUrl:fileList){
+                FileSize file =new FileSize();
+                file.setFileUrl(fileUrl);
+                try {
+                    URLConnection  openConnection = new URL(fileUrl).openConnection();
+                    int contentLength = openConnection.getContentLength();
+                    Double fileLength = Double.parseDouble(contentLength+"");
+                    file.setFileSize(Math.ceil(fileLength/1024));
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                reData.add(file);
+            }
+        }
+        return  reData;
+    }
+
 }

+ 11 - 0
blade-common/src/main/java/org/springblade/common/vo/FileSize.java

@@ -0,0 +1,11 @@
+package org.springblade.common.vo;
+
+import lombok.Data;
+
+@Data
+public class FileSize {
+
+    private String fileUrl;
+
+    private double fileSize;
+}

+ 21 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java

@@ -59,12 +59,16 @@ public class ArchivesAutoVO extends ArchivesAuto {
 	@ApiModelProperty("年")
 	private String year;
 
+	private List<String> years;
+
 	/**
 	 * 年
 	 */
 	@ApiModelProperty("月")
 	private String month;
 
+	private List<String> months;
+
 	/**
 	 * 输入框查询条件
 	 */
@@ -84,11 +88,26 @@ public class ArchivesAutoVO extends ArchivesAuto {
 	 */
 	private String secretLevelValue;
 
+	/**
+	 * 搜索密级集合
+	 */
+	private List<String> secretLevels;
+
 	/**
 	 * 保管期限(单位/年)
 	 */
 	private String storageTimeValue;
 
+	/**
+	 * 搜索期限集合
+	 */
+	private List<String> storageTimes;
+
+	/**
+	 * 搜索类别集合
+	 */
+	private List<String> carrierTypes;
+
 	@ApiModelProperty("批量保存")
 	private List<ArchivesAutoVO> list;
 	/**
@@ -152,5 +171,7 @@ public class ArchivesAutoVO extends ArchivesAuto {
 		 * 责任者
 		 */
 		private String dutyUser;
+
+		private  String archiveId;
 	}
 }

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelEditCallback.java

@@ -15,7 +15,7 @@ public class ExcelEditCallback {
     private Integer status;
 
     // excel 的唯一标识
-    private Long key;
+    private String key;
 
     // 返回码
     private Integer error;

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

@@ -35,6 +35,8 @@ import org.springblade.archive.wrapper.ArchivesAutoWrapper;
 import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  *  控制器
  *
@@ -101,8 +103,8 @@ public class ArchivesAutoController extends BladeController {
 			@ApiImplicitParam(name = "queryValue", value = "输入框模糊搜索"),
 			@ApiImplicitParam(name = "searchType", value = "搜索类型1案卷2文件")
 	})
-	public R<IPage<ArchivesAuto>> pageByArchivesAuto(ArchivesAutoVO archivesAuto) {
-		IPage<ArchivesAuto> pages = archivesAutoService.pageByArchivesAuto(archivesAuto);
+	public R<IPage<ArchivesAutoVO>> pageByArchivesAuto(ArchivesAutoVO archivesAuto) {
+		IPage<ArchivesAutoVO> pages = archivesAutoService.pageByArchivesAuto(archivesAuto);
 		return R.data(pages);
 	}
 

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -56,4 +56,6 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	 *  根据项目id获取所有档案
 	 */
 	List<ArchivesAutoDTO> getListByProjectId(@Param("projectId") Long projectId);
+
+    List<ArchivesAutoVO> pageByArchivesAuto(IPage page, @Param("vo") ArchivesAutoVO vo);
 }

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

@@ -3,7 +3,7 @@
 <mapper namespace="org.springblade.archive.mapper.ArchivesAutoMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="archivesAutoResultMap" type="org.springblade.archive.entity.ArchivesAuto">
+    <resultMap id="archivesAutoResultMap" type="org.springblade.archive.vo.ArchivesAutoVO">
         <result column="id" property="id"/>
         <result column="create_user" property="createUser"/>
         <result column="create_dept" property="createDept"/>
@@ -47,8 +47,18 @@
         <result column="is_auto_file" property="isAutoFile"/>
         <result column="auto_file_sort" property="autoFileSort"/>
         <result column="filing_unit" property="filingUnit"/>
+        <collection property="approvalFileList" javaType="java.util.List"
+                    select="approvalFile"
+                    column="{archiveId=id}">
+        </collection>
     </resultMap>
 
+    <select id="approvalFile" resultType="org.springblade.archive.vo.ArchivesAutoVO$ApprovalFile">
+        <if test="archiveId!=null">
+            select * from u_archive_file where archive_id = #{archiveId}
+        </if>
+    </select>
+
 
     <select id="selectArchivesAutoPage" resultMap="archivesAutoResultMap">
         select * from u_archives_auto where is_deleted = 0
@@ -124,6 +134,50 @@
         from u_archives_auto
         where project_id=#{projectId};
     </select>
+    <select id="pageByArchivesAuto" resultMap="archivesAutoResultMap">
+        select uaa.* from u_archives_auto uaa left join u_archive_file uaf on uaa.id = uaf.archive_id
+        where uaa.is_deleted = 0
+        <if test="vo.projectId != null and vo.projectId != ''">
+            and uaa.project_id = #{vo.projectId}
+        </if>
+        <if test="vo.searchType == 1 and vo.queryValue != null and vo.queryValue != ''">
+            and uaa.name like concat('%',#{vo.queryValue},'%')
+        </if>
+        <if test="vo.searchType == 2 and vo.queryValue != null and vo.queryValue != ''">
+            and uaf.file_name like concat('%',#{vo.queryValue},'%')
+        </if>
+        <if test="vo.storageTimes != null and vo.storageTimes != ''">
+            and uaa.storage_time in
+            <foreach collection="vo.storageTimes" item="storageTime" open="(" separator="," close=")">
+                #{storageTime}
+            </foreach>
+        </if>
+        <if test="vo.secretLevels != null and vo.secretLevels != ''">
+            and uaa.secret_level in
+            <foreach collection="vo.secretLevels" item="secretLevel" open="(" separator="," close=")">
+                #{secretLevel}
+            </foreach>
+        </if>
+        <if test="vo.carrierTypes != null and vo.carrierTypes != ''">
+            and uaa.carrier_type in
+            <foreach collection="vo.carrierTypes" item="carrierType" open="(" separator="," close=")">
+                #{carrierType}
+            </foreach>
+        </if>
+        <if test="vo.years != null and vo.years != ''">
+            and
+            <foreach collection="vo.years" item="year" separator=" or" open="(" close=")" >
+                #{year} BETWEEN  DATE_FORMAT(uaa.start_date,'%Y') and DATE_FORMAT(uaa.end_date ,'%Y')
+            </foreach>
+        </if>
+        <if test="vo.months != null and vo.months != ''">
+            and
+            <foreach collection="vo.months" item="month" separator=" or" open="(" close=")">
+                #{month} BETWEEN  DATE_FORMAT(uaa.start_date,'%c') and DATE_FORMAT(uaa.end_date ,'%c')
+            </foreach>
+        </if>
+        GROUP BY uaa.id
+    </select>
 
 
 </mapper>

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

@@ -38,7 +38,7 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	 */
 	IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto);
 
-	IPage<ArchivesAuto> pageByArchivesAuto(ArchivesAutoVO archivesAuto);
+	IPage<ArchivesAutoVO> pageByArchivesAuto(ArchivesAutoVO archivesAuto);
 
 	IPage<ArchivesAutoVO> selectArchivesAutoFilePage(ArchivesAutoVO queryVo);
 

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

@@ -102,6 +102,7 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         Long projectId = 1578599210897772545L;
 
         ArchivesAuto archivesAuto = new ArchivesAuto();
+        archivesAuto.setId(SnowFlakeUtil.getId());
         archivesAuto.setProjectId(projectId);
         archivesAuto.setName("案卷提名");
         archivesAuto.setFileNumber("档号");
@@ -372,9 +373,17 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
         //合并成一个
         if (localUrls.size() > 1) {
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            FileUtils.PdfCopyPublicMethods(bos, localUrls);
-            BladeFile bladeFile = newIOSSClient.updateFile(bos.toByteArray(),fileName);
+            Long id = SnowFlakeUtil.getId();
+            String trialPdf = file_path + "/pdf/" + id + ".pdf";
+
+            //合并当前所有选择的试验pdf
+            FileUtils.mergePdfPublicMethods(localUrls, trialPdf);
+            BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", trialPdf);
+
+
+//            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+//            FileUtils.PdfCopyPublicMethods(bos, localUrls);
+//            BladeFile bladeFile = newIOSSClient.updateFile(bos.toByteArray(),fileName + ".pdf");
             if (bladeFile!= null ) {
                 urls.add(bladeFile.getLink());
             }
@@ -589,10 +598,12 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
         // 将日期赋值给startDate和endDate
         if (!minDate.isEmpty()) {
-            archive.setStartDate(LocalDateTime.parse(minDate, formatter));
+            LocalDateTime localDateTime = FormulaUtil.parseStringToLocalDateTime(minDate,"yyyyMMdd");
+            archive.setStartDate(localDateTime);
         }
         if (!maxDate.isEmpty()) {
-            archive.setEndDate(LocalDateTime.parse(maxDate, formatter));
+            LocalDateTime localDateTime = FormulaUtil.parseStringToLocalDateTime(maxDate,"yyyyMMdd");
+            archive.setEndDate(localDateTime);
         }
 
         Map<String, Object> archivesAutoMap = new ObjectMapper().convertValue(archive, Map.class);

+ 25 - 57
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -68,65 +68,33 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 
 	@Override
-	public IPage<ArchivesAuto> pageByArchivesAuto(ArchivesAutoVO vo) {
-		IPage<ArchivesAuto> page = new Page<>(vo.getCurrent(),vo.getSize());
-		LambdaQueryWrapper<ArchivesAuto> lqw = new LambdaQueryWrapper<>();
-		lqw.eq(ArchivesAuto::getProjectId,vo.getProjectId());
-		//过滤日期
-		if (StringUtils.isNotBlank(vo.getYear())){
-			if (StringUtils.isNotBlank(vo.getMonth())){
-				int day;
-				if (Arrays.asList("1,3,5,7,8,10,12".split(",")).contains(vo.getMonth())){
-					day = 31;
-				}else if (Arrays.asList("1,3,5,7,8,10,12".split(",")).contains(vo.getMonth())){
-					day = 30;
-				}else {
-					if (Integer.parseInt(vo.getYear()) % 4 == 0){
-						day = 29;
-					}else {
-						day = 28;
-					}
-				}
-				lqw.ge(ArchivesAuto::getStartDate,LocalDateTime.of(Integer.parseInt(vo.getYear()), Integer.parseInt(vo.getMonth()), 1, 0, 0, 0));
-				lqw.le(ArchivesAuto::getEndDate,LocalDateTime.of(Integer.parseInt(vo.getYear()), Integer.parseInt(vo.getMonth()), day, 0, 0, 0));
-			}else {
-				lqw.ge(ArchivesAuto::getStartDate,LocalDateTime.of(Integer.parseInt(vo.getYear()), 1, 1, 0, 0, 0));
-				lqw.ge(ArchivesAuto::getEndDate,LocalDateTime.of(Integer.parseInt(vo.getYear()), 12, 31, 0, 0, 0));
-			}
-		}else if (StringUtils.isNotBlank(vo.getMonth())){
-			throw new RuntimeException("请选择年");
+	public IPage<ArchivesAutoVO> pageByArchivesAuto(ArchivesAutoVO vo) {
+		IPage<ArchivesAutoVO> page = new Page<>();
+		if (StringUtils.isNotBlank(vo.getStorageTime())) {
+			vo.setStorageTimes(Arrays.asList(vo.getStorageTime().split(",")));
 		}
-		lqw.eq(StringUtils.isNotBlank(vo.getStorageTime()),ArchivesAuto::getStorageTime,vo.getStorageTime())
-				.eq(StringUtils.isNotBlank(vo.getSecretLevel()),ArchivesAuto::getSecretLevel,vo.getSecretLevel())
-					.eq(StringUtils.isNotBlank(vo.getCarrierType()),ArchivesAuto::getCarrierType,vo.getCarrierType());
-		//按案卷搜索完成,判断是否按文件搜索
-		if (vo.getSearchType() == 1){
-			lqw.like(StringUtils.isNotBlank(vo.getQueryValue()),ArchivesAuto::getName,vo.getQueryValue());
-			this.page(page,lqw);
-			return page;
-		}else {
-			List<ArchivesAuto> list = this.list(lqw);
-			list = list.stream().filter(auto -> {
-				List<ArchiveFile> files = archiveFileClient.getArchiveFileByArchivesId(auto.getId() + "", "");
-				if (files != null && files.size() > 0){
-					files = files.stream().filter(file->file.getFileName().contains(vo.getQueryValue())).collect(Collectors.toList());
-				}
-				if (files != null && files.size() > 0){
-					return true;
-				}else {
-					return false;
-				}
-			}).collect(Collectors.toList());
-			if (list != null && list.size() > 0){
-				List<Long> ids = list.stream().map(l -> l.getId()).collect(Collectors.toList());
-				this.page(page,new LambdaQueryWrapper<ArchivesAuto>().in(ArchivesAuto::getId,ids));
-				return page;
-			}else {
-				return  null;
-			}
-
+		if (StringUtils.isNotBlank(vo.getSecretLevel())){
+			vo.setSecretLevels(Arrays.asList(vo.getSecretLevel().split(",")));
 		}
-
+		if (StringUtils.isNotBlank(vo.getCarrierType())) {
+			vo.setCarrierTypes(Arrays.asList(vo.getCarrierType().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getYear())) {
+			vo.setYears(Arrays.asList(vo.getYear().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getMonth())) {
+			vo.setMonths(Arrays.asList(vo.getMonth().split(",")));
+		}
+		List<ArchivesAutoVO> archivesAutos = baseMapper.pageByArchivesAuto(page, vo);
+		archivesAutos.stream().forEach(aa->{
+			if (StringUtils.isNotBlank(aa.getStorageTime())){
+				aa.setStorageTimeValue("9999".equals(aa.getStorageTime())?"永久":("30".equals(aa.getStorageTime())?"30年":"10年"));
+			}
+			if (StringUtils.isNotBlank(aa.getSecretLevel())){
+				aa.setSecretLevelValue("1".equals(aa.getSecretLevel())?"机密":("2".equals(aa.getSecretLevel())?"绝密":"秘密"));
+			}
+		});
+		return page.setRecords(archivesAutos);
 	}
 
 	@Override

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

@@ -32,6 +32,10 @@ import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.*;
 import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -219,6 +223,13 @@ public class FileUtils {
 
             for(String urlStr : urlList){
                 try{
+                    if (urlStr.indexOf("https") >= 0 && urlStr.indexOf("aliyuncs") >= 0) {
+                        int lastIndexOf = urlStr.lastIndexOf("/");
+                        String prefix=urlStr.substring(0,lastIndexOf+1);
+                        String suffix=urlStr.substring(lastIndexOf+1);
+                        urlStr = prefix+ URLEncoder.encode(suffix,"UTF-8");
+                    }
+
                     //获取OSS文件输入流
                     reader = new PdfReader(CommonUtil.getOSSInputStream(urlStr));
 
@@ -496,6 +507,7 @@ public class FileUtils {
     }
 
 
+
     /**
      * @Description 合并PDF
      * @Param [bos:结果存在字节数组, uris:支持 file、http、jar等传输协议]
@@ -503,7 +515,7 @@ public class FileUtils {
      * @Author yangyj
      * @Date 2021.10.09 10:49
      **/
-    public static void PdfCopyPublicMethods(ByteArrayOutputStream bos,List<String> uris){
+    public static void PdfCopyPublicMethods1(ByteArrayOutputStream bos,List<String> uris){
         
         PdfReader reader = null;
         Document doc = new Document();
@@ -543,6 +555,14 @@ public class FileUtils {
                     }
                 }
             }
+            String filePath = "D:\\tmp\\aaa.pdf";
+            FileOutputStream fos = null;
+            fos = new FileOutputStream(filePath);
+            //bos.reset();
+            fos.write(bos.toByteArray()); // 将数据写入到指定文件路径中
+            //bos.flush();
+            //bos.close();
+            System.out.println();
         }catch (Exception e){
             e.printStackTrace();
         } finally {
@@ -553,16 +573,32 @@ public class FileUtils {
             doc.close();
         }
 
+
+
     }
 
     public static void main(String[] args) {
-        String  file1 = "https://huazheng2021002.oss-cn-shenzhen.aliyuncs.com/folderFile/54e8a314de8a493d9f08a9d3cf7c/104850dea8ca485cbda677c11f0d0e6c/安康至来凤国家高速公路奉节至巫山(渝鄂界)段K13+690~K19+385ZB1合同段开工令-20230415064429.pdf";
-        String  file2 = "https://huazheng2021002.oss-cn-shenzhen.aliyuncs.com/folderFile/54e8a314de8a493d9f08a9d3cf7c/f596dc71c3264977a2cc2b8e5d348b38/1-20230415063812.pdf";
-        List<String> urls  = new ArrayList<>();
-        urls.add(file1);
-        urls.add(file2);
+        String str = "20230413";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+        LocalDate date = LocalDate.parse(str, formatter);
+        LocalDateTime dateTime = LocalDateTime.of(date, LocalTime.MIN);
 
+<<<<<<< HEAD
         doForPageNumberUseItextpdf(urls,null);
+=======
+        String result = FormulaUtil.formatLocalDateTime(dateTime,"yyyyMMdd");
+        System.out.println();
+
+
+//        String  file1 = "https://huazheng2021002.oss-cn-shenzhen.aliyuncs.com/folderFile/54e8a314de8a493d9f08a9d3cf7c/104850dea8ca485cbda677c11f0d0e6c/安康至来凤国家高速公路奉节至巫山(渝鄂界)段K13+690~K19+385ZB1合同段开工令-20230415064429.pdf";
+//        String  file2 = "https://huazheng2021002.oss-cn-shenzhen.aliyuncs.com/folderFile/54e8a314de8a493d9f08a9d3cf7c/f596dc71c3264977a2cc2b8e5d348b38/1-20230415063812.pdf";
+//        List<String> urls  = new ArrayList<>();
+//        urls.add(file1);
+//        urls.add(file2);
+//
+//        doForPageNumberUseItextpdf(urls,null);
+
+>>>>>>> 01eea4552a653b0b44bc57c6f2f5dfb29cd26acf
     }
     public static final  String MAP4_AVI = "avi、wmv、mpeg、mp4、m4v、mov、asf、flv、f4v、rmvb、rm、3gp、vob";
     public static final  String XLS_XLSX = "xlsx、xls";

+ 14 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FormulaUtil.java

@@ -4,7 +4,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springblade.common.vo.DataVO;
 import org.springblade.manager.entity.ArchiveTree;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -41,6 +43,18 @@ public class FormulaUtil {
         return dateTime.format(formatter);
     }
 
+    /**
+     *  传入 "20230413", "yyyyMMdd";
+     * @param strDate
+     * @param pattern
+     * @return
+     */
+    public static LocalDateTime parseStringToLocalDateTime(String strDate, String pattern) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
+        LocalDate date = LocalDate.parse(strDate, formatter);
+        return LocalDateTime.of(date, LocalTime.MIN);
+    }
+
 
     /**
      *  excel 左边转换成从0开始的x,y

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java

@@ -629,6 +629,11 @@ public class ArTreeContractInitServiceImpl {
      */
     public void getMap(List<ArchiveTreeContractVO2> vos,List<ArchiveTreeContract> addList,Map<Long,ArchiveTreeContractVO2> vo2Map){
 
+        if(vo2Map==null){
+            vo2Map=new HashMap<>();
+        }
+
+
         for (ArchiveTreeContractVO2 ar:vos) {
             vo2Map.put(ar.getId(),ar);
         }

+ 20 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -68,6 +68,7 @@ import org.springframework.transaction.support.DefaultTransactionDefinition;
 
 import java.io.*;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.*;
@@ -516,28 +517,41 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             try {
                 //获取onlyOffice缓存中的文件流
                 URL url = new URL(downloadUri);
+                String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+                String filecode = SnowFlakeUtil.getId() + "";
+                String dataUrl=file_path + "/excel/" + filecode + ".pdf";
                 java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
+                connection.setRequestMethod("GET");
+                connection.setConnectTimeout(5 * 1000);
                 InputStream inputStream = connection.getInputStream();
                 if (inputStream == null) {
                     throw new Exception("文件为空");
                 }
-                Long tabId = callback.getKey();
+                String tabId = callback.getKey();
                 if (tabId == null) {
                     throw new Exception("excel为空");
+                }else{
+                    tabId = tabId.substring(0,tabId.lastIndexOf("_"));
                 }
                 //获取数据库信息
-                ExcelTab excelTab = baseMapper.selectById(tabId);
+                ExcelTab excelTab = baseMapper.selectById(Long.parseLong(tabId));
                 //上传新文件到文件服务器
                 byte[] officeByte = IoUtil.readToByteArray(inputStream);
-                BladeFile bladeFile = this.newIOSSClient.updateFile(officeByte, excelTab.getExtension());
-                //修改本地数据信息
-                excelTab.setFileUrl(bladeFile.getLink());
+
+                FileOutputStream fs = new FileOutputStream(dataUrl);
+                fs.write(officeByte);
+                fs.flush();
+                BladeFile bladeFile = newIOSSClient.uploadFile(excelTab.getExtension(), dataUrl);
                 //获取文件大小
                 int size = connection.getContentLength() / 1024 / 1024; //单位M
                 excelTab.setAttachSize(Long.parseLong(size + ""));
                 excelTab.setStatus(3);
+                excelTab.setFileUrl(bladeFile.getLink());
                 baseMapper.updateById(excelTab);
-                connection.disconnect();
+                File file = new File(dataUrl);
+                if(file.exists()){
+                    file.delete();
+                }
                 System.out.println("123456");
             } catch (Exception e) {
                 editCallback.setError(1);