Browse Source

二供统计

wangyangyang 4 years ago
parent
commit
862c8896af

+ 16 - 0
sms_water/src/main/java/com/huaxu/controller/SecSupplyController.java

@@ -2,6 +2,7 @@ package com.huaxu.controller;
 
 import com.huaxu.dto.AmountDayThirtyDto;
 import com.huaxu.dto.AmountTotalDto;
+import com.huaxu.dto.WaterPieDto;
 import com.huaxu.entity.MonthReportEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
@@ -56,5 +57,20 @@ public class SecSupplyController {
         amountTotalDto = secSupplyService.findAmountTotalByTypeName(sceneEntity);
         return new AjaxMessage<>(ResultStatus.OK, amountTotalDto);
     }
+    @ApiOperation(value = "查询管网水质情况",notes = "sceneType 1为水源 2水厂 3泵站")
+    @RequestMapping(value = "/selectWaterQualityByTypeName", method = RequestMethod.GET)
+    @ResponseBody
+    public  AjaxMessage<WaterPieDto> selectWaterQualityByTypeName(@ApiParam(value = "一级场景类型", required = true) @RequestParam Integer sceneType) {
+        SceneEntity sceneEntity = new SceneEntity();
+        if (sceneType.equals(1))
+            sceneEntity.setSceneTypeName("水源");
+        else if (sceneType.equals(2))
+            sceneEntity.setSceneTypeName("水厂");
+        else
+            sceneEntity.setSceneTypeName("泵站");
+        WaterPieDto waterPieDto = secSupplyService.selectWaterQualityByTypeName(sceneEntity);
+        return new AjaxMessage<>(ResultStatus.OK, waterPieDto);
+    }
+
 
 }

+ 3 - 0
sms_water/src/main/java/com/huaxu/dao/DeviceParmMapper.java

@@ -2,6 +2,7 @@ package com.huaxu.dao;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.DeviceParmInfoDto;
+import com.huaxu.dto.ParmTypeCountDto;
 import com.huaxu.dto.ReportAttributeDto;
 import com.huaxu.dto.ReportDto;
 import com.huaxu.entity.DeviceParmEntity;
@@ -78,4 +79,6 @@ public interface DeviceParmMapper  {
     List<DeviceParmInfoDto> selectBindByDeviceId(@Param("sceneId")Long sceneId, @Param("deviceId")Long deviceId);
 
     List<DeviceParmEntity> selectDeviceBySceneIdAndType(@Param("info") DeviceParmEntity deviceParmEntity);
+
+    List<ParmTypeCountDto> findAlarmCount(@Param("info") DeviceParmEntity deviceParmEntity);
 }

+ 10 - 0
sms_water/src/main/java/com/huaxu/dto/ParmTypeCountDto.java

@@ -0,0 +1,10 @@
+package com.huaxu.dto;
+
+import lombok.Data;
+
+@Data
+public class ParmTypeCountDto {
+    private Integer parmType;
+    private Integer totalCount;
+    private Integer nbnormalCount;
+}

+ 18 - 0
sms_water/src/main/java/com/huaxu/dto/WaterPieDto.java

@@ -0,0 +1,18 @@
+package com.huaxu.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "管网水质分析")
+public class WaterPieDto {
+    @ApiModelProperty(value = "水质")
+    private WaterPieStateDto waterQuality;
+    @ApiModelProperty(value = "PH")
+    private WaterPieStateDto ph;
+    @ApiModelProperty(value = "浊度")
+    private WaterPieStateDto turbidity;
+    @ApiModelProperty(value = "余氯")
+    private WaterPieStateDto residualChlorine;
+}

+ 16 - 0
sms_water/src/main/java/com/huaxu/dto/WaterPieStateDto.java

@@ -0,0 +1,16 @@
+package com.huaxu.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "状态")
+public class WaterPieStateDto {
+    @ApiModelProperty(value = "比例")
+    private  Double percentage;
+    @ApiModelProperty(value = "正常数")
+    private  Integer normalCount;
+    @ApiModelProperty(value = "异常数")
+    private  Integer nbnormalCount;
+}

+ 3 - 0
sms_water/src/main/java/com/huaxu/service/DeviceParmService.java

@@ -2,6 +2,7 @@ package com.huaxu.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.DeviceParmInfoDto;
+import com.huaxu.dto.ParmTypeCountDto;
 import com.huaxu.dto.ReportAttributeDto;
 import com.huaxu.dto.ReportDto;
 import com.huaxu.entity.DeviceParmEntity;
@@ -86,4 +87,6 @@ public interface DeviceParmService {
     void batchSaveEdit(Long sceneId, Long deviceId,List<DeviceParmInfoDto> deviceParmInfos);
 
     List<DeviceParmEntity> selectDeviceBySceneIdAndType(DeviceParmEntity deviceParmEntity);
+
+    List<ParmTypeCountDto> findAlarmCount(DeviceParmEntity deviceParmEntity);
 }

+ 57 - 11
sms_water/src/main/java/com/huaxu/service/SecSupplyService.java

@@ -1,7 +1,6 @@
 package com.huaxu.service;
 
-import com.huaxu.dto.AmountDayThirtyDto;
-import com.huaxu.dto.AmountTotalDto;
+import com.huaxu.dto.*;
 import com.huaxu.entity.*;
 import com.huaxu.util.ByteArrayUtils;
 import com.huaxu.util.RedisUtil;
@@ -10,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.DateFormat;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -154,11 +154,11 @@ public class SecSupplyService {
         monthReportLast.setMonth(begin.get(Calendar.MONTH) + 1);
         monthReportLast.setParentSceneLists(sceneEntities);
         List<MonthReportEntity> monthReportsLast = monthReportService.findAmountTotalBySceneIds(monthReportLast);
-        if (monthReportNew.size() > 0 && monthReportsLast.size() > 0&& monthReportNew.get(0)!=null&&monthReportsLast.get(0)!=null) {
+        if (monthReportNew.size() > 0 && monthReportsLast.size() > 0 && monthReportNew.get(0) != null && monthReportsLast.get(0) != null) {
             monthAmount = monthReportNew.get(0).getLatestValue() - monthReportsLast.get(0).getLatestValue() + dayAmount;
-        }else  if (monthReportNew.size() > 0&&monthReportNew.get(0)!=null) {
+        } else if (monthReportNew.size() > 0 && monthReportNew.get(0) != null) {
             monthAmount = monthReportNew.get(0).getLatestValue() + dayAmount;
-        }else {
+        } else {
             monthAmount = dayAmount;
         }
         amountTotalDto.setMonthAmount((double) Math.round(monthAmount * 1000) / 1000);
@@ -169,18 +169,64 @@ public class SecSupplyService {
         yearReportEntity.setYear(begin.get(Calendar.YEAR));
         yearReportEntity.setParentSceneLists(sceneEntities);
         List<YearReportEntity> yearReportsNew = yearReportService.findAmountTotalBySceneIds(yearReportEntity);
-        yearReportEntity.setYear(begin.get(Calendar.YEAR)-1);
+        yearReportEntity.setYear(begin.get(Calendar.YEAR) - 1);
         List<YearReportEntity> yearReportsLast = yearReportService.findAmountTotalBySceneIds(yearReportEntity);
-        if (yearReportsNew.size() > 0 && yearReportsLast.size() > 0&&yearReportsNew.get(0)!=null&&yearReportsLast.get(0)!=null) {
+        if (yearReportsNew.size() > 0 && yearReportsLast.size() > 0 && yearReportsNew.get(0) != null && yearReportsLast.get(0) != null) {
             yearAmount = yearReportsNew.get(0).getLatestValue() - yearReportsLast.get(0).getLatestValue() + monthAmount;
-        }else  if (yearReportsNew.size() > 0&&yearReportsNew.get(0)!=null) {
+        } else if (yearReportsNew.size() > 0 && yearReportsNew.get(0) != null) {
             yearAmount = yearReportsNew.get(0).getLatestValue() + monthAmount;
-        }else
-        {
-            yearAmount=monthAmount;
+        } else {
+            yearAmount = monthAmount;
         }
         amountTotalDto.setYearAmount((double) Math.round(yearAmount * 1000) / 1000);
         return amountTotalDto;
     }
 
+    public WaterPieDto selectWaterQualityByTypeName(SceneEntity sceneEntity) {
+        List<SceneEntity> sceneEntities = sceneService.selectByTypeName(sceneEntity);
+        if (sceneEntities.size() == 0)
+            return null;
+        WaterPieDto waterPieDto = new WaterPieDto();
+        DeviceParmEntity deviceParmEntity = new DeviceParmEntity();
+        deviceParmEntity.setSceneEntities(sceneEntities);
+        List<ParmTypeCountDto> list = deviceParmService.findAlarmCount(deviceParmEntity);
+        //余氯11 浊度9  PH7  cod 15
+        for(ParmTypeCountDto item : list)
+        {
+            switch(item.getParmType())
+            {
+                case 7:
+                    WaterPieStateDto waterPieStateDto1 = new WaterPieStateDto();
+                    waterPieStateDto1.setNormalCount(item.getTotalCount()- item.getNbnormalCount());
+                    waterPieStateDto1.setNbnormalCount(item.getNbnormalCount());
+                    DecimalFormat df1 = new DecimalFormat("#.00");
+                    waterPieStateDto1.setPercentage((double) (Math.round((Double.valueOf(item.getTotalCount()- item.getNbnormalCount())/Double.valueOf(item.getTotalCount()))*100)));
+                    waterPieDto.setPh(waterPieStateDto1);
+                    break;
+                case 9:
+                    WaterPieStateDto waterPieStateDto2 = new WaterPieStateDto();
+                    waterPieStateDto2.setNormalCount(item.getTotalCount()- item.getNbnormalCount());
+                    waterPieStateDto2.setNbnormalCount(item.getNbnormalCount());
+                    DecimalFormat df2 = new DecimalFormat("#.00");
+                    waterPieStateDto2.setPercentage((double) (Math.round((Double.valueOf(item.getTotalCount()- item.getNbnormalCount())/Double.valueOf(item.getTotalCount()))*100)));
+                    waterPieDto.setTurbidity(waterPieStateDto2);
+                    break;
+                case 11:
+                    WaterPieStateDto waterPieStateDto3 = new WaterPieStateDto();
+                    waterPieStateDto3.setNormalCount(item.getTotalCount()- item.getNbnormalCount());
+                    waterPieStateDto3.setNbnormalCount(item.getNbnormalCount());
+                    waterPieStateDto3.setPercentage((double) (Math.round((Double.valueOf(item.getTotalCount()- item.getNbnormalCount())/Double.valueOf(item.getTotalCount()))*100)));
+                    waterPieDto.setResidualChlorine(waterPieStateDto3);
+                    break;
+                case 15:
+                    WaterPieStateDto waterPieStateDto4 = new WaterPieStateDto();
+                    waterPieStateDto4.setNormalCount(item.getTotalCount()- item.getNbnormalCount());
+                    waterPieStateDto4.setNbnormalCount(item.getNbnormalCount());
+                    waterPieStateDto4.setPercentage((double) (Math.round((Double.valueOf(item.getTotalCount()- item.getNbnormalCount())/Double.valueOf(item.getTotalCount()))*100)));
+                    waterPieDto.setWaterQuality(waterPieStateDto4);
+                    break;
+            }
+        }
+        return waterPieDto;
+    }
 }

+ 6 - 0
sms_water/src/main/java/com/huaxu/service/impl/DeviceParmServiceImpl.java

@@ -3,6 +3,7 @@ package com.huaxu.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dao.DeviceParmMapper;
 import com.huaxu.dto.DeviceParmInfoDto;
+import com.huaxu.dto.ParmTypeCountDto;
 import com.huaxu.dto.ReportAttributeDto;
 import com.huaxu.dto.ReportDto;
 import com.huaxu.entity.DeviceParmEntity;
@@ -219,4 +220,9 @@ public class DeviceParmServiceImpl  implements DeviceParmService {
     public List<DeviceParmEntity> selectDeviceBySceneIdAndType(DeviceParmEntity deviceParmEntity) {
         return deviceParmMapper.selectDeviceBySceneIdAndType(deviceParmEntity);
     }
+
+    @Override
+    public List<ParmTypeCountDto> findAlarmCount(DeviceParmEntity deviceParmEntity) {
+        return deviceParmMapper.findAlarmCount(deviceParmEntity);
+    }
 }

+ 15 - 0
sms_water/src/main/resources/mapper/DeviceParmMapper.xml

@@ -251,4 +251,19 @@
             #{dramaId.id}
         </foreach>
     </select>
+    <select id="findAlarmCount" resultType="com.huaxu.dto.ParmTypeCountDto">
+        select b.PARM_TYPE as "parmType",count(a.DEVICE_ID) as "totalCount",count(c.id) as "nbnormalCount"
+        from sms_device_scene a
+        INNER JOIN sms_device_parm b on a.DEVICE_ID=b.DEVICE_ID
+               and a.PARENT_SCENE_ID=b.PARENT_SCENE_ID and b.PARM_TYPE in (7,9,11,15)
+        LEFT JOIN  sms_alarm_details c on c.PARENT_SCENE_ID=b.PARENT_SCENE_ID
+               and c.ATTRIBUTE_ID=b.ATTRIBUTE_ID and c.STATE=1
+        where a.PARENT_SCENE_ID in
+        <foreach collection="info.sceneEntities" item="dramaId" open="(" close=")" separator=",">
+            #{dramaId.id}
+        </foreach>
+        and
+        a.`STATUS`=1
+        group by b.PARM_TYPE
+    </select>
 </mapper>