From 956c53f7362ba31b2741d45160a500d53c2947e9 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期四, 22 七月 2021 18:55:15 +0800
Subject: [PATCH] 大屏根据绘制图形查询事件数据接口

---
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java |  187 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 187 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
index 8a11209..5dab3a7 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
@@ -12,15 +12,20 @@
 import com.panzhihua.common.enums.EventType;
 import com.panzhihua.common.exceptions.ServiceException;
 import com.panzhihua.common.model.dtos.community.ComMngPopulationDTO;
+import com.panzhihua.common.model.dtos.community.bigscreen.event.ScreenDrawEventListDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.event.ScreenEventListDTO;
 import com.panzhihua.common.model.dtos.grid.*;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.screen.civil.CivilVillageStatisticsVO;
+import com.panzhihua.common.model.vos.community.screen.event.EventGridIncidentStatisticsVO;
+import com.panzhihua.common.model.vos.community.screen.event.EventLeftDownStatisticsVO;
 import com.panzhihua.common.model.vos.community.screen.event.EventListVO;
 import com.panzhihua.common.model.vos.grid.*;
 import com.panzhihua.common.model.vos.screen.*;
 import com.panzhihua.common.service.community.CommunityService;
 import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.GisPointUtil;
 import com.panzhihua.common.utlis.LngLatUtils;
 import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.service_grid.dao.*;
@@ -2268,6 +2273,7 @@
         return false;
     }
 
+    @Override
     public R eventWork(Long communityId){
         EventWorkScreenVO workScreenVO = new EventWorkScreenVO();
         String date = DateUtils.getDateFormatString(new Date(),moth_format_str);
@@ -2347,4 +2353,185 @@
         }
         return dateList;
     }
+
+    @Override
+    public R getCivilDrawList(ScreenDrawEventListDTO eventListDTO){
+
+        ScreenDrawEventVO drawEventVO = new ScreenDrawEventVO();
+        //返回事件列表结果集
+        List<EventGridIncidentStatisticsVO> eventResultList = new ArrayList<>();
+        //返回小区列表结果集
+        List<CivilVillageStatisticsVO> villageResultList = new ArrayList<>();
+        //返回事件统计
+        EventLeftDownStatisticsVO leftDownStatisticsVO = new EventLeftDownStatisticsVO();
+        //返回人口统计
+        ScreenDrawEventPopulationTotalVO drawEventPopulationTotalVO = new ScreenDrawEventPopulationTotalVO();
+        //查询所有事件
+        List<EventGridIncidentStatisticsVO> gridIncidentList = this.baseMapper.getEventListByCommunityId(eventListDTO.getCommunityId());
+        if(!gridIncidentList.isEmpty()){
+            gridIncidentList.forEach(gridIncident -> {
+                //拆分事件经纬度
+                Double lng = 0.0;//经度
+                Double lat = 0.0;//纬度
+                String []lngLatString = gridIncident.getLatLng().split(",");
+                if(!gridIncident.getType().equals(7)){
+                    lat = Double.parseDouble(lngLatString[0]);
+                    lng = Double.parseDouble(lngLatString[1]);
+                }else {
+                    lat = Double.parseDouble(lngLatString[1]);
+                    lng = Double.parseDouble(lngLatString[0]);
+                }
+
+                //判断绘制的图形类型
+                if(eventListDTO.getType().equals(ScreenDrawEventListDTO.type.yx)){
+                    //判断这个点是否在圆形范围内
+                    if(GisPointUtil.isInCircle(eventListDTO.getCenterLng(),eventListDTO.getCenterLat(),lng,lat,eventListDTO.getRadius())){
+                        if(eventResultList.size() <= eventListDTO.getCount()){
+                            eventResultList.add(gridIncident);
+                        }
+                    switch (gridIncident.getType()){
+                            case 1:
+                                leftDownStatisticsVO.setEventZATotal(leftDownStatisticsVO.getEventZATotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventZATotal(leftDownStatisticsVO.getYesEventZATotal() + 1);
+                                }
+                                break;
+                            case 2:
+                                leftDownStatisticsVO.setEventGGTotal(leftDownStatisticsVO.getEventGGTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventGGTotal(leftDownStatisticsVO.getYesEventGGTotal() + 1);
+                                }
+                                break;
+                            case 3:
+                                leftDownStatisticsVO.setEventMDTotal(leftDownStatisticsVO.getEventMDTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventMDTotal(leftDownStatisticsVO.getYesEventMDTotal() + 1);
+                                }
+                                break;
+                            case 4:
+                                leftDownStatisticsVO.setEventBWDTotal(leftDownStatisticsVO.getEventBWDTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventBWDTotal(leftDownStatisticsVO.getYesEventBWDTotal() + 1);
+                                }
+                                break;
+                            case 5:
+                                leftDownStatisticsVO.setEventTFTotal(leftDownStatisticsVO.getEventTFTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventTFTotal(leftDownStatisticsVO.getYesEventTFTotal() + 1);
+                                }
+                                break;
+                            case 6:
+                                leftDownStatisticsVO.setEventTSTotal(leftDownStatisticsVO.getEventTSTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventTSTotal(leftDownStatisticsVO.getYesEventTSTotal() + 1);
+                                }
+                                break;
+                            case 7:
+                                leftDownStatisticsVO.setEventSSPTotal(leftDownStatisticsVO.getEventSSPTotal() + 1);
+                                if(gridIncident.getStatus().equals(2)){
+                                    leftDownStatisticsVO.setYesEventSSPTotal(leftDownStatisticsVO.getYesEventSSPTotal() + 1);
+                                }
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+                }else{//多边形类型
+                    if(GisPointUtil.isInPolygon(lng,lat,eventListDTO.getLngLatList())){
+                        if(eventResultList.size() <= eventListDTO.getCount()){
+                            eventResultList.add(gridIncident);
+                        }
+                        switch (gridIncident.getType()){
+                            case 1:
+                                leftDownStatisticsVO.setEventZATotal(leftDownStatisticsVO.getEventZATotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventZATotal(leftDownStatisticsVO.getYesEventZATotal() + 1);
+                                }
+                                break;
+                            case 2:
+                                leftDownStatisticsVO.setEventGGTotal(leftDownStatisticsVO.getEventGGTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventGGTotal(leftDownStatisticsVO.getYesEventGGTotal() + 1);
+                                }
+                                break;
+                            case 3:
+                                leftDownStatisticsVO.setEventMDTotal(leftDownStatisticsVO.getEventMDTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventMDTotal(leftDownStatisticsVO.getYesEventMDTotal() + 1);
+                                }
+                                break;
+                            case 4:
+                                leftDownStatisticsVO.setEventBWDTotal(leftDownStatisticsVO.getEventBWDTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventBWDTotal(leftDownStatisticsVO.getYesEventBWDTotal() + 1);
+                                }
+                                break;
+                            case 5:
+                                leftDownStatisticsVO.setEventTFTotal(leftDownStatisticsVO.getEventTFTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventTFTotal(leftDownStatisticsVO.getYesEventTFTotal() + 1);
+                                }
+                                break;
+                            case 6:
+                                leftDownStatisticsVO.setEventTSTotal(leftDownStatisticsVO.getEventTSTotal() + 1);
+                                if(gridIncident.getStatus().equals(4)){
+                                    leftDownStatisticsVO.setYesEventTSTotal(leftDownStatisticsVO.getYesEventTSTotal() + 1);
+                                }
+                                break;
+                            case 7:
+                                leftDownStatisticsVO.setEventSSPTotal(leftDownStatisticsVO.getEventSSPTotal() + 1);
+                                if(gridIncident.getStatus().equals(2)){
+                                    leftDownStatisticsVO.setYesEventSSPTotal(leftDownStatisticsVO.getYesEventSSPTotal() + 1);
+                                }
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+                }
+            });
+        }
+        drawEventVO.setGridIncidentList(eventResultList);
+        drawEventVO.setLeftDownStatisticsVO(leftDownStatisticsVO);
+
+        //查询所有小区
+        List<CivilVillageStatisticsVO> villageStatisticsList = this.baseMapper.getCivilScreenVillageList(eventListDTO.getCommunityId());
+        if(!villageStatisticsList.isEmpty()){
+            villageStatisticsList.forEach(village -> {
+                //判断绘制的图形类型
+                if(eventListDTO.getType().equals(ScreenDrawEventListDTO.type.yx)){
+                    //判断这个点是否在圆形范围内
+                    if(GisPointUtil.isInCircle(eventListDTO.getCenterLng(),eventListDTO.getCenterLat(),Double.parseDouble(village.getLng()),Double.parseDouble(village.getLat()),eventListDTO.getRadius())){
+                        villageResultList.add(village);
+                        ScreenDrawEventPopulationTotalVO populationTotalVO = this.baseMapper.getVillagePopulationTotal(village.getVillageId());
+                        if(populationTotalVO != null){
+                            drawEventPopulationTotalVO.setVillageTotal(drawEventPopulationTotalVO.getVillageTotal() + 1);
+                            drawEventPopulationTotalVO.setPopulationTotal(drawEventPopulationTotalVO.getPopulationTotal() + populationTotalVO.getPopulationTotal());
+                            drawEventPopulationTotalVO.setLocalTotal(drawEventPopulationTotalVO.getLocalTotal() + populationTotalVO.getLocalTotal());
+                            drawEventPopulationTotalVO.setOutTotal(drawEventPopulationTotalVO.getOutTotal() + populationTotalVO.getOutTotal());
+                            drawEventPopulationTotalVO.setSpecialTotal(drawEventPopulationTotalVO.getSpecialTotal() + populationTotalVO.getSpecialTotal());
+                            drawEventPopulationTotalVO.setBuildTotal(drawEventPopulationTotalVO.getBuildTotal() + populationTotalVO.getBuildTotal());
+                        }
+                    }
+                }else {//多边形类型
+                    if(GisPointUtil.isInPolygon(Double.parseDouble(village.getLng()),Double.parseDouble(village.getLat()),eventListDTO.getLngLatList())){
+                        villageResultList.add(village);
+                        ScreenDrawEventPopulationTotalVO populationTotalVO = this.baseMapper.getVillagePopulationTotal(village.getVillageId());
+                        if(populationTotalVO != null){
+                            drawEventPopulationTotalVO.setVillageTotal(drawEventPopulationTotalVO.getVillageTotal() + 1);
+                            drawEventPopulationTotalVO.setPopulationTotal(drawEventPopulationTotalVO.getPopulationTotal() + populationTotalVO.getPopulationTotal());
+                            drawEventPopulationTotalVO.setLocalTotal(drawEventPopulationTotalVO.getLocalTotal() + populationTotalVO.getLocalTotal());
+                            drawEventPopulationTotalVO.setOutTotal(drawEventPopulationTotalVO.getOutTotal() + populationTotalVO.getOutTotal());
+                            drawEventPopulationTotalVO.setSpecialTotal(drawEventPopulationTotalVO.getSpecialTotal() + populationTotalVO.getSpecialTotal());
+                            drawEventPopulationTotalVO.setBuildTotal(drawEventPopulationTotalVO.getBuildTotal() + populationTotalVO.getBuildTotal());
+                        }
+                    }
+                }
+            });
+        }
+
+        drawEventVO.setVillageStatisticsList(villageResultList);
+        drawEventVO.setDrawEventPopulationTotalVO(drawEventPopulationTotalVO);
+        return R.ok(drawEventVO);
+    }
 }

--
Gitblit v1.7.1