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 acdf2f81..501ed06d 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 @@ -1411,48 +1411,12 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { list.add(archiveRecordInfo); } Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); - //上传相关的文件 - uploadAllFiles(stringArchiveRecordInfoMap,ArchiveUploadConfig.getDAYJAction()); -// //读取文件 -// List writFileModels = ExcelUtil.readExcel(file, CommonFileModel.class, 2, 2); -// ArrayList archiveFileInfos = new ArrayList<>(writFileModels.size()); -// this.importFiles(writFileModels,file,stringArchiveRecordInfoMap,archiveFileInfos); -// List keyValues=new ArrayList<>(); -// for (ArchiveRecordInfo archiveRecordInfo : list) { -// //再次查询 -// if (numberGenUtil.selectXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear(),Integer.valueOf(archiveRecordInfo.getCaseNum()))){ -// numberGenUtil.removeValueByKey(keyValues); -// throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——档号" + archiveRecordInfo.getFileNum() + "]根据档号生成规则,系统已存在相同流水号,请检查后提交"); -// } -// //无误后push -// KeyValue keyValue=new KeyValue(); -// keyValue.setKey(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()); -// keyValue.setValue(Integer.valueOf(archiveRecordInfo.getCaseNum())); -// keyValues.add(keyValue); -// numberGenUtil.pushXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear(),Integer.valueOf(archiveRecordInfo.getCaseNum())); -// } -// for (ArchiveFileInfo archiveFileInfo : archiveFileInfos) { -// if (archiveFileInfo!=null){ -// numberGenUtil.pushXmNum(archiveFileInfo.getArId(),Integer.valueOf(archiveFileInfo.getArSort())); -// } -// -// } + this.setCacheByRecord(stringArchiveRecordInfoMap,type); + } - //##########################################################公共方法########################## - /* - 遍历excel,根据档号生成规则,判断有无重复 - */ -// private Boolean excelRepeatWithFileNum(ArrayList list,String key,String caseNum){ -// for (ArchiveRecordInfo archiveRecordInfo : list) { -// if(archiveRecordInfo.getFileNum().contains(key)&&archiveRecordInfo.getFileNum().substring(archiveRecordInfo.getFileNum().lastIndexOf("-")+1).equals(caseNum)){ -// count++; -// } -// } -// return count<=0?false:true; -// } /* 读取导入卷内文件 */ @@ -1698,52 +1662,10 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { 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.HTZ_RECORD: - action=ArchiveUploadConfig.getHTAction(); - break; - case CategoryDict.HTY_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.WS_QB_RECORD: - action=ArchiveUploadConfig.getWSAction(); - break; - case CategoryDict.ZXXM_RECORD: - action=ArchiveUploadConfig.getZXXMAction(); - break; - case CategoryDict.ZXXM_SECOND_RECORD: - action=ArchiveUploadConfig.getZXXMAction();//咨询项目档号变为KJ的情况 - 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); +// if (recordInfoMap==null) { +// return AjaxResult.error("请先上传数据"); +// } + List fileUploadLists = uploadAllFiles(recordInfoMap, type); if (fileInfos!=null){ changeRecordToFile(fileInfos,fileUploadLists); redisTemplate.delete(fileKey); @@ -1782,14 +1704,19 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { /** * @Description:批量上传文件 * @param stringArchiveRecordInfoMap 需要导入上传文件的数据 - * @param byAction 根据ArchiveRecordInfo1的那个字段读取文件 + * @param type 读取那个类型的文件 * @Date: 2022/5/18 22:32 */ - public List uploadAllFiles(Map stringArchiveRecordInfoMap,String byAction){ + public List uploadAllFiles(Map stringArchiveRecordInfoMap,String type){ + List list=new ArrayList<>(); + HashMap archiveActions = ArchiveUploadConfig.getArchiveActions(); + String byAction = archiveActions.get(type); + //指定从第几层的路径开始为key + int size = ArchiveUploadConfig.getActions().get(byAction).size(); //读取文件 log.info("准备读取文件*********************************"); - final Map> fils = getFils(); + final Map> fils = getFils(size); //上传所对应的文件 if (stringArchiveRecordInfoMap!=null&&!stringArchiveRecordInfoMap.isEmpty()){ stringArchiveRecordInfoMap.forEach((nums,info)->{ @@ -1838,21 +1765,15 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { * @return: java.util.Map> * @Date: 2022/5/18 22:35 */ - public Map> getFils(){ -// Map> fileMsg = redisTemplate.opsForValue().get(FILE_MSG); -// if (fileMsg==null){ + public Map> getFils(Integer index){ + Map> msg=new HashMap<>(); String path=RuoYiConfig.getReadPath(); File file=new File(path); log.info("读取文件开始==========================="); log.info("文件路径为{}",file.getAbsoluteFile()); - final Map> fils = getFils(file, msg,0); + final Map> fils = getFils(file, msg,index); log.info("读取文件结束==========================="); -// fileMsg=new HashMap<>(); -// fileMsg.putAll(fils); -// redisTemplate.opsForValue().set(FILE_MSG,fileMsg,10L, TimeUnit.MINUTES); -// } -// return fileMsg; return fils; } /** @@ -1865,8 +1786,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { */ public Map> getFils(File file,Map> map,int index){ if (!file.isFile()){ - index++; - log.info("当前读取文件的层级为第{}层",index); +// index++; +// log.info("当前读取文件的层级为第{}层",index); log.info("当前读取的文件路径为{}",file.getAbsolutePath()); File[] listFiles = file.listFiles(); @@ -1883,9 +1804,23 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { final String parent = file.getParent(); if (!parent.isEmpty()){ + + String separator = parent.contains("/")?"/":"\\\\"; + // final String[] split = parent.split("\\\\"); - final String[] split = parent.split("/"); - String name=split[split.length-1]; +// final String[] split = parent.split("/"); + final String[] split = parent.split(separator); +// String name=split[split.length-index]; + String name =null; + StringBuilder sb =new StringBuilder(); + for (int i = index; i >= 1; i--) { + sb.append(split[split.length-i]); + if (i!=1){ + sb.append(separator); + } + + } + name =sb.toString(); final List list = map.getOrDefault(name, new ArrayList()); if (file.isFile()){ list.add(file.getAbsolutePath()); diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/util/RedaConditionUtil.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/util/RedaConditionUtil.java index 72a3fb24..83c005a8 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/util/RedaConditionUtil.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/util/RedaConditionUtil.java @@ -3,6 +3,7 @@ package com.ruoyi.archives.util; import com.ruoyi.archives.domain.ArchiveRecordInfo; import com.ruoyi.archives.domain.export.RedaFile; import com.ruoyi.common.config.ArchiveUploadConfig; +import org.apache.commons.lang3.ObjectUtils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -22,13 +23,28 @@ public class RedaConditionUtil { synchronized (RedaConditionUtil.class){ if (action==null){ action=new HashMap<>(); - ArchiveUploadConfig.getActions().forEach((atrribute,methodName)->{ + ArchiveUploadConfig.getActions().forEach((atrribute,methodNames)->{ action.put(atrribute,(info -> { Class aClass = ArchiveRecordInfo.class; - String a=null; + //获取当前系统的分隔符是\\\ 还是‘/’ + String separator = ArchiveUploadConfig.getSeparator(); + StringBuilder sb = new StringBuilder(); try { - Method m = aClass.getMethod(methodName, null); - a= (String) m.invoke(info,null); + //通过方法名获取路径值 + for (int i = 0; i < methodNames.size(); i++) { + Method m = aClass.getMethod(methodNames.get(i), null); + Object invoke = m.invoke(info, null); + if (invoke!=null){ + sb.append(invoke.toString()); + if (iand remark like concat('%', #{remark},'%') and project_name like concat('%', #{project_name},'%') - ORDER BY "YEAR" ASC , "ARCHIVE_SCOPE" ASC , "CASE_NUM" ASC + ORDER BY "YEAR" ASC , "ARCHIVE_SCOPE" ASC , CAST ("CASE_NUM" AS INTEGER ) ASC