Browse Source

Merge remote-tracking branch 'origin/20210223' into 20210223

lihui007 4 years ago
parent
commit
793e47aa74
23 changed files with 531 additions and 84 deletions
  1. 18 0
      operation_manager/src/main/java/com/huaxu/client/SmsWaterClient.java
  2. 49 3
      operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java
  3. 10 0
      operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java
  4. 11 0
      operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java
  5. 43 0
      operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java
  6. 25 0
      operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml
  7. 8 6
      sms_water/src/main/java/com/huaxu/controller/ComDisplayController.java
  8. 6 4
      sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java
  9. 3 2
      sms_water/src/main/java/com/huaxu/controller/ParmSettingController.java
  10. 122 12
      sms_water/src/main/java/com/huaxu/controller/SceneController.java
  11. 2 1
      sms_water/src/main/java/com/huaxu/controller/SceneTypeController.java
  12. 12 9
      sms_water/src/main/java/com/huaxu/controller/SecSupplyController.java
  13. 6 2
      sms_water/src/main/java/com/huaxu/dao/SceneMapper.java
  14. 7 4
      sms_water/src/main/java/com/huaxu/service/AppDataService.java
  15. 8 4
      sms_water/src/main/java/com/huaxu/service/DayReportService.java
  16. 2 1
      sms_water/src/main/java/com/huaxu/service/DeviceSetupMethodService.java
  17. 10 5
      sms_water/src/main/java/com/huaxu/service/MonthReportService.java
  18. 89 11
      sms_water/src/main/java/com/huaxu/service/SceneService.java
  19. 7 4
      sms_water/src/main/java/com/huaxu/service/SecSupplyService.java
  20. 8 4
      sms_water/src/main/java/com/huaxu/service/ThingSettingService.java
  21. 8 4
      sms_water/src/main/java/com/huaxu/service/ThingyearSettingService.java
  22. 6 3
      sms_water/src/main/java/com/huaxu/service/YearReportService.java
  23. 71 5
      sms_water/src/main/resources/mapper/SceneMapper.xml

+ 18 - 0
operation_manager/src/main/java/com/huaxu/client/SmsWaterClient.java

@@ -0,0 +1,18 @@
+package com.huaxu.client;
+
+
+import com.huaxu.config.FeignConfig;
+import com.huaxu.model.AjaxMessage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+@FeignClient(value = "sms-water",configuration={FeignConfig.class})
+public interface SmsWaterClient {
+
+    @GetMapping("/scene/selectAlarmDeviceIdBySenceId")
+    AjaxMessage<List<Map<String,Object>>> selectAlarmDeviceIdBySenceId(@RequestParam("id") int id);
+}

+ 49 - 3
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java

@@ -1,5 +1,6 @@
 package com.huaxu.order.controller;
 
+import com.huaxu.client.SmsWaterClient;
 import com.huaxu.client.UserCenterClient;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
@@ -34,6 +35,9 @@ public class WorkOrderStatisticsController {
     @Autowired
     UserCenterClient userCenterClient;
 
+    @Autowired
+    SmsWaterClient smsWaterClient;
+
     @RequestMapping(value = "completionStatistics", method = RequestMethod.GET)
     @ApiOperation(value = "工单完成情况统计")
     public AjaxMessage<Map<String, Object>> completionStatistics(
@@ -150,7 +154,6 @@ public class WorkOrderStatisticsController {
         //根据用户编号,获取用户的权限
         LoginUser loginUser = UserUtil.getCurrentUser();
         WorkOrderManageDto workOrderManageDto = new WorkOrderManageDto();
-
         workOrderManageDto.setProgramItems(loginUser.getProgramItemList());
         workOrderManageDto.setUserType(loginUser.getType());
         //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
@@ -233,7 +236,52 @@ public class WorkOrderStatisticsController {
         return new AjaxMessage<>(ResultStatus.OK, statistics);
     }
 
+    @RequestMapping(value = "dispatchTimesStatistics", method = RequestMethod.GET)
+    @ApiOperation(value = "派单次数统计")
+    public AjaxMessage<List<Map<String,Object>>> dispatchTimesStatistics(
+            @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id,
+            @ApiParam(value = "设备或场景标识(1:设备;2:场景)", required = true) @RequestParam(required = true) int sort,
+            @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
 
+        List<Integer> idList = new ArrayList<>();
+        List<Map<String,Object>> statistics = new ArrayList<Map<String, Object>>();
+
+        WorkOrderManageDto workOrderManageDto = new WorkOrderManageDto();
+        switch (type) {
+            case 0:
+                startDate = String.format("%s-01", startDate);
+                endDate = subMonth(startDate, 1);
+                break;
+            case 1:
+                startDate = String.format("%s-01-01", startDate);
+                endDate = subYear(startDate, 1);
+                break;
+            case 2:
+                startDate = String.format("%s-01", startDate);
+                endDate = String.format("%s-01", endDate);
+                break;
+        }
+        workOrderManageDto.setStartDate(startDate);
+        workOrderManageDto.setEndDate(endDate);
+        if(sort == 2){
+            AjaxMessage<List<Map<String, Object>>> ajaxMessage = smsWaterClient.selectAlarmDeviceIdBySenceId(id);
+             for(Map<String,Object> map : ajaxMessage.getData()) {
+                 int deviceId = Integer.parseInt(map.get("device_id").toString());
+                 idList.add(deviceId);
+             }
+        }else if(sort==1){
+            idList.add(id);
+        }
+        if(type ==0 || type ==2){
+            statistics =  workOrderManageService.dispatchTimesMonthStatistics(workOrderManageDto,idList);
+        }
+        else if(type == 1){
+            statistics =  workOrderManageService.dispatchTimesYearStatistics(workOrderManageDto,idList);
+        }
+        return new AjaxMessage<>(ResultStatus.OK, statistics);
+    }
 
     @RequestMapping(value = "distributionStatistics", method = RequestMethod.GET)
     @ApiOperation(value = "上报类型、工单类型、工单状态统计")
@@ -312,6 +360,4 @@ public class WorkOrderStatisticsController {
         String reStr = sdf.format(dt1);
         return reStr;
     }
-
-
 }

+ 10 - 0
operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java

@@ -94,6 +94,16 @@ public interface WorkOrderManageMapper {
     List<StatisticsDto> orderDurationStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
+    /**
+     * 判单次数月统计
+     */
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
+    /**
+     * 判单次数年统计
+     */
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
     /**
      * 待处理权限
      */

+ 11 - 0
operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java

@@ -130,6 +130,17 @@ public interface WorkOrderManageService {
      */
     List<StatisticsDto> orderDurationStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
+    /**
+     * 判单次数月统计
+     */
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
+    /**
+     * 判单次数年统计
+     */
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
+
     /**
     * @Author lihui
     * @Description 查询个人工单信息

+ 43 - 0
operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java

@@ -10,6 +10,7 @@ import com.huaxu.order.dto.WorkOrderManageDto;
 import com.huaxu.order.entity.WorkOrderManage;
 import com.huaxu.order.service.WorkOrderManageService;
 import com.huaxu.util.UserUtil;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -250,6 +251,48 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
         return result;
     }
 
+    @Override
+    public List<Map<String, Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto,List<Integer> idList) {
+        String strMonth = workOrderManageDto.getStartDate().substring(5,7);
+        int days = getDaysByYearMonth(Integer.parseInt(strMonth));
+        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesMonthStatistics(workOrderManageDto,idList);
+        for(int i=0; i<days; i++) {
+            String strDate = workOrderManageDto.getStartDate().substring(0, 7) + String.format("-%02d", i + 1);
+            Map<String, Object> data = new HashMap<>();
+            data.put("数量", 0);
+            data.put("日期", strDate);
+            data.put("序号",i+1);
+            result.add(data);
+        }
+        for(int i=0;i<list.size();i++){
+            Map<String,Object> map =list.get(i);
+            int day = Integer.parseInt(map.get("日期").toString().substring(8,10));
+            result.get(day-1).put("数量",map.get("数量"));
+        }
+        return result;
+    }
+
+    @Override
+    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto, List<Integer> idList) {
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesYearStatistics(workOrderManageDto,idList);
+        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
+        for(int i=0; i<12; i++) {
+            String strDate = workOrderManageDto.getStartDate().substring(0, 4) + String.format("-%02d", i + 1);
+            Map<String, Object> data = new HashMap<>();
+            data.put("数量", 0);
+            data.put("日期", strDate);
+            data.put("序号",i+1);
+            result.add(data);
+        }
+        for(int i=0;i<list.size();i++){
+            Map<String,Object> map =list.get(i);
+            int month = Integer.parseInt(map.get("日期").toString().substring(5,7));
+            result.get(month-1).put("数量",map.get("数量"));
+        }
+        return result;
+    }
+
     @Override
     public Page<WorkOrderManageDto> selectByTime(IPage<WorkOrderManageDto> page, Integer userId, String startTime, String endTime) {
         LoginUser currentUser = UserUtil.getCurrentUser();

+ 25 - 0
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -1198,4 +1198,29 @@
       and date_create between #{startTime} and #{endTime}
     order by send_time desc
   </select>
+
+  <!--派单次数月统计-->
+  <select id="dispatchTimesMonthStatistics" resultType="map">
+      select count(1) 数量, DATE_FORMAT(send_time,'%Y-%m-%d') 日期
+      from sc_work_order_manage t1
+      where t1.send_time &gt;= date_format(#{order.startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+      and t1.send_time &lt; date_format(#{order.endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+      and device_id in
+      <foreach collection="idList" item="item" open="(" close=")" separator=",">
+        #{item,jdbcType=INTEGER}
+      </foreach>
+      group by DATE_FORMAT(send_time,'%Y-%m-%d')
+  </select>
+  <!--派单次数年统计-->
+  <select id="dispatchTimesYearStatistics" resultType="map">
+    select count(1) 数量, DATE_FORMAT(send_time,'%Y-%m') 日期
+    from sc_work_order_manage t1
+    where t1.send_time &gt;= date_format(#{order.startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+    and t1.send_time &lt; date_format(#{order.endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+    and device_id in
+    <foreach collection="idList" item="item" open="(" close=")" separator=",">
+      #{item,jdbcType=INTEGER}
+    </foreach>
+    group by DATE_FORMAT(send_time,'%Y-%m')
+  </select>
 </mapper>

+ 8 - 6
sms_water/src/main/java/com/huaxu/controller/ComDisplayController.java

@@ -59,8 +59,8 @@ public class ComDisplayController {
     @ApiOperation(value = "综合展示--吨水电耗(总分)")
     public AjaxMessage<ComUsageDto> yieldPowerUsage(@RequestParam(required = false) Integer companyOrgId) {
         ComUsageDto sceneUsageDto = new ComUsageDto();
-        BigDecimal yieldWaterUsage = monitorDataReportService.getAmountCount(companyOrgId, null, "水厂", 3, 1);
-        BigDecimal powerUsage = monitorDataReportService.getAmountCount(companyOrgId, null, "水厂", 5, 1);
+        BigDecimal yieldWaterUsage = monitorDataReportService.getAmountCount(companyOrgId, null, "水厂", 3, 2);
+        BigDecimal powerUsage = monitorDataReportService.getAmountCount(companyOrgId, null, "水厂", 5, 2);
         sceneUsageDto.setYieldWaterUsage(yieldWaterUsage.divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue());
         sceneUsageDto.setPowerUsage(powerUsage.divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue());
         if (sceneUsageDto.getPowerUsage() != null && sceneUsageDto.getYieldWaterUsage() != null && sceneUsageDto.getPowerUsage() != 0) {
@@ -102,15 +102,17 @@ public class ComDisplayController {
             receFee.get(0).setYieldWaterUsage(monitorDataReportService.getAmountCount(companyOrgId, null, "水厂", 3, 2).divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP).doubleValue());
             receFee.get(0).setMeterReadingArrivalRate(receFee.get(0).getMeterReadingArrivalRate() != null ? BigDecimal.valueOf(receFee.get(0).getMeterReadingArrivalRate()).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(1), 2, BigDecimal.ROUND_HALF_UP).doubleValue() : 0.00);
             double amount = receFee.get(0).getYieldWaterUsage() - waterUsage;
-            if (receFee.get(0).getYieldWaterUsage() == 0d)
+            if (receFee.get(0).getYieldWaterUsage() == 0d) {
                 receFee.get(0).setWaterFeeRecoveryRate(BigDecimal.valueOf(0).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).doubleValue());
-            else
+            } else {
                 receFee.get(0).setWaterFeeRecoveryRate(BigDecimal.valueOf(amount).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(receFee.get(0).getYieldWaterUsage()), 2, BigDecimal.ROUND_HALF_UP).doubleValue());
+            }
         }
-        if (receFee.size() > 0)
+        if (receFee.size() > 0) {
             return new AjaxMessage<>(ResultStatus.OK, receFee.get(0));
-        else
+        } else {
             return new AjaxMessage<>(ResultStatus.OK, null);
+        }
     }
 
     @RequestMapping(value="selectPipeNetLayer" , method = RequestMethod.GET)

+ 6 - 4
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -168,8 +168,8 @@ public class MonitorInfoController {
         parm.setDeviceId(item.getDeviceId());
         parm.setAttributeId(item.getAttributeId());
         parm.setType(type);
-        if (type == 4) {
-            //更新压力值
+        if (type == 4||type == 3) {
+            //更新压力值或状态值
             item.setAttributeValue(monitorDataReportService.getDeviceAttributeValue(item.getDeviceCode(),item.getAttributeId()).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue());
         }
         DeviceSetupRecordEntity recordEntity = deviceSetupRecordService.selectLastOne(parm);
@@ -211,16 +211,18 @@ public class MonitorInfoController {
                     Double value = map.get(item.getAttributeId()).getDataValue();
                     if (value != null) {
                         if (deviceAttributeSpecsEntities.size() > 0) {
-                            for (DeviceAttributeSpecsEntity specsEntity : deviceAttributeSpecsEntities)
+                            for (DeviceAttributeSpecsEntity specsEntity : deviceAttributeSpecsEntities) {
                                 if (Integer.valueOf(specsEntity.getSpecsValue()) == value.intValue()) {
                                     item.setMonitorValue(specsEntity.getSpecsName());
                                 }
+                            }
 
                         } else {
                             DeviceAttributeEntity deviceAttributeEntity = deviceAttributeService.getById(item.getAttributeId());
                             String unit = "";
-                            if (deviceAttributeEntity != null && deviceAttributeEntity.getUnit() != null)
+                            if (deviceAttributeEntity != null && deviceAttributeEntity.getUnit() != null) {
                                 unit = deviceAttributeEntity.getUnit();
+                            }
                             item.setMonitorValue(String.format("%.3f", map.get(item.getAttributeId()).getDataValue()) + unit);
                         }
                     }

+ 3 - 2
sms_water/src/main/java/com/huaxu/controller/ParmSettingController.java

@@ -48,10 +48,11 @@ public class ParmSettingController{
         parmSettingEntity.setCompanyOrgId(companyOrgId);
         parmSettingEntity.setParmType(parmType);
         List<ParmSettingEntity> list = parmSettingService.findList(parmSettingEntity);
-        if (list.size() > 0)
+        if (list.size() > 0) {
             return new AjaxMessage<>(ResultStatus.OK, list.get(0));
-        else
+        } else {
             return new AjaxMessage<>(ResultStatus.OBJECT_ERROR);
+        }
     }
 
 

+ 122 - 12
sms_water/src/main/java/com/huaxu/controller/SceneController.java

@@ -4,14 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.client.UserCenterClient;
 import com.huaxu.common.FileUploadUtil;
+import com.huaxu.common.StringUtils;
 import com.huaxu.dto.DeviceDto;
-import com.huaxu.entity.DeviceParmEntity;
-import com.huaxu.entity.DeviceSceneEntity;
-import com.huaxu.entity.SceneTypeEntity;
+import com.huaxu.entity.*;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
+import com.huaxu.service.AlarmSettingService;
+import com.huaxu.service.ParmSettingService;
 import com.huaxu.util.UserUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -26,12 +27,9 @@ import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
-import java.util.Date;
+import java.util.*;
+
 import org.springframework.web.bind.annotation.*;
-import com.huaxu.entity.SceneEntity;
 import com.huaxu.service.SceneService;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -50,6 +48,8 @@ public class SceneController {
     private String baseDir;
     @Autowired
     UserCenterClient userCenterClient;
+    @Autowired
+    private ParmSettingService parmSettingService;
 
     @ApiOperation(value = "分页查询场景")
     @RequestMapping(value = "/selectPage", method = RequestMethod.GET)
@@ -220,7 +220,7 @@ public class SceneController {
     @RequestMapping(value = "/selectAlarmSceneAndDevice", method = RequestMethod.GET)
     @ResponseBody
     @ApiOperation(value = "场景及设备故障率")
-    public  AjaxMessage<List<Map<String,Object>>> selectAlarmSceneAndDevice(
+    public  AjaxMessage<Object> selectAlarmSceneAndDevice(
             @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
             @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
             @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
@@ -249,6 +249,27 @@ public class SceneController {
                 days = differentDaysByMillisecond(startDate,endDate);
                 break;
         }
+        ParmSettingEntity parmSettingEntity = new ParmSettingEntity();
+        parmSettingEntity.setCompanyOrgId(Long.valueOf(loginUser.getCompanyId().toString()));
+        parmSettingEntity.setParmType(3);
+        List<ParmSettingEntity> paramSettingList = parmSettingService.findList(parmSettingEntity);
+        if(paramSettingList.size()==0){
+            return new AjaxMessage<>(ResultStatus.ERROR,"没有配置故障率参数");
+        }
+        ParmSettingEntity parmSetting = paramSettingList.get(0);
+        String paramValue = parmSetting.getParmValue();
+        String[] params =  paramValue.split(";");
+        if(params.length!=3 ){
+           return new AjaxMessage<>(ResultStatus.ERROR,"参数设置格式错误!请参照正确格式设置:0.5;0.5~0.2;0.2");
+        }
+        String[] mParam = params[1].split("~");
+        if(mParam.length!=2){
+           return new AjaxMessage<>(ResultStatus.ERROR,"参数设置格式错误!请参照正确格式设置:0.5;0.5~0.2;0.2");
+        }
+        if(validateNumber(params[0])==false || validateNumber(params[2])==false
+                || validateNumber(mParam[0])==false || validateNumber(mParam[1])==false){
+            return new AjaxMessage<>(ResultStatus.ERROR,"参数设置格式错误!请参照正确格式设置:0.5;0.5~0.2;0.2");
+        }
         List<Map<String,Object>> list = sceneService.selectAlarmSceneAndDevice(sceneEntity, startDate, endDate);
         for(int i=0;i<list.size();i++){
             Map<String,Object> map = list.get(i);
@@ -256,13 +277,13 @@ public class SceneController {
             double rate =amount / days;
             map.put("rate",rate);
 
-            if(rate>=0.5){
+            if(rate>=Double.parseDouble(params[0])){
                 map.put("level","高");
             }
-            else if(rate>=0.2 && rate<0.5){
+            else if(rate>=Double.parseDouble(params[1]) && rate<Double.parseDouble(params[0])){
                 map.put("level","中");
             }
-            else if(rate<0.2){
+            else if(rate<Double.parseDouble(params[2])){
                 map.put("level","低");
             }
         }
@@ -270,6 +291,84 @@ public class SceneController {
     }
 
 
+    @RequestMapping(value = "/alarmTimesStatistics", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "报警次数统计")
+    public  AjaxMessage<List<Map<String,Object>>> alarmTimesStatistics(
+            @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id,
+            @ApiParam(value = "设备或场景标识(1:设备;2:场景)", required = true) @RequestParam(required = true) int sort,
+            @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        SceneEntity sceneEntity = new SceneEntity();
+        sceneEntity.setId(Long.parseLong(String.valueOf(id)));
+        switch (type) {
+            case 0:
+                startDate = String.format("%s-01", startDate);
+                endDate = subMonth(startDate, 1);
+                break;
+            case 1:
+                startDate = String.format("%s-01-01", startDate);
+                endDate = subYear(startDate, 1);
+                break;
+            case 2:
+                startDate = String.format("%s-01", startDate);
+                endDate = String.format("%s-01", endDate);
+                break;
+        }
+        List<Map<String,Object>> list = new ArrayList<>();
+
+        if(type == 0 || type== 2){
+            list = sceneService.selectMonthAlarmTimes(sceneEntity, startDate, endDate,sort);
+        }
+        else if(type == 1){
+            list = sceneService.selectYearAlarmTimes(sceneEntity, startDate, endDate,sort);
+        }
+        return new AjaxMessage<>(ResultStatus.OK, list);
+    }
+
+    @RequestMapping(value = "/selectAlarmDeviceIdBySenceId", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "根据场景ID获取报警设备的ID")
+    public AjaxMessage<List<Map<String,Object>>> selectAlarmDeviceIdBySenceId(
+            @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id){
+        List<Map<String,Object>> list = sceneService.selectAlarmDeviceIdBySenceId(id);
+        return new AjaxMessage<>(ResultStatus.OK,list);
+    }
+
+
+    @RequestMapping(value = "/selectAlarmLable", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "报警标签")
+    public AjaxMessage<List<Map<String,Object>>> selectAlarmLable(
+            @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id,
+            @ApiParam(value = "设备或场景标识(1:设备;2:场景)", required = true) @RequestParam(required = true) int sort,
+            @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
+        SceneEntity sceneEntity = new SceneEntity();
+        sceneEntity.setId(Long.parseLong(String.valueOf(id)));
+        switch (type) {
+            case 0:
+                startDate = String.format("%s-01", startDate);
+                endDate = subMonth(startDate, 1);
+                break;
+            case 1:
+                startDate = String.format("%s-01-01", startDate);
+                endDate = subYear(startDate, 1);
+                break;
+            case 2:
+                startDate = String.format("%s-01", startDate);
+                endDate = String.format("%s-01", endDate);
+                break;
+        }
+        List<Map<String,Object>> list = sceneService.selectAlarmLable(sceneEntity,startDate,endDate,sort);
+        return new AjaxMessage<>(ResultStatus.OK,list);
+    }
+
+
+
 
 
     /**
@@ -320,4 +419,15 @@ public class SceneController {
         return reStr;
     }
 
+    /**
+     * 判断是否是整数或者是小数
+     * @param str
+     * @return true:是,false不是
+     */
+    private boolean validateNumber(String str) {
+        if(StringUtils.isBlank(str)) {
+            return false;
+        }
+        return str.matches("[+-]?[0-9]+(\\\\.[0-9]+)?");
+    }
 }

+ 2 - 1
sms_water/src/main/java/com/huaxu/controller/SceneTypeController.java

@@ -58,8 +58,9 @@ public class SceneTypeController {
     @ResponseBody
     public AjaxMessage<List<SceneTypeEntity>> selectTreeList(@ApiParam(value = "父级ID", required = false) @RequestParam(required = false) Long id) {
         SceneTypeEntity sceneType = new SceneTypeEntity();
-        if (id == null)
+        if (id == null) {
             id = 0L;
+        }
         sceneType.setParentScenetypeId(id);
         List<SceneTypeEntity> page = sceneTypeService.findList2(sceneType);
         return new AjaxMessage<>(ResultStatus.OK, page);

+ 12 - 9
sms_water/src/main/java/com/huaxu/controller/SecSupplyController.java

@@ -38,12 +38,13 @@ public class SecSupplyController {
     @ResponseBody
     public AjaxMessage<List<AmountDayThirtyDto>> findAmountDayThirty(@ApiParam(value = "一级场景类型", required = true) @RequestParam Integer sceneType) {
         SceneEntity sceneEntity = new SceneEntity();
-        if (sceneType.equals(1))
+        if (sceneType.equals(1)) {
             sceneEntity.setSceneTypeName("水源");
-        else if (sceneType.equals(2))
+        } else if (sceneType.equals(2)) {
             sceneEntity.setSceneTypeName("水厂");
-        else
+        } else {
             sceneEntity.setSceneTypeName("泵站");
+        }
         List<AmountDayThirtyDto> list = secSupplyService.getAmountDayThirty(sceneEntity);
         return new AjaxMessage<>(ResultStatus.OK, list);
     }
@@ -53,12 +54,13 @@ public class SecSupplyController {
     public AjaxMessage<AmountTotalDto> findAmountTotalByTypeName(@ApiParam(value = "一级场景类型", required = true) @RequestParam Integer sceneType) {
         AmountTotalDto amountTotalDto = new AmountTotalDto();
         SceneEntity sceneEntity = new SceneEntity();
-        if (sceneType.equals(1))
+        if (sceneType.equals(1)) {
             sceneEntity.setSceneTypeName("水源");
-        else if (sceneType.equals(2))
+        } else if (sceneType.equals(2)) {
             sceneEntity.setSceneTypeName("水厂");
-        else
+        } else {
             sceneEntity.setSceneTypeName("泵站");
+        }
         amountTotalDto = secSupplyService.findAmountTotalByTypeName(sceneEntity);
         return new AjaxMessage<>(ResultStatus.OK, amountTotalDto);
     }
@@ -67,12 +69,13 @@ public class SecSupplyController {
     @ResponseBody
     public  AjaxMessage<WaterPieDto> selectWaterQualityByTypeName(@ApiParam(value = "一级场景类型", required = true) @RequestParam Integer sceneType) {
         SceneEntity sceneEntity = new SceneEntity();
-        if (sceneType.equals(1))
+        if (sceneType.equals(1)) {
             sceneEntity.setSceneTypeName("水源");
-        else if (sceneType.equals(2))
+        } else if (sceneType.equals(2)) {
             sceneEntity.setSceneTypeName("水厂");
-        else
+        } else {
             sceneEntity.setSceneTypeName("泵站");
+        }
         WaterPieDto waterPieDto = secSupplyService.selectWaterQualityByTypeName(sceneEntity);
         return new AjaxMessage<>(ResultStatus.OK, waterPieDto);
     }

+ 6 - 2
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -6,7 +6,6 @@ import java.util.List;
 import java.util.Map;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaxu.entity.SceneTypeEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -29,7 +28,6 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     SceneEntity findSceneById(Serializable id);
 
-
     List<SceneEntity> findList(@Param(value = "scene") SceneEntity sceneEntity);
 
     List<SceneEntity> findBySceneTypeIds(@Param(value = "Ids") Long[] Ids);
@@ -47,5 +45,11 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
     List<Map<String,Object>> findSceneAmount(@Param("scene") SceneEntity sceneEntity,@Param("months") Integer months);
 
     List<Map<String,Object>> selectAlarmSceneAndDevice(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate);
+
+    List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort);
+
+    List<Map<String,Object>> selectAlarmDeviceIdBySenceId(@Param("id") int id);
+
+    List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort);
     /**删除相关方法  使用mybatis-plus集成的 **/
 }

+ 7 - 4
sms_water/src/main/java/com/huaxu/service/AppDataService.java

@@ -161,24 +161,27 @@ public class AppDataService {
                         Double value = map.get(item.getAttributeId().longValue()).getDataValue();
                         if (value != null) {
                             if (deviceAttributeSpecsEntities.size() > 0) {
-                                for (DeviceAttributeSpecsEntity specsEntity : deviceAttributeSpecsEntities)
+                                for (DeviceAttributeSpecsEntity specsEntity : deviceAttributeSpecsEntities) {
                                     if (Integer.valueOf(specsEntity.getSpecsValue()) == value.intValue()) {
                                         sceneDataDto.setMonitorValue(specsEntity.getSpecsName());
                                     }
+                                }
                             } else {
                                 DeviceAttributeEntity deviceAttributeEntity = deviceAttributeService.getById(item.getAttributeId());
                                 String unit = "";
-                                if (deviceAttributeEntity != null && deviceAttributeEntity.getUnit() != null)
+                                if (deviceAttributeEntity != null && deviceAttributeEntity.getUnit() != null) {
                                     unit = deviceAttributeEntity.getUnit();
+                                }
                                 sceneDataDto.setMonitorValue(String.format("%.3f", map.get(item.getAttributeId().longValue()).getDataValue()) + unit);
                             }
                         }
                     }
                     //判断是否报警
-                    if (mapAlarm.containsKey(item.getAttributeId().intValue()))
+                    if (mapAlarm.containsKey(item.getAttributeId().intValue())) {
                         sceneDataDto.setIsAlarm(1);
-                    else
+                    } else {
                         sceneDataDto.setIsAlarm(0);
+                    }
                     sceneDataDtos.add(sceneDataDto);
                 }
             }else

+ 8 - 4
sms_water/src/main/java/com/huaxu/service/DayReportService.java

@@ -60,8 +60,9 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
         DeviceDto deviceDto = new DeviceDto();
         for (Long id : ids) {
             deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
-            if (deviceDto.getSceneIds().size() > 0)
+            if (deviceDto.getSceneIds().size() > 0) {
                 devices.addAll(deviceService.selectList(deviceDto));
+            }
         }
         if (devices.size() > 0) {
             //根据设备ID查询报表测点信息
@@ -105,8 +106,9 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
                 //item.setDataValues(reportAttributeDtos);
                 Map<String, ReportAttributeDto> mapData = new LinkedHashMap<>();
                 for (ReportAttributeDto itemData : reportAttributeDtos) {
-                    if (!mapData.containsKey(itemData.getAttributeName()))
+                    if (!mapData.containsKey(itemData.getAttributeName())) {
                         mapData.put(itemData.getAttributeName(), itemData);
+                    }
                 }
                 List<Map<String, Object>> maps = new ArrayList<>();
                 for (String key : mapsTitle.keySet()) {
@@ -129,13 +131,15 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
     //计算固定的参数项
     @Override
     public void calcUsage(ReportDto item, List<ReportDto> reportDtos) {
-        if (item == null || reportDtos.size() == 0)
+        if (item == null || reportDtos.size() == 0) {
             return;
+        }
         //固定参数项
         int index = -1;
         for (int i = 0; i < reportDtos.size(); i++) {
-            if (reportDtos.get(i).getHour().equals(item.getHour()))
+            if (reportDtos.get(i).getHour().equals(item.getHour())) {
                 index = i;
+            }
         }
         if (index == -1) {
             return;

+ 2 - 1
sms_water/src/main/java/com/huaxu/service/DeviceSetupMethodService.java

@@ -123,8 +123,9 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
         String methodParms = "";
         //查询设备
         DeviceEntity deviceEntity = deviceService.selectById(deviceId);
-        if (deviceEntity == null)
+        if (deviceEntity == null) {
             return false;
+        }
         //查询操作方法
         DeviceSetupMethodEntity info = new DeviceSetupMethodEntity();
         info.setType(type);

+ 10 - 5
sms_water/src/main/java/com/huaxu/service/MonthReportService.java

@@ -65,8 +65,9 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
         DeviceDto deviceDto = new DeviceDto();
         for (Long id : ids) {
             deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
-            if (deviceDto.getSceneIds().size() > 0)
+            if (deviceDto.getSceneIds().size() > 0) {
                 devices.addAll(deviceService.selectList(deviceDto));
+            }
         }
         if (devices.size() > 0) {
             MonthReportEntity monthReportEntity = new MonthReportEntity();
@@ -88,8 +89,9 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
             int numCount = 0;
             for (ReportAttributeDto title : reportAttributeDtos2) {
                 dataTitle.add(title.getAttributeName());
-                if (!mapsTitle.containsKey(title.getAttributeName()))
+                if (!mapsTitle.containsKey(title.getAttributeName())) {
                     mapsTitle.put(title.getAttributeName(), numCount++);
+                }
             }
             //固定参数项
             List<ReportDto> reportDtos = monthReportMapper.findReport(reportDto);
@@ -105,8 +107,9 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
                 // item.setDataValues(reportAttributeDtos);
                 Map<String, ReportAttributeDto> mapData = new LinkedHashMap<>();
                 for (ReportAttributeDto itemData : reportAttributeDtos) {
-                    if (!mapData.containsKey(itemData.getAttributeName()))
+                    if (!mapData.containsKey(itemData.getAttributeName())) {
                         mapData.put(itemData.getAttributeName(), itemData);
+                    }
                 }
                 List<Map<String, Object>> maps = new ArrayList<>();
                 for (String key : mapsTitle.keySet()) {
@@ -128,13 +131,15 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
     //计算固定的参数项
     @Override
     public void calcUsage(ReportDto item, List<ReportDto> reportDtos) {
-        if (item == null || reportDtos.size() == 0)
+        if (item == null || reportDtos.size() == 0) {
             return;
+        }
         //固定参数项
         int index = -1;
         for (int i = 0; i < reportDtos.size(); i++) {
-            if (reportDtos.get(i).getDay().equals(item.getDay()))
+            if (reportDtos.get(i).getDay().equals(item.getDay())) {
                 index = i;
+            }
         }
         if (index == -1){
             return;

+ 89 - 11
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -73,10 +73,12 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
             sceneEntities.addAll(findByParentLike(item.getId()));
         }
         for (SceneEntity item : sceneEntities) {
-            if (item.getCompanyOrgId() != null)
+            if (item.getCompanyOrgId() != null) {
                 item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId().intValue()));
-            if (item.getDeptOrgId() != null)
+            }
+            if (item.getDeptOrgId() != null) {
                 item.setDeptOrgName(orgInfoUtil.getOrgName(item.getDeptOrgId().intValue()));
+            }
         }
         List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
         sceneEntityPage.setRecords(sceneTree);
@@ -162,8 +164,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
             scene.setDateUpdate(new Date());
             scene.setDateCreate(new Date());
         }
-        if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0)
+        if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0) {
             scene.setDeptOrgId(null);
+        }
 
         // 如果没有设置父节点,则代表为跟节点,有则获取父节点实体
         if (scene.getParentSceneId() == null || StringUtils.isBlank(scene.getParentSceneId().toString())) {
@@ -209,8 +212,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     public List<SceneEntity> findByParentLike(Long id) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         SceneEntity scene = new SceneEntity();
-        if (id != null)
+        if (id != null) {
             scene.setParentSceneIds("%," + id + ",%");
+        }
         scene.setTenantId(currentUser.getTenantId());
         scene.setStatus(1);
         scene.setProgramItems(currentUser.getProgramItemList());
@@ -227,8 +231,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     public List<Long> findByParentIdsLike(Long id) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         SceneEntity scene = new SceneEntity();
-        if (id != null)
+        if (id != null) {
             scene.setParentSceneIds("%," + id + ",%");
+        }
         scene.setTenantId(currentUser.getTenantId());
         scene.setStatus(1);
         scene.setProgramItems(currentUser.getProgramItemList());
@@ -268,8 +273,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     public boolean updateSceneById(SceneEntity scene) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         scene.setUpdateBy(currentUser.getName());
-        if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0)
+        if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0) {
             scene.setDeptOrgId(null);
+        }
         // 获取修改前的parentIds,用于更新子节点的parentIds
         SceneEntity cScene = sceneMapper.findSceneById(scene.getId());
         String oldParentIds = cScene.getParentSceneIds();
@@ -347,7 +353,7 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         SceneEntity sceneEntity = sceneMapper.findSceneById(id);
         SceneImageEntity sceneImageEntity = new SceneImageEntity();
         sceneImageEntity.setSceneId(id);
-        sceneImageEntity.setImageType(3l);
+        sceneImageEntity.setImageType(3L);
         List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
         sceneEntity.setSceneImages(sceneImageEntities);
         return sceneEntity;
@@ -380,8 +386,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         sceneEntity.setUserType(currentUser.getType());
         //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
         sceneEntity.setPermissonType(currentUser.getPermissonType());
-        if (id != null)
+        if (id != null) {
             sceneEntity.setParentSceneIds("%," + id + ",%");
+        }
         List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
         for (SceneEntity item : sceneEntities) {
             SceneImageEntity sceneImageEntity = new SceneImageEntity();
@@ -401,8 +408,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         sceneEntity.setUserType(currentUser.getType());
         //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
         sceneEntity.setPermissonType(currentUser.getPermissonType());
-        if (id != null)
+        if (id != null) {
             sceneEntity.setParentSceneIds("%," + id + ",%");
+        }
         List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
         for (SceneEntity item : sceneEntities) {
             SceneImageEntity sceneImageEntity = new SceneImageEntity();
@@ -412,10 +420,11 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
             item.setSceneImages(sceneImageEntities);
             //判断此场景是否有报警
             List<AlarmDetailsDto> alarmList = alarmDetailsService.selectBySceneId(item.getId().intValue());
-            if (alarmList.size() > 0)
+            if (alarmList.size() > 0) {
                 item.setIsAlarm(1);
-            else
+            } else {
                 item.setIsAlarm(0);
+            }
         }
 
         List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
@@ -449,4 +458,73 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     public List<Map<String,Object>> selectAlarmSceneAndDevice(SceneEntity sceneEntity, String startDate, String endDate){
         return sceneMapper.selectAlarmSceneAndDevice(sceneEntity, startDate, endDate);
     }
+
+    public List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort){
+        String strMonth = startDate.substring(5,7);
+        int days = getDaysByYearMonth(Integer.parseInt(strMonth));
+        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
+        List<Map<String,Object>> list = sceneMapper.selectMonthAlarmTimes(sceneEntity,startDate,endDate,sort);
+        for(int i=0; i<days; i++) {
+            String strDate = startDate.substring(0, 7) + String.format("-%02d", i + 1);
+            Map<String, Object> data = new HashMap<>();
+            data.put("数量", 0);
+            data.put("日期", strDate);
+            data.put("序号",i+1);
+            result.add(data);
+        }
+        for(int i=0;i<list.size();i++){
+            Map<String,Object> map =list.get(i);
+            int day = Integer.parseInt(map.get("日期").toString().substring(8,10));
+            result.get(day-1).put("数量",map.get("数量"));
+        }
+        return result;
+    }
+
+    public List<Map<String,Object>> selectYearAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort){
+        List<Map<String,Object>> list = sceneMapper.selectMonthAlarmTimes(sceneEntity,startDate,endDate,sort);
+        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
+        for(int i=0; i<12; i++) {
+            String strDate = startDate.substring(0, 4) + String.format("-%02d", i + 1);
+            Map<String, Object> data = new HashMap<>();
+            data.put("数量", 0);
+            data.put("日期", strDate);
+            data.put("序号",i+1);
+            result.add(data);
+        }
+        for(int i=0;i<list.size();i++){
+            Map<String,Object> map =list.get(i);
+            int month = Integer.parseInt(map.get("日期").toString().substring(5,7));
+            result.get(month-1).put("数量",map.get("数量"));
+        }
+        return result;
+    }
+
+    public List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort){
+        return sceneMapper.selectAlarmLable(sceneEntity, startDate, endDate, sort);
+    }
+
+    public List<Map<String,Object>> selectAlarmDeviceIdBySenceId(int id){
+        return sceneMapper.selectAlarmDeviceIdBySenceId(id);
+    }
+
+    /**
+     *获取某月有多少天
+     */
+    private int getDaysByYearMonth(int month) {
+
+        Calendar a =Calendar.getInstance();
+
+        a.set(Calendar.MONTH, month- 1);
+
+        a.set(Calendar.DATE, 1);
+
+        a.roll(Calendar.DATE,-1);
+
+        int maxDate =a.get(Calendar.DATE);
+
+        return maxDate;
+
+    }
+
+
 }

+ 7 - 4
sms_water/src/main/java/com/huaxu/service/SecSupplyService.java

@@ -38,8 +38,9 @@ public class SecSupplyService {
      */
     public List<AmountDayThirtyDto> getAmountDayThirty(SceneEntity sceneEntity) {
         List<SceneEntity> sceneEntities = sceneService.selectByTypeName(sceneEntity);
-        if (sceneEntities.size() == 0)
+        if (sceneEntities.size() == 0) {
             return null;
+        }
         MonthReportEntity monthReportEntity = new MonthReportEntity();
         monthReportEntity.setParentSceneLists(sceneEntities);
         List<MonthReportEntity> monthReportEntities = monthReportService.findAmountBySceneIds(monthReportEntity);
@@ -57,8 +58,9 @@ public class SecSupplyService {
             AmountDayThirtyDto amountDayThirtyDto = new AmountDayThirtyDto();
             if (maps.containsKey(df.format(d).toString())) {
                 amountDayThirtyDto.setAmountTime(d);
-                if (maps.get(df.format(d)) != null)
+                if (maps.get(df.format(d)) != null) {
                     amountDayThirtyDto.setAmount((double) Math.round(maps.get(df.format(d)) * 1000) / 1000);
+                }
             } else {
                 amountDayThirtyDto.setAmountTime(d);
                 amountDayThirtyDto.setAmount(0d);
@@ -76,7 +78,7 @@ public class SecSupplyService {
      */
     public AmountTotalDto findAmountTotalByTypeName(SceneEntity sceneEntity) {
         BigDecimal multipleData;
-        if(sceneEntity.getSceneTypeName().equals("泵站")){
+        if("泵站".equals(sceneEntity.getSceneTypeName())){
             multipleData = new BigDecimal("1");
         }else{
             multipleData = new BigDecimal("10000");
@@ -198,8 +200,9 @@ public class SecSupplyService {
 
     public WaterPieDto selectWaterQualityByTypeName(SceneEntity sceneEntity) {
         List<SceneEntity> sceneEntities = sceneService.selectByTypeName(sceneEntity);
-        if (sceneEntities.size() == 0)
+        if (sceneEntities.size() == 0) {
             return null;
+        }
         WaterPieDto waterPieDto = new WaterPieDto();
         DeviceParmEntity deviceParmEntity = new DeviceParmEntity();
         deviceParmEntity.setSceneEntities(sceneEntities);

+ 8 - 4
sms_water/src/main/java/com/huaxu/service/ThingSettingService.java

@@ -50,10 +50,12 @@ public class ThingSettingService extends ServiceImpl<ThingSettingMapper, ThingSe
         List<ThingSettingEntity> thingSettingEntities = thingSettingMapper.findList(thingSettingEntity);
 
         for (ThingSettingEntity item : thingSettingEntities) {
-            if (item.getCompanyOrgId() != null)
+            if (item.getCompanyOrgId() != null) {
                 item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId().intValue()));
-            if (item.getDeptOrgId() != null)
+            }
+            if (item.getDeptOrgId() != null) {
                 item.setDeptOrgName(orgInfoUtil.getOrgName(item.getDeptOrgId().intValue()));
+            }
         }
         return thingSettingEntities;
     }
@@ -86,8 +88,9 @@ public class ThingSettingService extends ServiceImpl<ThingSettingMapper, ThingSe
             thingSetting.setDateUpdate(new Date());
             thingSetting.setDateCreate(new Date());
         }
-        if (thingSetting.getDeptOrgId() != null && thingSetting.getDeptOrgId() == 0)
+        if (thingSetting.getDeptOrgId() != null && thingSetting.getDeptOrgId() == 0) {
             thingSetting.setDeptOrgId(null);
+        }
         if (this.save(thingSetting)) {
             return true;
         }
@@ -100,8 +103,9 @@ public class ThingSettingService extends ServiceImpl<ThingSettingMapper, ThingSe
     public boolean updateThingSettingById(ThingSettingEntity thingSetting) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         thingSetting.setUpdateBy(currentUser.getName());
-        if (thingSetting.getDeptOrgId() != null && thingSetting.getDeptOrgId() == 0)
+        if (thingSetting.getDeptOrgId() != null && thingSetting.getDeptOrgId() == 0) {
             thingSetting.setDeptOrgId(null);
+        }
         if (this.updateById(thingSetting)) {
             return true;
         }

+ 8 - 4
sms_water/src/main/java/com/huaxu/service/ThingyearSettingService.java

@@ -49,10 +49,12 @@ public class ThingyearSettingService extends ServiceImpl<ThingyearSettingMapper,
         thingyearSettingEntity.setPermissonType(currentUser.getPermissonType());
         List<ThingyearSettingEntity> thingSettingEntities = thingyearSettingMapper.findList(thingyearSettingEntity);
         for (ThingyearSettingEntity item : thingSettingEntities) {
-            if (item.getCompanyOrgId() != null)
+            if (item.getCompanyOrgId() != null) {
                 item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId().intValue()));
-            if (item.getDeptOrgId() != null)
+            }
+            if (item.getDeptOrgId() != null) {
                 item.setDeptOrgName(orgInfoUtil.getOrgName(item.getDeptOrgId().intValue()));
+            }
         }
         return thingSettingEntities;
     }
@@ -85,8 +87,9 @@ public class ThingyearSettingService extends ServiceImpl<ThingyearSettingMapper,
             thingyearSetting.setDateUpdate(new Date());
             thingyearSetting.setDateCreate(new Date());
         }
-        if (thingyearSetting.getDeptOrgId() != null && thingyearSetting.getDeptOrgId() == 0)
+        if (thingyearSetting.getDeptOrgId() != null && thingyearSetting.getDeptOrgId() == 0) {
             thingyearSetting.setDeptOrgId(null);
+        }
         if (this.save(thingyearSetting)) {
             return true;
         }
@@ -99,8 +102,9 @@ public class ThingyearSettingService extends ServiceImpl<ThingyearSettingMapper,
     public boolean updateThingyearSettingById(ThingyearSettingEntity thingyearSetting) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         thingyearSetting.setUpdateBy(currentUser.getName());
-        if (thingyearSetting.getDeptOrgId() != null && thingyearSetting.getDeptOrgId() == 0)
+        if (thingyearSetting.getDeptOrgId() != null && thingyearSetting.getDeptOrgId() == 0) {
             thingyearSetting.setDeptOrgId(null);
+        }
         if (this.updateById(thingyearSetting)) {
             return true;
         }

+ 6 - 3
sms_water/src/main/java/com/huaxu/service/YearReportService.java

@@ -66,8 +66,9 @@ public class YearReportService extends AbstractReportService<YearReportMapper, Y
         DeviceDto deviceDto = new DeviceDto();
         for (Long id : ids) {
             deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
-            if (deviceDto.getSceneIds().size() > 0)
+            if (deviceDto.getSceneIds().size() > 0) {
                 devices.addAll(deviceService.selectList(deviceDto));
+            }
         }
         if(devices.size()>0) {
             YearReportEntity yearReportEntity = new YearReportEntity();
@@ -87,8 +88,9 @@ public class YearReportService extends AbstractReportService<YearReportMapper, Y
             int numCount = 0;
             for (ReportAttributeDto title : reportAttributeDtos2) {
                 dataTitle.add(title.getAttributeName());
-                if (!mapsTitle.containsKey(title.getAttributeName()))
+                if (!mapsTitle.containsKey(title.getAttributeName())) {
                     mapsTitle.put(title.getAttributeName(), numCount++);
+                }
             }
             //固定参数项
             List<ReportDto> reportDtos = yearReportMapper.findReport(reportDto);
@@ -105,8 +107,9 @@ public class YearReportService extends AbstractReportService<YearReportMapper, Y
                 // item.setDataValues(reportAttributeDtos);
                 Map<String, ReportAttributeDto> mapData = new LinkedHashMap<>();
                 for (ReportAttributeDto itemData : reportAttributeDtos) {
-                    if (!mapData.containsKey(itemData.getAttributeName()))
+                    if (!mapData.containsKey(itemData.getAttributeName())) {
                         mapData.put(itemData.getAttributeName(), itemData);
+                    }
                 }
                 List<Map<String, Object>> maps = new ArrayList<>();
                 for (String key : mapsTitle.keySet()) {

+ 71 - 5
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -430,8 +430,8 @@
     </select>
     <!--报警场景及报警设备查询-->
     <select id="selectAlarmSceneAndDevice" resultType="map">
-       select amount, id, name, type from(
-        select count(1) amount, a.id, a.SCENE_NAME name,2 type
+       select amount, id, name, sort from(
+        select count(1) amount, a.id, a.SCENE_NAME name,2 sort
         from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
         INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
         <where>
@@ -470,11 +470,11 @@
             and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
             and SCENE_TYPE_NAME in('水源','水厂','泵站')
         </where>
-        group by a.SCENE_NAME, a.ID, type
+        group by a.SCENE_NAME, a.ID, sort
 
         union all
 
-        select count(1) amount, d.id, d.DEVICE_NAME name,1 type
+        select count(1) amount, d.id, d.DEVICE_NAME name,1 sort
         from sms_alarm_details c
         INNER JOIN sms_device d on c.DEVICE_ID=d.ID
         INNER JOIN sms_scene a on  c.PARENT_SCENE_ID=a.ID
@@ -515,7 +515,73 @@
             and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
             and SCENE_TYPE_NAME='管网'
         </where>
-        group by d.DEVICE_NAME, d.ID, type) t
+        group by d.DEVICE_NAME, d.ID, sort) t
         order by amount desc
     </select>
+
+    <select id="selectMonthAlarmTimes" resultType="map">
+        select count(1) 数量, DATE_FORMAT(c.DATE_CREATE,'%Y-%m-%d') 日期
+            <if test="sort == 2">
+                from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+                INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
+                where a.ID = #{scene.id}
+            </if>
+            <if test="sort == 1">
+                from sms_alarm_details c
+                where c.device_id = #{scene.id}
+            </if>
+            and c.date_create &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+            and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+            group by DATE_FORMAT(c.DATE_CREATE,'%Y-%m-%d')
+    </select>
+
+    <select id="selectYearAlarmTimes" resultType="map">
+        select count(1) 数量, DATE_FORMAT(c.DATE_CREATE,'%Y-%m') 日期
+        <if test="sort == 2">
+            from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+            INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
+            where a.ID = #{scene.id}
+        </if>
+        <if test="sort == 1">
+            from sms_alarm_details c
+            where c.device_id = #{scene.id}
+        </if>
+        and c.date_create &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+        and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+        group by DATE_FORMAT(c.DATE_CREATE,'%Y-%m')
+    </select>
+
+    <select id="selectAlarmLable" resultType="map">
+        select amount 数量, label 标签 from
+            (
+                select count(1) amount, label from
+                    (
+                        select if(d.REMARK is null,e.NAME,d.REMARK) label
+                        <if test="sort == 2">
+                            from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+                            INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
+                            LEFT JOIN sms_device_parm d on d.ATTRIBUTE_ID = c.ATTRIBUTE_ID and d.STATUS=1
+                            INNER JOIN sms_device_attribute e on e.ID = c.ATTRIBUTE_ID and e.STATUS=1
+                            where a.ID = #{scene.id}
+                        </if>
+                        <if test="sort == 1">
+                            from sms_alarm_details c
+                            LEFT JOIN sms_device_parm d on d.ATTRIBUTE_ID = c.ATTRIBUTE_ID and d.STATUS=1
+                            INNER JOIN sms_device_attribute e on e.ID = c.ATTRIBUTE_ID and e.STATUS=1
+                            where c.device_id = #{scene.id}
+                        </if>
+                        and c.date_create &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                        and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                    ) t1
+                group by label
+            ) t2
+        order by amount desc
+    </select>
+
+
+    <select id="selectAlarmDeviceIdBySenceId" resultType="map">
+        select DISTINCT c.device_id from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+        INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
+        where a.ID = #{id}
+    </select>
 </mapper>