Răsfoiți Sursa

立卷规则添加

luok 2 ani în urmă
părinte
comite
6a82987d1f

+ 8 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java

@@ -140,10 +140,16 @@ public class ArchiveTree extends BaseEntity {
     @ApiModelProperty(value = "自动立卷类型")
     private Integer archiveAutoType;
 	/**
-	* 自动立卷关联Id
+	* 自动立卷设置的节点ID
 	*/
-    @ApiModelProperty(value = "自动立卷关联Id")
+    @ApiModelProperty(value = "自动立卷设置的节点ID")
     private Long archiveAutoNodeId;
 
+    /**
+     * 是否自动立卷规则选择设置的节点 选中的节点设为1 方便页面显示列表
+     */
+    @ApiModelProperty(value = "是否为设置的节点")
+    private Integer archiveAutoSelect;
+
 
 }

+ 8 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java

@@ -128,9 +128,14 @@ public class ArchiveTreeContract extends BaseEntity {
 	*/
 		private Integer archiveAutoType;
 	/**
-	* 自动立卷关联Id
-	*/
-		private Long archiveAutoNodeId;
+	 * 自动立卷设置的节点ID
+	 */
+	private Long archiveAutoNodeId;
+
+	/**
+	 * 是否自动立卷规则选择设置的节点 选中的节点设为1 方便页面显示列表
+	 */
+	private Integer archiveAutoSelect;
 
 
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.vo.ArchiveTreeContractVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +40,11 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 	 */
 	List<ArchiveTreeContractVO> selectArchiveTreeContractPage(IPage page, ArchiveTreeContractVO archiveTreeContract);
 
+	/**
+	 * 自动组卷规则设置节点下所有子节点
+	 * @param treeContract
+	 * @return
+	 */
+	int updateAllSonNodeIdsForArchiveAutoRule(@Param("treeContract") ArchiveTreeContract treeContract);
+
 }

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

@@ -43,4 +43,21 @@
         select * from m_archive_tree_contract where is_deleted = 0
     </select>
 
+    <update id="updateAllSonNodeIdsForArchiveAutoRule">
+        update m_archive_tree_contract
+        set
+            archive_auto_type= #{treeContract.archiveAutoType},
+            archive_auto_node_id = #{treeContract.archive_auto_node_id}
+        where
+            is_deleted = 0 and ancestors like concat('', #{treeContract.ancestors}, '%')
+            /*最高并卷规则不能覆盖 分类并卷规则,单独组卷规则*/
+            <if test="treeContract.archiveAutoType ==1 ">
+                and archive_auto_type != 2 and archive_auto_type != 3
+            </if>
+            /*分类并卷规则不能覆盖单独组卷规则*/
+            <if test="treeContract.archiveAutoType ==2 ">
+                and archive_auto_type != 3
+            </if>
+    </update>
+
 </mapper>

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java

@@ -38,4 +38,10 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 	 */
 	IPage<ArchiveTreeContractVO> selectArchiveTreeContractPage(IPage<ArchiveTreeContractVO> page, ArchiveTreeContractVO archiveTreeContract);
 
+
+	/**
+	 *项目级立卷规则新增
+	 * @return
+	 */
+	boolean saveArchiveAutoRule(Integer archiveAutoType,String nodeIds);
 }

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeService.java

@@ -26,4 +26,10 @@ public interface IArchiveTreeService extends BaseService<ArchiveTree> {
     List<ArchiveTree> getSameGradeNode(String id);
 
 	boolean submitArchiveTreeSort(List<ArchiveTreeSortDTO> listSort);
+
+	/**
+	 * 系统级立卷规则新增
+	 * @return
+	 */
+	boolean saveAechiveAutoRule(Integer archiveAutoType,String nodeIds);
 }

+ 33 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -38,4 +38,37 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		return page.setRecords(baseMapper.selectArchiveTreeContractPage(page, archiveTreeContract));
 	}
 
+	@Override
+	public boolean saveArchiveAutoRule(Integer archiveAutoType, String nodeIds) {
+		//项目级不需要考虑是否为wbs节点,已经同步出来了都属于归档树节点,直接按归档树节点处理
+
+		//步骤1保存选择节点的立卷规则。
+		String[] ids = nodeIds.split(",");
+
+		Long archiveAutoNodeId=null;
+
+		//分类并卷规则的需要生成个随机数,作为同一个分类赋值archiveAutoNodeId
+		if(archiveAutoType==2){
+			double ran=(Math.random()*100000000) + 1;
+			archiveAutoNodeId=Long.parseLong(System.currentTimeMillis()+""+ran);
+		}
+		for(String nodeId:ids){
+			long nodeIdLong = Long.parseLong(nodeId);
+			ArchiveTreeContract archiveTreeContract = baseMapper.selectById(nodeIdLong);
+			archiveTreeContract.setArchiveAutoSelect(1);
+			archiveTreeContract.setArchiveAutoType(archiveAutoType);
+			if(archiveAutoType==2){
+				//分类并卷规则 提交都是一个分类类型
+				archiveTreeContract.setArchiveAutoNodeId(archiveAutoNodeId);
+			}else{
+				//最高并卷规则 选择节点的ID
+				archiveTreeContract.setArchiveAutoNodeId(nodeIdLong);
+			}
+			baseMapper.updateById(archiveTreeContract);
+		}
+
+		//TODO 步骤2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
+		return false;
+	}
+
 }

+ 14 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -167,4 +167,18 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
     }
 
 
+    @Override
+    public boolean saveAechiveAutoRule(Integer archiveAutoType, String nodeIds) {
+        //步骤1:判断选择节点是否为wbs节点。
+        //步骤2:归档树原始节点,
+            //2.1保存选择节点的立卷规则。
+                //2.1.1 最高并卷规则的需要将选择节点的ID赋值archiveAutoNodeId
+                //2.1.2 分类并卷规则的需要生成个随机数,作为同一个分类赋值archiveAutoNodeId
+            //2.2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
+        //步骤3:归档树关联wbs节点
+            //TODO 关联wbs节点的立卷规则保存,涉及到能否正确同步出来。再议
+            //3.1保存选择节点的立卷规则。
+            //3.2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
+        return false;
+    }
 }