Browse Source

计算修改

yuejiaying 4 years ago
parent
commit
14fa4bc700

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

@@ -177,7 +177,7 @@ public class OnlineMonitorController {
 
     @RequestMapping(value="statsDeviceParmCount" , method = RequestMethod.GET)
     @ApiOperation(value = "统计压力、瞬时流量的分布区间")
-    public AjaxMessage<int[]> statsDeviceParmCount(
+    public AjaxMessage<DistributeIntervalDto> statsDeviceParmCount(
             @ApiParam(value = "场景类型名称", required = true) @RequestParam String sceneTypeName,
             @ApiParam(value = "场景id", required = false) @RequestParam(required = false) Long sceneId,
             @ApiParam(value = "设备名称", required = false) @RequestParam(required = false) String deviceName){
@@ -191,7 +191,7 @@ public class OnlineMonitorController {
         onlineDataDto.setSceneId(sceneId);
         onlineDataDto.setDeviceName(deviceName);
         onlineDataDto.setSceneIds(sceneService.findByParentIdsLike(null));
-        int[] result=onlineMonitorService.statsDeviceParmCount(onlineDataDto);
+        DistributeIntervalDto result=onlineMonitorService.statsDeviceParmCount(onlineDataDto);
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
 

+ 43 - 0
sms_water/src/main/java/com/huaxu/dto/DistributeIntervalDto.java

@@ -0,0 +1,43 @@
+package com.huaxu.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("分布区间")
+public class DistributeIntervalDto {
+    private static final long serialVersionUID = 460807634914426955L;
+    /**
+     * 分布值
+     */
+    @ApiModelProperty("分布值")
+    private int[] DistributeValue;
+    /**
+     * 平均值
+     */
+    @ApiModelProperty("平均值")
+    private Double avgValue;
+    /**
+     * 最大值
+     */
+    @ApiModelProperty("最大值")
+    private Double maxValue;
+    /**
+     * 最小值
+     */
+    @ApiModelProperty("最小值")
+    private Double minValue;
+    /**
+     * 最大值设备名称
+     */
+    @ApiModelProperty("最大值设备名称")
+    private String maxDeviceName;
+    /**
+     * 最小值设备名称
+     */
+    @ApiModelProperty("最小值设备名称")
+    private String minDeviceName;
+}

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

@@ -72,7 +72,7 @@ public interface OnlineMonitorService {
      * 统计压力、瞬时流量的分布区间
      * @return
      */
-    int[] statsDeviceParmCount(OnlineDataDto onlineDataDto);
+    DistributeIntervalDto statsDeviceParmCount(OnlineDataDto onlineDataDto);
     /**
      * 管网分页查询
      * @return

+ 4 - 2
sms_water/src/main/java/com/huaxu/service/impl/OnlineMonitorImpl.java

@@ -307,7 +307,7 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
      * @return
      */
     @Override
-    public int[] statsDeviceParmCount(OnlineDataDto onlineDataDto)
+    public DistributeIntervalDto statsDeviceParmCount(OnlineDataDto onlineDataDto)
     {
         LoginUser loginUser = UserUtil.getCurrentUser();
         onlineDataDto.setTenantId(loginUser.getTenantId());
@@ -372,7 +372,9 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
                 }
             }
         }
-        return deviceCount;
+        DistributeIntervalDto distributeIntervalDto=new DistributeIntervalDto();
+        distributeIntervalDto.setDistributeValue(deviceCount);
+        return distributeIntervalDto;
     }
     /**
      * 管网分页查询

+ 12 - 6
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -262,10 +262,13 @@
         from sms_scene t1
         <include refid="sceneDeviceJoins"/>
         left join (
-            select b1.device_id,b1.attribute_id,max(latest_value) latest_value
+            select c1.device_id,c1.attribute_id,c1.latest_value
+            from sms_day_report c1
+            inner join (
+            select b1.device_id,b1.attribute_id,max(b1.collect_date) collect_date
             from sms_day_report b1
             where b1.year = year(now() + interval-1 day) and b1.month = month(now() + interval-1 day) and b1.day = day(now() + interval-1 day)
-            group by b1.device_id,b1.attribute_id
+            group by b1.device_id,b1.attribute_id )c2 on c1.device_id=c2.device_id and  c1.attribute_id=c2.attribute_id and c1.collect_date=c2.collect_date
         )t8 on t8.device_id=t2.device_id and t8.attribute_id =t5.attribute_id
         where t1.parent_scene_id = 0 and t1. status = 1
         <if test="type == 1 ">
@@ -404,10 +407,13 @@
         <if test="type == 4 ">
             and t7.parm_type in(16)
             left join (
-            select b1.device_id,b1.attribute_id,max(latest_value) latest_value
-            from sms_day_report b1
-            where b1.year = year(now() + interval-1 day) and b1.month = month(now() + interval-1 day) and b1.day = day(now() + interval-1 day)
-            group by b1.device_id,b1.attribute_id
+                select c1.device_id,c1.attribute_id,c1.latest_value
+                from sms_day_report c1
+                inner join (
+                select b1.device_id,b1.attribute_id,max(b1.collect_date) collect_date
+                from sms_day_report b1
+                where b1.year = year(now() + interval-1 day) and b1.month = month(now() + interval-1 day) and b1.day = day(now() + interval-1 day)
+                group by b1.device_id,b1.attribute_id )c2 on c1.device_id=c2.device_id and  c1.attribute_id=c2.attribute_id and c1.collect_date=c2.collect_date
             )t9 on t9.device_id=t2.device_id and t9.attribute_id =t7.attribute_id
         </if>
         <if test="type == 5 ">