From e4d5edc13431e3777d4463df4864c6116dc79744 Mon Sep 17 00:00:00 2001
From: zhouxiantao <1026371446@qq.com>
Date: Thu, 17 Oct 2024 19:51:01 +0800
Subject: [PATCH] fix:流转办理已经修改不生效问题,纠纷态势区域权限限制,纠纷态势纠纷类型二级接口

---
 dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java |  175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 171 insertions(+), 4 deletions(-)

diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
index fefe1c0..55f6c97 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
@@ -4,17 +4,23 @@
 import cn.huge.base.common.utils.DateUtils;
 import cn.huge.base.common.utils.IdUtils;
 import cn.huge.base.common.utils.ObjectUtils;
+import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
+import cn.huge.module.constant.BaseConsts;
+import cn.huge.module.cust.dto.CtUnitDTO;
 import cn.huge.module.kind.dao.mapper.SyRegionMapper;
+import cn.huge.module.kind.domain.bo.AreaBO;
 import cn.huge.module.kind.domain.dto.RegionSelectJSDTO;
 import cn.huge.module.kind.domain.po.SyRegion;
 import cn.huge.module.sys.dto.QueAddrBaseDTO;
 import cn.huge.module.sys.dto.QueAreaDTO;
 import cn.huge.module.utils.BaiduMapAddrDTO;
 import cn.huge.module.utils.BaiduMapUtils;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
@@ -26,10 +32,7 @@
 
 import javax.annotation.PostConstruct;
 import javax.swing.plaf.synth.Region;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @title: 地域字典表业务逻辑处理
@@ -49,6 +52,9 @@
 
     @Autowired
     private UtilsClientImpl utilsClient;
+    
+    @Autowired
+    private CustClientImpl custClient;
 
     /**
     * 更新对象
@@ -226,6 +232,167 @@
             }
         }
         return list;
+    } 
+    
+    public List<AreaBO> treeByUserId(String userId){
+        CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
+        Integer unitGrade = ctUnitDTO.getUnitGrade();
+        Set<AreaBO> areaSet = new HashSet<>();
+        if(unitGrade.equals(1)){
+            QueryWrapper<SyRegion> queryWrapper = new QueryWrapper();
+            queryWrapper.gt("level", 0);
+            List<SyRegion> syRegions = mapper.selectList(queryWrapper);
+            for (SyRegion syRegion : syRegions) {
+                AreaBO areaBO = new AreaBO();
+                areaBO.setParentId(syRegion.getParentId());
+                if(syRegion.getLevel().equals(1)){
+                    areaBO.setParentId("root");
+                }
+                areaBO.setLevel(String.valueOf(syRegion.getLevel()));
+                areaBO.setLabel(syRegion.getName());
+                areaBO.setValue(syRegion.getId());
+                areaBO.setSort(syRegion.getId());
+                areaSet.add(areaBO);
+            }
+
+        }else if(unitGrade.equals(2)){
+            SyRegion areaSyRegion = mapper.selectById(ctUnitDTO.getArea());
+            if(ObjectUtils.isNotEmpty(areaSyRegion)){
+                AreaBO areaBO = new AreaBO();
+                areaBO.setParentId("root");
+                areaBO.setLabel(areaSyRegion.getName());
+                areaBO.setValue(areaSyRegion.getId());
+                areaBO.setLevel(String.valueOf(areaSyRegion.getLevel()));
+                areaBO.setSort(areaSyRegion.getId());
+                areaSet.add(areaBO);
+
+                QueryWrapper<SyRegion> queryWrapper = new QueryWrapper();
+                queryWrapper.eq("parent_id", areaSyRegion.getId());
+                List<SyRegion> syRegions = mapper.selectList(queryWrapper);
+                for (SyRegion syRegion : syRegions) {
+                    AreaBO roadaBO = new AreaBO();
+                    roadaBO.setParentId(syRegion.getParentId());
+                    roadaBO.setLabel(syRegion.getName());
+                    roadaBO.setValue(syRegion.getId());
+                    roadaBO.setLevel(String.valueOf(syRegion.getLevel()));
+                    roadaBO.setSort(syRegion.getId());
+                    areaSet.add(roadaBO);
+                }
+            }
+        }else {
+            SyRegion roadSyRegion = mapper.selectById(ctUnitDTO.getRoad());
+            AreaBO roadaBO = new AreaBO();
+            roadaBO.setParentId("root");
+            roadaBO.setLabel(roadSyRegion.getName());
+            roadaBO.setValue(roadSyRegion.getId());
+            roadaBO.setLevel(String.valueOf(roadSyRegion.getLevel()));
+            roadaBO.setSort(roadSyRegion.getId());
+            areaSet.add(roadaBO);
+        }
+        if(ObjectUtils.isEmpty(areaSet)){
+            return new ArrayList<>();
+        }
+        List<AreaBO> areaBOList = sort(areaSet);
+        List<AreaBO> areaBOS = sortArea(areaBOList);
+        return createTree(areaBOS, null);
+    }
+
+    public List<AreaBO> sortArea(List<AreaBO> list) {
+        Map<String, String> map = new HashMap<>();
+        map.put("越秀区","2");
+        map.put("海珠区","3");
+        map.put("荔湾区","4");
+        map.put("天河区","5");
+        map.put("白云区","6");
+        map.put("黄埔区","7");
+        map.put("花都区","8");
+        map.put("番禺区","9");
+        map.put("南沙区","10");
+        map.put("从化区","11");
+        map.put("增城区","12");
+        for (AreaBO areaBO : list) {
+            if(map.containsKey(areaBO.getLabel())){
+                areaBO.setSort(map.get(areaBO.getLabel()));
+            }
+        }
+        list.sort((o1, o2) -> {
+            Integer totalScore1 = Integer.valueOf(o1.getSort());
+            Integer totalScore2 = Integer.valueOf(o2.getSort());
+            if (totalScore1 > totalScore2) {
+                return 1;
+            } else if (totalScore1.equals(totalScore2)) {
+                return 0;
+            } else {
+                return -1;
+            }
+        });
+        return list;
+    }
+
+
+    public List<AreaBO> sort(Set<AreaBO> termsSet){
+        List<AreaBO> termsList = new ArrayList<>();
+        if(ObjectUtils.isNotEmpty(termsSet)){
+            for (AreaBO selectTermDTO : termsSet) {
+                termsList.add(selectTermDTO);
+            }
+            termsList.sort((o1, o2)->{
+                Double totalScore1 = Double.valueOf(o1.getValue());
+                Double totalScore2 = Double.valueOf(o2.getValue());
+                if(totalScore1 > totalScore2) {
+                    return 1;
+                }else if (totalScore1.equals(totalScore2)) {
+                    return 0;
+                }else {
+                    return -1;
+                }
+            });
+        }
+        return termsList;
+    }
+
+    /**
+     * 创建树形结构
+     *
+     * @param selectTermDTOList 所有集合
+     * @param firstId    某一级编号
+     * @return List
+     */
+    public List<AreaBO> createTree(List<AreaBO> selectTermDTOList, String firstId) {
+        List<AreaBO> firstMapList = new ArrayList<>();
+        for (AreaBO selectTermDTO : selectTermDTOList) {
+            for (AreaBO currentParam : selectTermDTOList) {
+                if (currentParam.getValue().equals(selectTermDTO.getParentId())) {
+                    addToMBean(currentParam, selectTermDTO);
+                    break;
+                }
+            }
+        }
+        //取第一级节点
+        for (AreaBO selectTermDTO : selectTermDTOList) {
+            if (StringUtils.isNotEmpty(firstId)) {
+                if (firstId.equals(selectTermDTO.getValue())) {
+                    firstMapList.add(selectTermDTO);
+                }
+            } else {
+                if (BaseConsts.ROOT.equals(selectTermDTO.getParentId()) || StringUtils.isEmpty(selectTermDTO.getParentId())) {
+                    firstMapList.add(selectTermDTO);
+                }
+            }
+        }
+        return firstMapList;
+    }
+
+    public void addToMBean(AreaBO targetUnit, AreaBO currentUnit) {
+        List<AreaBO> childListObj = targetUnit.getChildren();
+        List<AreaBO> childList = null;
+        if (CollectionUtils.isEmpty(childListObj)) {
+            childList = new ArrayList();
+            targetUnit.setChildren(childList);
+        } else {
+            childList = childListObj;
+        }
+        childList.add(currentUnit);
     }
 
 }

--
Gitblit v1.8.0