From ee8bb47024e9ef5a585a5f4d61d1ab236c9d4341 Mon Sep 17 00:00:00 2001 From: cjl <909710561@qq.com> Date: Tue, 23 Apr 2024 15:05:33 +0800 Subject: [PATCH] fix:因子相关性比较均值 --- screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java | 125 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 125 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..c7c0438 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,29 @@ 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.DeviceMapper; +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 +36,110 @@ @Service public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea> implements SysAreaService { + @Autowired + private SysAreaMapper sysAreaMapper; + + @Autowired + private MonitorPointMapper monitorPointMapper; + + @Autowired + private OrganizationService organizationService; + @Autowired + private DeviceMapper deviceMapper; + + @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);*/ + List<Integer> orgIds = deviceMapper.deviceOrgIdList(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); + } + + @Override + public SysArea getAreaByCode(Integer regionCode) { + QueryWrapper<SysArea> wrapper = new QueryWrapper<>(); + wrapper.eq("area_code",regionCode); + return sysAreaMapper.selectOne(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