yq 4 лет назад
Родитель
Сommit
b695c06065

+ 2 - 2
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/FireWaterMapper.java

@@ -22,7 +22,7 @@ public interface FireWaterMapper {
      * @param id
      * @return
      */
-    Map<String,Object> selectOne(@Param("id") String id);
+    Map<String,String> selectOne(@Param("id") String id);
 
 
     /**
@@ -32,7 +32,7 @@ public interface FireWaterMapper {
      * @param endTime
      * @return
      */
-    Page<Map<String,Object>> page(IPage<Map<String,Object>> page,
+    Page<Map<String,String>> page(IPage<Map<String,String>> page,
                                   @Param("startTime") Date startTime,
                                   @Param("endTime")Date endTime);
 

+ 5 - 0
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/po/FireWaterPO.java

@@ -36,6 +36,11 @@ public class FireWaterPO {
      */
     private String jurisdictionalAgency;
 
+    /**
+     * 支队名称
+     */
+    private String detachmentName;
+
     /**
      * 取水形式
      */

+ 25 - 5
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/FireStatisticsServiceImpl.java

@@ -16,7 +16,10 @@ import org.checkerframework.checker.nullness.Opt;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author yq
@@ -82,18 +85,35 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
         for (String cause:fireCauses) {
             FireLevelRatioVO fireLevelRatioVo = new FireLevelRatioVO();
             fireLevelRatioVo.setFireType(cause);
-            Integer radio = fireStatisticsMapper.selectCount(startTime, endTime, address, cause,null);
-            fireLevelRatioVo.setRadio(radio.doubleValue());
+            Integer count = fireStatisticsMapper.selectCount(startTime, endTime, address, cause,null);
+            fireLevelRatioVo.setRadio(count.doubleValue());
             list.add(fireLevelRatioVo);
-            fireCount+=radio;
+            fireCount+=count;
+        }
+        //排序
+        List<FireLevelRatioVO> orderByList = list.stream().sorted(Comparator.comparing(FireLevelRatioVO::getRadio).reversed()).limit(10).collect(Collectors.toList());
+
+        //差集求和
+        double sum = list.stream().filter(item -> !orderByList.contains(item)).mapToDouble(FireLevelRatioVO::getRadio).sum();
+        FireLevelRatioVO fireLevelRatioVO = orderByList.stream().filter(item -> "其他".equals(item.getFireType())).findAny().orElse(null);
+        fireLevelRatioVO = Optional.ofNullable(fireLevelRatioVO).map(fireLevelRatio -> {
+                    fireLevelRatio.setRadio(fireLevelRatio.getRadio() + sum);
+                    return fireLevelRatio;
+                }
+        ).orElse(new FireLevelRatioVO());
+        if (null == fireLevelRatioVO.getFireType()){
+            fireLevelRatioVO.setFireType("其他");
+            fireLevelRatioVO.setRadio(sum);
+            orderByList.add(fireLevelRatioVO);
         }
         int finalFireCount = fireCount;
         if (0 != finalFireCount){
-            list.forEach(fireLevelRatioVO -> fireLevelRatioVO.setRadio(fireLevelRatioVO.getRadio()/ finalFireCount));
+            orderByList.forEach(fireLevelRatio -> fireLevelRatio.setRadio(fireLevelRatio.getRadio()/finalFireCount));
         }
-        return list;
+        return orderByList;
     }
 
+
     @Override
     public List<String> getFireType() {
         return fireStatisticsMapper.groupByCause();

+ 12 - 11
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/FireWaterServiceImpl.java

@@ -29,7 +29,7 @@ public class FireWaterServiceImpl implements FireWaterService {
     @Override
     public CommonPage<FireWaterPO> page(Integer current, Integer size, Date startTime, Date endTime) {
         List<FireWaterPO> list = new ArrayList<>();
-        Page<Map<String, Object>> page = new Page<>(current, size);
+        Page<Map<String, String>> page = new Page<>(current, size);
         page = fireWaterMapper.page(page, startTime, endTime);
         page.getRecords().forEach(stringObjectMap -> list.add(enhanceFireWaterPo(stringObjectMap)));
         return new CommonPage<>(list, page.getTotal(), page.getSize(), page.getCurrent());
@@ -69,17 +69,18 @@ public class FireWaterServiceImpl implements FireWaterService {
      * @param fireWaterMap
      * @return
      */
-    public FireWaterPO enhanceFireWaterPo(Map<String,Object> fireWaterMap){
+    public FireWaterPO enhanceFireWaterPo(Map<String,String> fireWaterMap){
         FireWaterPO fireWaterPo = new FireWaterPO();
-        fireWaterPo.setAddress(fireWaterMap.get("水源地址").toString());
-        fireWaterPo.setPhone(Optional.ofNullable(fireWaterMap.get("联系方式")).orElse("").toString());
-        fireWaterPo.setType(fireWaterMap.get("水源类型").toString());
-        fireWaterPo.setJurisdictionalAgency(fireWaterMap.get("管辖机构名称").toString());
-        fireWaterPo.setGetWaterType(fireWaterMap.get("取水形式").toString());
-        fireWaterPo.setWaterAdministrative(Optional.ofNullable(fireWaterMap.get("水源性质")).orElse("").toString());
-        fireWaterPo.setStatus(fireWaterMap.get("可用状态").toString());
-        fireWaterPo.setWaterUnit(fireWaterMap.get("供水单位").toString());
-        fireWaterPo.setWaterGage(fireWaterMap.get("管网压力").toString());
+        fireWaterPo.setAddress(fireWaterMap.get("水源地址"));
+        fireWaterPo.setPhone(Optional.ofNullable(fireWaterMap.get("联系方式")).orElse(""));
+        fireWaterPo.setType(fireWaterMap.get("水源类型"));
+        fireWaterPo.setJurisdictionalAgency(fireWaterMap.get("管辖机构名称"));
+        fireWaterPo.setDetachmentName(fireWaterMap.get("支队名称"));
+        fireWaterPo.setGetWaterType(fireWaterMap.get("取水形式"));
+        fireWaterPo.setWaterAdministrative(Optional.ofNullable(fireWaterMap.get("水源性质")).orElse(""));
+        fireWaterPo.setStatus(fireWaterMap.get("可用状态"));
+        fireWaterPo.setWaterUnit(fireWaterMap.get("供水单位"));
+        fireWaterPo.setWaterGage(fireWaterMap.get("管网压力"));
         return fireWaterPo;
     }
 }

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

@@ -37,7 +37,7 @@ public class ReportComplaintServiceImpl implements ReportComplaintService {
         reportStatisticsVo.setCheckNumber(count - fireCount - concludeCount);
         Integer satisfactionRateNumber = reportComplaintMapper.selectCount(null, null, null, null, "3");
 
-        BigDecimal b = new BigDecimal(satisfactionRateNumber/count.doubleValue());
+        BigDecimal b = BigDecimal.valueOf(satisfactionRateNumber/count.doubleValue());
         reportStatisticsVo.setSatisfactionRate(b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
         return reportStatisticsVo;
     }