diff --git a/ruoyi-admin/target/classes/application.yml b/ruoyi-admin/target/classes/application.yml index 27c4a349..0a636ad6 100644 --- a/ruoyi-admin/target/classes/application.yml +++ b/ruoyi-admin/target/classes/application.yml @@ -10,9 +10,9 @@ ruoyi: demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) #profile: /opt/ruoyi/uploadPath - profile: C:/Users/ThinkPad/Desktop/sql + profile: E:/download # 需要读取的文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - readPath: C:/Users/ThinkPad/Desktop/im1 + readPath: E:/upload/gcy # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/controller/ArchivesImportController.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/controller/ArchivesImportController.java index 185c7621..d68b6dde 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/controller/ArchivesImportController.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/controller/ArchivesImportController.java @@ -42,4 +42,11 @@ public class ArchivesImportController { public AjaxResult hookUpAttachments(@RequestParam("file") MultipartFile file,@PathVariable("type") String type) { return this.archiveImportService.hookUpAttachments(file,type); } + /* + 挂接附件 + */ + @PostMapping("/hookUpAttachments/v2/{type}") + public AjaxResult hookUpAttachmentsV2(@PathVariable("type") String type){ + return this.archiveImportService.hookUpAttachmentsV2(type); + } } diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/service/ArchiveImportService.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/service/ArchiveImportService.java index e183b4e2..9ce5c02d 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/service/ArchiveImportService.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/service/ArchiveImportService.java @@ -19,4 +19,5 @@ public interface ArchiveImportService { AjaxResult deleteImportInfo(String[] ids); AjaxResult hookUpAttachments(MultipartFile file, String type); + AjaxResult hookUpAttachmentsV2(String type); } diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/service/impl/ArchiveImportServiceImpl.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/service/impl/ArchiveImportServiceImpl.java index bbee584f..534c3b06 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/service/impl/ArchiveImportServiceImpl.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/service/impl/ArchiveImportServiceImpl.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -74,7 +75,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { @Autowired private IArchivesHkHistoryService archivesHkHistoryService; @Resource - private RedisTemplate> > redisTemplate; + private RedisTemplate redisTemplate; private static String WS_FILE_NUM_EXAMPLE="^WS[0-9]{4}-\\w+-[0-9]+"; private static String WS_HISTORY_NUM_EXAMPLE="^W[0-9]+-[0-9]+"; @@ -90,14 +91,13 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { private static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMdd"); private static final String RECORD_TYPE="record"; private static final String FILE_TYPE="file"; - private static final String FILE_MSG="file:msg"; + private static final String RECORD_MSG="archive:info:record"; + private static final String FILE_MSG="archive:info:file"; @Override public AjaxResult importExcel(MultipartFile file, String type) { if (file.isEmpty()) { return AjaxResult.error("文件为空"); } -// final Map> files = getFils(); - if (type == null) { return AjaxResult.error("档案类目未选择"); } @@ -263,7 +263,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getHTAction()); +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getHTAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, ContractFileModel.class, 2, 2); //去重 @@ -294,7 +295,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,upladDown); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { @@ -377,8 +379,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getSXAction()); - +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getSXAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, MediaFileModel.class, 2, 2); //去重 @@ -415,7 +417,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,upladDown); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { @@ -491,8 +494,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传所有相关的文件 - List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getJJAction()); - +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getJJAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); List writFileModels = ExcelUtil.readExcel(file, CapitalFileModel.class, 2, 2); //去重 writFileModels=writFileModels.stream().distinct().collect(Collectors.toList()); @@ -541,7 +544,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,upladDown); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { @@ -625,7 +629,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getZXXMAction()); +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getZXXMAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, WSFileModel.class, 2, 2); //去重 @@ -660,7 +665,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,upladDown); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { @@ -735,12 +741,13 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List uploadDown=uploadAllFiles(stringArchiveRecordInfoMap,ArchiveUploadConfig.getNJAction()); +// List uploadDown=uploadAllFiles(stringArchiveRecordInfoMap,ArchiveUploadConfig.getNJAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, CommonFileModel.class, 2, 2); writFileModels=writFileModels.stream().distinct().collect(Collectors.toList()); ArrayList archiveFileInfos = new ArrayList<>(writFileModels.size()); - this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos,uploadDown); + this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos,type); List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { //再次查询 @@ -821,8 +828,9 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getZXAction()); - //读取文件 +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getZXAction()); + + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, WSFileModel.class, 2, 2); //去重 @@ -857,7 +865,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,upladDown); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { @@ -934,12 +943,13 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List uploadDown=uploadAllFiles(stringArchiveRecordInfoMap,ArchiveUploadConfig.getSTAction()); +// List uploadDown=uploadAllFiles(stringArchiveRecordInfoMap,ArchiveUploadConfig.getSTAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, CommonFileModel.class, 2, 2); writFileModels=writFileModels.stream().distinct().collect(Collectors.toList()); ArrayList archiveFileInfos = new ArrayList<>(writFileModels.size()); - this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos,uploadDown); + this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos,type); List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { //再次查询 @@ -1014,11 +1024,12 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List uploadDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getJYAction()); +// List uploadDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getJYAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, CommonFileModel.class, 2, 2); ArrayList archiveFileInfos = new ArrayList<>(writFileModels.size()); - this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos,uploadDown); + this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos,type); List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { //再次查询 @@ -1103,7 +1114,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); //上传相关的文件 - List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getWSAction()); +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getWSAction()); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); //读取文件 List writFileModels = ExcelUtil.readExcel(file, WSFileModel.class, 2, 2); //去重 @@ -1138,7 +1150,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,upladDown); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } List keyValues=new ArrayList<>(); for (ArchiveRecordInfo archiveRecordInfo : list) { @@ -1242,7 +1255,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { /* 读取导入卷内文件 */ - private void importFiles (List fileModels,MultipartFile file, Map stringArchiveRecordInfoMap, ArrayList archiveFileInfos,List list) throws Exception { + private void importFiles (List fileModels,MultipartFile file, Map stringArchiveRecordInfoMap, ArrayList archiveFileInfos,String type) throws Exception { if (fileModels!=null&&fileModels.size()>0){ for (int i = 0; i < fileModels.size(); i++) { CommonFileModel tmp = fileModels.get(i); @@ -1268,7 +1281,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveFileInfo.setStatus("0"); archiveFileInfos.add(archiveFileInfo); } - batchSaveFileInfoList(archiveFileInfos,list); + batchSaveFileInfoList(archiveFileInfos); + this.setCacheByFile(archiveFileInfos,type); } @@ -1358,13 +1372,11 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { * 批量保存卷内目录信息 * @param archiveFileInfoList */ - private void batchSaveFileInfoList(List archiveFileInfoList,List list){ + private void batchSaveFileInfoList(List archiveFileInfoList){ archiveFileInfoService.batchSaveFileInfoList(archiveFileInfoList); - if (list!=null&&list.size()>0){ - changeRecordToFile(archiveFileInfoList,list); - } + } /* @@ -1478,6 +1490,54 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { return AjaxResult.success(); } + @Override + public AjaxResult hookUpAttachmentsV2(String type) { + String recordKey = RECORD_MSG+":"+type; + String fileKey = FILE_MSG+":"+type; + ValueOperations ops = redisTemplate.opsForValue(); + Map recordInfoMap = (Map) ops.get(recordKey); + List fileInfos = (List) ops.get(fileKey); + if (recordInfoMap==null)return AjaxResult.error("请先上传数据"); + String action =null; + switch (type){ + case CategoryDict.JJ_RECORD: + action=ArchiveUploadConfig.getJJAction(); + break; + case CategoryDict.HT_RECORD: + action=ArchiveUploadConfig.getHTAction(); + break; + case CategoryDict.SW_RECORD: + action=ArchiveUploadConfig.getSTAction(); + break; + case CategoryDict.SX_RECORD: + action=ArchiveUploadConfig.getSXAction(); + break; + case CategoryDict.ZX_RECORD: + action=ArchiveUploadConfig.getZXAction(); + break; + case CategoryDict.WS_RECORD: + action=ArchiveUploadConfig.getWSAction(); + break; + case CategoryDict.ZXXM_RECORD: + action=ArchiveUploadConfig.getZXXMAction(); + break; + case CategoryDict.JYDA_RECORD: + action=ArchiveUploadConfig.getJYAction(); + break; + case CategoryDict.DAYJJL_RECORD: + action=ArchiveUploadConfig.getDAYJAction(); + break; + case CategoryDict.NJ_RECORD: + action=ArchiveUploadConfig.getNJAction(); + break; + } + List fileUploadLists = uploadAllFiles(recordInfoMap, action); + changeRecordToFile(fileInfos,fileUploadLists); + redisTemplate.delete(recordKey); + redisTemplate.delete(fileKey); + return AjaxResult.success("挂载完成"); + } + public static void copyFile(File source,File dfile) throws IOException { FileInputStream fis=null; FileOutputStream fos=null; @@ -1503,7 +1563,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } - /* + /** * @Description:批量上传文件 * @param stringArchiveRecordInfoMap 需要导入上传文件的数据 * @param byAction 根据ArchiveRecordInfo1的那个字段读取文件 @@ -1529,7 +1589,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } return list; } - /* + /** * @Description:单个上传 * @param fileUploadList 上传后保存的对象 * @param file 需要上传的文件 @@ -1556,7 +1616,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } return fileUploadList; } - /* + /** * @Description:获取从本地读取的文件信息 key:为字段名 value:为所对应的文件的路径 * @param * @return: java.util.Map> @@ -1566,7 +1626,6 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { // Map> fileMsg = redisTemplate.opsForValue().get(FILE_MSG); // if (fileMsg==null){ Map> msg=new HashMap<>(); -// String path="C:\\Users\\ThinkPad\\Desktop\\down"; String path=RuoYiConfig.getReadPath(); File file=new File(path); log.info("读取文件开始==========================="); @@ -1580,7 +1639,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { // return fileMsg; return fils; } - /* + /** * @Description:从本地读取文件并保存相关信息 * @param file 从那个路径开始读取 例如 /opt/doc/ * @param map 保存读取的文件信息 @@ -1625,7 +1684,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { return map; } - /* + /** * @Description:file 转换 MultipartFile * @param file 需要转换的文件 * @return: org.springframework.web.multipart.commons.CommonsMultipartFile @@ -1650,4 +1709,42 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } return new CommonsMultipartFile(item); } + + + /** + * @Description:设置record缓存 + * @param map 保存数据库成功的数据 + * @param type 文档类型 + * @Date: 2022/5/22 19:56 + */ + private void setCacheByRecord(Map map,String type){ + ValueOperations ops = redisTemplate.opsForValue(); + String key =RECORD_MSG+":"+type; + MapstringListMap = (Map) ops.get(key); + if ((stringListMap != null && !stringListMap.isEmpty())) { + stringListMap.putAll(map); + ops.set(key,stringListMap); + } else { + ops.set(key, map); + } + } + + /** + * @Description:设置fileinfo缓存 + * @param fileInfos 保存成功的卷内文件 + * @param type 卷内文件类型 + * @Date: 2022/5/22 19:57 + */ + private void setCacheByFile(List fileInfos,String type){ + ValueOperations ops = redisTemplate.opsForValue(); + String key =FILE_MSG+":"+type; + List infoList = (List) ops.get(key); + if ((infoList != null && !infoList.isEmpty())) { + infoList.addAll(fileInfos); + infoList=infoList.stream().distinct().collect(Collectors.toList()); + ops.set(key,infoList); + } else { + ops.set(key, fileInfos); + } + } } diff --git a/ruoyi-archives/target/classes/com/ruoyi/archives/controller/ArchivesImportController.class b/ruoyi-archives/target/classes/com/ruoyi/archives/controller/ArchivesImportController.class index 8609ff77..f2126d3f 100644 Binary files a/ruoyi-archives/target/classes/com/ruoyi/archives/controller/ArchivesImportController.class and b/ruoyi-archives/target/classes/com/ruoyi/archives/controller/ArchivesImportController.class differ diff --git a/ruoyi-archives/target/classes/com/ruoyi/archives/service/ArchiveImportService.class b/ruoyi-archives/target/classes/com/ruoyi/archives/service/ArchiveImportService.class index 6a7ee6e2..21c0bd2c 100644 Binary files a/ruoyi-archives/target/classes/com/ruoyi/archives/service/ArchiveImportService.class and b/ruoyi-archives/target/classes/com/ruoyi/archives/service/ArchiveImportService.class differ diff --git a/ruoyi-common/target/classes/archivesUpload.properties b/ruoyi-common/target/classes/archivesUpload.properties index 66c9cd14..d7b5165d 100644 --- a/ruoyi-common/target/classes/archivesUpload.properties +++ b/ruoyi-common/target/classes/archivesUpload.properties @@ -1,7 +1,7 @@ #·βҪ / #upload.path=/home/hanyuqin/ruoyi/uploadPath -upload.path=C:/Users/ThinkPad/Desktop/sql +upload.path=E:/download #ϴӦֶ upload.actions.file_num=getFileNum upload.actions.case_num=getCaseNum