@ -37,6 +37,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
				@@ -37,6 +37,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  javax.annotation.Resource ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  java.awt.print.Book ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  java.io.* ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  java.lang.reflect.Field ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -94,6 +95,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
				@@ -94,6 +95,8 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    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]+" ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  String  HTY_FILE_NUM_EXAMPLE = "^HTY[0-9]{4}-\\w+-[0-9]+" ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  String  RS_FILE_NUM_EXAMPLE = "^RS-\\w+-[0-9]+" ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  String  TS_FILE_NUM_EXAMPLE = "^TS+-[0-9]+-[0-9]+" ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  SimpleDateFormat  simpleDateFormat = new  SimpleDateFormat ( "yyyyMMdd" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  final  String   RECORD_TYPE = "record" ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  final  String   FILE_TYPE = "file" ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -139,6 +142,12 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
				@@ -139,6 +142,12 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            } else  if  ( CategoryDict . DAYJJL_RECORD . equals ( type ) ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                // 档案移交记录库
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                dayjArchivesModelExcelImport ( file , type ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            } else  if  ( CategoryDict . RS_RECORD . equals ( type ) ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                //人事档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                rsArchivesModelExcelImport ( file , type ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            } else  if  ( CategoryDict . TS_RECORD . equals ( type ) ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                //图书档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                tsArchivesModelExcelImport ( file , type ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            } else {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                // 年鉴档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                njArchivesModelExcelImport ( file , type ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -217,7 +226,13 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
				@@ -217,7 +226,13 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  else  if  ( CategoryDict . DAYJJL_RECORD . equals ( type ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // 档案移交记录库
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            key  =  archiveRecordInfo . getArchiveCategory ( ) . toUpperCase ( ) +  archiveRecordInfo . getYear ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  else  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  else  if ( CategoryDict . RS_RECORD . equals ( type ) ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            //人事档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            key  =  CategoryDict . RS_RECORD . toUpperCase ( ) + "-" + archiveRecordInfo . getStorageTime ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  else  if  ( CategoryDict . TS_RECORD . equals ( type ) ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            //图书档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            key  =  CategoryDict . TS_RECORD . toUpperCase ( ) + "-" + archiveRecordInfo . getRecordType ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        } else {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // 年鉴档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            key  =  archiveRecordInfo . getArchiveCategory ( ) . toUpperCase ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -229,6 +244,235 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
				@@ -229,6 +244,235 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        numberGenUtil . removeKey ( archiveRecordInfo . getId ( ) . toString ( ) ) ; //arId
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    / *  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    图书档案  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    * /  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  void  tsArchivesModelExcelImport ( MultipartFile  file ,  String  type )  throws  Exception  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        List < BookArchivesModel >  archivesModels  =  ExcelUtil . readExcel ( file ,  BookArchivesModel . 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 + + )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            BookArchivesModel  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 ( TS_FILE_NUM_EXAMPLE ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( Boolean . FALSE = = flag ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                throw   new  RuntimeException ( "[" + file . getOriginalFilename ( ) + "——Sheet:1——行号"  +  ( i  +  3 )  +  "]档号不符合标准,请检查后提交" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ArchiveRecordInfo  archiveRecordInfo  =  new  ArchiveRecordInfo ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            BeanUtils . copyProperties ( item , archiveRecordInfo ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            String [ ]  split  =  fileNum . split ( "-" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setFileNum ( fileNum ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setArchiveCategory ( type ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            SimpleDateFormat  sdf  =  new  SimpleDateFormat ( "yyyy" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Date  date  =  new  Date ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setYear ( sdf . format ( date ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setStorageTime ( split [ 1 ] ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setCaseNum ( split [ 2 ] ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            List < ArchiveCategoryInfo >  archiveCategoryInfos  =  categoryInfoService . selectByCode ( type , fileNum . substring ( fileNum . indexOf ( "-" ) + 1 , fileNum . lastIndexOf ( "-" ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( archiveCategoryInfos = = null | | archiveCategoryInfos . size ( ) < = 0 ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                throw   new  RuntimeException ( "[" + file . getOriginalFilename ( ) + "——Sheet:1——行号"  +  ( i  +  3 )  +  "]档号(分类号部分)填写错误,请检查后提交" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setArchiveScope ( archiveCategoryInfos . get ( 0 ) . getId ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setCategoryCode ( archiveCategoryInfos . get ( 0 ) . getCode ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setArchiveCategory ( type ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            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 ( ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    / *  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    人事档案  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    * /  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  void  rsArchivesModelExcelImport ( MultipartFile  file ,  String  type )  throws  Exception  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        List < PersonnelArchivesModel >  archivesModels  =  ExcelUtil . readExcel ( file ,  PersonnelArchivesModel . 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 + + )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            PersonnelArchivesModel  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 ( RS_FILE_NUM_EXAMPLE ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( Boolean . FALSE = = flag ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                throw   new  RuntimeException ( "[" + file . getOriginalFilename ( ) + "——Sheet:1——行号"  +  ( i  +  3 )  +  "]档号不符合标准,请检查后提交" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ArchiveRecordInfo  archiveRecordInfo  =  new  ArchiveRecordInfo ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            BeanUtils . copyProperties ( item , archiveRecordInfo ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            String [ ]  split  =  fileNum . split ( "-" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setFileNum ( fileNum ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setArchiveCategory ( type ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            SimpleDateFormat  sdf  =  new  SimpleDateFormat ( "yyyy" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Date  date  =  new  Date ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            archiveRecordInfo . setYear ( sdf . format ( date ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            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 . getArchive_date ( ) ) ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                archiveRecordInfo . setArchive_date ( simpleDateFormat . parse ( item . getArchive_date ( ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            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 ( ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    / *  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    合同档案 ( 中文 )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * /  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1713,7 +1957,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
				@@ -1713,7 +1957,7 @@ public class ArchiveImportServiceImpl implements ArchiveImportService {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        fos . close ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        fis . close ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    / * *  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     *  @Description : 批量上传文件