|
@@ -216,7 +216,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
vo.setYears(null);
|
|
vo.setYears(null);
|
|
vo.setMonths(null);
|
|
vo.setMonths(null);
|
|
}
|
|
}
|
|
- List<ArchivesAutoVO> selectAutos = baseMapper.pageByArchivesAuto4(vo);
|
|
|
|
|
|
+ List<ArchivesAutoVO> selectAutos = new ArrayList<>();
|
|
|
|
+ if (vo.getSearchType() == 1) {
|
|
|
|
+ selectAutos = baseMapper.pageByArchivesAuto4(vo);
|
|
|
|
+ }else {
|
|
|
|
+ selectAutos = baseMapper.pageByArchivesAuto5(vo);
|
|
|
|
+ }
|
|
List<Long> ids = new ArrayList<>();
|
|
List<Long> ids = new ArrayList<>();
|
|
if (selectAutos != null && selectAutos.size() > 0) {
|
|
if (selectAutos != null && selectAutos.size() > 0) {
|
|
ids = selectAutos.stream().map(l -> l.getId()).collect(Collectors.toList());
|
|
ids = selectAutos.stream().map(l -> l.getId()).collect(Collectors.toList());
|
|
@@ -336,7 +341,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//根据单位查询所有档案
|
|
//根据单位查询所有档案
|
|
List<ArchivesAutoVO> archivesAutos = baseMapper.getArchivesCabinet(archivesAuto);
|
|
List<ArchivesAutoVO> archivesAutos = baseMapper.getArchivesCabinet(archivesAuto);
|
|
//根据选择条件查询所有档案
|
|
//根据选择条件查询所有档案
|
|
- List<ArchivesAutoVO> selectAutos = baseMapper.getArchivesCabinet2(archivesAuto);
|
|
|
|
|
|
+ List<ArchivesAutoVO> selectAutos = new ArrayList<>();
|
|
|
|
+ if (archivesAuto.getSearchType() == 1) {
|
|
|
|
+ selectAutos = baseMapper.getArchivesCabinet2(archivesAuto);
|
|
|
|
+ }else {
|
|
|
|
+ selectAutos = baseMapper.getArchivesCabinet22(archivesAuto);
|
|
|
|
+ }
|
|
List<Long> ids = new ArrayList<>();
|
|
List<Long> ids = new ArrayList<>();
|
|
if (selectAutos != null && selectAutos.size() > 0) {
|
|
if (selectAutos != null && selectAutos.size() > 0) {
|
|
ids = selectAutos.stream().map(l -> l.getId()).collect(Collectors.toList());
|
|
ids = selectAutos.stream().map(l -> l.getId()).collect(Collectors.toList());
|
|
@@ -617,27 +627,20 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void archiveAutoMethod(Long projectId,Long contractId,Long nodeId){
|
|
|
|
- //步骤一:把档号集合初始化
|
|
|
|
- indexMap = new HashMap<>();
|
|
|
|
- //步骤二:查询归档树节点。存在未归档文件的节点。
|
|
|
|
- List<ArchiveTreeContract> list = archiveTreeContractClient.getHavedFileNodeByProjectID(projectId);
|
|
|
|
|
|
+ public void archiveAutoMethod(Long projectId, Long contractId, Long nodeId) {
|
|
|
|
+ //步骤一:把档号集合初始化
|
|
|
|
+ indexMap = new HashMap<>();
|
|
|
|
+ //步骤二:查询归档树节点。存在未归档文件的节点。
|
|
|
|
+ List<ArchiveTreeContract> list = archiveTreeContractClient.getHavedFileNodeByProjectID(projectId);
|
|
|
|
|
|
- //按合同段过滤
|
|
|
|
- List<ArchiveTreeContract> authlist = authFilter(list, contractId, nodeId);
|
|
|
|
|
|
+ //按合同段过滤
|
|
|
|
+ List<ArchiveTreeContract> authlist = authFilter(list, contractId, nodeId);
|
|
|
|
|
|
- //步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
|
|
|
|
- List<ArchiveTreeContract> list1= new ArrayList<>();
|
|
|
|
|
|
+ //步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
|
|
|
|
+ List<ArchiveTreeContract> list1 = new ArrayList<>();
|
|
List<ArchiveTreeContract> list2= new ArrayList<>();
|
|
List<ArchiveTreeContract> list2= new ArrayList<>();
|
|
List<ArchiveTreeContract> list3= new ArrayList<>();
|
|
List<ArchiveTreeContract> list3= new ArrayList<>();
|
|
for(ArchiveTreeContract treeContract:authlist){
|
|
for(ArchiveTreeContract treeContract:authlist){
|
|
@@ -701,6 +704,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
if (node.getAncestors().split(",").length <= 2){
|
|
if (node.getAncestors().split(",").length <= 2){
|
|
//查询当前合同
|
|
//查询当前合同
|
|
ArchiveTreeContract archiveTreeContract = archiveTreeContractClient.getArchiveTreeContractByNodeName(contractInfo.getContractName());
|
|
ArchiveTreeContract archiveTreeContract = archiveTreeContractClient.getArchiveTreeContractByNodeName(contractInfo.getContractName());
|
|
|
|
+ if (archiveTreeContract == null){
|
|
|
|
+ archiveTreeContract = archiveTreeContractClient.getArchiveTreeContractByContractId(vo.getContractId());
|
|
|
|
+ }
|
|
|
|
+ if (archiveTreeContract == null){
|
|
|
|
+ throw new ServiceException("系统繁忙,请稍后再试");
|
|
|
|
+ }
|
|
vo.setNodeId(archiveTreeContract.getId());
|
|
vo.setNodeId(archiveTreeContract.getId());
|
|
}
|
|
}
|
|
list = baseMapper.pageByAuthenticate(page, vo);
|
|
list = baseMapper.pageByAuthenticate(page, vo);
|
|
@@ -847,14 +856,24 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
if(nodeContract==null){
|
|
if(nodeContract==null){
|
|
nodeContract = contractClient.getContractById(nodeContractId);
|
|
nodeContract = contractClient.getContractById(nodeContractId);
|
|
}
|
|
}
|
|
- storageTime = nodeContract.getStoragePeriod().toString();
|
|
|
|
|
|
+ Integer storagePeriod = nodeContract.getStoragePeriod();
|
|
|
|
+ if(storagePeriod==null){
|
|
|
|
+ storageTime="30";
|
|
|
|
+ }else{
|
|
|
|
+ storageTime = storagePeriod.toString();
|
|
|
|
+ }
|
|
}else{
|
|
}else{
|
|
if(contracts==null){
|
|
if(contracts==null){
|
|
contracts = contractClient.getContractListByProjectId(archivesAuto.getProjectId());
|
|
contracts = contractClient.getContractListByProjectId(archivesAuto.getProjectId());
|
|
}
|
|
}
|
|
for(ContractInfo c:contracts){
|
|
for(ContractInfo c:contracts){
|
|
if(c.getContractType()==3){
|
|
if(c.getContractType()==3){
|
|
- storageTime = c.getStoragePeriod().toString();
|
|
|
|
|
|
+ Integer storagePeriod = c.getStoragePeriod();
|
|
|
|
+ if(storagePeriod==null){
|
|
|
|
+ storageTime="30";
|
|
|
|
+ }else{
|
|
|
|
+ storageTime = storagePeriod.toString();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -973,12 +992,18 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//找出文件集合中的最大最小时间
|
|
//找出文件集合中的最大最小时间
|
|
List<String> fileTimeList = new ArrayList<>();
|
|
List<String> fileTimeList = new ArrayList<>();
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
- fileTimeList.add(file.getFileTime());
|
|
|
|
|
|
+ if(StringUtils.isNotEmpty(file.getFileTime())){
|
|
|
|
+ fileTimeList.add(file.getFileTime());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(fileTimeList.size()>0){
|
|
|
|
+ Collections.sort(fileTimeList);
|
|
|
|
+ String startDate=fileTimeList.get(0);
|
|
|
|
+ String endDate=fileTimeList.get(fileTimeList.size()-1);
|
|
|
|
+ return startDate+","+endDate;
|
|
|
|
+ }else{
|
|
|
|
+ return "";
|
|
}
|
|
}
|
|
- Collections.sort(fileTimeList);
|
|
|
|
- String startDate=fileTimeList.get(0);
|
|
|
|
- String endDate=fileTimeList.get(fileTimeList.size()-1);
|
|
|
|
- return startDate+","+endDate;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private String builtArchiveName(List<ArchiveFile> waitArchiveFiles, ArchiveTreeContract node,boolean isCrossNode){
|
|
private String builtArchiveName(List<ArchiveFile> waitArchiveFiles, ArchiveTreeContract node,boolean isCrossNode){
|
|
@@ -988,10 +1013,19 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
Long projectId = node.getProjectId();
|
|
Long projectId = node.getProjectId();
|
|
ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
|
|
ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
|
|
String projectName = projectInfo.getProjectName();
|
|
String projectName = projectInfo.getProjectName();
|
|
|
|
+ String contractName="";
|
|
|
|
+ Long contractId = node.getContractId();
|
|
|
|
+ if(contractId!=null){
|
|
|
|
+ ContractInfo contract = contractClient.getContractById(contractId);
|
|
|
|
+ contractName=contract.getContractName();
|
|
|
|
+ }
|
|
//获取案卷题名
|
|
//获取案卷题名
|
|
|
|
+ archiveName=projectName;
|
|
|
|
+ if(StringUtils.isNotEmpty(contractName)){
|
|
|
|
+ archiveName=archiveName+contractName;
|
|
|
|
+ }
|
|
//--正常节点
|
|
//--正常节点
|
|
if(isCrossNode){
|
|
if(isCrossNode){
|
|
- archiveName=projectName;
|
|
|
|
//存在跨节点 项目名称+文件对应的所有节点名称
|
|
//存在跨节点 项目名称+文件对应的所有节点名称
|
|
Set<String> nodeIdSet = new LinkedHashSet<>();
|
|
Set<String> nodeIdSet = new LinkedHashSet<>();
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
@@ -1001,17 +1035,21 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
for(String nodeId:nodeIdSet){
|
|
for(String nodeId:nodeIdSet){
|
|
ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
|
|
ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
|
|
String nodeName = treeNode.getNodeName();
|
|
String nodeName = treeNode.getNodeName();
|
|
- archiveName=archiveName+" "+nodeName;
|
|
|
|
|
|
+ archiveName=archiveName+nodeName;
|
|
}
|
|
}
|
|
}else{
|
|
}else{
|
|
//不存在跨节点 项目名称+节点名称
|
|
//不存在跨节点 项目名称+节点名称
|
|
- archiveName=projectName+" "+node.getNodeName();
|
|
|
|
|
|
+ archiveName=archiveName+node.getNodeName();
|
|
}
|
|
}
|
|
|
|
|
|
//TODO wbs节点
|
|
//TODO wbs节点
|
|
//不存在跨节点 项目名称+案卷题名规则(在后台归档目录树设置的)+后缀
|
|
//不存在跨节点 项目名称+案卷题名规则(在后台归档目录树设置的)+后缀
|
|
//存在跨节点 获取当前所有节点的父级节点题名规则+所有同层级跨节点并卷的节点名称拼接+后缀
|
|
//存在跨节点 获取当前所有节点的父级节点题名规则+所有同层级跨节点并卷的节点名称拼接+后缀
|
|
- return archiveName+node.getArchiveNameSuffix();
|
|
|
|
|
|
+ String archiveNameSuffix=node.getArchiveNameSuffix();
|
|
|
|
+ if(archiveNameSuffix==null || archiveNameSuffix.equals("null")){
|
|
|
|
+ archiveNameSuffix="";
|
|
|
|
+ }
|
|
|
|
+ return archiveName+archiveNameSuffix;
|
|
}
|
|
}
|
|
private String builtFilePageNo(ArchivesAuto archivesAuto,List<ArchiveFile> waitArchiveFiles){
|
|
private String builtFilePageNo(ArchivesAuto archivesAuto,List<ArchiveFile> waitArchiveFiles){
|
|
//生成文件对应的页码,返回url
|
|
//生成文件对应的页码,返回url
|
|
@@ -1077,7 +1115,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//获取案卷内文件总页数
|
|
//获取案卷内文件总页数
|
|
int pageN=0;
|
|
int pageN=0;
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
- pageN=pageN+file.getFilePage();
|
|
|
|
|
|
+ Integer filePage=file.getFilePage();
|
|
|
|
+ if(filePage==null){
|
|
|
|
+ filePage=0;
|
|
|
|
+ }
|
|
|
|
+ pageN=pageN+filePage;
|
|
}
|
|
}
|
|
//默认组卷存在跨节点组卷 注意案卷归属节点,案卷命名方式
|
|
//默认组卷存在跨节点组卷 注意案卷归属节点,案卷命名方式
|
|
//获取案卷题名
|
|
//获取案卷题名
|
|
@@ -1160,7 +1202,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//获取案卷内文件总页数
|
|
//获取案卷内文件总页数
|
|
int pageN=0;
|
|
int pageN=0;
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
for(ArchiveFile file:waitArchiveFiles){
|
|
- pageN=pageN+file.getFilePage();
|
|
|
|
|
|
+ Integer filePage= file.getFilePage();
|
|
|
|
+ if(filePage==null){
|
|
|
|
+ filePage=0;
|
|
|
|
+ }
|
|
|
|
+ pageN=pageN+filePage;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1187,9 +1233,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 单租组卷流程 节点下的文件只在当前节点下组卷
|
|
|
|
|
|
+ * 单租组卷流程 节点下的文件只在当前节点下组卷 满规格另组一卷 不跨节点
|
|
*/
|
|
*/
|
|
- private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
|
|
|
|
|
|
+ private void archiveAutoMethod3_old(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
|
|
//步骤1:遍历节点集合
|
|
//步骤1:遍历节点集合
|
|
for(ArchiveTreeContract node:list){
|
|
for(ArchiveTreeContract node:list){
|
|
//步骤2:获取当前节点的案卷规格
|
|
//步骤2:获取当前节点的案卷规格
|
|
@@ -1222,6 +1268,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//单独组卷流程
|
|
//单独组卷流程
|
|
//步骤6:计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
|
|
//步骤6:计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
|
|
Integer filePage = file.getFilePage();
|
|
Integer filePage = file.getFilePage();
|
|
|
|
+ if(filePage==null){
|
|
|
|
+ filePage=0;
|
|
|
|
+ }
|
|
archivesSize=archivesSize+filePage;
|
|
archivesSize=archivesSize+filePage;
|
|
Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
|
|
Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
|
|
//步骤6.1未到规格 不组卷
|
|
//步骤6.1未到规格 不组卷
|
|
@@ -1277,7 +1326,45 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 单租组卷流程 20230628 SBD又说单独组卷规则节点下只组一卷,不用满规格新组。这辈子没见过这样的人。
|
|
|
|
+ * @param list
|
|
|
|
+ * @param boxMap
|
|
|
|
+ */
|
|
|
|
+ private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
|
|
|
|
+ //步骤1:遍历节点集合
|
|
|
|
+ for(ArchiveTreeContract node:list){
|
|
|
|
+ //步骤2:查询节点下的未组卷文件
|
|
|
|
+ List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
|
|
|
|
+ //步骤3:遍历未归档文件
|
|
|
|
+ //待组卷文件集合
|
|
|
|
+ List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
|
|
|
|
+ //待组卷文件总页数
|
|
|
|
+ int archivesSize=0;
|
|
|
|
+ if(archiveFiles!=null){
|
|
|
|
+ for(ArchiveFile file:archiveFiles){
|
|
|
|
+ //步骤4:断文件是否存在分盒设置
|
|
|
|
+ if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
|
|
+ //添加到分盒文件集合
|
|
|
|
+ addBoxMap(file,boxMap);
|
|
|
|
+ }else{
|
|
|
|
+ //单独组卷流程
|
|
|
|
+ Integer filePage = file.getFilePage();
|
|
|
|
+ if(filePage==null){
|
|
|
|
+ filePage=0;
|
|
|
|
+ }
|
|
|
|
+ archivesSize=archivesSize+filePage;
|
|
|
|
+ waitArchiveFiles.add(file);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //步骤3:将waitArchiveFiles组卷
|
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
|
+ //将待组卷文件集合,总页数还原初始值,
|
|
|
|
+ waitArchiveFiles.clear();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1396,6 +1483,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
}else{
|
|
}else{
|
|
//步骤3.5 计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
|
|
//步骤3.5 计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
|
|
Integer filePage = file.getFilePage();
|
|
Integer filePage = file.getFilePage();
|
|
|
|
+ if(filePage==null){
|
|
|
|
+ filePage=0;
|
|
|
|
+ }
|
|
archivesSize=archivesSize+filePage;
|
|
archivesSize=archivesSize+filePage;
|
|
Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
|
|
Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
|
|
//步骤3.6未到规格 不组卷
|
|
//步骤3.6未到规格 不组卷
|