Browse Source

Merge remote-tracking branch 'origin/master'

liuyc 2 năm trước cách đây
mục cha
commit
3401b91c68

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -337,9 +337,9 @@ public class ArchivesAutoController extends BladeController {
 			projectClient.updateIsArchivesAutoById(projectId,1);
 
 			//将项目未锁定案卷拆卷
-			archivesAutoService.splitArchvies(projectId);
+			archivesAutoService.splitArchvies(projectId,contractId,nodeId);
 			//项目自动组卷入口
-			archivesAutoService.archiveAutoMethod(projectId);
+			archivesAutoService.archiveAutoMethod(projectId,contractId,nodeId);
 			//刷新项目档号
 			archivesAutoService.refreshFileNumberNoSlipt(projectId,contractId,nodeId);
 			//设置自动组卷结束

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -59,9 +59,9 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 
 	void batchDestroyArchive(String ids);
 
-	void archiveAutoMethod(Long project);
+	void archiveAutoMethod(Long project,Long contractId,Long nodeId);
 
-	void splitArchvies(Long project);
+	void splitArchvies(Long project,Long contractId,Long nodeId);
 
 	public String getMergeArchivesFile(Long archiveId);
 

+ 16 - 7
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -645,11 +645,13 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
         for (ArchiveFile file : datas) {
             String fileTime = file.getFileTime();
-            if (minDate.isEmpty() || fileTime.compareTo(minDate) < 0) {
-                minDate = fileTime;
-            }
-            if (maxDate.isEmpty() || fileTime.compareTo(maxDate) > 0) {
-                maxDate = fileTime;
+            if(StringUtils.isNotEmpty(fileTime)){
+                if (minDate.isEmpty() || fileTime.compareTo(minDate) <= 0) {
+                    minDate = fileTime;
+                }
+                if (maxDate.isEmpty() || fileTime.compareTo(maxDate) >= 0) {
+                    maxDate = fileTime;
+                }
             }
         }
 
@@ -707,7 +709,10 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         //
         String url = file.getPdfFileUrl();
         if (StringUtil.isEmpty(url)) {
-            url = file.getFileUrl();
+            String fileUrl = file.getFileUrl();
+            if(fileUrl.endsWith(".pdf") || fileUrl.endsWith(".PDF")){
+                url = file.getFileUrl();
+            }
         }
 
         //todo 生成相册内容,待补充
@@ -726,7 +731,11 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
         List<String> fileUrls = new ArrayList<>();
         for (ArchiveFile file: datas) {
-            fileUrls.add(getPdfFileUrl(file));
+            String url = getPdfFileUrl(file);
+            if(StringUtils.isEmpty(url)){
+                continue;
+            }
+            fileUrls.add(url);
         }
 
         fileUrls.addAll(frontUrls);

+ 56 - 7
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -256,7 +256,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 
 	@Override
-	public void splitArchvies(Long projectId){
+	public void splitArchvies(Long projectId,Long contractId,Long nodeId){
 		List<String> removeFiles = new ArrayList<>();
 		//清除案卷封面等pdf
 		List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlList(projectId);
@@ -289,16 +289,20 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 
 	@Override
-	public void archiveAutoMethod(Long 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> list1= new ArrayList<>();
 		List<ArchiveTreeContract> list2= new ArrayList<>();
 		List<ArchiveTreeContract> list3= new ArrayList<>();
-		for(ArchiveTreeContract treeContract:list){
+		for(ArchiveTreeContract treeContract:authlist){
 			Integer archiveAutoType = treeContract.getArchiveAutoType();
 			switch (archiveAutoType){
 				case 1:
@@ -520,11 +524,53 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		//立卷人 从节点规格获取
 		String rollor = node.getRollor();
-		archivesAuto.setRollor(node.getRollor());
+		if(StringUtils.isEmpty(rollor)){
+			//节点没有值,就从合同段获取,没有合同段id的 用业主的合同段
+			Long nodeContractId = archivesAuto.getContractId();
+			if(nodeContractId!=null){
+				if(nodeContract==null){
+					nodeContract = contractClient.getContractById(nodeContractId);
+				}
+				rollor = nodeContract.getFiler();
+			}else{
+				List<Long> pids= new ArrayList<>();
+				pids.add(archivesAuto.getProjectId());
+				if(contracts==null){
+					contracts = contractClient.queryContractListByIds(pids);
+				}
+				for(ContractInfo c:contracts){
+					if(c.getContractType()==3){
+						rollor = c.getFiler();;
+					}
+				}
+			}
+		}
+		archivesAuto.setRollor(rollor);
 
 		//审核人 从节点规格获取
 		String reviewer = node.getReviewer();
-		archivesAuto.setReviewer(node.getReviewer());
+		if(StringUtils.isEmpty(reviewer)){
+			//节点没有值,就从合同段获取,没有合同段id的 用业主的合同段
+			Long nodeContractId = archivesAuto.getContractId();
+			if(nodeContractId!=null){
+				if(nodeContract==null){
+					nodeContract = contractClient.getContractById(nodeContractId);
+				}
+				reviewer = nodeContract.getReviewer();
+			}else{
+				List<Long> pids= new ArrayList<>();
+				pids.add(archivesAuto.getProjectId());
+				if(contracts==null){
+					contracts = contractClient.queryContractListByIds(pids);
+				}
+				for(ContractInfo c:contracts){
+					if(c.getContractType()==3){
+						reviewer = c.getReviewer();
+					}
+				}
+			}
+		}
+		archivesAuto.setReviewer(reviewer);
 
 		//载体类型
 		if (node.getStorageType()!= null){
@@ -534,7 +580,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//archivesAuto.setStorageLocation();//存放位置
 		archivesAuto.setIsArchive(1);//已归档
 		//archivesAuto.setRemark();//备注
-		archivesAuto.setRollDate(LocalDateTime.now());//立卷日期
+		LocalDateTime now = LocalDateTime.now();
+		LocalDateTime nextday = now.plusDays(1);
+		archivesAuto.setRollDate(now);//立卷日期
+		archivesAuto.setReviewDate(nextday);//审核日期
 
 		archivesAuto.setNodeId(node.getId());//归档树节点
 		archivesAuto.setOutUrl("");//TODO 生成案卷的封面 目录 备考表,背级
@@ -1163,7 +1212,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					}
 				}
 
-				String fileNumber = fileNumberPrefix + index;
+				String fileNumber = fileNumberPrefix +"_"+ index;
 				if (archiveAutoPdfService.refreshFileNumber(archivesAuto,fileNumber)){
 					changeList.add(archivesAuto);
 				}

+ 4 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -433,6 +433,10 @@ public class FileUtils {
             for(String url:uris) {
                 try {
                     //todo 匿名访问特性
+                    if(StringUtils.isEmpty(url)){
+                        result.add("");
+                        continue;
+                    }
 
                     String fileNameWithExtension = url.substring(url.lastIndexOf("/") + 1); // 获取带有扩展名的文件名
 

+ 15 - 8
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1443,7 +1443,7 @@ public class InformationWriteQueryController extends BladeController {
                     }
                 });
             }
-
+            needCopyNode.setNodeName(vo.getNeedCopyNodeName());
             //复制保存节点、表信息
             R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 32, needCopyNode);
 
@@ -1636,8 +1636,15 @@ public class InformationWriteQueryController extends BladeController {
                         //更新redis缓存
                         informationQueryService.delAsyncWbsTree(contractId);
                     }
-
-                    return R.success("操作成功");
+                    StringBuilder addNames = new StringBuilder();
+                    addNames.append("[");
+                    for (WbsTreeContract node : toCopyNodes) {
+                        addNames.append(node.getNodeName()+"-");
+                    }
+                    String substring = addNames.substring(0, addNames.length() - 1);
+                    needCopyNodeRoot.setNodeName(substring+"]");
+//                    return R.success("操作成功");
+                    return this.saveOrCopyNodeTree(addNodeList, null, 32, needCopyNodeRoot);
                 } else {
                     throw new ServiceException("没有找到需要复制的节点信息,请联系管理员");
                 }
@@ -2753,7 +2760,7 @@ public class InformationWriteQueryController extends BladeController {
                 }
             });
         }
-
+        treeContract.setNodeName(vo.getAllSelectedList().get(0).getNodeName());
         R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 2, treeContract);
 
         //更新redis
@@ -2809,8 +2816,8 @@ public class InformationWriteQueryController extends BladeController {
                     operationType, WbsTreeContract currentNode) {
 
         if (saveList.size() > 0) {
-            StringBuilder str = new StringBuilder();
-            str.append("-" + saveList.get(0).getFullName());
+//            StringBuilder str = new StringBuilder();
+//            str.append("-" + saveList.get(0).getFullName());
             //保存施工日志
             /*if (saveLedger.size() > 0) {
                 this.constructionLedgerService.saveBatch(saveLedger, 1000);
@@ -2828,11 +2835,11 @@ public class InformationWriteQueryController extends BladeController {
                 result.add(currentNode);
                 this.queryParentNode(currentNode, result);
                 StringBuilder pathName = new StringBuilder();
-                for (int i = 1, l = result.size(); i <= l; i++) {
+                for (int i = 1, l = result.size(); i < l; i++) {
                     WbsTreeContract node = result.get(result.size() - i);
                     pathName.append("-").append(StringUtils.isNotEmpty(node.getFullName()) ? node.getFullName() : node.getNodeName());
                 }
-                pathName.append(str);
+                pathName.append("-"+currentNode.getNodeName());
                 JSONObject json = new JSONObject();
                 json.put("operationObjIds", JSONArray.parseArray(JSONObject.toJSONString(saveList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList())), String.class));
                 json.put("operationObjName", pathName.substring(1));

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -328,7 +328,7 @@
               AND ( is_archive = 0 OR is_archive IS NULL )
               AND node_id IS NOT NULL
         )
-        order by tree_sort asc
+        order by ancestors asc,tree_sort asc
     </select>
     <select id="getListByProjectId" resultType="org.springblade.manager.entity.ArchiveTreeContract">
         select id,project_id as projectId,parent_id as parentId,ancestors,node_name as nodeName,status,tree_code as treeCode, ext_type as extType,