Browse Source

警情综合和撒点相关接口代码开发

jichaobo 2 years ago
parent
commit
02ff69774f

+ 21 - 4
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemPoliceInfoController.java

@@ -93,12 +93,29 @@ public class DemPoliceInfoController {
 
 
     /**
-     * 火灾类型
+     * 综合警情-警情时段分布
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return
+     */
+    @GetMapping("/alertStatisticsByHouse")
+    public ApiResult<Map<String, List<AlertStatisticsVO>>> getAlertStatisticsByHouse(@RequestParam(value = "startTime") String startTime,
+                                                                                     @RequestParam(value = "endTime") String endTime,
+                                                                                     @RequestParam(value = "streetTown", required = false) String streetTown) {
+        return ApiResult.success(demPoliceInfoService.getAlertStatisticsByHouse(startTime, endTime, streetTown));
+    }
+
+
+    /**
+     * 综合警情-警情撒点
+     *
+     * @param streetTown 街镇
      * @return
      */
-    @GetMapping("fireType")
-    public ApiResult<List<String>> getFireType(){
-        return ApiResult.success(demPoliceInfoService.getFireType());
+    @GetMapping("/warningInstanceScatterer")
+    public ApiResult<List<Map<String, Object>>> warningInstanceScatterer(@RequestParam(value = "streetTown", required = false) String streetTown) {
+        return ApiResult.success(demPoliceInfoService.warningInstanceScatterer(streetTown));
     }
 }
 

+ 4 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemPoliceInfoService.java

@@ -5,7 +5,6 @@ import com.usky.fire.domain.DemPoliceInfo;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.fire.service.vo.AlertStatisticsVO;
 
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -25,5 +24,9 @@ public interface DemPoliceInfoService extends CrudService<DemPoliceInfo> {
 
     CommonPage<DemPoliceInfo> page(Integer current, Integer size, String startTime, String endTime, String streetTown);
 
+    Map<String, List<AlertStatisticsVO>> getAlertStatisticsByHouse(String startTime, String endTime, String streetTown);
+
+    List<Map<String, Object>> warningInstanceScatterer(String streetTown);
+
     List<String> getFireType();
 }

+ 12 - 4
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseCompanyServiceImpl.java

@@ -250,12 +250,14 @@ public class BaseCompanyServiceImpl extends AbstractCrudService<BaseCompanyMappe
 
     @Override
     public List<Map<String, Object>> reportComplaint() {
+        IPage<DemEnforceReportComplaint> page = new Page<>(1, 500);
         List<Map<String, Object>> list1 = new ArrayList<>();
         LambdaQueryWrapper<DemEnforceReportComplaint> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select(DemEnforceReportComplaint::getReportAddress, DemEnforceReportComplaint::getLatitude,
                 DemEnforceReportComplaint::getLongitude, DemEnforceReportComplaint::getId)
                 .eq(DemEnforceReportComplaint::getEnable, 0);
-        List<DemEnforceReportComplaint> list = demEnforceReportComplaintService.list(queryWrapper);
+        page = demEnforceReportComplaintService.page(page, queryWrapper);
+        List<DemEnforceReportComplaint> list = page.getRecords();
         if (CollectionUtils.isNotEmpty(list)) {
             for (int i = 0; i < list.size(); i++) {
                 Map<String, Object> map = new HashMap<>();
@@ -291,12 +293,14 @@ public class BaseCompanyServiceImpl extends AbstractCrudService<BaseCompanyMappe
 
     @Override
     public List<String> inspectDeclare() {
+        IPage<DemAtlInspectDeclare> page = new Page<>(1, 500);
         List<String> companyCodeList = new ArrayList<>();
         LambdaQueryWrapper<DemAtlInspectDeclare> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select(DemAtlInspectDeclare::getDeclareCompanyCode)
                 .eq(DemAtlInspectDeclare::getDeleteFlag, 0)
                 .groupBy(DemAtlInspectDeclare::getDeclareCompanyCode);
-        List<DemAtlInspectDeclare> list = demAtlInspectDeclareService.list(queryWrapper);
+        page = demAtlInspectDeclareService.page(page, queryWrapper);
+        List<DemAtlInspectDeclare> list = page.getRecords();
         if (CollectionUtils.isNotEmpty(list)) {
             for (int i = 0; i < list.size(); i++) {
                 companyCodeList.add(list.get(i).getDeclareCompanyCode());
@@ -307,12 +311,14 @@ public class BaseCompanyServiceImpl extends AbstractCrudService<BaseCompanyMappe
 
     @Override
     public List<String> lawStatistics() {
+        IPage<DemLawStatistics> page = new Page<>(1, 500);
         List<String> companyCodeList = new ArrayList<>();
         LambdaQueryWrapper<DemLawStatistics> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select(DemLawStatistics::getCompanyCode)
                 .eq(DemLawStatistics::getDeleteFlag, 0)
                 .groupBy(DemLawStatistics::getCompanyCode);
-        List<DemLawStatistics> list = demLawStatisticsService.list(queryWrapper);
+        page = demLawStatisticsService.page(page, queryWrapper);
+        List<DemLawStatistics> list = page.getRecords();
         if (CollectionUtils.isNotEmpty(list)) {
             for (int i = 0; i < list.size(); i++) {
                 companyCodeList.add(list.get(i).getCompanyCode());
@@ -434,13 +440,15 @@ public class BaseCompanyServiceImpl extends AbstractCrudService<BaseCompanyMappe
         streetTownList.add("浦锦街道");
         streetTownList.add("浦江镇");
         List<Object> list = new ArrayList<>();
+        IPage<BaseCompany> page = new Page<>(1, 500);
         LambdaQueryWrapper<BaseCompany> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select(BaseCompany::getId, BaseCompany::getCompanyId, BaseCompany::getCompanyName,
                 BaseCompany::getCompanyType, BaseCompany::getLinkPhone, BaseCompany::getAddress, BaseCompany::getStreetTown)
                 .eq(BaseCompany::getEnable, 0)
                 .eq(StringUtils.isNotBlank(streetTown), BaseCompany::getStreetTown, streetTown)
                 .eq(StringUtils.isNotBlank(companyType), BaseCompany::getCompanyType, companyType);
-        List<BaseCompany> list1 = this.list(queryWrapper);
+        page = this.page(page, queryWrapper);
+        List<BaseCompany> list1 = page.getRecords();
         if (CollectionUtils.isNotEmpty(list1)) {
             List<String> companyIdList = new ArrayList<>();
             for (int i = 0; i < list1.size(); i++) {

+ 5 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemMicroStationServiceImpl.java

@@ -113,13 +113,15 @@ public class DemMicroStationServiceImpl extends AbstractCrudService<DemMicroStat
 
     @Override
     public List<Object> microStationScatterer(String streetTown) {
+        IPage<DemMicroStation> page = new Page<>();
         LambdaQueryWrapper<DemMicroStation> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select(DemMicroStation::getId, DemMicroStation::getStationName, DemMicroStation::getLongitude,
                 DemMicroStation::getDimension)
                 .eq(DemMicroStation::getDeleteFlag, "0")
                 .eq(StringUtils.isNotBlank(streetTown), DemMicroStation::getRemark, streetTown)
                 .orderByDesc(DemMicroStation::getId);
-        List<DemMicroStation> list1 = this.list();
+        page = this.page(page, queryWrapper);
+        List<DemMicroStation> list1 = page.getRecords();
         List<Object> list = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list1)) {
             for (int i = 0; i < list1.size(); i++) {
@@ -135,7 +137,7 @@ public class DemMicroStationServiceImpl extends AbstractCrudService<DemMicroStat
     }
 
     @Override
-    public List<Object> synthesizePoliceSituationScatterer(String streetTown, String scattererType){
+    public List<Object> synthesizePoliceSituationScatterer(String streetTown, String scattererType) {
         List<Object> list = new ArrayList<>();
         switch (scattererType) {
             case "消防站":
@@ -144,7 +146,7 @@ public class DemMicroStationServiceImpl extends AbstractCrudService<DemMicroStat
             case "监控":
                 break;
             case "重点单位":
-                list = baseCompanyService.companyScatterer(streetTown,"1");
+                list = baseCompanyService.companyScatterer(streetTown, "1");
                 break;
             case "消防车":
                 break;

+ 71 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemPoliceInfoServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.util.Arith;
@@ -26,6 +27,7 @@ import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -116,6 +118,58 @@ public class DemPoliceInfoServiceImpl extends AbstractCrudService<DemPoliceInfoM
         return this.ToCommonPage(page);
     }
 
+    @Override
+    public Map<String, List<AlertStatisticsVO>> getAlertStatisticsByHouse(String startTime, String endTime, String streetTown) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date startTime1 = null;
+        Date endTime1 = null;
+        try {
+            startTime1 = simpleDateFormat.parse(startTime);
+            endTime1 = simpleDateFormat.parse(endTime);
+        } catch (Exception e) {
+            throw new BusinessException("时间格式错误");
+        }
+        QueryWrapper<DemPoliceInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("HOUR(filing_time) monthTime", "COUNT(id) as aCount", "case_type as aType")
+                .between("filing_time", startTime1, endTime1)
+                .eq("street_town", streetTown)
+                .groupBy("monthTime", "case_type");
+        Map<String, List<AlertStatisticsVO>> typeMap = enhanceList(this.listMaps(queryWrapper));
+        Date maxDate = getMaxDate();
+        Date minDate = getMinDate();
+        AtomicInteger distanceOfTwoDate = new AtomicInteger(1);
+        Optional.ofNullable(maxDate)
+                .ifPresent(md -> distanceOfTwoDate.set(DateUtils.getDistanceOfTwoDateNew(minDate, maxDate)));
+        perfect(typeMap, 24, distanceOfTwoDate.get(), 0);
+        collectByThree(typeMap, distanceOfTwoDate.get());
+        return typeMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> warningInstanceScatterer(String streetTown) {
+        IPage<DemPoliceInfo> page = new Page<>(1, 500);
+        LambdaQueryWrapper<DemPoliceInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(DemPoliceInfo::getAddress, DemPoliceInfo::getGisX, DemPoliceInfo::getGisY,
+                DemPoliceInfo::getId)
+                .eq(StringUtils.isNotBlank(streetTown), DemPoliceInfo::getStreetTown, streetTown)
+                .eq(DemPoliceInfo::getQuenchTime, "")
+                .orderByDesc(DemPoliceInfo::getId);
+        page = this.page(page, queryWrapper);
+        List<Map<String, Object>> list = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(page.getRecords())) {
+            for (int i = 0; i < page.getRecords().size(); i++) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("id", page.getRecords().get(i).getId());
+                map.put("address", page.getRecords().get(i).getAddress());
+                map.put("longitude", page.getRecords().get(i).getGisX());
+                map.put("latitude", page.getRecords().get(i).getGisY());
+                list.add(map);
+            }
+        }
+        return list;
+    }
+
+
     @Override
     public List<String> getFireType() {
         List<FireLevelRatioVO> list = new ArrayList<>();
@@ -133,6 +187,23 @@ public class DemPoliceInfoServiceImpl extends AbstractCrudService<DemPoliceInfoM
                 .map(FireLevelRatioVO::getFireType).collect(Collectors.toList());
     }
 
+    public void collectByThree(Map<String, List<AlertStatisticsVO>> map, Integer distanceOfTwoDate) {
+        for (String type : map.keySet()) {
+            List<AlertStatisticsVO> list = map.get(type);
+            List<List<AlertStatisticsVO>> partition = Lists.partition(list, 3);
+            List<AlertStatisticsVO> thList = new ArrayList<>();
+            for (List<AlertStatisticsVO> threeList : partition) {
+                double sum = threeList.stream().mapToDouble(AlertStatisticsVO::getNumber).sum();
+                AlertStatisticsVO alertStatisticsVO = new AlertStatisticsVO();
+                alertStatisticsVO.setType(type);
+                alertStatisticsVO.setMonth(String.valueOf(partition.indexOf(threeList)));
+                alertStatisticsVO.setAvg(Arith.div(sum, distanceOfTwoDate));
+                thList.add(alertStatisticsVO);
+            }
+            map.put(type, thList);
+        }
+    }
+
     public AlertStatisticsVO getAsV(Date startTime, Date endTime, String type, String streetTown) {
         AlertStatisticsVO alertStatisticsVo = new AlertStatisticsVO();
         LambdaQueryWrapper<DemPoliceInfo> queryWrapper = Wrappers.lambdaQuery();

+ 18 - 16
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemWaterSourceServiceImpl.java

@@ -34,11 +34,11 @@ public class DemWaterSourceServiceImpl extends AbstractCrudService<DemWaterSourc
         List<Map<String, Object>> list = new ArrayList<>();
         IPage<DemWaterSource> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<DemWaterSource> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.select(DemWaterSource::getId,DemWaterSource::getWaterName,DemWaterSource::getWaterAddress,
-                DemWaterSource::getWaterType,DemWaterSource::getOrganizateName,DemWaterSource::getWaterForm,
-                DemWaterSource::getAvailableStatusName,DemWaterSource::getAvailableStatus,DemWaterSource::getWaterNature,
-                DemWaterSource::getBuildTime,DemWaterSource::getPipeCompany,DemWaterSource::getContactMode,
-                DemWaterSource::getFireAbbreviat,DemWaterSource::getPipePressure,DemWaterSource::getHydrantInterface)
+        queryWrapper.select(DemWaterSource::getId, DemWaterSource::getWaterName, DemWaterSource::getWaterAddress,
+                DemWaterSource::getWaterType, DemWaterSource::getOrganizateName, DemWaterSource::getWaterForm,
+                DemWaterSource::getAvailableStatusName, DemWaterSource::getAvailableStatus, DemWaterSource::getWaterNature,
+                DemWaterSource::getBuildTime, DemWaterSource::getPipeCompany, DemWaterSource::getContactMode,
+                DemWaterSource::getFireAbbreviat, DemWaterSource::getPipePressure, DemWaterSource::getHydrantInterface)
                 .eq(DemWaterSource::getDeleteFlag, 0)
                 .like(StringUtils.isNotBlank(waterName), DemWaterSource::getWaterName, waterName)
                 .orderByDesc(DemWaterSource::getId);
@@ -68,7 +68,7 @@ public class DemWaterSourceServiceImpl extends AbstractCrudService<DemWaterSourc
     }
 
     @Override
-    public void updateWaterSource(DemWaterSource demWaterSource){
+    public void updateWaterSource(DemWaterSource demWaterSource) {
         this.updateById(demWaterSource);
     }
 
@@ -81,22 +81,24 @@ public class DemWaterSourceServiceImpl extends AbstractCrudService<DemWaterSourc
     }
 
     @Override
-    public List<Object> waterSourceList(String streetTown){
+    public List<Object> waterSourceList(String streetTown) {
+        IPage<DemWaterSource> page = new Page<>(1, 500);
         LambdaQueryWrapper<DemWaterSource> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.select(DemWaterSource::getId,DemWaterSource::getWaterName,DemWaterSource::getWaterAddress,
-                DemWaterSource::getGisX,DemWaterSource::getGisY)
+        queryWrapper.select(DemWaterSource::getId, DemWaterSource::getWaterName, DemWaterSource::getWaterAddress,
+                DemWaterSource::getGisX, DemWaterSource::getGisY)
                 .eq(DemWaterSource::getDeleteFlag, 0)
                 .orderByDesc(DemWaterSource::getId);
-        List<DemWaterSource> list1 = this.list(queryWrapper);
+        page = this.page(page, queryWrapper);
+        List<DemWaterSource> list1 = page.getRecords();
         List<Object> list = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(list1)){
+        if (CollectionUtils.isNotEmpty(list1)) {
             for (int i = 0; i < list1.size(); i++) {
                 Map<String, Object> map = new HashMap<>();
-                map.put("id",list1.get(i).getId());
-                map.put("waterName",list1.get(i).getWaterName());
-                map.put("waterAddress",list1.get(i).getWaterAddress());
-                map.put("longitude",list1.get(i).getGisX());
-                map.put("latitude",list1.get(i).getGisY());
+                map.put("id", list1.get(i).getId());
+                map.put("waterName", list1.get(i).getWaterName());
+                map.put("waterAddress", list1.get(i).getWaterAddress());
+                map.put("longitude", list1.get(i).getGisX());
+                map.put("latitude", list1.get(i).getGisY());
                 list.add(map);
             }
         }