瀏覽代碼

跨节点移动优化

cr 3 周之前
父節點
當前提交
5662a9c3ce

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -1057,17 +1057,17 @@
 
     </select>
     <select id="getSiblingWbsContract" resultType="org.springblade.manager.entity.WbsTreeContract">
-        select * from m_wbs_tree_contract where p_id= (select p_id from m_wbs_tree_contract where p_key_id=#{pKeyId}) and is_deleted=0;
+        select * from m_wbs_tree_contract where p_id= (select p_id from m_wbs_tree_contract where p_key_id=#{pKeyId}) and is_deleted=0 order by sort;
     </select>
     <select id="getWbsTreeContractsByPKeyIds" resultType="org.springblade.manager.entity.WbsTreeContract">
-        select p_key_id,parent_id,p_id,ancestors,ancestors_p_id from m_wbs_tree_contract where p_key_id in (
+        select p_key_id,parent_id,p_id,ancestors,ancestors_p_id,node_type from m_wbs_tree_contract where p_key_id in (
         <foreach collection="pKeyIds" item="pkeyId" separator=",">
             #{pkeyId}
         </foreach>
         ) and is_deleted=0
     </select>
     <select id="getChildWbsTreeContracts" resultType="org.springblade.manager.entity.WbsTreeContract">
-        select p_key_id,ancestors,ancestors_p_id from m_wbs_tree_contract where ancestors_p_id like #{pKeyId}  and is_deleted=0
+        select p_key_id,ancestors,ancestors_p_id from m_wbs_tree_contract where FIND_IN_SET(#{pKeyId}, ancestors_p_id)   and is_deleted=0
     </select>
 
 </mapper>

+ 29 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -4554,7 +4554,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         List<WbsTreeContract> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
 
         InputStream templateStream = new FileInputStream(new File(templatePath));
-        org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(templateStream);
+        Workbook workbook = WorkbookFactory.create(templateStream);
         Sheet templateSheet = workbook.getSheetAt(0);
 
         // 移除默认的Sheet1
@@ -4778,6 +4778,33 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         List<WbsTreeContract> list= wbsTreeContractMapper.getWbsTreeContractsByPKeyIds(dto.getLeftPkeyIds());
         WbsTreeContract moveFatherNode = this.getById(list.get(0).getPId());
         WbsTreeContract fatherContract = this.getById(dto.getRightPkeyId());
+        Integer leftNodeType = 0;
+        Integer rightNodeType =0;
+        if(list.get(0).getNodeType()!=null){
+            if(list.get(0).getNodeType()==1){
+                leftNodeType=1;
+            } else if (list.get(0).getNodeType()==18) {
+                leftNodeType=2;
+            }else {
+                leftNodeType=list.get(0).getNodeType()+1;
+            }
+        }
+        if(fatherContract.getNodeType()!=null){
+            if(fatherContract.getNodeType()==1){
+                rightNodeType=1;
+            } else if (fatherContract.getNodeType()==18) {
+                rightNodeType=2;
+            }else {
+                rightNodeType=fatherContract.getNodeType()+1;
+            }
+        }
+        if(leftNodeType==rightNodeType){
+            throw new ServiceException("请勿同级节点相互移动");
+        }
+        if(leftNodeType<rightNodeType){
+            throw new ServiceException("请勿向比自己层级低的节点移动");
+        }
+
 
         String sql="SELECT * from m_formula_data_block WHERE sw_id = "+moveFatherNode.getId()+" and contract_id ="+moveFatherNode.getContractId()+" and  type =0";
         List<FormulaDataBlock> formulaDataBlocks1 = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(FormulaDataBlock.class));
@@ -5520,7 +5547,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
      //保存Workbook到本地文件(本地测试放开)
-    private void saveWorkbookToFile(org.apache.poi.ss.usermodel.Workbook workbook, String filePath) {
+    private void saveWorkbookToFile(Workbook workbook, String filePath) {
         try {
             File file = new File(filePath);
             File parentDir = file.getParentFile();