Browse Source

火灾气泡图

yq 4 năm trước cách đây
mục cha
commit
570dba1d3d

+ 9 - 0
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/FireStatisticsControllerWeb.java

@@ -4,6 +4,7 @@ import com.bizmatics.common.core.bean.ApiResult;
 import com.bizmatics.common.core.bean.CommonPage;
 import com.bizmatics.mhfire.persistence.mapper.po.FireStatisticsPO;
 import com.bizmatics.mhfire.service.FireStatisticsService;
+import com.bizmatics.mhfire.service.vo.FireBubbleVO;
 import com.bizmatics.mhfire.service.vo.FireLevelRatioVO;
 import com.bizmatics.mhfire.service.vo.FireUnitPoliceVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -115,4 +116,12 @@ public class FireStatisticsControllerWeb {
     public ApiResult<List<String>> getAddress(){
         return ApiResult.success(fireStatisticsService.getAddress());
     }
+
+    @GetMapping("fireBubble")
+    public ApiResult<List<FireBubbleVO>> getFireBubble(@RequestParam(required = false)Date startTime,
+                                                       @RequestParam(required = false)Date endTime,
+                                                       @RequestParam(required = false)String fireType,
+                                                       @RequestParam(required = false)String unitId){
+        return ApiResult.success(fireStatisticsService.getAvgAndSum(startTime, endTime, fireType, unitId));
+    }
 }

+ 8 - 1
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/FireStatisticsMapper.java

@@ -31,7 +31,8 @@ public interface FireStatisticsMapper {
                         @Param("endTime") Date endTime,
                         @Param("fireAddress") String fireAddress,
                         @Param("level") String level,
-                        @Param("unitId") String unitId);
+                        @Param("unitId") String unitId,
+                        @Param("region") String region);
 
 
 
@@ -70,4 +71,10 @@ public interface FireStatisticsMapper {
                                    @Param("month") Integer month);
 
 
+
+    Map<String,Double> selectAvgAndSum(@Param("startTime") Date startTime,
+                                 @Param("endTime") Date endTime,
+                                 @Param("region") String region,
+                                 @Param("fireType") String fireType,
+                                 @Param("unitId") String unitId);
 }

+ 25 - 0
mhfire-mapping/src/main/resources/mapper/mysql/FireStatisticsMapper.xml

@@ -21,6 +21,9 @@
             <if test="unitId != null and unitId != ''">
                 and `单位代码` = #{unitId}
             </if>
+            <if test="region != null and region != ''">
+                and `行政区域` = #{region}
+            </if>
         </where>
     </select>
     <select id="page" resultType="java.util.Map">
@@ -71,4 +74,26 @@
             and Month(`起火时间_日期型`) = #{month}
         </where>
     </select>
+    <select id="selectAvgAndSum" resultType="java.util.Map">
+        select sum(`死亡人数`) as deathPerson,avg(`过火面积`) as fireArea
+        from `hzdc-hztjb`
+        <where>
+            <if test="startTime != null">
+                and `起火时间_日期型` >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                and `起火时间_日期型` &lt;= #{endTime}
+            </if>
+            <if test="region != null and region != ''">
+                and `行政区域` = #{region}
+            </if>
+            <if test="fireType != null and fireType != ''">
+                and `火灾原因分类(一级)` = #{level}
+            </if>
+            <if test="unitId != null and unitId != ''">
+                and `单位代码` = #{unitId}
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 13 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/FireStatisticsService.java

@@ -2,8 +2,10 @@ package com.bizmatics.mhfire.service;
 
 import com.bizmatics.common.core.bean.CommonPage;
 import com.bizmatics.mhfire.persistence.mapper.po.FireStatisticsPO;
+import com.bizmatics.mhfire.service.vo.FireBubbleVO;
 import com.bizmatics.mhfire.service.vo.FireLevelRatioVO;
 import com.bizmatics.mhfire.service.vo.FireUnitPoliceVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
 import java.util.List;
@@ -76,4 +78,15 @@ public interface FireStatisticsService {
     List<String> getAddress();
 
 
+    /**
+     * 火灾气泡图
+     * @param startTime
+     * @param endTime
+     * @param fireType
+     * @param unitId
+     * @return
+     */
+    List<FireBubbleVO> getAvgAndSum(Date startTime, Date endTime, String fireType, String unitId);
+
+
 }

+ 27 - 4
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/FireStatisticsServiceImpl.java

@@ -12,8 +12,10 @@ import com.bizmatics.mhfire.service.FireStatisticsService;
 import com.bizmatics.mhfire.service.UnitService;
 
 import com.bizmatics.mhfire.service.util.Arith;
+import com.bizmatics.mhfire.service.vo.FireBubbleVO;
 import com.bizmatics.mhfire.service.vo.FireLevelRatioVO;
 import com.bizmatics.mhfire.service.vo.FireUnitPoliceVO;
+import net.sf.jsqlparser.statement.alter.Alter;
 import org.checkerframework.checker.nullness.Opt;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,7 +57,7 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
             Date setMonths = DateUtils.setMonths(date, i);
             Date firstDayOfMonth = DateUtils.getFirstDayOfMonth(setMonths);
             Date lastDayOfMonth = DateUtils.getLastDayOfMonth(setMonths);
-            thisYearList.add(fireStatisticsMapper.selectCount(firstDayOfMonth, lastDayOfMonth, address,fireType,null));
+            thisYearList.add(fireStatisticsMapper.selectCount(firstDayOfMonth, lastDayOfMonth, address,fireType,null,null));
             //月平均值
             Integer monthCount = fireStatisticsMapper.selectCountByRangeDate(startMax, endMax, address, fireType,i+1);
             monthList.add(Arith.div(monthCount, distanceOfTwoDate,2));
@@ -110,7 +112,7 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
             }
             FireLevelRatioVO fireLevelRatioVo = new FireLevelRatioVO();
             fireLevelRatioVo.setFireType(cause);
-            Integer count = fireStatisticsMapper.selectCount(startTime, endTime, address, cause,null);
+            Integer count = fireStatisticsMapper.selectCount(startTime, endTime, address, cause,null,null);
             fireLevelRatioVo.setRadio(count.doubleValue());
             list.add(fireLevelRatioVo);
             fireCount+=count;
@@ -146,7 +148,7 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
         for (String cause:fireTypes) {
             FireLevelRatioVO fireLevelRatioVo = new FireLevelRatioVO();
             fireLevelRatioVo.setFireType(cause);
-            Integer count = fireStatisticsMapper.selectCount(null, null,null, cause,null);
+            Integer count = fireStatisticsMapper.selectCount(null, null,null, cause,null,null);
             fireLevelRatioVo.setRadio(count.doubleValue());
             list.add(fireLevelRatioVo);
         }
@@ -162,7 +164,7 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
         for (String address:lists) {
             FireLevelRatioVO fireLevelRatioVo = new FireLevelRatioVO();
             fireLevelRatioVo.setFireType(address);
-            Integer count = fireStatisticsMapper.selectCount(null, null,address, null,null);
+            Integer count = fireStatisticsMapper.selectCount(null, null,null, null,null,address);
             fireLevelRatioVo.setRadio(count.doubleValue());
             list.add(fireLevelRatioVo);
         }
@@ -170,6 +172,27 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
                 .map(FireLevelRatioVO::getFireType).collect(Collectors.toList());
     }
 
+    @Override
+    public List<FireBubbleVO> getAvgAndSum(Date startTime, Date endTime,String fireType, String unitId) {
+        List<FireBubbleVO> list = new ArrayList<>();
+        List<String> lists = fireStatisticsMapper.getAddress().stream().filter(StringUtils::isNotBlank).filter(s -> !s.contains("派出所")).collect(Collectors.toList());
+        lists.forEach(s -> {
+            Map<String, Double> maps = fireStatisticsMapper.selectAvgAndSum(startTime, endTime, s, fireType, unitId);
+            FireBubbleVO fireBubbleVo = new FireBubbleVO();
+            fireBubbleVo.setRegion(s);
+            fireBubbleVo.setFireCount(fireStatisticsMapper.selectCount(startTime,endTime,null,fireType,unitId,s));
+            if (null != maps){
+                fireBubbleVo.setDeathToll(Optional.ofNullable(maps.get("deathPerson")).map(Double::intValue).orElse(0));
+                fireBubbleVo.setFireArea(Arith.div(maps.get("fireArea"),1));
+            }else {
+                fireBubbleVo.setDeathToll(0);
+                fireBubbleVo.setFireArea(0.00);
+            }
+            list.add(fireBubbleVo);
+        });
+        return list;
+    }
+
     public FireStatisticsPO enhanceFireStatisticsPo(Map<String,String> map){FireStatisticsPO fireStatisticsPo = new FireStatisticsPO();
         fireStatisticsPo.setId(Optional.ofNullable(map.get("火灾序号")).filter(s -> !"null".equals(s)).orElse(""));
         fireStatisticsPo.setAddress(Optional.ofNullable(map.get("起火地点")).filter(s -> !"null".equals(s)).orElse(""));

+ 1 - 1
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/UnitServiceImpl.java

@@ -60,7 +60,7 @@ public class UnitServiceImpl implements UnitService {
         Integer checkNumber = bsSupervisionAllMapper.selectCount(null, null, startTime, endTime, unitId);
         unitAlCheckVo.setCheckNumber(checkNumber);
         //历史火灾统计
-        Integer fireCount = fireStatisticsMapper.selectCount(startTime, endTime, null, null, unitId);
+        Integer fireCount = fireStatisticsMapper.selectCount(startTime, endTime, null, null, unitId,null);
         unitAlCheckVo.setHistoryFire(fireCount);
         //审核时间
         BsSupervisionAllPO byRecentlyOne = bsSupervisionAllService.getByRecentlyOne(BsSaOneCode.A_P.getLetter(), BsSaTwoCode.J_G_S_G_AUDIT.getLetter());

+ 32 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireBubbleVO.java

@@ -0,0 +1,32 @@
+package com.bizmatics.mhfire.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author yq
+ * @date 2021/6/24 13:22
+ * 火灾气泡图
+ */
+@Data
+public class FireBubbleVO {
+
+    /**
+     * 街道
+     */
+    private String region;
+
+    /**
+     * 死亡人数
+     */
+    private Integer deathToll;
+
+    /**
+     * 火灾面积
+     */
+    private Double fireArea;
+
+    /**
+     * 火灾数
+     */
+    private Integer fireCount;
+}