Sfoglia il codice sorgente

立卷规则获取

luok 2 anni fa
parent
commit
acc82a494e

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeContractVO.java

@@ -31,4 +31,6 @@ import lombok.EqualsAndHashCode;
 public class ArchiveTreeContractVO extends ArchiveTreeContract {
 	private static final long serialVersionUID = 1L;
 
+	private String allName; //全路经名
+
 }

+ 39 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -36,6 +36,9 @@ import org.springblade.manager.wrapper.ArchiveTreeContractWrapper;
 import org.springblade.manager.service.IArchiveTreeContractService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  *  控制器
  *
@@ -125,5 +128,41 @@ public class ArchiveTreeContractController extends BladeController {
 		return R.status(archiveTreeContractService.deleteLogic(Func.toLongList(ids)));
 	}
 
+
+
+	/**
+	 * 保存立卷规则设置
+	 */
+	@PostMapping("/saveArchiveAutoRule")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "保存立卷规则设置", notes = "传入archiveAutoType规则类型,nodeIds逗号拼接选择节点id")
+	public R saveArchiveAutoRule(@ApiParam(value = "立卷规则", required = true) @RequestParam Integer archiveAutoType,
+					@ApiParam(value = "主键集合", required = true) @RequestParam String nodeIds) {
+		return R.status(archiveTreeContractService.saveArchiveAutoRule(archiveAutoType,nodeIds));
+	}
+
+
+	/**
+	 * 查看立卷规则设置
+	 */
+	@PostMapping("/getArchiveAutoRule")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "修改立卷规则设置", notes = "传入节点id")
+	public R getArchiveAutoRule(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
+		Map<String, List<ArchiveTreeContractVO>> ruleMap=archiveTreeContractService.getArchiveAutoRule(id);
+		return R.data(ruleMap);
+	}
+
+	/**
+	 * 修改立卷规则设置
+	 */
+	@PostMapping("/updateArchiveAutoRule")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "修改立卷规则设置", notes = "传入修改的archiveAutoType规则类型,nodeIds逗号拼接选择节点id")
+	public R updateArchiveAutoRule(@ApiParam(value = "立卷规则", required = true) @RequestParam Integer archiveAutoType,
+					@ApiParam(value = "主键集合", required = true) @RequestParam String nodeIds) {
+		return R.status(archiveTreeContractService.updateArchiveAutoRule(archiveAutoType,nodeIds));
+	}
+
 	
 }

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

@@ -47,4 +47,10 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 	 */
 	int updateAllSonNodeIdsForArchiveAutoRule(@Param("treeContract") ArchiveTreeContract treeContract);
 
+	/**
+	 * 获取节点下所有设置规则节点
+	 * @param treeContract
+	 * @return
+	 */
+	List<ArchiveTreeContractVO> getAllSonNodeIdsForArchiveAutoRuleSelected(@Param("treeContract")ArchiveTreeContract treeContract);
 }

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

@@ -36,6 +36,7 @@
         <result column="ext_id" property="extId"/>
         <result column="archive_auto_type" property="archiveAutoType"/>
         <result column="archive_auto_node_id" property="archiveAutoNodeId"/>
+        <result column="archive_auto_select" property="archiveAutoSelect"/>
     </resultMap>
 
 
@@ -60,4 +61,12 @@
             </if>
     </update>
 
+    <select id="getAllSonNodeIdsForArchiveAutoRuleSelected" resultMap="archiveTreeContractResultMap">
+        select * from m_archive_tree_contract
+        where is_deleted = 0
+        and ancestors like concat('', #{treeContract.ancestors}, '%')
+        and archive_auto_select=1
+        order by ancestors asc,sort asc
+    </select>
+
 </mapper>

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

@@ -21,6 +21,9 @@ import org.springblade.manager.vo.ArchiveTreeContractVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  *  服务类
  *
@@ -44,4 +47,16 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 	 * @return
 	 */
 	boolean saveArchiveAutoRule(Integer archiveAutoType,String nodeIds);
+
+
+
+	Map<String, List<ArchiveTreeContractVO>> getArchiveAutoRule(Long id);
+
+	/**
+	 *项目级立卷规则更新
+	 * @return
+	 */
+	boolean updateArchiveAutoRule(Integer archiveAutoType,String nodeIds);
+
+
 }

+ 113 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.vo.ArchiveTreeContractVO;
 import org.springblade.manager.mapper.ArchiveTreeContractMapper;
@@ -24,6 +25,8 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.*;
+
 /**
  *  服务实现类
  *
@@ -38,39 +41,127 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		return page.setRecords(baseMapper.selectArchiveTreeContractPage(page, archiveTreeContract));
 	}
 
+	/**
+	 * 保存组卷规则设置
+	 * @param archiveAutoType
+	 * @param nodeIds
+	 * @return
+	 */
 	@Override
 	public boolean saveArchiveAutoRule(Integer archiveAutoType, String nodeIds) {
 		//项目级不需要考虑是否为wbs节点,已经同步出来了都属于归档树节点,直接按归档树节点处理
+		try{
+			//步骤1保存选择节点的立卷规则。
+			String[] ids = nodeIds.split(",");
 
-		//步骤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保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
+				baseMapper.updateAllSonNodeIdsForArchiveAutoRule(archiveTreeContract);
+			}
+
+			return true;
+
+		}catch (Exception e){
+			e.printStackTrace();
+			return false;
+		}
+	}
+
+
+	/**
+	 * 获取节点规则查看
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public Map<String, List<ArchiveTreeContractVO>> getArchiveAutoRule(Long id) {
+
+		Map<String, List<ArchiveTreeContractVO>> map= new HashMap<>();
+		List<ArchiveTreeContractVO> voList_1_3 = new ArrayList<>();//最高规则和单独组卷的tab显示节点及节点下有设置的节点(archive_auto_select=1)
+		List<ArchiveTreeContractVO> voList_2 = new ArrayList<>();//分类并卷的tab显示当前节点的相同分类节点
+
+
+		ArchiveTreeContract archiveTreeContract = baseMapper.selectById(id);
 
-		Long archiveAutoNodeId=null;
+		//获取当前节点下所有设置的节点
+		List<ArchiveTreeContractVO> list=baseMapper.getAllSonNodeIdsForArchiveAutoRuleSelected(archiveTreeContract);
+		for(ArchiveTreeContractVO vo:list){
 
-		//分类并卷规则的需要生成个随机数,作为同一个分类赋值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);
+
+
+
+		return map;
+	}
+
+
+	@Override
+	public boolean updateArchiveAutoRule(Integer archiveAutoType, String nodeIds) {
+		//项目级不需要考虑是否为wbs节点,已经同步出来了都属于归档树节点,直接按归档树节点处理
+
+
+		String[] ids = nodeIds.split(",");
+		Set<String> idsSet=new HashSet<>(Arrays.asList(ids));
+
+		//判断修改的原来是否是分类并卷规则类型
+		List<ArchiveTreeContract> archiveTreeContracts_db=null;
+		long nodeId_0_Long = Long.parseLong(ids[0]);
+		ArchiveTreeContract archiveTreeContract0 = baseMapper.selectById(nodeId_0_Long);
+		Integer archiveAutoType_db = archiveTreeContract0.getArchiveAutoType();
+		if(archiveAutoType_db==2){
+			//获取分类ID
+			Long archiveAutoNodeId_db = archiveTreeContract0.getArchiveAutoNodeId();
+			//获取该分类下的设置选择节点 archiveAutoSelect=1的,不是范围内的所有子节点
+			archiveTreeContracts_db = baseMapper.selectList(Wrappers.<ArchiveTreeContract>lambdaQuery()
+					.eq(ArchiveTreeContract::getArchiveAutoNodeId, archiveAutoNodeId_db)
+					.eq(ArchiveTreeContract::getArchiveAutoSelect, 1)
+			);
+		}else{
+			//原来是最高,单独规则类型的
+
 			if(archiveAutoType==2){
-				//分类并卷规则 提交都是一个分类类型
-				archiveTreeContract.setArchiveAutoNodeId(archiveAutoNodeId);
-			}else{
-				//最高并卷规则 选择节点的ID
-				archiveTreeContract.setArchiveAutoNodeId(nodeIdLong);
+				//修改成分类并卷
+			}
+			if(archiveAutoType==1){
+				//修改成最高
+			}
+			if(archiveAutoType==3){
+				//修改成单独
+				for(String nodeId:ids){
+					//步骤1更新选择节点的立卷规则。
+					long nodeIdLong = Long.parseLong(nodeId);
+					ArchiveTreeContract archiveTreeContract = baseMapper.selectById(nodeIdLong);
+					archiveTreeContract.setArchiveAutoSelect(1);
+					archiveTreeContract.setArchiveAutoType(archiveAutoType);
+					archiveTreeContract.setArchiveAutoNodeId(nodeIdLong);//最高/单独规则 选择节点的ID
+					baseMapper.updateById(archiveTreeContract);
+					//步骤2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
+					baseMapper.updateAllSonNodeIdsForArchiveAutoRule(archiveTreeContract);
+				}
 			}
-			baseMapper.updateById(archiveTreeContract);
 		}
 
-		//TODO 步骤2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
-		/*
-		* 测试覆盖
-		* */
+
 		return false;
 	}