From 19beaa5f811a2dc7bbff6f8f2140cbb0559ccc85 Mon Sep 17 00:00:00 2001 From: yangzj Date: Fri, 12 Aug 2022 17:06:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=B9=A6=E7=AD=BE?= =?UTF-8?q?=E6=8A=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/archives/domain/CategoryDict.java | 1 + .../domain/importdata/WritArchivesModel.java | 1 - .../impl/ArchiveImportServiceImpl.java | 93 +++++++++++++++++-- .../ruoyi/archives/util/NumberGenUtil.java | 17 +++- 4 files changed, 99 insertions(+), 13 deletions(-) diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/CategoryDict.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/CategoryDict.java index 880f86fc..1911c0f5 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/CategoryDict.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/CategoryDict.java @@ -11,6 +11,7 @@ lmz @Data public class CategoryDict { public static final String WS_RECORD="WS";//文书 + public static final String WS_QB_RECORD="WSQB";//文书签报 public static final String JJ_RECORD="JJ";//基建 public static final String HTZ_RECORD="HTZ";//合同中文 public static final String HTY_RECORD="HTY";//合同英文 diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/importdata/WritArchivesModel.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/importdata/WritArchivesModel.java index 43f4deda..55a58650 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/importdata/WritArchivesModel.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/domain/importdata/WritArchivesModel.java @@ -23,7 +23,6 @@ public class WritArchivesModel extends BaseRowModel { @ExcelProperty(value = "保管期限") private String storageTime; - @ExcelProperty(value = "立卷部门") private Long department; 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 670a8eee..488ff651 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 @@ -79,6 +79,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { private static String WS_FILE_NUM_EXAMPLE="^WS[0-9]{4}-\\w+-[0-9]+"; private static String WS_FILE_NUM_SECOND_EXAMPLE="^D[0-9]{2}-[0-9]{4}+"; + + private static String WSQB_FILE_NUM_EXAMPLE="^WS[0-9]{4}-\\w+-D+-[0-9]+"; private static String WS_HISTORY_NUM_EXAMPLE="^W[0-9]+-[0-9]+"; // private static String DAYJ_FILE_NUM_EXAMPLE="^[0-9]{4}-\\w+-[0-9]+"; private static String JYWJ_FILE_NUM_EXAMPLE="^[0-9]{4}-\\w+-[0-9]+"; @@ -86,6 +88,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { private static String ZX_FILE_NUM_EXAMPLE="^ZX[0-9]{4}-\\w+-[0-9]+"; private static String NJ_FILE_NUM_EXAMPLE="^NJ[0-9]{4}-[0-9]+"; private static String ZXXM_FILE_NUM_EXAMPLE="^ZXXM[0-9]+-[0-9]+-[0-9]+"; + private static String ZXXM_SECOND_FILE_NUM_EXAMPLE="^KJ[0-9]+-[0-9]+-[0-9]+"; private static String JJ_FILE_NUM_EXAMPLE="^JJ[0-9]+-[0-9]+-[0-9]+"; private static String SX_FILE_NUM_EXAMPLE="^SX[0-9]{4}-\\w+-[0-9]+-[0-9]+"; private static String HT_FILE_NUM_EXAMPLE="^HTZ[0-9]{4}-\\w+-[0-9]+"; @@ -124,6 +127,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { }else if (CategoryDict.WS_RECORD.equals(type)){ // 文书档案 wsArchivesModelExcelImport(file,type); + }else if (CategoryDict.WS_QB_RECORD.equals(type)){ + wsQbArchivesModelExcelImport(file,type); }else if (CategoryDict.ZXXM_RECORD.equals(type)||CategoryDict.ZXXM_SECOND_RECORD.equals(type)){ // 咨询项目 zxxmArchivesModelExcelImport(file,type); @@ -193,7 +198,10 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } else if (CategoryDict.WS_RECORD.equals(type)) { // 文书档案 key = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear(); - } else if (CategoryDict.ZXXM_RECORD.equals(type)|| CategoryDict.ZXXM_SECOND_RECORD.equals(type)) { + }else if (CategoryDict.WS_QB_RECORD.equals(type)){ + key = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear(); + } + else if (CategoryDict.ZXXM_RECORD.equals(type)|| CategoryDict.ZXXM_SECOND_RECORD.equals(type)) { // 咨询项目 String fileNum = archiveRecordInfo.getFileNum(); if (!fileNum.isEmpty() && fileNum.contains(CategoryDict.ZXXM_SECOND_RECORD)){ @@ -714,7 +722,9 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { //校验数据 String fileNum =item.getFileNum().trim(); //校验档号 - boolean flag = fileNum.matches(ZXXM_FILE_NUM_EXAMPLE); + boolean firstFlag = fileNum.matches(ZXXM_FILE_NUM_EXAMPLE); + boolean secondFlag = fileNum.matches(ZXXM_SECOND_FILE_NUM_EXAMPLE); + boolean flag=firstFlag||secondFlag; if (Boolean.FALSE==flag){ throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]档号不符合标准,请检查后提交"); } @@ -739,9 +749,11 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { archiveRecordInfo.setArchiveCategory(type); archiveRecordInfo.setCaseNum(fileNum.substring(fileNum.lastIndexOf("-")+1)); archiveRecordInfo.setProjectNumber(fileNum.substring(archiveRecordInfo.getArchiveCategory().length(),fileNum.indexOf("-"))); - if (numberGenUtil.selectXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+archiveRecordInfo.getProjectNumber(),Integer.valueOf(archiveRecordInfo.getCaseNum()))==true){ - throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]根据档号生成规则,系统已存在相同流水号,请检查后提交"); - } +// if (numberGenUtil.selectXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+archiveRecordInfo.getProjectNumber(),Integer.valueOf(archiveRecordInfo.getCaseNum()))==true){ +// ArchiveRecordInfo archiveRecordInfo1 = new ArchiveRecordInfo(); +// archiveRecordInfoService.selectArchiveRecordInfoList() +// throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]根据档号生成规则,系统已存在相同流水号,请检查后提交"); +// } archiveRecordInfo.setCreateId(SecurityUtils.getUserId().toString()); archiveRecordInfo.setSource("0"); archiveRecordInfo.setStatus("0");//预导入状态 @@ -1014,7 +1026,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } /* - 实物档案导入 + 实物档案导入 */ private void swArchivesModelExcelImport(MultipartFile file, String type) throws Exception { List archivesModels = ExcelUtil.readExcel(file, WTArchivesMdel.class, 1, 2); @@ -1301,6 +1313,68 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { } } } + /* + 文书档案签报导入 + */ + private void wsQbArchivesModelExcelImport(MultipartFile file,String type) throws Exception { + //读取验证文件 + List writArchivesModels = ExcelUtil.readExcel(file, WritArchivesModel.class, 1, 2); + if (writArchivesModels==null||writArchivesModels.size()<=0){ + throw new RuntimeException("["+file.getOriginalFilename()+"]导入数据为空,请检查后提交"); + } + //去重 + writArchivesModels = writArchivesModels.stream().distinct().collect(Collectors.toList()); + //解析文件 + ArrayList list = new ArrayList<>(writArchivesModels.size()); + + for (int i = 0; i < writArchivesModels.size(); i++) { + WritArchivesModel writArchivesModel = writArchivesModels.get(i); +// 验证数据完整性 + if ( StringUtils.isEmpty(writArchivesModel.getYear())|| + StringUtils.isEmpty(writArchivesModel.getStorageTime())|| + StringUtils.isEmpty(writArchivesModel.getBoxName())){ + throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]数据填写不完整,请检查[年度,保管期限,档号,案卷题名]是否填写完整"); + } + + ArchiveRecordInfo archiveRecordInfo = new ArchiveRecordInfo(); + archiveRecordInfo.setArchiveCategory(CategoryDict.WS_QB_RECORD); + //对象拷贝 + BeanUtils.copyProperties(writArchivesModel,archiveRecordInfo); + //签报没有档号需要在导入时生成 + numberGenUtil.toGenerate(archiveRecordInfo); + String fileNum =archiveRecordInfo.getFileNum().trim(); + + + archiveRecordInfo.setFileNum(fileNum); + //校验起止日期 + this.checkStartEndDate(writArchivesModel.getStartEndDate(),archiveRecordInfo,file,i); + //校验立卷部门 + if(archiveRecordInfo.getDepartment()!=null){ + SysDept sysDept = sysDeptService.selectDeptById(archiveRecordInfo.getDepartment()); + if (sysDept==null){ + throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]立卷部门填写错误,请查看模板并检查后提交"); + } + } + //案卷流水号 + archiveRecordInfo.setCaseNum(fileNum.substring(fileNum.lastIndexOf("-")+1)); + //档案类别 + archiveRecordInfo.setArchiveCategory(type); + archiveRecordInfo.setCreateId(SecurityUtils.getUserId().toString()); + archiveRecordInfo.setSource("0"); + //预导入状态 + archiveRecordInfo.setStatus("0"); + archiveRecordInfo.setUpdateTime(DateUtils.getNowDate()); + archiveRecordInfo.setCreateTime(DateUtils.getNowDate()); + list.add(archiveRecordInfo); + } + Map stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); + this.setCacheByRecord(stringArchiveRecordInfoMap,type); + //上传相关的文件 +// List upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getWSAction()); + + } + /* + /* 档案移交记录库导入 */ @@ -1622,7 +1696,9 @@ 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("请先上传数据"); + if (recordInfoMap==null) { + return AjaxResult.error("请先上传数据"); + } String action =null; switch (type){ case CategoryDict.JJ_RECORD: @@ -1646,6 +1722,9 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { 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; diff --git a/ruoyi-archives/src/main/java/com/ruoyi/archives/util/NumberGenUtil.java b/ruoyi-archives/src/main/java/com/ruoyi/archives/util/NumberGenUtil.java index d08ee4df..5122dd78 100644 --- a/ruoyi-archives/src/main/java/com/ruoyi/archives/util/NumberGenUtil.java +++ b/ruoyi-archives/src/main/java/com/ruoyi/archives/util/NumberGenUtil.java @@ -34,7 +34,13 @@ public class NumberGenUtil { number = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear(); content="-"+archiveRecordInfo.getStorageTime()+"-"; - }else if(CategoryDict.HTZ_RECORD.equals(archiveRecordInfo.getArchiveCategory())){ + }else if (CategoryDict.WS_QB_RECORD.equals(archiveRecordInfo.getArchiveCategory())){ + number = CategoryDict.WS_RECORD.toUpperCase()+ archiveRecordInfo.getYear(); + numLength=4; + content="-"+archiveRecordInfo.getStorageTime()+"-D-"; + + } + else if(CategoryDict.HTZ_RECORD.equals(archiveRecordInfo.getArchiveCategory())){ //组装编号 例如HT2021-永久 number = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(); content="-"; @@ -101,8 +107,7 @@ public class NumberGenUtil { 生成 */ private synchronized String createXmNum(ArchiveRecordInfo archiveRecordInfo,String key,Integer numLength,String content) throws Exception{ - - + String number =key; if (!StringUtils.isEmpty(archiveRecordInfo.getFileNum())) { if (CategoryDict.JYDA_RECORD.equals(archiveRecordInfo.getArchiveCategory()) || CategoryDict.DAYJJL_RECORD.equals(archiveRecordInfo.getArchiveCategory())) { archiveRecordInfo.setFileNum(archiveRecordInfo.getArchiveCategory() + archiveRecordInfo.getFileNum()); @@ -112,7 +117,9 @@ public class NumberGenUtil { } } - + if (CategoryDict.WS_QB_RECORD.equals(archiveRecordInfo.getArchiveCategory())){ + key=CategoryDict.WS_QB_RECORD+key.substring(key.length()-4); + } Integer num = 1; try{ Long size = redisTemplate.opsForList().size(key);//查找以prefix作为key值的数据长度 @@ -128,7 +135,7 @@ public class NumberGenUtil { throw new Exception(e.getMessage()); } String returnCode = String.format("%0" + numLength + "d", num);//后缀不够numLength长,前面补充0 - returnCode=key+content+returnCode; + returnCode=number+content+returnCode; return returnCode; }