From 856f1cf8ee52443ce616ce00ecff7cbb7c30f000 Mon Sep 17 00:00:00 2001 From: cjl <276999030@qq.com> Date: Wed, 01 Nov 2023 16:21:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/cjl' into dev --- screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 274 insertions(+), 2 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java index b45f922..52ef8f7 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java @@ -1,8 +1,11 @@ package com.moral.api.service.impl; +import com.moral.api.pojo.dto.uav.UAVResultListDTO; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; @@ -30,6 +33,76 @@ @Autowired private HistorySecondUavMapper historySecondUavMapper; + @Override + public UAVResultListDTO getUavMore(Map<String, Object> params) { + UAVResultListDTO uavResultListDTO = new UAVResultListDTO(); + String uvasize = params.get("uvasize").toString(); + int size = Integer.parseInt(uvasize); + //������ + ArrayList<Double> flyLatList = new ArrayList<>(); + //������ + ArrayList<Double> flyLonList = new ArrayList<>(); + String type = params.get("type").toString(); + params.put("type","$."+type); + List<UAVGetBD> historySecondUavs = historySecondUavMapper.reListDetail(params); + if (ObjectUtils.isEmpty(historySecondUavs)){ + return null; + } + ArrayList<UAVGetBD> rsBDList = new ArrayList<>(); + for (UAVGetBD historySecondUav : historySecondUavs) { + UAVGetBD uavGetBD = new UAVGetBD(); + //WGS84 ��� ������������ + double[] doubles = transformWGS84ToBD09(historySecondUav.getFlyLon(), historySecondUav.getFlyLat()); + uavGetBD.setFlyLon(doubles[0]); + uavGetBD.setFlyLat(doubles[1]); + uavGetBD.setNum(historySecondUav.getNum()); + rsBDList.add(uavGetBD); + flyLatList.add(doubles[1]); + flyLonList.add(doubles[0]); + } + //������������������������������ + Double maxLat = Collections.max(flyLatList); + Double maxLon = Collections.max(flyLonList); + Double minLat = Collections.min(flyLatList); + Double minLon = Collections.min(flyLonList); + double distance1 = getDistance(maxLon, minLat, maxLon, maxLat); + //��������������������� + double distance2 = getDistance(maxLon, minLat, minLon, minLat); + ArrayList<UAVGteForDTO> list = new ArrayList<>(); + String[] youshang = calLocationByDistanceAndLocationAndDirection(90, minLon, maxLat, size); + //������2 + String[] youxia = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(youshang[0]), Double.parseDouble(youshang[1]), size); + //������2 + String[] zuoxia = calLocationByDistanceAndLocationAndDirection(180, minLon, maxLat, size); + for (int i = 0; i <distance2 ; i+=size) { + UAVGteForDTO dto1 = new UAVGteForDTO(); + String[] strings2 = calLocationByDistanceAndLocationAndDirection(90, minLon, maxLat, i); + String[] strings3 = calLocationByDistanceAndLocationAndDirection(90, Double.parseDouble(youshang[0].toString()), Double.parseDouble(youshang[1].toString()), i); + String[] strings4 = calLocationByDistanceAndLocationAndDirection(90, Double.parseDouble(youxia[0].toString()), Double.parseDouble(youxia[1].toString()), i); + String[] strings5 = calLocationByDistanceAndLocationAndDirection(90, Double.parseDouble(zuoxia[0].toString()), Double.parseDouble(zuoxia[1].toString()), i); + dto1.setLeftTop(strings2); + dto1.setRightTop(strings3); + dto1.setRightBottom(strings4); + dto1.setLeftBottom(strings5); + list.add(dto1); + for (int j = 0; j < distance1; j+=size) { + UAVGteForDTO dto2 = new UAVGteForDTO(); + String[] strings6 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings2[0].toString()), Double.parseDouble(strings2[1].toString()), j); + String[] strings7 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings3[0].toString()), Double.parseDouble(strings3[1].toString()), j); + String[] strings8 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings4[0].toString()), Double.parseDouble(strings4[1].toString()), j); + String[] strings9 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings5[0].toString()), Double.parseDouble(strings5[1].toString()), j); + dto2.setLeftTop(strings6); + dto2.setRightTop(strings7); + dto2.setRightBottom(strings8); + dto2.setLeftBottom(strings9); + if (j!=0){ + list.add(dto2); + } + } + + } + return null; + } @Override public List<UAVResultDTO> getUav(Map<String, Object> params) { @@ -169,6 +242,26 @@ rsMap.put(result,list1); } + ArrayList<Double> TVOCArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> PM10ArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> PM25ArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> SOArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> NOArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> QYArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> COArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> WDArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> SHArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> O3ArrayListNotMergedSum = new ArrayList<>(); + ArrayList<Double> TVOCArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> PM10ArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> PM25ArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> SOArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> NOArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> QYArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> COArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> WDArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> SHArrayListMergedSum = new ArrayList<>(); + ArrayList<Double> O3ArrayListMergedSum = new ArrayList<>(); //��������������������������������������� ArrayList<UAVResultDTO> uavResultDTOS = new ArrayList<>(); Set<String> strings = rsMap.keySet(); @@ -194,53 +287,63 @@ Object a99054 = jsonObject.get("a99054"); if (!Objects.isNull(a99054)){ TVOCArrayList.add(Double.parseDouble(a99054.toString())); + TVOCArrayListNotMergedSum.add(Double.parseDouble(a99054.toString())); } //pm2.5 Object a34004 = jsonObject.get("a34004"); if (!Objects.isNull(a34004)){ PM25ArrayList.add(Double.parseDouble(a34004.toString())); + PM25ArrayListNotMergedSum.add(Double.parseDouble(a34004.toString())); } //������������ Object a21026 = jsonObject.get("a21026"); if (!Objects.isNull(a21026)){ SOArrayList.add(Double.parseDouble(a21026.toString())); + SOArrayListNotMergedSum.add(Double.parseDouble(a21026.toString())); } //������������ Object a21004 = jsonObject.get("a21004"); if (!Objects.isNull(a21004)){ NOArrayList.add(Double.parseDouble(a21004.toString())); + NOArrayListNotMergedSum.add(Double.parseDouble(a21004.toString())); } //������ Object a01006 = jsonObject.get("a01006"); if (!Objects.isNull(a01006)){ QYArrayList.add(Double.parseDouble(a01006.toString())); + QYArrayListNotMergedSum.add(Double.parseDouble(a01006.toString())); } //pm10 Object a34002 = jsonObject.get("a34002"); if (!Objects.isNull(a34002)){ PM10ArrayList.add(Double.parseDouble(a34002.toString())); + PM10ArrayListNotMergedSum.add(Double.parseDouble(a34002.toString())); } //co Object a21005 = jsonObject.get("a21005"); if (!Objects.isNull(a21005)){ COArrayList.add(Double.parseDouble(a21005.toString())); + COArrayListNotMergedSum.add(Double.parseDouble(a21005.toString())); } //������ Object a01002 = jsonObject.get("a01002"); if (!Objects.isNull(a01002)){ - QYArrayList.add(Double.parseDouble(a01002.toString())); + SHArrayList.add(Double.parseDouble(a01002.toString())); + SHArrayListNotMergedSum.add(Double.parseDouble(a01002.toString())); } //������ Object a01001 = jsonObject.get("a01001"); if (!Objects.isNull(a01001)){ - QYArrayList.add(Double.parseDouble(a01001.toString())); + WDArrayList.add(Double.parseDouble(a01001.toString())); + WDArrayListNotMergedSum.add(Double.parseDouble(a01001.toString())); } //������ Object a05024 = jsonObject.get("a05024"); if (!Objects.isNull(a05024)){ O3ArrayList.add(Double.parseDouble(a05024.toString())); + O3ArrayListNotMergedSum.add(Double.parseDouble(a05024.toString())); } } @@ -295,14 +398,183 @@ dto.setA01001(WDDouble); dto.setA01002(SHDouble); dto.setA01006(QYDouble); + TVOCArrayListMergedSum.add(TVODouble); + COArrayListMergedSum.add(CODouble); + NOArrayListMergedSum.add(NODouble); + O3ArrayListMergedSum.add(O3Double); + PM10ArrayListMergedSum.add(PM10Double); + PM25ArrayListMergedSum.add(PM25Double); + SOArrayListMergedSum.add(SODouble); + WDArrayListMergedSum.add(WDDouble); + SHArrayListMergedSum.add(SHDouble); + QYArrayListMergedSum.add(QYDouble); String[] s = string.split("_"); dto.setFlyLat(Double.parseDouble(s[1])); dto.setFlyLon(Double.parseDouble(s[0])); uavResultDTOS.add(dto); } + Double a21005CONotMergedAvg = resultDoubled(COArrayListNotMergedSum,1); + Double a2100CO5NotMergedHighest= resultDoubled(COArrayListNotMergedSum,2); + Double a2100CO5NotMergedLowest= resultDoubled(COArrayListNotMergedSum,3); + Double a21005COMergeAvg = resultDoubled(COArrayListMergedSum,1); + Double a21005COMergedHighest = resultDoubled(COArrayListMergedSum,2); + Double a21005COMergedLowest = resultDoubled(COArrayListMergedSum,3); + + Double a21026SO2NotMergedAvg = resultDoubled(SOArrayListNotMergedSum,1); + Double a21026SO2NotMergedHighest= resultDoubled(SOArrayListNotMergedSum,2); + Double a21026SO2NotMergedLowest= resultDoubled(SOArrayListNotMergedSum,3); + Double a21026SO2MergeAvg = resultDoubled(SOArrayListMergedSum,1); + Double a21026SO2MergedHighest = resultDoubled(SOArrayListMergedSum,2); + Double a21026SO2MergedLowest = resultDoubled(SOArrayListMergedSum,3); + + Double a21004NO2NotMergedAvg = resultDoubled(NOArrayListNotMergedSum,1); + Double a21004NO2NotMergedHighest= resultDoubled(NOArrayListNotMergedSum,2); + Double a21004NO2NotMergedLowest= resultDoubled(NOArrayListNotMergedSum,3); + Double a21004NO2MergeAvg = resultDoubled(NOArrayListMergedSum,1); + Double a21004NO2MergedHighest = resultDoubled(NOArrayListMergedSum,2); + Double a21004NO2MergedLowest = resultDoubled(NOArrayListMergedSum,3); + + Double a34002PM10NotMergedAvg = resultDoubled(PM10ArrayListNotMergedSum,1); + Double a34002PM10NotMergedHighest= resultDoubled(PM10ArrayListNotMergedSum,2); + Double a34002PM10NotMergedLowest= resultDoubled(PM10ArrayListNotMergedSum,3); + Double a34002PM10MergeAvg = resultDoubled(PM10ArrayListMergedSum,1); + Double a34002PM10MergedHighest = resultDoubled(PM10ArrayListMergedSum,2); + Double a34002PM10MergedLowest = resultDoubled(PM10ArrayListMergedSum,3); + + Double a34004PM25NotMergedAvg = resultDoubled(PM25ArrayListNotMergedSum,1); + Double a34004PM25NotMergedHighest= resultDoubled(PM25ArrayListNotMergedSum,2); + Double a34004PM25NotMergedLowest= resultDoubled(PM25ArrayListNotMergedSum,3); + Double a34004PM25MergeAvg = resultDoubled(PM25ArrayListMergedSum,1); + Double a34004PM25MergedHighest = resultDoubled(PM25ArrayListMergedSum,2); + Double a34004PM25MergedLowest = resultDoubled(PM25ArrayListMergedSum,3); + + Double a99054TVOCNotMergedAvg = resultDoubled(TVOCArrayListNotMergedSum,1); + Double a99054TVOCNotMergedHighest= resultDoubled(TVOCArrayListNotMergedSum,2); + Double a99054TVOCNotMergedLowest= resultDoubled(TVOCArrayListNotMergedSum,3); + Double a99054TVOCMergeAvg = resultDoubled(TVOCArrayListMergedSum,1); + Double a99054TVOCMergedHighest = resultDoubled(TVOCArrayListMergedSum,2); + Double a99054TVOCMergedLowest = resultDoubled(TVOCArrayListMergedSum,3); + + Double a05024O3NotMergedAvg = resultDoubled(O3ArrayListNotMergedSum,1); + Double a05024O3NotMergedHighest= resultDoubled(O3ArrayListNotMergedSum,2); + Double a05024O3NotMergedLowest= resultDoubled(O3ArrayListNotMergedSum,3); + Double a05024O3MergeAvg = resultDoubled(O3ArrayListMergedSum,1); + Double a05024O3MergedHighest = resultDoubled(O3ArrayListMergedSum,2); + Double a05024O3MergedLowest = resultDoubled(O3ArrayListMergedSum,2); + + Double a01001TemNotMergedAvg = resultDoubled(WDArrayListNotMergedSum,1); + Double a01001TemNotMergedHighest= resultDoubled(WDArrayListNotMergedSum,2); + Double a01001TemNotMergedLowest= resultDoubled(WDArrayListNotMergedSum,3); + Double a01001TemMergeAvg = resultDoubled(WDArrayListMergedSum,1); + Double a01001TemMergedHighest = resultDoubled(WDArrayListMergedSum,2); + Double a01001TemMergedLowest = resultDoubled(WDArrayListMergedSum,2); + + Double a01002HumNotMergedAvg = resultDoubled(SHArrayListNotMergedSum,1); + Double a01002HumNotMergedHighest= resultDoubled(SHArrayListNotMergedSum,2); + Double a01002HumNotMergedLowest= resultDoubled(SHArrayListNotMergedSum,3); + Double a010022HumMergeAvg = resultDoubled(SHArrayListMergedSum,1); + Double a01002HumMergedHighest = resultDoubled(SHArrayListMergedSum,2); + Double a01002HumMergedLowest = resultDoubled(SHArrayListMergedSum,2); + + Double a01006PreNotMergedAvg = resultDoubled(QYArrayListNotMergedSum,1); + Double a01006PreNotMergedHighest= resultDoubled(QYArrayListNotMergedSum,2); + Double a01006PreNotMergedLowest= resultDoubled(QYArrayListNotMergedSum,3); + Double a01006PreMergeAvg = resultDoubled(QYArrayListMergedSum,1); + Double a01006PreMergedHighest = resultDoubled(QYArrayListMergedSum,2); + Double a01006PreMergedLowest = resultDoubled(QYArrayListMergedSum,2); + uavResultDTOS.forEach(it->{ + it.setA21005CONotMergedAvg(a21005CONotMergedAvg); + it.setA21005CONotMergedHighest(a2100CO5NotMergedHighest); + it.setA21005CONotMergedLowest(a2100CO5NotMergedLowest); + it.setA21005COMergeAvg(a21005COMergeAvg); + it.setA21005COMergedHighest(a21005COMergedHighest); + it.setA21005COMergedLowest(a21005COMergedLowest); + + it.setA21026SO2NotMergedAvg(a21026SO2NotMergedAvg); + it.setA21026SO2NotMergedHighest(a21026SO2NotMergedHighest); + it.setA21026SO2NotMergedLowest(a21026SO2NotMergedLowest); + it.setA21026SO2MergeAvg(a21026SO2MergeAvg); + it.setA21026SO2MergedHighest(a21026SO2MergedHighest); + it.setA21026SO2MergedLowest(a21026SO2MergedLowest); + + it.setA21004NO2NotMergedAvg(a21004NO2NotMergedAvg); + it.setA21004NO2NotMergedHighest(a21004NO2NotMergedHighest); + it.setA21004NO2NotMergedLowest(a21004NO2NotMergedLowest); + it.setA21004NO2MergeAvg(a21004NO2MergeAvg); + it.setA21004NO2MergedHighest(a21004NO2MergedHighest); + it.setA21004NO2MergedLowest(a21004NO2MergedLowest); + + it.setA34002PM10NotMergedAvg(a34002PM10NotMergedAvg); + it.setA34002PM10NotMergedHighest(a34002PM10NotMergedHighest); + it.setA34002PM10NotMergedLowest(a34002PM10NotMergedLowest); + it.setA34002PM10MergeAvg(a34002PM10MergeAvg); + it.setA34002PM10MergedHighest(a34002PM10MergedHighest); + it.setA34002PM10MergedLowest(a34002PM10MergedLowest); + + it.setA34004PM25NotMergedAvg(a34004PM25NotMergedAvg); + it.setA34004PM25NotMergedHighest(a34004PM25NotMergedHighest); + it.setA34004PM25NotMergedLowest(a34004PM25NotMergedLowest); + it.setA34004PM25MergeAvg(a34004PM25MergeAvg); + it.setA34004PM25MergedHighest(a34004PM25MergedHighest); + it.setA34004PM25MergedLowest(a34004PM25MergedLowest); + + it.setA99054TVOCNotMergedAvg(a99054TVOCNotMergedAvg); + it.setA99054TVOCNotMergedHighest(a99054TVOCNotMergedHighest); + it.setA99054TVOCNotMergedLowest(a99054TVOCNotMergedLowest); + it.setA99054TVOCMergeAvg(a99054TVOCMergeAvg); + it.setA99054TVOCMergedHighest(a99054TVOCMergedHighest); + it.setA99054TVOCMergedLowest(a99054TVOCMergedLowest); + + it.setA05024O3NotMergedAvg(a05024O3NotMergedAvg); + it.setA05024O3NotMergedHighest(a05024O3NotMergedHighest); + it.setA05024O3NotMergedLowest(a05024O3NotMergedLowest); + it.setA05024O3MergeAvg(a05024O3MergeAvg); + it.setA05024O3MergedHighest(a05024O3MergedHighest); + it.setA05024O3MergedLowest(a05024O3MergedLowest); + + it.setA01001TemNotMergedAvg(a01001TemNotMergedAvg); + it.setA01001TemNotMergedHighest(a01001TemNotMergedHighest); + it.setA01001TemNotMergedLowest(a01001TemNotMergedLowest); + it.setA01001TemMergeAvg(a01001TemMergeAvg); + it.setA01001TemMergedHighest(a01001TemMergedHighest); + it.setA01001TemMergedLowest(a01001TemMergedLowest); + + it.setA01002HumNotMergedAvg(a01002HumNotMergedAvg); + it.setA01002HumNotMergedHighest(a01002HumNotMergedHighest); + it.setA01002HumNotMergedLowest(a01002HumNotMergedLowest); + it.setA01002HumMergeAvg(a010022HumMergeAvg); + it.setA01002HumMergedHighest(a01002HumMergedHighest); + it.setA01002HumMergedLowest(a01002HumMergedLowest); + + it.setA01006PreNotMergedAvg(a01006PreNotMergedAvg); + it.setA01006PreNotMergedHighest(a01006PreNotMergedHighest); + it.setA01006PreNotMergedLowest(a01006PreNotMergedLowest); + it.setA01006PreMergeAvg(a01006PreMergeAvg); + it.setA01006PreMergedHighest(a01006PreMergedHighest); + it.setA01006PreMergedLowest(a01006PreMergedLowest); + + }); + + + return uavResultDTOS; } + private Double resultDoubled(List<Double> doubles,int type){ + if(CollectionUtils.isEmpty(doubles)){ + return 0d; + } + double one = 0d; + if(type == 1){ + one = doubles.stream().mapToDouble(Double::doubleValue).average().getAsDouble(); + }else if(type == 2){ + one = doubles.stream().mapToDouble(Double::doubleValue).max().getAsDouble(); + }else if(type == 3){ + one = doubles.stream().mapToDouble(Double::doubleValue).min().getAsDouble(); + } + BigDecimal two = new BigDecimal(one); + return two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); + } private static final double EARTH_RADIUS = 6378137; -- Gitblit v1.8.0