|
@@ -32,11 +32,13 @@ import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.manager.entity.ArchiveTreeContract;
|
|
|
+import org.springblade.manager.feign.ArchiveTreeContractClient;
|
|
|
import org.springblade.system.entity.DictBiz;
|
|
|
import org.springblade.system.feign.IDictBizClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -51,6 +53,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
private final IDictBizClient iDictBizClient;
|
|
|
private ArchiveFileClient archiveFileClient;
|
|
|
+ private ArchiveTreeContractClient archiveTreeContractClient;
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto) {
|
|
|
return page.setRecords(baseMapper.selectArchivesAutoPage(page, archivesAuto));
|
|
@@ -112,26 +117,34 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 自动归档前 将未锁定的案卷拆卷
|
|
|
- * @param projectId
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void splitArchvies(Long projectId){
|
|
|
- try{
|
|
|
- baseMapper.splitArchvies(projectId);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
|
|
|
- public void archiveAutoMethod(){
|
|
|
+ public void archiveAutoMethod(Long projectId){
|
|
|
//步骤一:把项目下未锁定的案卷拆卷。
|
|
|
+ baseMapper.splitArchvies(projectId);
|
|
|
//步骤二:查询归档树节点。存在未归档文件的节点。
|
|
|
+ List<ArchiveTreeContract> list = archiveTreeContractClient.getHavedFileNodeByProjectID(projectId);
|
|
|
//步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
|
|
|
+ List<ArchiveTreeContract> list1= new ArrayList<>();
|
|
|
+ List<ArchiveTreeContract> list2= new ArrayList<>();
|
|
|
+ List<ArchiveTreeContract> list3= new ArrayList<>();
|
|
|
+ for(ArchiveTreeContract treeContract:list){
|
|
|
+ Integer archiveAutoType = treeContract.getArchiveAutoType();
|
|
|
+ switch (archiveAutoType){
|
|
|
+ case 1:
|
|
|
+ list1.add(treeContract);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ list2.add(treeContract);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ list3.add(treeContract);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
//步骤四:按照单独,分类,默认的顺序执行组卷流程。
|
|
|
+ archiveAutoMethod3(list3);//单独组卷
|
|
|
+ archiveAutoMethod2(list2);//分类组卷
|
|
|
+ archiveAutoMethod1(list1);//默认组卷
|
|
|
}
|
|
|
|
|
|
|
|
@@ -171,46 +184,60 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 单独组卷规则组卷
|
|
|
- * @param waitArchiveFiles
|
|
|
- * @param node
|
|
|
- */
|
|
|
- private void createArchive3(List<ArchiveFile> waitArchiveFiles, ArchiveTreeContract node){
|
|
|
- //1.创建新案卷
|
|
|
+ private ArchivesAuto builtArchives(ArchiveTreeContract node,int pageN,int fileN){
|
|
|
ArchivesAuto archivesAuto = new ArchivesAuto();
|
|
|
- //archivesAuto.setProjectId();
|
|
|
- //archivesAuto.setContractId();
|
|
|
- //archivesAuto.setName();//案卷题名
|
|
|
- //archivesAuto.setFileNumber();//档号
|
|
|
+ archivesAuto.setProjectId(node.getProjectId());
|
|
|
+ archivesAuto.setContractId(node.getContractId());
|
|
|
+ archivesAuto.setName("");//TODO 案卷题名
|
|
|
+ archivesAuto.setFileNumber("");//TODO 档号
|
|
|
//archivesAuto.setMicron();//微缩号
|
|
|
- //archivesAuto.setUnit();//单位
|
|
|
+ archivesAuto.setUnit("");//TODO 单位
|
|
|
//archivesAuto.setQuantity();//数量/单位
|
|
|
- //archivesAuto.setSpecification();//规格
|
|
|
- //archivesAuto.setStartDate();
|
|
|
- //archivesAuto.setEndDate();
|
|
|
- //archivesAuto.setStorageTime();//保管时间
|
|
|
- //archivesAuto.setSecretLevel();//保密级别
|
|
|
+ archivesAuto.setSpecification("");//TODO 规格 从节点规格获取
|
|
|
+ archivesAuto.setStartDate(null);//TODO 文件开始时间
|
|
|
+ archivesAuto.setEndDate(null);//TODO 文件结束时间
|
|
|
+ archivesAuto.setStorageTime("");//TODO 保管时间 从节点规格获取
|
|
|
+ archivesAuto.setSecretLevel("");//TODO 保密级别 从节点规格获取
|
|
|
//archivesAuto.setCarrierType();//载体类型
|
|
|
//archivesAuto.setKeywords();//主题词
|
|
|
//archivesAuto.setStorageLocation();//存放位置
|
|
|
- //archivesAuto.setIsArchive(1);//已归档
|
|
|
+ archivesAuto.setIsArchive(1);//已归档
|
|
|
//archivesAuto.setRemark();//备注
|
|
|
- //archivesAuto.setRollDate();//立卷日期
|
|
|
- //archivesAuto.setRollor();//立卷人
|
|
|
- //archivesAuto.setNodeId();//归档树节点
|
|
|
- //archivesAuto.setOutUrl();
|
|
|
- //archivesAuto.setFileN();//文件数量
|
|
|
- //archivesAuto.setPageN();//案卷页数
|
|
|
+ archivesAuto.setRollDate(null);// TODO 立卷日期
|
|
|
+ archivesAuto.setRollor("自动");//立卷人
|
|
|
+ archivesAuto.setNodeId(node.getId());//归档树节点
|
|
|
+ archivesAuto.setOutUrl("");//TODO 生成案卷的封面 目录 备考表,背级
|
|
|
+ archivesAuto.setFileN(fileN);//文件数量
|
|
|
+ archivesAuto.setPageN(pageN);//案卷页数
|
|
|
//archivesAuto.setMileage();
|
|
|
//archivesAuto.setFileType();
|
|
|
//archivesAuto.setSize();
|
|
|
- //archivesAuto.setTreeSort();
|
|
|
+ archivesAuto.setTreeSort(node.getTreeSort());
|
|
|
//archivesAuto.setIsOpen();
|
|
|
- //archivesAuto.setIscheck();
|
|
|
- //archivesAuto.setIsAutoFile();
|
|
|
+ archivesAuto.setIscheck(0);
|
|
|
+ archivesAuto.setIsAutoFile(0);//是否案卷收集上传的案卷
|
|
|
+ archivesAuto.setIsLock(0);//案卷锁定状态
|
|
|
+ baseMapper.insert(archivesAuto);
|
|
|
+ return archivesAuto;
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 单独组卷规则组卷
|
|
|
+ * @param waitArchiveFiles
|
|
|
+ * @param node
|
|
|
+ */
|
|
|
+ private void createArchive3(List<ArchiveFile> waitArchiveFiles, ArchiveTreeContract node,int pageN){
|
|
|
+
|
|
|
+ //1.创建新案卷
|
|
|
+ ArchivesAuto archivesAuto = builtArchives(node, pageN, waitArchiveFiles.size());
|
|
|
//2.设置文件所属案卷,组卷状态
|
|
|
+ Long archivesAutoId = archivesAuto.getId();
|
|
|
+ for(ArchiveFile file:waitArchiveFiles){
|
|
|
+ file.setArchiveId(archivesAutoId);//设置文件所属案卷
|
|
|
+ file.setIsArchive(1);
|
|
|
+ //TODO 重新打页码文件
|
|
|
+ }
|
|
|
+ archiveFileClient.updateArchiveFileForCreateArchive(waitArchiveFiles);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -240,8 +267,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
//步骤5:判断文件是否存在分盒设置
|
|
|
if(file.getBoxNumber()!=null){
|
|
|
//TODO 走分盒组卷流程
|
|
|
- if(archiveFilesSize==archiveFiles.size()){
|
|
|
- //TODO 最后一个文件直接将waitArchiveFiles组卷
|
|
|
+ if(archiveFilesSize==archiveFiles.size() && waitArchiveFiles.size()>0){
|
|
|
+ //最后一个文件直接将waitArchiveFiles组卷
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
}
|
|
|
}else{
|
|
|
//单独组卷流程
|
|
@@ -254,7 +282,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
waitArchiveFiles.add(file);
|
|
|
//判断是否最后一个文件
|
|
|
if(archiveFilesSize==archiveFiles.size()){
|
|
|
- //TODO 最后一个文件直接将waitArchiveFiles组卷
|
|
|
+ //最后一个文件直接将waitArchiveFiles组卷
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
}else{
|
|
|
continue;
|
|
|
}
|
|
@@ -262,7 +291,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
//步骤6.2达到规格 可以组一卷
|
|
|
if(checkStatus==1){
|
|
|
waitArchiveFiles.add(file);
|
|
|
- //TODO 将waitArchiveFiles组卷
|
|
|
+ //将waitArchiveFiles组卷
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
//将待组卷文件集合,总页数还原初始值,
|
|
|
waitArchiveFiles.clear();
|
|
|
archivesSize=0;
|
|
@@ -271,7 +301,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
if(checkStatus==-1){
|
|
|
//如果waitArchiveFiles集合size>0,先将集合中文件组卷。再将当前文件放入集合
|
|
|
if(waitArchiveFiles.size()>0){
|
|
|
- //TODO 将waitArchiveFiles组卷,然后将待组卷文件集合,总页数还原初始值,
|
|
|
+ //将waitArchiveFiles组卷,
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
+ //然后将待组卷文件集合,总页数还原初始值,
|
|
|
waitArchiveFiles.clear();
|
|
|
//保存当前文件进入待组卷集合,待组卷页数=当前文件页数
|
|
|
waitArchiveFiles.add(file);
|
|
@@ -279,14 +311,16 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
//判断是否最后一个文件
|
|
|
if(archiveFilesSize==archiveFiles.size()){
|
|
|
- //TODO 如果当前文件最后一个文件直接将waitArchiveFiles组卷
|
|
|
+ //如果当前文件最后一个文件直接将waitArchiveFiles组卷
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
waitArchiveFiles.clear();
|
|
|
archivesSize=0;
|
|
|
}
|
|
|
}else{
|
|
|
//步骤6.3.2如果waitArchiveFiles集合size=0,说明当前文件已经超过规格,直接将当前文件组卷
|
|
|
waitArchiveFiles.add(file);
|
|
|
- //TODO 直接将waitArchiveFiles组卷
|
|
|
+ //直接将waitArchiveFiles组卷
|
|
|
+ createArchive3(waitArchiveFiles,node,archivesSize);
|
|
|
waitArchiveFiles.clear();
|
|
|
archivesSize=0;
|
|
|
}
|