From 1964314fc149ff51c89bc82cbb27fd4ee754b7e3 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期二, 18 七月 2023 15:01:43 +0800
Subject: [PATCH] 要素树

---
 src/main/java/com/gk/hotwork/Service/ElementManagementService.java          |    8 ++
 src/main/java/com/gk/hotwork/Domain/ElementManagement.java                  |   17 +++
 src/main/java/com/gk/hotwork/Mapper/mybatis/ElementManagementMapper.xml     |   11 ++
 src/main/java/com/gk/hotwork/Service/ServiceImpl/ElementManagementImpl.java |  120 ++++++++++++++++++++++--------
 src/main/java/com/gk/hotwork/Controller/ElementManagementController.java    |   27 ++++++
 src/main/java/com/gk/hotwork/Domain/ElementTree.java                        |   23 +++++
 src/main/java/com/gk/hotwork/Mapper/ElementManagementMapper.java            |    4 
 7 files changed, 172 insertions(+), 38 deletions(-)

diff --git a/src/main/java/com/gk/hotwork/Controller/ElementManagementController.java b/src/main/java/com/gk/hotwork/Controller/ElementManagementController.java
index 17937c9..1d8a83e 100644
--- a/src/main/java/com/gk/hotwork/Controller/ElementManagementController.java
+++ b/src/main/java/com/gk/hotwork/Controller/ElementManagementController.java
@@ -57,6 +57,33 @@
         List<ElementTree> elementTreeList = elementManagementService.getElementTree();
         return success(elementTreeList);
     }
+    
+    @ApiOperation("获取检查导则要素树")
+    @PostMapping("/getMenuType1Tree")
+    public Msg getMenuType1Tree() {
+        List<ElementTree> elementTreeList = elementManagementService.getMenuType1Tree();
+        return success(elementTreeList);
+    }
+    
+    
+    @ApiOperation("获取安全标准化要素树")
+    @PostMapping("/getMenuType2Tree")
+    public Msg getMenuType2Tree() {
+        List<ElementTree> elementTreeList = elementManagementService.getMenuType2Tree();
+        return success(elementTreeList);
+    }
+    
+    
+    
+    @ApiOperation("根据所选要素级别获取上级要素列表")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "type",value = "当前要素级别")})
+    @PostMapping("/getSuperElement")
+    public Msg getSuperElement(@RequestBody JSONObject jsonObject) {
+    	Integer type = Integer.valueOf(jsonObject.get("type")==null?"0":jsonObject.get("type").toString());
+    	List<ElementManagement> list = elementManagementService.getSuperElement(type-1);
+        return success(list);
+    }
+    
 
     @ApiOperation("/新增")
     @PostMapping("/add")
diff --git a/src/main/java/com/gk/hotwork/Domain/ElementManagement.java b/src/main/java/com/gk/hotwork/Domain/ElementManagement.java
index 0e83bbd..8ac1eeb 100644
--- a/src/main/java/com/gk/hotwork/Domain/ElementManagement.java
+++ b/src/main/java/com/gk/hotwork/Domain/ElementManagement.java
@@ -7,7 +7,6 @@
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 @TableName("element_management")
 public class ElementManagement implements Serializable {
@@ -17,10 +16,14 @@
     /** 要素名称  name **/
     private String name;
 
-    /** 要素级别  type  0:A级要素 1:B级要素**/
+    /** 要素级别  type  0:一级要素,1:二级要素,2:三级要素**/
     private Integer type;
+    
+    /** 导则类型  menu_type(1:检查导则(标准)管理;2: 安全标准化管理) **/
+    private Integer menuType;
 
-    /** 父要素id  parent_id **/
+
+	/** 父要素id  parent_id **/
     private Long parentId;
 
     /** 要素备注  remark **/
@@ -117,6 +120,14 @@
     }
 
 
+    public Integer getMenuType() {
+		return menuType;
+	}
+
+	public void setMenuType(Integer menuType) {
+		this.menuType = menuType;
+	}
+	
     public String getName() {
         return name;
     }
diff --git a/src/main/java/com/gk/hotwork/Domain/ElementTree.java b/src/main/java/com/gk/hotwork/Domain/ElementTree.java
index 5e0f299..de28875 100644
--- a/src/main/java/com/gk/hotwork/Domain/ElementTree.java
+++ b/src/main/java/com/gk/hotwork/Domain/ElementTree.java
@@ -19,14 +19,35 @@
     /** 标签  label **/
     private String label;
 
+    /** 是否是叶节点 **/
+    private boolean isLeaf;
+        
     /** 值  value **/
     private Long value;
+
+    /** 父级ID **/
+    private Long pid;
 
     /** 子节点 **/
     private List<ElementTree> children;
 
+    public Long getPid() {
+		return pid;
+	}
 
-    public String getLabel() {
+	public void setPid(Long pid) {
+		this.pid = pid;
+	}
+	
+    public boolean isLeaf() {
+		return isLeaf;
+	}
+
+	public void setLeaf(boolean isLeaf) {
+		this.isLeaf = isLeaf;
+	}
+
+	public String getLabel() {
         return label;
     }
 
diff --git a/src/main/java/com/gk/hotwork/Mapper/ElementManagementMapper.java b/src/main/java/com/gk/hotwork/Mapper/ElementManagementMapper.java
index 049b4e2..4ecaa5c 100644
--- a/src/main/java/com/gk/hotwork/Mapper/ElementManagementMapper.java
+++ b/src/main/java/com/gk/hotwork/Mapper/ElementManagementMapper.java
@@ -13,10 +13,12 @@
 @Repository
 public interface ElementManagementMapper extends BaseMapper<ElementManagement> {
 
-    IPage<ElementManagement> selectPages(Page<ElementManagement> page, Map<String, Object> params);
+    IPage<ElementManagement> selectPages(Page<ElementManagement> page,@Param("params") Map<String, Object> params);
 
     List<ElementManagement> getParentElement();
 
     List<ElementManagement> getElementByType(@Param("type") Integer type);
+    
+    List<Map<String,Object>> getElementTree();
 
 }
diff --git a/src/main/java/com/gk/hotwork/Mapper/mybatis/ElementManagementMapper.xml b/src/main/java/com/gk/hotwork/Mapper/mybatis/ElementManagementMapper.xml
index 455f46c..a97d635 100644
--- a/src/main/java/com/gk/hotwork/Mapper/mybatis/ElementManagementMapper.xml
+++ b/src/main/java/com/gk/hotwork/Mapper/mybatis/ElementManagementMapper.xml
@@ -17,7 +17,7 @@
     <result column="remark" property="remark" jdbcType="VARCHAR" />
     <result column="point" property="point" jdbcType="VARCHAR" />
     <result column="weight" property="weight" />
-
+    <result column="menu_type" property="menuType" jdbcType="VARCHAR"/>
   </resultMap>
   <select id="selectPages" resultMap="BaseResultMap">
     select a.*,
@@ -37,5 +37,14 @@
   <select id="getElementByType" resultMap="BaseResultMap">
     select *  from element_management where valid_flag = 1 and type = #{type}
   </select>
+  
+  
+  <select id="getElementTree" resultType="java.util.Map">
+  	select DISTINCT t.label,t.mt,t.type,t.pid,t.value,(case when (t.keyw is null and t.type>0) then  1 else  0 end ) as isLeaf from(
+	select t1.mt,t1.label,t1.type,t1.value,t1.pid,t2.label as keyw
+	from (select name as label,menu_type as mt,type,id as value,parent_id as pid from element_management WHERE valid_flag=1) t1  left join (select name as label,type,id as value,	  parent_id as pid from element_management WHERE valid_flag=1) t2
+	on t1.value=t2.pid) t
+  </select>
+
 
 </mapper>
diff --git a/src/main/java/com/gk/hotwork/Service/ElementManagementService.java b/src/main/java/com/gk/hotwork/Service/ElementManagementService.java
index 542e744..9a03f7e 100644
--- a/src/main/java/com/gk/hotwork/Service/ElementManagementService.java
+++ b/src/main/java/com/gk/hotwork/Service/ElementManagementService.java
@@ -42,4 +42,12 @@
 
     List<ElementTree> getElementTree();
 
+	List<ElementManagement> getSuperElement(Integer type);
+
+
+	List<ElementTree> getMenuType1Tree();
+
+
+	List<ElementTree> getMenuType2Tree();
+
 }
diff --git a/src/main/java/com/gk/hotwork/Service/ServiceImpl/ElementManagementImpl.java b/src/main/java/com/gk/hotwork/Service/ServiceImpl/ElementManagementImpl.java
index cf21e0d..e2a60e2 100644
--- a/src/main/java/com/gk/hotwork/Service/ServiceImpl/ElementManagementImpl.java
+++ b/src/main/java/com/gk/hotwork/Service/ServiceImpl/ElementManagementImpl.java
@@ -37,7 +37,6 @@
         return elementManagementMapper.selectPages(page,filter);
     }
 
-
     /**
     * @Description: 新增
     */
@@ -88,42 +87,93 @@
         return elementManagementMapper.getElementByType(0);
     }
 
+    public List<ElementTree> getChindrenTree(List<Map<String,Object>> list,Long pid){
+    	List<ElementTree> elementTreeList = new ArrayList<ElementTree>(); 
+    	for (Map<String,Object> e : list) {
+    		if(e.get("pid")!=null && pid.toString().equals(e.get("pid").toString())){
+    			
+        		ElementTree elementTree=new ElementTree();
+                elementTree.setType(Integer.valueOf(e.get("type").toString()));
+                elementTree.setLabel(e.get("label").toString());
+                elementTree.setValue(Long.valueOf(e.get("value").toString()));
+                elementTree.setLeaf(e.get("isLeaf").toString().equals("1")?true:false);                
+                if(elementTree.isLeaf()){
+                	elementTree.setChildren(new ArrayList<ElementTree>());
+                	elementTreeList.add(elementTree);
+                }else{                	
+                	elementTree.setChildren(getChindrenTree(list,elementTree.getValue()));
+                	elementTreeList.add(elementTree);
+                }                
+    		}    		
+		}
+    	return elementTreeList;
+    }
+    
     @Override
     public List<ElementTree> getElementTree() {
-        List<ElementTree> elementTreeList = new ArrayList<>();
+    	
+    	List<ElementTree> returnTree = new ArrayList<>();   
+    	List<Map<String,Object>> list = elementManagementMapper.getElementTree(); //读取元素配置
+    	for (Map<String, Object> map : list) {
+    		if(map.get("pid")==null){ //一级要素
+    			ElementTree elementTree=new ElementTree();
+    			elementTree.setType(Integer.valueOf(map.get("type").toString()));
+    			elementTree.setLabel(map.get("label").toString());
+    			elementTree.setValue(Long.valueOf(map.get("value").toString()));
+    			elementTree.setLeaf(map.get("isLeaf").toString().equals("1")?true:false);
+    			elementTree.setChildren(getChindrenTree(list,Long.valueOf(map.get("value").toString())));
+    			returnTree.add(elementTree);
+    		}else{
+    			continue;
+    		}
+		}
 
-        List<ElementManagement> list1 = elementManagementMapper.getElementByType(0);
-        List<ElementManagement> list2 = elementManagementMapper.getElementByType(1);
-
-        if (CollectionUtils.isNotEmpty(list1)){
-            for (ElementManagement elementManagement : list1){
-                ElementTree elementTree=new ElementTree();
-                elementTree.setType(0);
-                elementTree.setLabel(elementManagement.getName());
-                elementTree.setValue(elementManagement.getId());
-                elementTreeList.add(elementTree);
-            }
-        }
-        if (CollectionUtils.isNotEmpty(list2)) {
-            for (int i = 0; i < list2.size(); i++) {
-                for (int j = 0; j < elementTreeList.size(); j++) {
-                    if (list2.get(i).getParentId().equals(elementTreeList.get(j).getValue())) {
-                        if (CollectionUtils.isEmpty(elementTreeList.get(j).getChildren())) {
-                            //如果为空 则new一个出来
-                            elementTreeList.get(j).setChildren(new ArrayList<>());
-                        }
-                        ElementTree elementTree = new ElementTree();
-                        elementTree.setType(1);
-                        elementTree.setLabel(list2.get(i).getName());
-                        elementTree.setValue(list2.get(i).getId());
-                        elementTreeList.get(j).getChildren().add(elementTree);
-                    }
-                }
-            }
-        }
-        return elementTreeList;
+        return returnTree;
     }
 
+    @Override
+    public List<ElementTree> getMenuType1Tree() {
+    	
+    	List<ElementTree> returnTree = new ArrayList<>();   
+    	List<Map<String,Object>> list = elementManagementMapper.getElementTree(); //读取元素配置
+    	for (Map<String, Object> map : list) {
+    		if(map.get("pid")==null && "1".equals(map.get("mt").toString())){ //一级要素,MenuType1
+    			ElementTree elementTree=new ElementTree();
+    			elementTree.setType(Integer.valueOf(map.get("type").toString()));
+    			elementTree.setLabel(map.get("label").toString());
+    			elementTree.setValue(Long.valueOf(map.get("value").toString()));
+    			elementTree.setLeaf(map.get("isLeaf").toString().equals("1")?true:false);
+    			elementTree.setChildren(getChindrenTree(list,Long.valueOf(map.get("value").toString())));
+    			returnTree.add(elementTree);
+    		}else{
+    			continue;
+    		}
+		}
+
+        return returnTree;
+    }
+    
+    @Override
+    public List<ElementTree> getMenuType2Tree() {
+    	
+    	List<ElementTree> returnTree = new ArrayList<>();   
+    	List<Map<String,Object>> list = elementManagementMapper.getElementTree(); //读取元素配置
+    	for (Map<String, Object> map : list) {
+    		if(map.get("pid")==null && "2".equals(map.get("mt").toString())){ //一级要素,MenuType2
+    			ElementTree elementTree=new ElementTree();
+    			elementTree.setType(Integer.valueOf(map.get("type").toString()));
+    			elementTree.setLabel(map.get("label").toString());
+    			elementTree.setValue(Long.valueOf(map.get("value").toString()));
+    			elementTree.setLeaf(map.get("isLeaf").toString().equals("1")?true:false);
+    			elementTree.setChildren(getChindrenTree(list,Long.valueOf(map.get("value").toString())));
+    			returnTree.add(elementTree);
+    		}else{
+    			continue;
+    		}
+		}
+
+        return returnTree;
+    }
 
     /**
      * 查询验证
@@ -163,4 +213,10 @@
             if (count > 0) throw new BusinessException("当前A级要素仍然有已绑定的B级要素,无法删除");
         }
     }
+
+
+	@Override
+	public List<ElementManagement> getSuperElement(Integer type) {
+		return elementManagementMapper.getElementByType(type);
+	}
 }

--
Gitblit v1.9.2