|
@@ -707,10 +707,15 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
List<ArchiveTreeContract> authlist = authFilter(list, contractId, nodeId);
|
|
List<ArchiveTreeContract> authlist = authFilter(list, contractId, nodeId);
|
|
|
|
|
|
//步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
|
|
//步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
|
|
|
|
+ List<ArchiveTreeContract> list0 = new ArrayList<>();
|
|
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){
|
|
|
|
+ if (treeContract.getArchiveAutoType() == null || treeContract.getArchiveAutoType() == -1) {
|
|
|
|
+ list0.add(treeContract);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
Integer archiveAutoType = treeContract.getArchiveAutoType();
|
|
Integer archiveAutoType = treeContract.getArchiveAutoType();
|
|
switch (archiveAutoType){
|
|
switch (archiveAutoType){
|
|
case 1:
|
|
case 1:
|
|
@@ -728,21 +733,29 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
//分盒文件集合
|
|
//分盒文件集合
|
|
Map<String,List<ArchiveFile>> boxMap = new LinkedHashMap<>();
|
|
Map<String,List<ArchiveFile>> boxMap = new LinkedHashMap<>();
|
|
|
|
+ Map<Long,String> boxFileMap = new LinkedHashMap<>();
|
|
|
|
|
|
- archiveAutoMethod3(list3,boxMap);//单独组卷
|
|
|
|
|
|
+ archiveAutoMethod3(list3,boxMap,boxFileMap);//单独组卷
|
|
//设置完成度30%
|
|
//设置完成度30%
|
|
projectClient.updateIsArchivesAutoById(projectId,30);
|
|
projectClient.updateIsArchivesAutoById(projectId,30);
|
|
- archiveAutoMethod2(list2,projectId,boxMap);//分类组卷
|
|
|
|
|
|
+ archiveAutoMethod2(list2,projectId,boxMap,boxFileMap);//分类组卷
|
|
//设置完成度50%
|
|
//设置完成度50%
|
|
projectClient.updateIsArchivesAutoById(projectId,50);
|
|
projectClient.updateIsArchivesAutoById(projectId,50);
|
|
- archiveAutoMethod1(list1,boxMap);//默认组卷
|
|
|
|
|
|
+ archiveAutoMethod1(list1,boxMap,boxFileMap);//默认组卷
|
|
|
|
+
|
|
|
|
+ //分盒组卷的且节点没配置组卷类型的
|
|
|
|
+ archiveAutoMethod0(list0,boxMap,boxFileMap);//默认组卷
|
|
//设置完成度70%
|
|
//设置完成度70%
|
|
projectClient.updateIsArchivesAutoById(projectId,70);
|
|
projectClient.updateIsArchivesAutoById(projectId,70);
|
|
archiveAutoMethodBox(boxMap);//分盒组卷
|
|
archiveAutoMethodBox(boxMap);//分盒组卷
|
|
}
|
|
}
|
|
|
|
|
|
- private void addBoxMap(ArchiveFile file,Map<String,List<ArchiveFile>> boxMap){
|
|
|
|
|
|
+ private void addBoxMap(ArchiveFile file,Map<String,List<ArchiveFile>> boxMap,Map<Long,String> boxFileMap){
|
|
String boxName = file.getBoxName();
|
|
String boxName = file.getBoxName();
|
|
|
|
+ if (boxFileMap.containsKey(file.getId())) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
if(boxMap.containsKey(boxName)){
|
|
if(boxMap.containsKey(boxName)){
|
|
List<ArchiveFile> boxFiles = boxMap.get(boxName);
|
|
List<ArchiveFile> boxFiles = boxMap.get(boxName);
|
|
boxFiles.add(file);
|
|
boxFiles.add(file);
|
|
@@ -752,6 +765,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
boxFiles.add(file);
|
|
boxFiles.add(file);
|
|
boxMap.put(boxName,boxFiles);
|
|
boxMap.put(boxName,boxFiles);
|
|
}
|
|
}
|
|
|
|
+ boxFileMap.put(file.getId(),"1");
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -1377,7 +1391,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//步骤5:判断文件是否存在分盒设置
|
|
//步骤5:判断文件是否存在分盒设置
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
//添加到分盒文件集合
|
|
//添加到分盒文件集合
|
|
- addBoxMap(file,boxMap);
|
|
|
|
|
|
+ addBoxMap(file,boxMap,null);
|
|
if(archiveFilesSize==archiveFiles.size() && waitArchiveFiles.size()>0){
|
|
if(archiveFilesSize==archiveFiles.size() && waitArchiveFiles.size()>0){
|
|
//最后一个文件直接将waitArchiveFiles组卷
|
|
//最后一个文件直接将waitArchiveFiles组卷
|
|
createArchive3(waitArchiveFiles,node,archivesSize);
|
|
createArchive3(waitArchiveFiles,node,archivesSize);
|
|
@@ -1451,7 +1465,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
* @param list
|
|
* @param list
|
|
* @param boxMap
|
|
* @param boxMap
|
|
*/
|
|
*/
|
|
- private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
|
|
|
|
|
|
+ private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap,Map<Long,String> boxFileMap){
|
|
//步骤1:遍历节点集合
|
|
//步骤1:遍历节点集合
|
|
for(ArchiveTreeContract node:list){
|
|
for(ArchiveTreeContract node:list){
|
|
//步骤2:查询节点下的未组卷文件
|
|
//步骤2:查询节点下的未组卷文件
|
|
@@ -1466,7 +1480,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//步骤4:断文件是否存在分盒设置
|
|
//步骤4:断文件是否存在分盒设置
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
//添加到分盒文件集合
|
|
//添加到分盒文件集合
|
|
- addBoxMap(file,boxMap);
|
|
|
|
|
|
+ addBoxMap(file,boxMap,boxFileMap);
|
|
}else{
|
|
}else{
|
|
//单独组卷流程
|
|
//单独组卷流程
|
|
Integer filePage = file.getFilePage();
|
|
Integer filePage = file.getFilePage();
|
|
@@ -1488,7 +1502,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
/**
|
|
/**
|
|
* 分类并卷组卷 设置分类的节点下只有一个案卷,节点下的所有文件都组成这个案卷。如果设置分类节点(select=1的)多个,案卷归属排序第一个节点。
|
|
* 分类并卷组卷 设置分类的节点下只有一个案卷,节点下的所有文件都组成这个案卷。如果设置分类节点(select=1的)多个,案卷归属排序第一个节点。
|
|
*/
|
|
*/
|
|
- private void archiveAutoMethod2(List<ArchiveTreeContract> list,Long projectId,Map<String,List<ArchiveFile>> boxMap){
|
|
|
|
|
|
+ private void archiveAutoMethod2(List<ArchiveTreeContract> list,Long projectId,
|
|
|
|
+ Map<String,List<ArchiveFile>> boxMap,Map<Long,String> boxFileMap){
|
|
|
|
|
|
//分类并卷集合<groupId,List<文件>>
|
|
//分类并卷集合<groupId,List<文件>>
|
|
Map<Long,List<ArchiveFile>> archiveMap = new HashMap<>();
|
|
Map<Long,List<ArchiveFile>> archiveMap = new HashMap<>();
|
|
@@ -1507,7 +1522,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//步骤4:判断文件是否存在分盒设置
|
|
//步骤4:判断文件是否存在分盒设置
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
|
|
//添加到分盒文件集合
|
|
//添加到分盒文件集合
|
|
- addBoxMap(file,boxMap);
|
|
|
|
|
|
+ addBoxMap(file,boxMap,boxFileMap);
|
|
}else{
|
|
}else{
|
|
//分类并卷流程
|
|
//分类并卷流程
|
|
//步骤5:将文件按照<groupId,List<文件>>放入集合
|
|
//步骤5:将文件按照<groupId,List<文件>>放入集合
|
|
@@ -1539,7 +1554,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
/**
|
|
/**
|
|
* 默认组卷流程 文件可以跨节点组卷,受最高并卷节点限制范围,跨节点文件组卷时,案卷规格按照第一个文件所在的节点规格 组卷。
|
|
* 默认组卷流程 文件可以跨节点组卷,受最高并卷节点限制范围,跨节点文件组卷时,案卷规格按照第一个文件所在的节点规格 组卷。
|
|
*/
|
|
*/
|
|
- private void archiveAutoMethod1(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
|
|
|
|
|
|
+ private void archiveAutoMethod1(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap,
|
|
|
|
+ Map<Long,String> boxFileMap){
|
|
//最高并卷节点
|
|
//最高并卷节点
|
|
Long archiveAutoNodeId=null;
|
|
Long archiveAutoNodeId=null;
|
|
|
|
|
|
@@ -1593,7 +1609,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
//步骤3.4:判断文件是否存在分盒设置
|
|
//步骤3.4:判断文件是否存在分盒设置
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1) {
|
|
if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1) {
|
|
//添加到分盒文件集合
|
|
//添加到分盒文件集合
|
|
- addBoxMap(file,boxMap);
|
|
|
|
|
|
+ addBoxMap(file,boxMap,boxFileMap);
|
|
if(nodeSize==list.size() && archiveFilesSize==archiveFiles.size()){
|
|
if(nodeSize==list.size() && archiveFilesSize==archiveFiles.size()){
|
|
//如果当前是最后一个文件直接将waitArchiveFiles组卷
|
|
//如果当前是最后一个文件直接将waitArchiveFiles组卷
|
|
createArchive1(waitArchiveFiles,archivesSize);
|
|
createArchive1(waitArchiveFiles,archivesSize);
|
|
@@ -1678,6 +1694,26 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 默认组卷流程 文件可以跨节点组卷,受最高并卷节点限制范围,跨节点文件组卷时,案卷规格按照第一个文件所在的节点规格 组卷。
|
|
|
|
+ */
|
|
|
|
+ private void archiveAutoMethod0(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap,Map<Long,String> boxFileMap){
|
|
|
|
+
|
|
|
|
+ for(ArchiveTreeContract node:list){
|
|
|
|
+ //步骤3.2:查询出当前节点未组卷的文件
|
|
|
|
+ List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
|
|
|
|
+ //步骤3.3:遍历未组卷文件
|
|
|
|
+ for(ArchiveFile file:archiveFiles) {
|
|
|
|
+ //步骤3.4:判断文件是否存在分盒设置
|
|
|
|
+ if (file.getBoxNumber() != null && file.getBoxNumber() != -1) {
|
|
|
|
+ //添加到分盒文件集合
|
|
|
|
+ addBoxMap(file, boxMap,boxFileMap);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 分盒组卷流程
|
|
* 分盒组卷流程
|
|
* @param boxMap
|
|
* @param boxMap
|