|
|
@ -88,7 +88,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { |
|
|
|
private static String ZXXM_FILE_NUM_EXAMPLE="^ZXXM[0-9]+-[0-9]+-[0-9]+"; |
|
|
|
private static String ZXXM_FILE_NUM_EXAMPLE="^ZXXM[0-9]+-[0-9]+-[0-9]+"; |
|
|
|
private static String JJ_FILE_NUM_EXAMPLE="^JJ[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 SX_FILE_NUM_EXAMPLE="^SX[0-9]{4}-\\w+-[0-9]+-[0-9]+"; |
|
|
|
private static String HT_FILE_NUM_EXAMPLE="^HT[0-9]{4}-\\w+-[0-9]+"; |
|
|
|
private static String HT_FILE_NUM_EXAMPLE="^HTZ[0-9]{4}-\\w+-[0-9]+"; |
|
|
|
|
|
|
|
private static String HTY_FILE_NUM_EXAMPLE="^HTY[0-9]{4}-\\w+-[0-9]+"; |
|
|
|
private static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMdd"); |
|
|
|
private static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMdd"); |
|
|
|
private static final String RECORD_TYPE="record"; |
|
|
|
private static final String RECORD_TYPE="record"; |
|
|
|
private static final String FILE_TYPE="file"; |
|
|
|
private static final String FILE_TYPE="file"; |
|
|
@ -106,10 +107,12 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { |
|
|
|
if (CategoryDict.JJ_RECORD.equals(type)){ |
|
|
|
if (CategoryDict.JJ_RECORD.equals(type)){ |
|
|
|
// 基建档案
|
|
|
|
// 基建档案
|
|
|
|
jjArchivesModelExcelImport(file,type); |
|
|
|
jjArchivesModelExcelImport(file,type); |
|
|
|
}else if (CategoryDict.HT_RECORD.equals(type)){ |
|
|
|
}else if (CategoryDict.HTZ_RECORD.equals(type)){ |
|
|
|
// 合同档案
|
|
|
|
// 合同档案
|
|
|
|
htArchivesModelExcelImport(file,type); |
|
|
|
htArchivesModelExcelImport(file,type); |
|
|
|
}else if (CategoryDict.SW_RECORD.equals(type)){ |
|
|
|
}else if (CategoryDict.HTY_RECORD.equals(type)){ |
|
|
|
|
|
|
|
htYArchivesModelExcelImport(file,type); |
|
|
|
|
|
|
|
} else if (CategoryDict.SW_RECORD.equals(type)){ |
|
|
|
// 实体档案
|
|
|
|
// 实体档案
|
|
|
|
swArchivesModelExcelImport(file,type); |
|
|
|
swArchivesModelExcelImport(file,type); |
|
|
|
}else if (CategoryDict.SX_RECORD.equals(type)){ |
|
|
|
}else if (CategoryDict.SX_RECORD.equals(type)){ |
|
|
@ -173,9 +176,11 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { |
|
|
|
if (CategoryDict.JJ_RECORD.equals(type)) { |
|
|
|
if (CategoryDict.JJ_RECORD.equals(type)) { |
|
|
|
// 基建档案
|
|
|
|
// 基建档案
|
|
|
|
key = archiveRecordInfo.getArchiveCategory().toUpperCase()+archiveRecordInfo.getProjectNumber()+"-"+archiveRecordInfo.getCategoryCode(); |
|
|
|
key = archiveRecordInfo.getArchiveCategory().toUpperCase()+archiveRecordInfo.getProjectNumber()+"-"+archiveRecordInfo.getCategoryCode(); |
|
|
|
} else if (CategoryDict.HT_RECORD.equals(type)) { |
|
|
|
} else if (CategoryDict.HTZ_RECORD.equals(type)) { |
|
|
|
// 合同档案
|
|
|
|
// 合同档案
|
|
|
|
key = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(); |
|
|
|
key = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(); |
|
|
|
|
|
|
|
} else if (CategoryDict.HTY_RECORD.equals(type)){ |
|
|
|
|
|
|
|
key = archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(); |
|
|
|
} else if (CategoryDict.SW_RECORD.equals(type)) { |
|
|
|
} else if (CategoryDict.SW_RECORD.equals(type)) { |
|
|
|
// 实体档案
|
|
|
|
// 实体档案
|
|
|
|
key = archiveRecordInfo.getCategoryCode(); |
|
|
|
key = archiveRecordInfo.getCategoryCode(); |
|
|
@ -216,7 +221,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { |
|
|
|
numberGenUtil.removeKey(archiveRecordInfo.getId().toString());//arId
|
|
|
|
numberGenUtil.removeKey(archiveRecordInfo.getId().toString());//arId
|
|
|
|
} |
|
|
|
} |
|
|
|
/* |
|
|
|
/* |
|
|
|
合同档案 |
|
|
|
合同档案(中文) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private void htArchivesModelExcelImport(MultipartFile file, String type)throws Exception { |
|
|
|
private void htArchivesModelExcelImport(MultipartFile file, String type)throws Exception { |
|
|
|
List<ContractArchivesModel> archivesModels = ExcelUtil.readExcel(file, ContractArchivesModel.class, 1, 2); |
|
|
|
List<ContractArchivesModel> archivesModels = ExcelUtil.readExcel(file, ContractArchivesModel.class, 1, 2); |
|
|
@ -326,6 +331,117 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
合同档案(英文) |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private void htYArchivesModelExcelImport(MultipartFile file, String type)throws Exception { |
|
|
|
|
|
|
|
List<ContractArchivesModel> archivesModels = ExcelUtil.readExcel(file, ContractArchivesModel.class, 1, 2); |
|
|
|
|
|
|
|
if (archivesModels==null||archivesModels.size()<=0){ |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"]导入数据为空,请检查后提交"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//去重
|
|
|
|
|
|
|
|
archivesModels=archivesModels.stream().distinct().collect(Collectors.toList()); |
|
|
|
|
|
|
|
ArrayList<ArchiveRecordInfo> list = new ArrayList<>(archivesModels.size()); |
|
|
|
|
|
|
|
for (int i = 0; i < archivesModels.size(); i++) { |
|
|
|
|
|
|
|
ContractArchivesModel item = archivesModels.get(i); |
|
|
|
|
|
|
|
// 验证数据完整性
|
|
|
|
|
|
|
|
if ( StringUtils.isEmpty(item.getFileNum())|| |
|
|
|
|
|
|
|
StringUtils.isEmpty(item.getBoxName())){ |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]数据填写不完整,请检查[档号,案卷题名]是否填写完整"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//校验数据
|
|
|
|
|
|
|
|
String fileNum =item.getFileNum().trim(); |
|
|
|
|
|
|
|
//校验档号
|
|
|
|
|
|
|
|
boolean flag = fileNum.matches(HTY_FILE_NUM_EXAMPLE); |
|
|
|
|
|
|
|
if (Boolean.FALSE==flag){ |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]档号不符合标准,请检查后提交"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ArchiveRecordInfo archiveRecordInfo = new ArchiveRecordInfo(); |
|
|
|
|
|
|
|
BeanUtils.copyProperties(item,archiveRecordInfo); |
|
|
|
|
|
|
|
if (archiveRecordInfo.getDepartment()!=null){ |
|
|
|
|
|
|
|
SysDept sysDept = sysDeptService.selectDeptById(archiveRecordInfo.getDepartment()); |
|
|
|
|
|
|
|
if (sysDept==null){ |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]归档部门填写错误,请检查后提交"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
String[] split = fileNum.split("-"); |
|
|
|
|
|
|
|
archiveRecordInfo.setFileNum(fileNum); |
|
|
|
|
|
|
|
archiveRecordInfo.setArchiveCategory(type); |
|
|
|
|
|
|
|
archiveRecordInfo.setYear(fileNum.substring(type.length(),fileNum.indexOf("-"))); |
|
|
|
|
|
|
|
archiveRecordInfo.setStorageTime(split[1]); |
|
|
|
|
|
|
|
archiveRecordInfo.setCaseNum(split[2]); |
|
|
|
|
|
|
|
if (numberGenUtil.selectXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(),Integer.valueOf(archiveRecordInfo.getCaseNum()))){ |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——行号" + (i + 3) + "]根据档号生成规则,系统已存在相同流水号,请检查后提交"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(item.getDescriptionTime())){ |
|
|
|
|
|
|
|
archiveRecordInfo.setDescriptionTime(simpleDateFormat.parse(item.getDescriptionTime())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
archiveRecordInfo.setCreateId(SecurityUtils.getUserId().toString()); |
|
|
|
|
|
|
|
archiveRecordInfo.setSource("0"); |
|
|
|
|
|
|
|
archiveRecordInfo.setStatus("0");//预导入状态
|
|
|
|
|
|
|
|
archiveRecordInfo.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
|
|
|
archiveRecordInfo.setCreateTime(DateUtils.getNowDate()); |
|
|
|
|
|
|
|
list.add(archiveRecordInfo); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Map<String, ArchiveRecordInfo> stringArchiveRecordInfoMap = batchSaveRecordInfoList(list); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//上传相关的文件
|
|
|
|
|
|
|
|
// List<FileUploadList> upladDown = uploadAllFiles(stringArchiveRecordInfoMap, ArchiveUploadConfig.getHTAction());
|
|
|
|
|
|
|
|
this.setCacheByRecord(stringArchiveRecordInfoMap,type); |
|
|
|
|
|
|
|
//读取文件
|
|
|
|
|
|
|
|
List<ContractFileModel> writFileModels = ExcelUtil.readExcel(file, ContractFileModel.class, 2, 2); |
|
|
|
|
|
|
|
//去重
|
|
|
|
|
|
|
|
writFileModels=writFileModels.stream().distinct().collect(Collectors.toList()); |
|
|
|
|
|
|
|
ArrayList<ArchiveFileInfo> archiveFileInfos = new ArrayList<>(writFileModels.size()); |
|
|
|
|
|
|
|
if (writFileModels!=null&&writFileModels.size()>0){ |
|
|
|
|
|
|
|
for (int i = 0; i < writFileModels.size(); i++) { |
|
|
|
|
|
|
|
ContractFileModel tmp = writFileModels.get(i); |
|
|
|
|
|
|
|
// 验证数据完整性
|
|
|
|
|
|
|
|
if ( StringUtils.isEmpty(tmp.getRecordFileNum())|| |
|
|
|
|
|
|
|
StringUtils.isEmpty(tmp.getArSort())|| |
|
|
|
|
|
|
|
StringUtils.isEmpty(tmp.getTitle())){ |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——卷内目录——行号" + (i + 3) + "]数据填写不完整,请检查[案卷档号,卷内顺序号,文件标题]是否填写完整"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ArchiveFileInfo archiveFileInfo = new ArchiveFileInfo(); |
|
|
|
|
|
|
|
ArchiveRecordInfo archiveRecordInfo = stringArchiveRecordInfoMap.get(tmp.getRecordFileNum().trim()); |
|
|
|
|
|
|
|
if (archiveRecordInfo == null || archiveRecordInfo.getId() == null) { |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——卷内目录——行号" + (i + 3) + "]未匹配到对应的档案信息请检查"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
BeanUtils.copyProperties(tmp,archiveFileInfo); |
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(tmp.getFileDate())){ |
|
|
|
|
|
|
|
archiveFileInfo.setFileDate(simpleDateFormat.parse(tmp.getFileDate())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
archiveFileInfo.setArId(String.valueOf(archiveRecordInfo.getId())); |
|
|
|
|
|
|
|
archiveFileInfo.setCreateId(SecurityUtils.getUserId().toString()); |
|
|
|
|
|
|
|
archiveFileInfo.setCreateTime(DateUtils.getNowDate()); |
|
|
|
|
|
|
|
archiveFileInfo.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
|
|
|
archiveFileInfo.setStatus("0"); |
|
|
|
|
|
|
|
archiveFileInfos.add(archiveFileInfo); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
batchSaveFileInfoList(archiveFileInfos); |
|
|
|
|
|
|
|
this.setCacheByFile(archiveFileInfos,type); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<KeyValue> keyValues=new ArrayList<>(); |
|
|
|
|
|
|
|
for (ArchiveRecordInfo archiveRecordInfo : list) { |
|
|
|
|
|
|
|
//再次查询
|
|
|
|
|
|
|
|
if (numberGenUtil.selectXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(),Integer.valueOf(archiveRecordInfo.getCaseNum()))){ |
|
|
|
|
|
|
|
//发现已存在相同流水号,则excel删除刚保存的redis数据
|
|
|
|
|
|
|
|
numberGenUtil.removeValueByKey(keyValues); |
|
|
|
|
|
|
|
throw new RuntimeException("["+file.getOriginalFilename()+"——Sheet:1——档号" + archiveRecordInfo.getFileNum() + "]根据档号生成规则,系统已存在相同流水号,请检查后提交"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//无误后push
|
|
|
|
|
|
|
|
KeyValue keyValue=new KeyValue(); |
|
|
|
|
|
|
|
keyValue.setKey(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime()); |
|
|
|
|
|
|
|
keyValue.setValue(Integer.valueOf(archiveRecordInfo.getCaseNum())); |
|
|
|
|
|
|
|
keyValues.add(keyValue); |
|
|
|
|
|
|
|
numberGenUtil.pushXmNum(archiveRecordInfo.getArchiveCategory().toUpperCase()+ archiveRecordInfo.getYear()+"-"+archiveRecordInfo.getStorageTime(),Integer.valueOf(archiveRecordInfo.getCaseNum())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
for (ArchiveFileInfo archiveFileInfo : archiveFileInfos) { |
|
|
|
|
|
|
|
if (archiveFileInfo!=null){ |
|
|
|
|
|
|
|
numberGenUtil.pushXmNum(archiveFileInfo.getArId(),Integer.valueOf(archiveFileInfo.getArSort())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
|
照片声像 |
|
|
|
照片声像 |
|
|
@ -1512,7 +1628,10 @@ public class ArchiveImportServiceImpl implements ArchiveImportService { |
|
|
|
case CategoryDict.JJ_RECORD: |
|
|
|
case CategoryDict.JJ_RECORD: |
|
|
|
action=ArchiveUploadConfig.getJJAction(); |
|
|
|
action=ArchiveUploadConfig.getJJAction(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case CategoryDict.HT_RECORD: |
|
|
|
case CategoryDict.HTZ_RECORD: |
|
|
|
|
|
|
|
action=ArchiveUploadConfig.getHTAction(); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case CategoryDict.HTY_RECORD: |
|
|
|
action=ArchiveUploadConfig.getHTAction(); |
|
|
|
action=ArchiveUploadConfig.getHTAction(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case CategoryDict.SW_RECORD: |
|
|
|
case CategoryDict.SW_RECORD: |
|
|
|