Browse Source

小需求

huangtf 1 năm trước cách đây
mục cha
commit
b4968cde81

+ 10 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveProjectConfig.java

@@ -33,6 +33,16 @@ public class ArchiveProjectConfig extends BaseEntity {
      */
     private String factorType;
 
+    /**
+     *  目录类型,0 默认规则,1,主目录规则,从建设单位,或者合同段的子节点开始重新计算
+     */
+    private Integer dirType;
+
+    /**
+     *  流水号类型,0 默认,无虚数, 1 4位虚数
+     */
+    private Integer IndexType;
+
     //是否打页码
     public boolean isPage() {
         return getFactorType().contains("5");

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

@@ -35,6 +35,8 @@ public class ArchiveProjectConfigController {
 
         archiveProjectConfig.setProjectType(config.getProjectType());
         archiveProjectConfig.setFactorType(config.getFactorType());
+        archiveProjectConfig.setIndexType(config.getIndexType());
+        archiveProjectConfig.setDirType(config.getDirType());
 
         boolean result = archiveProjectConfigService.updateById(archiveProjectConfig);
         return R.status(result);

+ 11 - 6
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1770,10 +1770,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		Integer indexType = 0;
 		ArchiveProjectConfig config = archiveProjectConfigService.getByProjectIdOrNew(projectId);
-		if (config!= null && config.bAutoIndexLen4()) {
-			indexType = 1;
-		}
-		this.refreshFileNumberNoSlipt(list,contractId,nodeId,bforce,indexType);
+
+		this.refreshFileNumberNoSlipt(list,contractId,nodeId,bforce,config.getIndexType(),config.getDirType());
 	}
 
 	/**
@@ -1782,11 +1780,18 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 * @param contractId
 	 * @param nodeId
 	 */
-	public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts,Long contractId,Long nodeId,boolean bforce,Integer indexType) {
+	public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts,Long contractId,Long nodeId,boolean bforce,Integer indexType, Integer dirType) {
 
 		List<ArchiveTreeContractVO2> subTreeList = new ArrayList<>();
 		List<List<ArchiveTreeContract>>  subGroupedList = new ArrayList<>();
-		ArchiveTreeUtil.getGroupedList(archiveTreeContracts,subTreeList,subGroupedList);
+
+
+		if (dirType == 1) {
+			ArchiveTreeUtil.getGroupedListSub(archiveTreeContracts,subTreeList,subGroupedList);
+		}else {
+			ArchiveTreeUtil.getGroupedList(archiveTreeContracts,subTreeList,subGroupedList);
+		}
+
 		Integer index = 1;
 
 		List<ArchivesAuto> changeList = new ArrayList<>();

+ 57 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/ArchiveTreeUtil.java

@@ -72,4 +72,61 @@ public class ArchiveTreeUtil {
         }
     }
 
+    /**
+     * 得到分组,
+     *
+     * @param arList
+     * @param subTreeList    建设单位,施工单位各个合同段,监理单位各个合同段,电子档案的子节点这一层
+     * @param subGroupedList
+     */
+    public static void getGroupedListSub(List<ArchiveTreeContract> arList,
+                                      List<ArchiveTreeContractVO2> subTreeList, List<List<ArchiveTreeContract>> subGroupedList) {
+        List<ArchiveTreeContractVO2> voList = new ArrayList();
+        Map<Long, ArchiveTreeContract> map = new LinkedHashMap<>();
+
+
+        for (ArchiveTreeContract archiveTreeContract : arList) {
+            ArchiveTreeContractVO2 archiveTreeContractVO2 = new ArchiveTreeContractVO2(archiveTreeContract);
+            voList.add(archiveTreeContractVO2);
+            map.put(archiveTreeContract.getId(), archiveTreeContract);
+        }
+
+        List<ArchiveTreeContractVO2> trees = ForestNodeMergerEx.merge(voList);
+        if (trees == null || trees.size() == 0) {
+            return;
+        }
+        ArchiveTreeContractVO2 tree = trees.get(0);
+
+        for (ArchiveTreeContractVO2 subTree : tree.getChildren()) {
+            if (StringUtils.isEmpty(subTree.getTreeCode())) {
+                //同步
+                subTreeList.addAll(subTree.getChildren());
+
+            } else {
+                if (subTree.getChildren() == null || subTree.getChildren().size() == 0) {
+                    continue;
+                }
+                if (subTree.getChildren().get(0).getExtType() == 2) {
+                    for (ArchiveTreeContractVO2 contractNode : subTree.getChildren()) {
+                        subTreeList.addAll(contractNode.getChildren());
+                    }
+                } else {
+                    subTreeList.addAll(subTree.getChildren());
+                }
+
+            }
+        }
+
+        for (ArchiveTreeContractVO2 subTree : subTreeList) {
+            List<ArchiveTreeContractVO2> tmpList = new ArrayList();
+            List<ArchiveTreeContract> groupList = new ArrayList();
+            ForestNodeMergerEx.getTreeList(subTree, tmpList);
+            for (ArchiveTreeContractVO2 vo2 : tmpList) {
+                ArchiveTreeContract ar = map.get(vo2.getId());
+                groupList.add(ar);
+            }
+            subGroupedList.add(groupList);
+        }
+    }
+
 }