|
@@ -0,0 +1,105 @@
|
|
|
+package com.bizmatics.mhfire.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.bizmatics.common.core.bean.CommonPage;
|
|
|
+import com.bizmatics.common.core.util.DateUtils;
|
|
|
+import com.bizmatics.mhfire.persistence.mapper.FireStatisticsMapper;
|
|
|
+
|
|
|
+import com.bizmatics.mhfire.persistence.mapper.po.FireStatisticsPO;
|
|
|
+import com.bizmatics.mhfire.persistence.mapper.po.UnitPO;
|
|
|
+import com.bizmatics.mhfire.service.FireStatisticsService;
|
|
|
+import com.bizmatics.mhfire.service.UnitService;
|
|
|
+
|
|
|
+import com.bizmatics.mhfire.service.vo.FireLevelRatioVO;
|
|
|
+import com.bizmatics.mhfire.service.vo.FireUnitPoliceVO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author yq
|
|
|
+ * @date 2021/5/28 9:35
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class FireStatisticsServiceImpl implements FireStatisticsService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FireStatisticsMapper fireStatisticsMapper;
|
|
|
+ @Autowired
|
|
|
+ private UnitService unitService;
|
|
|
+ @Override
|
|
|
+ public List<Integer> getFireCountByData(Integer year, String address) {
|
|
|
+ List<Integer> list = new ArrayList<>();
|
|
|
+ Date date = new Date();
|
|
|
+ for (int i = 0; i < 12; i++) {
|
|
|
+ DateUtils.setMonths(date,i);
|
|
|
+ Date firstDayOfMonth = DateUtils.getFirstDayOfMonth(date);
|
|
|
+ Date lastDayOfMonth = DateUtils.getLastDayOfMonth(date);
|
|
|
+ list.add(fireStatisticsMapper.selectCount(DateUtils.format(firstDayOfMonth), DateUtils.format(lastDayOfMonth), address,null));
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonPage<FireStatisticsPO> page(Integer current, Integer size, String startTime, String endTime, String address) {
|
|
|
+ Page<Map<String, Object>> page = new Page<>(current, size);
|
|
|
+ page = fireStatisticsMapper.page(page, startTime, endTime, address);
|
|
|
+ List<FireStatisticsPO> list = new ArrayList<>();
|
|
|
+ page.getRecords().forEach(stringObjectMap -> list.add(enhanceFireStatisticsPo(stringObjectMap)));
|
|
|
+ return new CommonPage<>(list, page.getTotal(), page.getSize(), page.getCurrent());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public FireStatisticsPO getOne(String id) {
|
|
|
+ return enhanceFireStatisticsPo(fireStatisticsMapper.getOne(id));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public FireUnitPoliceVO getFireUnitPolice(String id) {
|
|
|
+ //火灾详细信息
|
|
|
+ FireStatisticsPO fireStatisticsPo = getOne(id);
|
|
|
+ //单位信息
|
|
|
+ UnitPO unitPo = new UnitPO();
|
|
|
+ unitPo.setAddress(fireStatisticsPo.getAddress());
|
|
|
+ unitPo = unitService.getOne(unitPo);
|
|
|
+
|
|
|
+ //TODO 出警记录没有
|
|
|
+ FireUnitPoliceVO fireUnitPoliceVO = new FireUnitPoliceVO();
|
|
|
+ fireUnitPoliceVO.setFireStatisticsPo(fireStatisticsPo);
|
|
|
+ fireUnitPoliceVO.setUnitPo(unitPo);
|
|
|
+ return fireUnitPoliceVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FireLevelRatioVO> getGroupByLevel(String startTime, String endTime, String address) {
|
|
|
+ List<FireLevelRatioVO> list = new ArrayList<>();
|
|
|
+ int fireCount = 0;
|
|
|
+ List<String> fireCauses = fireStatisticsMapper.groupByCause();
|
|
|
+ for (String cause:fireCauses) {
|
|
|
+ FireLevelRatioVO fireLevelRatioVo = new FireLevelRatioVO();
|
|
|
+ fireLevelRatioVo.setFireType(cause);
|
|
|
+ Integer radio = fireStatisticsMapper.selectCount(startTime, endTime, address, cause);
|
|
|
+ fireLevelRatioVo.setRadio(radio.doubleValue());
|
|
|
+ list.add(fireLevelRatioVo);
|
|
|
+ fireCount+=radio;
|
|
|
+ }
|
|
|
+ int finalFireCount = fireCount;
|
|
|
+ list.forEach(fireLevelRatioVO -> fireLevelRatioVO.setRadio(fireLevelRatioVO.getRadio()/ finalFireCount));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public FireStatisticsPO enhanceFireStatisticsPo(Map<String,Object> map){
|
|
|
+ FireStatisticsPO fireStatisticsPo = new FireStatisticsPO();
|
|
|
+ fireStatisticsPo.setId(map.get("火灾序号").toString());
|
|
|
+ fireStatisticsPo.setAddress(map.get("起火地点").toString());
|
|
|
+ fireStatisticsPo.setBurnedArea(map.get("过火面积").toString());
|
|
|
+ fireStatisticsPo.setPropertyLoss(map.get("直接财产损失").toString());
|
|
|
+ fireStatisticsPo.setDeathToll(map.get("死亡人数").toString());
|
|
|
+ fireStatisticsPo.setNonFatal(map.get("受灾人数").toString());
|
|
|
+ fireStatisticsPo.setDisasterHome(map.get("受灾户数").toString());
|
|
|
+ fireStatisticsPo.setFireCause(map.get("火灾原因分类(一级)").toString());
|
|
|
+ return fireStatisticsPo;
|
|
|
+ }
|
|
|
+}
|