From 5e7892cd0921111dfbaf84196f2593f8045d1c11 Mon Sep 17 00:00:00 2001
From: yanghui <2536613402@qq.com>
Date: 星期四, 08 十二月 2022 13:16:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/haucheng_panzhihua' into haucheng_panzhihua

---
 flower_city/src/main/java/com/dg/core/service/impl/OrganizationChartImpl.java |  173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 164 insertions(+), 9 deletions(-)

diff --git a/flower_city/src/main/java/com/dg/core/service/impl/OrganizationChartImpl.java b/flower_city/src/main/java/com/dg/core/service/impl/OrganizationChartImpl.java
index c06ddb6..04f1d01 100644
--- a/flower_city/src/main/java/com/dg/core/service/impl/OrganizationChartImpl.java
+++ b/flower_city/src/main/java/com/dg/core/service/impl/OrganizationChartImpl.java
@@ -6,8 +6,10 @@
 import com.dg.core.db.gen.entity.OrganizationChartEntity;
 import com.dg.core.db.gen.mapper.OrganizationChartMapper;
 import com.dg.core.service.IOrganizationChartService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -16,19 +18,32 @@
 {
 
     @Override
-    public List<OrganizationChartEntity> selectConfigList(String parentId,String grade)
+    public List<OrganizationChartEntity> selectConfigList(String parentId,String grade,List<String> ids)
     {
-        List<OrganizationChartEntity> ocList=baseMapper.selectConfigList("","1");
+        List<OrganizationChartEntity> ocList=baseMapper.selectConfigList(parentId,"1",ids);
+
+        if(ocList==null || ocList.size()<1)
+        {
+            List<String> id=new ArrayList<>();
+            id.add(parentId);
+            ocList=baseMapper.selectConfigList(null,null,id);
+        }
 
         for (OrganizationChartEntity entity:ocList)
         {
-            entity.setChild(baseMapper.selectConfigList(entity.getId()+"",""));
+            entity.setChild(baseMapper.selectConfigList(entity.getId()+"","",null));
 
             if (entity.getChild()!=null)
             {
                 entity.setChild(this.selectConfigList(entity.getId().toString()));
             }
         }
+        return ocList;
+    }
+
+    @Override
+    public List<OrganizationChartEntity> selectConfigList(List<String> ids) {
+        List<OrganizationChartEntity> ocList=baseMapper.selectConfigList(null,null,ids);
         return ocList;
     }
 
@@ -56,9 +71,9 @@
 
 
     public List<OrganizationChartEntity> selectConfigList(String parentsId) {
-        List<OrganizationChartEntity> list =baseMapper.selectConfigList(parentsId,"");
+        List<OrganizationChartEntity> list =baseMapper.selectConfigList(parentsId,"",null);
         for (OrganizationChartEntity sysStreet:list) {
-            sysStreet.setChild(baseMapper.selectConfigList(sysStreet.getId().toString(),""));
+            sysStreet.setChild(baseMapper.selectConfigList(sysStreet.getId().toString(),"",null));
             if (sysStreet.getChild()!=null)
             {
                 sysStreet.setChild(this.selectConfigList(sysStreet.getId().toString()));
@@ -79,12 +94,152 @@
     }
 
     @Override
-    public List<OrganizationChartEntity> queryList(IPage<OrganizationChartEntity> page, Integer state, String organizationName) {
-        return baseMapper.queryList(page,state,organizationName);
+    public List<OrganizationChartEntity> queryList(IPage<OrganizationChartEntity> page, Integer state,
+                                                   String organizationName,List<String> ids) {
+        return baseMapper.queryList(page,state,organizationName,ids);
     }
 
     @Override
-    public int countList(String organizationName) {
-        return baseMapper.countList(organizationName);
+    public int countList(String organizationName,List<String> ids) {
+        return baseMapper.countList(organizationName,ids);
     }
+
+
+    @Override
+    public List<OrganizationChartEntity> selectParentList(String parentId, String grade) {
+        return baseMapper.selectConfigList(parentId,grade,null);
+    }
+
+    /**
+     * 递归获取id  内部使用
+     * @param id
+     * @return
+     */
+
+    @Override
+    public List<String> getIds(String id)
+    {
+        List<String> ids=new ArrayList<>();
+        List<OrganizationChartEntity> lists = baseMapper.selectConfigList(id,"",null);
+        if(lists.size()<1)
+        {
+            lists.add(baseMapper.selectConfigById(id));
+        }
+        ids=disposestreetId(lists);
+        if(ids.size()<1)
+        {
+            return null;
+        }
+        ids.add(id);
+        return ids;
+    }
+
+    @Override
+    public List<String> getDepartmentId(String id){
+        String parentId = parentId(id);
+        List<String> departmentIds=new ArrayList<>();
+        departmentIds.add(parentId);
+        List<OrganizationChartEntity> organizationChartEntities = baseMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda().eq(OrganizationChartEntity::getParentId, parentId));
+        for (OrganizationChartEntity organizationChart :organizationChartEntities){
+            departmentIds.add(organizationChart.getId().toString());
+            departmentIds=getDepartmentIds(organizationChart.getId().toString(),departmentIds);
+        }
+        return  departmentIds;
+    }
+
+    @Override
+    public String getStairId(String id)
+    {
+        OrganizationChartEntity entity= baseMapper.selectConfigById(id);
+        if(entity!=null && StringUtils.isEmpty(entity.getParentId()))
+        {
+            return entity.getId()+"";
+        }
+        else
+        {
+            return getParentId(entity.getParentId());
+        }
+    }
+
+
+    /**
+     * 根据id  获取一级部门id   递归
+     * @param id
+     * @return
+     */
+    public String getParentId(String id)
+    {
+        String ultimatelyId;
+        OrganizationChartEntity entity= baseMapper.selectConfigById(id);
+        if(entity==null)
+        {
+            return id;
+        }
+
+        if(!StringUtils.isEmpty(entity.getParentId()))
+        {
+            ultimatelyId= getParentId(entity.getParentId());
+            return ultimatelyId;
+        }
+        else
+        {
+            ultimatelyId=entity.getId()+"";
+            return ultimatelyId;
+        }
+    }
+
+
+
+    public  String parentId(String id){
+        String parentId=id;
+        OrganizationChartEntity organizationChart = baseMapper.selectOne(new QueryWrapper<OrganizationChartEntity>().lambda().eq(OrganizationChartEntity::getId, id));
+        if (organizationChart.getParentId().length()>0){
+            parentId=parentId(organizationChart.getParentId());
+        }
+        return parentId;
+    }
+
+    public  List<String>  getDepartmentIds(String id,List<String> departmentIds){
+        List<OrganizationChartEntity> organizationChartEntities = baseMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda().eq(OrganizationChartEntity::getParentId, id));
+        if (organizationChartEntities.size()==0){
+            return  departmentIds;
+        }
+        else {
+            for (OrganizationChartEntity organizationChart :organizationChartEntities){
+                departmentIds.add(organizationChart.getId().toString());
+                departmentIds=getDepartmentIds(organizationChart.getId().toString(),departmentIds);
+            }
+        }
+        return departmentIds;
+    }
+
+
+
+    //递归取id
+    private List<String> disposestreetId(List<OrganizationChartEntity> lists)
+    {
+        List<String> ids=new ArrayList<>();
+        if(lists==null || lists.size()<1)
+        {
+            return ids;
+        }
+
+        for (OrganizationChartEntity sysStreet:lists)
+        {
+            if(sysStreet!=null&&sysStreet.getId()!=null)
+            {
+                if(sysStreet.getChild()!=null && sysStreet.getChild().size()>0)
+                {
+                    ids.addAll(disposestreetId(sysStreet.getChild()));
+                }
+                else
+                {
+                    ids.add(sysStreet.getId()+"");
+                }
+            }
+        }
+        return ids;
+    }
+
+
 }

--
Gitblit v1.7.1