From a4bcc1576c21046167cdea4049821e2238757784 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Sat, 18 Sep 2021 09:45:59 +0800
Subject: [PATCH] screen-manage 修改添加父菜单BUG
---
screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java | 97 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 97 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..f7636df 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,26 @@
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.SysArea;
+import com.moral.api.mapper.MonitorPointMapper;
import com.moral.api.mapper.SysAreaMapper;
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 +33,85 @@
@Service
public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea> implements SysAreaService {
+ @Autowired
+ private SysAreaMapper sysAreaMapper;
+
+ @Autowired
+ private MonitorPointMapper monitorPointMapper;
+
+ @Override
+ public List<Map<String, Object>> getMapPath(Integer orgId) {
+ QueryWrapper<MonitorPoint> queryWrapper = new QueryWrapper<>();
+ queryWrapper.select("province_code", "city_code", "area_code")
+ .eq("organization_id", orgId)
+ .eq("is_delete", Constants.NOT_DELETE);
+ //������������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;
+ }
+
+ //������������������������
+ 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