Browse Source

修复已知BUG

lihui007 4 năm trước cách đây
mục cha
commit
a3f9fbd30d

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

@@ -81,7 +81,7 @@ public class MonitorDataReportController {
             //水质(PH8、余氯11、浊度10)
             List<MonitorDataChartReportDeviceDto> quality = monitorDataReportService.monitorDataQualityReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),startTime, endTime);
             // 水电耗
-            List<MonitorDataChartReportDeviceDto> consumption = monitorDataReportService.monitorWaterPowerConsumptionReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),1, startTime, endTime);
+            List<MonitorDataChartReportDeviceDto> consumption = monitorDataReportService.monitorWaterPowerConsumptionReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),sceneType, startTime, endTime);
             //报警(报警次数)
             List<MonitorDataChartReportDeviceDto> alarm = monitorDataReportService.deviceAlarmReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(), startTime,  endTime);
 

+ 2 - 0
sms_water/src/main/java/com/huaxu/dto/ReportTitleDto.java

@@ -23,6 +23,8 @@ public class ReportTitleDto implements Serializable {
     public static class DeviceChildren implements Serializable {
         @ApiModelProperty("设备名字")
         private String name;
+        @ApiModelProperty("参数ID")
+        private String paramId;
         @ApiModelProperty("统计维度")
         private List<StatisticalDimension> dimensionList;
     }

+ 41 - 23
sms_water/src/main/java/com/huaxu/service/AbstractReportService.java

@@ -10,6 +10,8 @@ import com.huaxu.entity.DayReportEntity;
 import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -46,6 +48,15 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         List<ReportTitleDto> reportTitleDtos = getReportTitle(reportDto, mapsTitle, mapsAttributeTitle);
         // 固定参数项
         List<ReportDto> reportList = findReport(reportDto);
+        // 如果为空,把自定义表头返回回去
+        if (CollectionUtil.isEmpty(reportPage.getRecords())){
+            List<ReportDto> reportDtos = new ArrayList<>();
+            ReportDto reportDto1 = new ReportDto();
+            reportDto1.setReportTitle(reportTitleDtos);
+            reportDtos.add(reportDto1);
+            reportPage.setRecords(reportDtos);
+            return;
+        }
         int total = 0;
         // 单个属性值
         for (ReportDto item : reportPage.getRecords()) {
@@ -60,8 +71,8 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
             List<ReportAttributeDto> reportAttributeDtos = this.findAttributeList(item);
             Map<String, ReportAttributeDto> mapData = new LinkedHashMap<>();
             for (ReportAttributeDto itemData : reportAttributeDtos) {
-                if (!mapData.containsKey(itemData.getAttributeName())){
-                    mapData.put(itemData.getAttributeName(), itemData);
+                if (!mapData.containsKey(itemData.getDeviceParmId().toString())){
+                    mapData.put(itemData.getDeviceParmId().toString(), itemData);
                 }
             }
             // 获取统计维度的值
@@ -113,6 +124,17 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         return  (double) Math.round(value * 1000) / 1000;
     }
 
+    /**
+    * @Author lihui
+    * @Description 单位除以一万,保留3位小数
+    * @Date 14:18 2021/4/28
+    * @Param [value]
+    * @return double
+    **/
+    public double doubleDivideValue(double value){
+        return  new BigDecimal(value).divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP).doubleValue();
+    }
+
 
     /**
      * 组装参数
@@ -127,7 +149,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         reportDto.setMonth(queryDto.getMonth());
         reportDto.setDay(queryDto.getDay());
         if (isPipe){
-            Integer[] parmType = null;
+            /*Integer[] parmType = null;
             if (queryDto.getType() == 1) {
                 parmType = new Integer[]{13};
             } else if (queryDto.getType() == 2){
@@ -135,8 +157,8 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
             } else if (queryDto.getType() == 3){
                 parmType = new Integer[]{7, 9, 11};
             }
+            reportDto.setParmType(Arrays.asList(parmType));*/
             reportDto.setDeviceIds(devices);
-            reportDto.setParmType(Arrays.asList(parmType));
         } else {
             reportDto.setDeviceIds(devices);
             reportDto.setParentSceneIds(queryDto.getIds());
@@ -157,7 +179,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         dto.setDeviceIds(devices);
         // 管网和其他有点不一样
         if (isPipe){
-            Integer[] parmType = null;
+           /* Integer[] parmType = null;
             if (queryDto.getType() == 1) {
                 parmType = new Integer[]{13};
             } else if (queryDto.getType() == 2){
@@ -165,7 +187,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
             } else if (queryDto.getType() == 3){
                 parmType = new Integer[]{7, 9, 11};
             }
-            dto.setTypeIds(Arrays.asList(parmType));
+            dto.setTypeIds(Arrays.asList(parmType));*/
             dto.setType(queryDto.getType());
         } else {
             dto.setParentSceneIds(queryDto.getIds());
@@ -184,28 +206,23 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
      */
     public List<ReportTitleDto> getReportTitle(ReportDto reportDto, Map<String, Integer> mapsTitle,
                                                 Map<String, ReportAttributeDto> mapsAttributeTitle){
-        // 获取设备参数属性
-        List<ReportAttributeDto> reportAttributeDtos2 = deviceParmService.findAttributeNameList(reportDto);
-        int numCount = 0;
-        for (ReportAttributeDto title : reportAttributeDtos2) {
-            if (!mapsAttributeTitle.containsKey(title.getAttributeName())){
-                mapsAttributeTitle.put(title.getAttributeName(),title);
-            }
-        }
         // 设置标题
         Map<String, ReportTitleDto> deviceChildrenMap = new HashMap<>();
-        mapsAttributeTitle.forEach((k, v) -> {
+        List<ReportAttributeDto> reportAttributeDtos2 = deviceParmService.findAttributeNameList(reportDto);
+        int numCount = 0;
+        for (ReportAttributeDto reportAttributeDto : reportAttributeDtos2) {
             // 判断开关是否开启
-            if (v.isShowOnOff()){
-                setReportTitle(v, deviceChildrenMap);
+            if (reportAttributeDto.isShowOnOff()){
+                setReportTitle(reportAttributeDto, deviceChildrenMap);
+                mapsAttributeTitle.put(reportAttributeDto.getDeviceParmId().toString(),reportAttributeDto);
             }
-        });
+        }
         // 转换list返回
         List<ReportTitleDto> resultList =  deviceChildrenMap.values().stream().collect(Collectors.toList());
         for (ReportTitleDto reportTitleDto : resultList) {
             List<ReportTitleDto.DeviceChildren> childrenList = reportTitleDto.getDeviceChildren();
             for (ReportTitleDto.DeviceChildren children : childrenList) {
-                mapsTitle.put(children.getName(), numCount++);
+                mapsTitle.put(children.getParamId(), numCount++);
             }
         }
         return resultList;
@@ -218,14 +235,15 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
      * @param mapsAttributeTitle
      * @return
      */
-    public List<Map<String, Object>> getStatisticalDimensionsValue( Map<String, Integer> mapsTitle, Map<String, ReportAttributeDto> mapData, Map<String, ReportAttributeDto> mapsAttributeTitle){
+    public List<Map<String, Object>> getStatisticalDimensionsValue( Map<String, Integer> mapsTitle, Map<String, ReportAttributeDto> mapData,
+                                                                    Map<String, ReportAttributeDto> mapsAttributeTitle){
         // 判断是否有需要展示的字段
         boolean haveShowTitle = false;
         List<Map<String, Object>> dataMapValues = new ArrayList<>();
         for (String key : mapsTitle.keySet()) {
             ReportAttributeDto reportAttributeDto = mapsAttributeTitle.get(key);
             // 过滤掉没有开启开关的
-            if (!reportAttributeDto.isShowOnOff()) {
+            if (reportAttributeDto == null || !reportAttributeDto.isShowOnOff()) {
                 continue;
             }
             Map<String, Object> map = new LinkedHashMap<>();
@@ -271,7 +289,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
      * @param deviceChildrenMap
      */
     private void setReportTitle(ReportAttributeDto v, Map<String, ReportTitleDto> deviceChildrenMap){
-        String classify = StringUtils.isEmpty(v.getClassify()) ? v.getAttributeName() + "isNull" : v.getClassify();
+        String classify = StringUtils.isEmpty(v.getClassify()) ? v.getAttributeName() + v.getDeviceParmId() + "isNull" : v.getClassify();
         ReportTitleDto reportTitleDto = deviceChildrenMap.get(classify);
         if (reportTitleDto == null) {
             reportTitleDto = new ReportTitleDto();
@@ -283,7 +301,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         }
         ReportTitleDto.DeviceChildren deviceChildren = new ReportTitleDto.DeviceChildren();
         deviceChildren.setName(v.getAttributeName());
-
+        deviceChildren.setParamId(v.getDeviceParmId().toString());
         // 检查是否有设置维度
         List<ReportTitleDto.StatisticalDimension> statisticalDimensions = new ArrayList<>();
         if (v.isShowMaxValue()){

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

@@ -139,15 +139,16 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
         }
         Double power = reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getPowerUsage():0;
         Double water = reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getIntakeWaterUsage():0;
+        Double yieldWaterUsage = reportDtos!=null&&reportDtos.get(index)!=null? reportDtos.get(index).getYieldWaterUsage():0;
         if ("水源水厂".indexOf(item.getSceneTypeName()) != -1){
-            item.setPowerUsage(new BigDecimal(power).divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP).doubleValue());
-            item.setIntakeWaterUsage(new BigDecimal(water).divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP).doubleValue());
+            item.setPowerUsage(doubleDivideValue(power));
+            item.setIntakeWaterUsage(doubleDivideValue(water));
+            item.setYieldWaterUsage(doubleDivideValue(yieldWaterUsage));
         } else {
             item.setPowerUsage(power);
             item.setIntakeWaterUsage(water);
+            item.setYieldWaterUsage(yieldWaterUsage);
         }
-
-        item.setYieldWaterUsage(reportDtos!=null&&reportDtos.get(index)!=null? reportDtos.get(index).getYieldWaterUsage():0);
         item.setDrugUsage(reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getDrugUsage():0);
 //        if (index != -1) {
 //            if ((index + 2) <= reportDtos.size()) {

+ 12 - 3
sms_water/src/main/java/com/huaxu/service/MonthReportService.java

@@ -136,9 +136,18 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
             if (reportDtos.get(i).getDay().equals(item.getDay()))
                 index = i;
         }
-        item.setYieldWaterUsage(reportDtos != null && reportDtos.get(index) != null ? reportDtos.get(index).getYieldWaterUsage() : 0);
-        item.setIntakeWaterUsage(reportDtos != null && reportDtos.get(index) != null ? reportDtos.get(index).getIntakeWaterUsage() : 0);
-        item.setPowerUsage(reportDtos != null && reportDtos.get(index) != null ? reportDtos.get(index).getPowerUsage() : 0);
+        Double power = reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getPowerUsage():0;
+        Double water = reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getIntakeWaterUsage():0;
+        Double yieldWaterUsage = reportDtos!=null&&reportDtos.get(index)!=null? reportDtos.get(index).getYieldWaterUsage():0;
+        if ("水源水厂".indexOf(item.getSceneTypeName()) != -1){
+            item.setPowerUsage(doubleDivideValue(power));
+            item.setIntakeWaterUsage(doubleDivideValue(water));
+            item.setYieldWaterUsage(doubleDivideValue(yieldWaterUsage));
+        } else {
+            item.setPowerUsage(power);
+            item.setIntakeWaterUsage(water);
+            item.setYieldWaterUsage(yieldWaterUsage);
+        }
         item.setDrugUsage(reportDtos != null && reportDtos.get(index) != null ? reportDtos.get(index).getDrugUsage() : 0);
 //        if (index != -1) {
 //            if ((index + 2) <= reportDtos.size()) {

+ 12 - 4
sms_water/src/main/java/com/huaxu/service/YearReportService.java

@@ -138,10 +138,18 @@ public class YearReportService extends AbstractReportService<YearReportMapper, Y
             if (reportDtos.get(i).getMonth().equals(item.getMonth()))
                 index = i;
         }
-
-        item.setYieldWaterUsage(reportDtos!=null&&reportDtos.get(index)!=null? reportDtos.get(index).getYieldWaterUsage():0);
-        item.setIntakeWaterUsage(reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getIntakeWaterUsage():0);
-        item.setPowerUsage(reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getPowerUsage():0);
+        Double power = reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getPowerUsage():0;
+        Double water = reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getIntakeWaterUsage():0;
+        Double yieldWaterUsage = reportDtos!=null&&reportDtos.get(index)!=null? reportDtos.get(index).getYieldWaterUsage():0;
+        if ("水源水厂".indexOf(item.getSceneTypeName()) != -1){
+            item.setPowerUsage(doubleDivideValue(power));
+            item.setIntakeWaterUsage(doubleDivideValue(water));
+            item.setYieldWaterUsage(doubleDivideValue(yieldWaterUsage));
+        } else {
+            item.setPowerUsage(power);
+            item.setIntakeWaterUsage(water);
+            item.setYieldWaterUsage(yieldWaterUsage);
+        }
         item.setDrugUsage(reportDtos!=null&&reportDtos.get(index)!=null?reportDtos.get(index).getDrugUsage():0);
 //        if (index != -1) {
 //            if ((index + 2) <= reportDtos.size()) {

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

@@ -292,7 +292,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                 valueDto.setData(0d);
                 valueDto.setMonitorData("0 kwh/㎡");
             } else {
-                valueDto.setData(b1.divide(b2, 5, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).doubleValue());
+                valueDto.setData(b1.divide(b2, 3, RoundingMode.HALF_UP).doubleValue());
                 valueDto.setMonitorData(valueDto.getData() + " kwh/㎡");
             }
         }

+ 6 - 5
sms_water/src/main/resources/mapper/DayReportMapper.xml

@@ -145,11 +145,12 @@
         a.month as "month" ,
         a.day as "day" ,
         a.hour as "hour" ,
-        a.DEVICE_NAME as "deviceName",
         b.parent_scene_id as "parentSceneId",
         c.SCENE_NAME as "parentSceneName",
-        a.COLLECT_DATE as "collectDate",
         t.SCENE_TYPE_NAME as "sceneTypeName"
+        <if test="dayReport.type != null">
+        ,a.DEVICE_NAME as "deviceName"
+        </if>
         FROM sms_day_report a
         inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
         <if test="dayReport.typeIds != null">
@@ -185,11 +186,11 @@
         order by b.parent_scene_id,a.year,a.month,a.day,a.hour
     </select>
     <select id="findAttributeList" resultType="com.huaxu.dto.ReportAttributeDto">
-        SELECT tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
+        SELECT tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
         max(tab.maxValue) as "maxValue",AVG(tab.avgValue)as "avgValue",
         AVG(tab.sumValue)as "sumValue",AVG(tab.latestValue) as "latestValue"
         from
-        (SELECT IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
+        (SELECT a.id as "deviceParmId",IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
         c.min_value as "minValue" ,c.max_value as "maxValue" ,c.avg_value as "avgValue" ,
         c.sum_value as "sumValue" ,c.latest_value as "latestValue",
         a.PARM_TYPE as ATTRIBUTE_TYPE
@@ -211,7 +212,7 @@
         <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
         ORDER BY a.SEQ
         ) as tab
-        group by tab.attributeName,tab.ATTRIBUTE_TYPE
+        group by tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE
     </select>
     <select id="findReport" resultType="com.huaxu.dto.ReportDto">
         select

+ 4 - 4
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -194,7 +194,7 @@
         p.parm_type AS "attributeType",
         da.unit AS "unit",
 
-        ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
+        ifnull( ROUND( sum( r.SUM_VALUE ), 3 ), 0 ) AS "data",
         max( r.COLLECT_DATE ) AS "date"
         FROM sms_device_parm p
         LEFT JOIN sms_day_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
@@ -263,7 +263,7 @@
         p.parm_type AS "attributeType",
         da.unit AS "unit",
 
-        ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
+        ifnull( ROUND( sum( r.SUM_VALUE ), 3 ), 0 ) AS "data",
         max( r.COLLECT_DATE ) AS "date"
         FROM sms_device_parm p
         LEFT JOIN sms_month_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
@@ -331,7 +331,7 @@
         p.parm_type AS "attributeType",
         da.unit AS "unit",
 
-        ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
+        ifnull( ROUND( sum( r.SUM_VALUE ), 3 ), 0 ) AS "data",
         max( r.COLLECT_DATE ) AS "date"
         FROM sms_device_parm p
         LEFT JOIN sms_year_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
@@ -1599,7 +1599,7 @@
         p.parm_type AS "attributeType",
         da.unit AS "unit",
 
-        ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
+        ifnull( ROUND( sum( r.SUM_VALUE ), 3 ), 0 ) AS "data",
         max( r.COLLECT_DATE ) AS "date"
         FROM sms_device_parm p
         LEFT JOIN sms_month_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID

+ 6 - 5
sms_water/src/main/resources/mapper/MonthReportMapper.xml

@@ -142,11 +142,12 @@
         a.year as "year" ,
         a.month as "month" ,
         a.day as "day" ,
-        a.DEVICE_NAME as "deviceName",
         b.parent_scene_id as "parentSceneId",
         c.SCENE_NAME as "parentSceneName",
-        a.COLLECT_DATE as "collectDate",
         t.SCENE_TYPE_NAME as "sceneTypeName"
+        <if test="monthReport.type != null">
+            ,a.DEVICE_NAME as "deviceName"
+        </if>
         FROM sms_month_report a
         inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
         <if test="monthReport.typeIds != null">
@@ -184,11 +185,11 @@
         order by  b.parent_scene_id,a.year,a.month,a.day
     </select>
     <select id="findAttributeList" resultType="com.huaxu.dto.ReportAttributeDto">
-        SELECT tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
+        SELECT tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
         max(tab.maxValue) as "maxValue",AVG(tab.avgValue)as "avgValue",
         AVG(tab.sumValue)as "sumValue",AVG(tab.latestValue) as "latestValue"
         from
-        (SELECT IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
+        (SELECT a.id as "deviceParmId",IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
         c.min_value as "minValue" ,c.max_value as "maxValue" ,c.avg_value as "avgValue" ,
         c.sum_value as "sumValue" ,c.latest_value as "latestValue",
         a.PARM_TYPE ATTRIBUTE_TYPE
@@ -212,7 +213,7 @@
         <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
         ORDER BY a.SEQ
         ) as tab
-        group by tab.attributeName,tab.ATTRIBUTE_TYPE
+        group by tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE
     </select>
 
     <select id="findReport" resultType="com.huaxu.dto.ReportDto">

+ 6 - 5
sms_water/src/main/resources/mapper/YearReportMapper.xml

@@ -142,10 +142,11 @@
         a.year as "year" ,
         a.month as "month" ,
         b.parent_scene_id as "parentSceneId",
-        a.DEVICE_NAME as "deviceName",
         c.SCENE_NAME as "parentSceneName",
-        a.COLLECT_DATE as "collectDate",
         t.SCENE_TYPE_NAME as "sceneTypeName"
+        <if test="yearReport.type != null">
+            ,a.DEVICE_NAME as "deviceName"
+        </if>
         FROM sms_year_report a
         inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
         <if test="yearReport.typeIds != null">
@@ -181,11 +182,11 @@
         order by  b.parent_scene_id,a.year,a.month
     </select>
     <select id="findAttributeList" resultType="com.huaxu.dto.ReportAttributeDto">
-        SELECT tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
+        SELECT tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
         max(tab.maxValue) as "maxValue",AVG(tab.avgValue)as "avgValue",
         AVG(tab.sumValue)as "sumValue",AVG(tab.latestValue) as "latestValue"
         from
-        (SELECT IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
+        (SELECT a.id as "deviceParmId",IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
         c.min_value as "minValue" ,c.max_value as "maxValue" ,c.avg_value as "avgValue" ,
         c.sum_value as "sumValue" ,c.latest_value as "latestValue",
         a.PARM_TYPE as ATTRIBUTE_TYPE
@@ -205,7 +206,7 @@
         <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
         ORDER BY a.SEQ
         ) as tab
-        group by tab.attributeName,tab.ATTRIBUTE_TYPE
+        group by tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE
     </select>
     <select id="findReport" resultType="com.huaxu.dto.ReportDto">
         select