From f6ecfd331ec959d7daea3fa5ebc262e7a50e4e01 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 14 Jan 2022 15:20:54 +0800
Subject: [PATCH] 图片上传测试

---
 screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 114 insertions(+), 0 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java
index 2c755cb..a86c8f6 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java
@@ -1,10 +1,28 @@
 package com.moral.api.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.Menu;
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.entity.Organization;
 import com.moral.api.entity.SysArea;
+import com.moral.api.mapper.MonitorPointMapper;
 import com.moral.api.mapper.SysAreaMapper;
+import com.moral.api.service.OrganizationService;
 import com.moral.api.service.SysAreaService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +35,100 @@
 @Service
 public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea> implements SysAreaService {
 
+    @Autowired
+    private SysAreaMapper sysAreaMapper;
+
+    @Autowired
+    private MonitorPointMapper monitorPointMapper;
+
+    @Autowired
+    private OrganizationService organizationService;
+
+    @Override
+    public List<Map<String, Object>> getMapPath(Integer orgId) {
+        //������������������������������
+        List<Organization> organizations = organizationService.getChildrenOrganizationsById(orgId);
+        List<Integer> orgIds = organizations.stream().map(Organization::getId).collect(Collectors.toList());
+        orgIds.add(orgId);
+        QueryWrapper<MonitorPoint> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("province_code", "city_code", "area_code")
+                .eq("is_delete", Constants.NOT_DELETE)
+                .in("organization_id", orgIds);
+
+        //������������id������������������
+        List<MonitorPoint> monitorPoints = monitorPointMapper.selectList(queryWrapper);
+        Set<Integer> cityCodes = new HashSet<>();
+        for (MonitorPoint monitorPoint : monitorPoints) {
+            Integer provinceCode = monitorPoint.getProvinceCode();
+            Integer cityCode = monitorPoint.getCityCode();
+            Integer areaCode = monitorPoint.getAreaCode();
+            if (provinceCode != null) {
+                cityCodes.add(provinceCode);
+            }
+            if (cityCode != null) {
+                cityCodes.add(cityCode);
+            }
+            if (areaCode != null) {
+                cityCodes.add(areaCode);
+            }
+        }
+
+        QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
+        sysAreaQueryWrapper.select("area_code", "area_name", "parent_code").in("area_code", cityCodes);
+        //���������������������������������������������
+        List<SysArea> allAreas = sysAreaMapper.selectList(sysAreaQueryWrapper);
+
+        //���������������
+        List<SysArea> oneSysArea = allAreas.stream()
+                .filter(o -> o.getParentCode().equals(0))
+                .sorted(Comparator.comparing(SysArea::getAreaCode))
+                .collect(Collectors.toList());
+
+        List<Map<String, Object>> newList = new ArrayList<>();
+        //������������������
+        oneSysArea.forEach(o -> {
+            Map<String, Object> sysAreaMap = new LinkedHashMap<>();
+            sysAreaMap.put("provinceCode", o.getAreaCode());
+            sysAreaMap.put("provinceName", o.getAreaName());
+            sysAreaMap.put("cities", getAreasByRecursion(o, allAreas));
+            newList.add(sysAreaMap);
+        });
+        return newList;
+    }
+
+    @Override
+    public List<SysArea> getChildren(Integer regionCode) {
+        QueryWrapper<SysArea> wrapper = new QueryWrapper<>();
+        wrapper.eq("parent_code",regionCode);
+        return sysAreaMapper.selectList(wrapper);
+    }
+
+    //������������������������
+    private List<Map<String, Object>> getAreasByRecursion(SysArea sysArea, List<SysArea> sysAreas) {
+        SysArea newSysArea = new SysArea();
+        newSysArea.setParentCode(sysArea.getAreaCode());
+        //������������������������������
+        List<SysArea> nextLevel = sysAreas.stream()
+                .filter(o -> o.getParentCode().equals(sysArea.getAreaCode()))
+                .collect(Collectors.toList());
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        if (nextLevel.size() > 0) {
+            nextLevel.forEach(o -> {
+                Map<String, Object> sysMap = new LinkedHashMap<>();
+                if (o.getAreaCode().toString().endsWith("00")) {
+                    sysMap.put("cityCode", o.getAreaCode());
+                    sysMap.put("cityName", o.getAreaName());
+                    sysMap.put("provinceCode", o.getParentCode());
+                    sysMap.put("areas", getAreasByRecursion(o, sysAreas));
+                } else {
+                    sysMap.put("areaCode", o.getAreaCode());
+                    sysMap.put("areaName", o.getAreaName());
+                    sysMap.put("cityCode", o.getParentCode());
+                }
+                list.add(sysMap);
+            });
+        }
+        return list;
+    }
 }

--
Gitblit v1.8.0