Forráskód Böngészése

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

hym 4 éve
szülő
commit
b23211dd09
27 módosított fájl, 690 hozzáadás és 387 törlés
  1. 0 1
      common/src/main/java/com/huaxu/util/RedisUtil.java
  2. 38 0
      operation_manager/src/main/java/com/huaxu/base/BaseEntity.java
  3. 34 0
      operation_manager/src/main/java/com/huaxu/performance/entity/PerformanceEvaluateSetting.java
  4. 36 0
      operation_manager/src/main/java/com/huaxu/performance/entity/PerformanceScoreSetting.java
  5. 157 1
      readme.md
  6. 3 3
      sms_water/src/main/java/com/huaxu/controller/MonitorDataReportController.java
  7. 1 1
      sms_water/src/main/java/com/huaxu/controller/SecSupplyController.java
  8. 4 0
      sms_water/src/main/java/com/huaxu/dto/ReportAttributeDto.java
  9. 3 0
      sms_water/src/main/java/com/huaxu/dto/ReportDto.java
  10. 2 0
      sms_water/src/main/java/com/huaxu/dto/ReportTitleDto.java
  11. 3 4
      sms_water/src/main/java/com/huaxu/entity/AlarmSetting.java
  12. 1 1
      sms_water/src/main/java/com/huaxu/rabbitmq/AlarmDataHandler.java
  13. 1 1
      sms_water/src/main/java/com/huaxu/rabbitmq/ReportWaterPumpStateHandler.java
  14. 54 25
      sms_water/src/main/java/com/huaxu/service/AbstractReportService.java
  15. 14 3
      sms_water/src/main/java/com/huaxu/service/DayReportService.java
  16. 12 3
      sms_water/src/main/java/com/huaxu/service/MonthReportService.java
  17. 1 1
      sms_water/src/main/java/com/huaxu/service/SecSupplyService.java
  18. 12 4
      sms_water/src/main/java/com/huaxu/service/YearReportService.java
  19. 21 16
      sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java
  20. 8 8
      sms_water/src/main/resources/application-dev.properties
  21. 1 1
      sms_water/src/main/resources/mapper/AlarmDetailMapper.xml
  22. 17 7
      sms_water/src/main/resources/mapper/DayReportMapper.xml
  23. 4 2
      sms_water/src/main/resources/mapper/DeviceParmMapper.xml
  24. 222 284
      sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml
  25. 19 9
      sms_water/src/main/resources/mapper/MonthReportMapper.xml
  26. 4 4
      sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml
  27. 18 8
      sms_water/src/main/resources/mapper/YearReportMapper.xml

+ 0 - 1
common/src/main/java/com/huaxu/util/RedisUtil.java

@@ -532,7 +532,6 @@ public class RedisUtil {
      * @return
      */
     public List<String> doZrevrange(String key, Integer start, Integer end) {
-
         List<String> stringList = new ArrayList<>();
         RedisSerializer<String> redisSerializer = getRedisSerializer();
         Set<byte[]> strBytes = redisTemplate.execute((RedisCallback<Set<byte[]>>) connection -> connection.zRevRange(redisSerializer.serialize(key), start, end));

+ 38 - 0
operation_manager/src/main/java/com/huaxu/base/BaseEntity.java

@@ -0,0 +1,38 @@
+package com.huaxu.base;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName BaseEntity
+ * @Description: 公共基类
+ * @Author lihui
+ * @Date 2021/4/20
+ * @Version V1.0
+ **/
+@Data
+@ApiModel
+public class BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "创建日期")
+    private Date dateCreate;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date dateUpdate;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "数据删除标记1")
+    private Integer status;
+}

+ 34 - 0
operation_manager/src/main/java/com/huaxu/performance/entity/PerformanceEvaluateSetting.java

@@ -0,0 +1,34 @@
+package com.huaxu.performance.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import com.huaxu.base.BaseEntity;
+
+/**
+ * @ClassName PerformanceEvaluateSetting
+ * @Description: 考评项设置
+ * @Author lihui
+ * @Date 2021/4/20
+ * @Version V1.0
+ **/
+@Data
+@ApiModel
+public class PerformanceEvaluateSetting extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "考评类型")
+    private Integer evaluateType;
+
+    @ApiModelProperty(value = "分值")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "评分标准")
+    private String scoringCriteria;
+
+}

+ 36 - 0
operation_manager/src/main/java/com/huaxu/performance/entity/PerformanceScoreSetting.java

@@ -0,0 +1,36 @@
+package com.huaxu.performance.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import com.huaxu.base.BaseEntity;
+/**
+ * @ClassName PerformanceScoreSetting
+ * @Description: 绩效考评得分设置
+ * @Author lihui
+ * @Date 2021/4/20
+ * @Version V1.0
+ **/
+@Data
+@ApiModel
+public class PerformanceScoreSetting extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "考评项设置ID")
+    private String pesId;
+
+    @ApiModelProperty(value = "得分")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "得分条件")
+    private Integer condition;
+
+    @ApiModelProperty(value = "最小范围")
+    private BigDecimal minScore;
+
+    @ApiModelProperty(value = "最大范围")
+    private BigDecimal maxScore;
+
+}

+ 157 - 1
readme.md

@@ -40,4 +40,160 @@ CREATE TABLE `sms_report_dimension_setting`  (
 `show_latest_value` smallint(6) NULL DEFAULT NULL COMMENT '是否展示最新值',
 PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 72 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-SET FOREIGN_KEY_CHECKS = 1;
+SET FOREIGN_KEY_CHECKS = 1;
+
+#创建水泵状态报表 sms_report_water_pump_state
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for sms_report_water_pump_state
+-- ----------------------------
+DROP TABLE IF EXISTS `sms_report_water_pump_state`;
+CREATE TABLE `sms_report_water_pump_state`  (
+`id` int(11) NOT NULL AUTO_INCREMENT,
+`state` smallint(1) NOT NULL COMMENT '运行状态 :1-停止,0-运行',
+`state_begin_time` datetime(0) NULL DEFAULT NULL COMMENT '运行状态开始时间',
+`state_end_time` datetime(0) NULL DEFAULT NULL COMMENT '运行状态结束时间',
+`tenant_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户标识',
+`device_id` int(11) NULL DEFAULT NULL COMMENT '设备信息',
+`device_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备名称',
+`device_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备编号',
+`attribute_id` int(11) NULL DEFAULT NULL COMMENT '设备属性',
+`attribute_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备属性名称',
+`year` smallint(4) NULL DEFAULT NULL COMMENT '年',
+`month` smallint(2) NULL DEFAULT NULL COMMENT '月',
+`day` smallint(2) NULL DEFAULT NULL COMMENT '日',
+`md5_query` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'MD5查询',
+`date_create` datetime(0) NULL DEFAULT NULL COMMENT '创建日期',
+`date_update` datetime(0) NULL DEFAULT NULL COMMENT '更新日期',
+PRIMARY KEY (`id`) USING BTREE,
+INDEX `index_md5_date`(`md5_query`, `state_begin_time`) USING BTREE,
+INDEX `index_tenant_id`(`tenant_id`) USING BTREE,
+INDEX `index_device_time`(`device_id`, `state_begin_time`) USING BTREE,
+INDEX `index_device_attr`(`device_id`, `attribute_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 16499 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+SET FOREIGN_KEY_CHECKS = 1;
+
+## operation_manager 运维管理数据库
+CREATE TABLE `sc_evaluation_grade` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `COMPANY_ORG_ID` int(11) DEFAULT NULL COMMENT '所属公司',
+  `EVALUATION_GRADE` int(11) DEFAULT NULL COMMENT '绩效等级(0A 1B 2C 3D 4E)',
+  `TYPE` int(11) DEFAULT NULL COMMENT '类型(0大于等于 1小于 2介于)',
+  `VALUE_ONE` DECIMAL(18,2) DEFAULT NULL COMMENT '分值1',
+  `VALUE_TWO` DECIMAL(18,2) DEFAULT NULL COMMENT '分值2',
+  `REMARKS` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '备注',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评等级';
+CREATE TABLE `sc_evaluation_item` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `COMPANY_ORG_ID` int(11) DEFAULT NULL COMMENT '所属公司',
+  `DEPT_ORG_ID` int(11) DEFAULT NULL COMMENT '所属部门',
+  `TYPE` int(11) DEFAULT NULL COMMENT '类型(0任务完成数 1任务按时完成率 2自定义)',
+  `NAME` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '名称',
+  `VALUE` DECIMAL(18,2) DEFAULT NULL COMMENT '分值',
+  `VALUE_CONDITION` DECIMAL(18,2) DEFAULT NULL COMMENT '条件值',
+  `CYCLE` int(11) DEFAULT NULL COMMENT '周期(0月度 1季度 2年度)',
+  `REMARKS` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '评分标准', 
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评项';
+
+CREATE TABLE `sc_evaluation_item_value` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `EVALUATION_ITEM_ID` int(11) NOT NULL COMMENT '考评项ID',
+  `TYPE` int(11) DEFAULT NULL COMMENT '类型(0大于等于 1小于 2介于)',
+  `VALUE_ONE` DECIMAL(18,2) DEFAULT NULL COMMENT '分值1',
+  `VALUE_TWO` DECIMAL(18,2) DEFAULT NULL COMMENT '分值2',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评项分值';
+
+CREATE TABLE `sc_evaluation_cycle` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `COMPANY_ORG_ID` int(11) DEFAULT NULL COMMENT '所属公司',
+  `TYPE` int(11) DEFAULT NULL COMMENT '类型(0月度 1季度 2年度)',
+  `EVALUATION_DAY` int(11) DEFAULT NULL COMMENT '考评日期',
+  `REMARKS` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '备注',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评周期';
+
+CREATE TABLE `sc_evaluation_result` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `COMPANY_ORG_ID` int(11) DEFAULT NULL COMMENT '所属公司',
+  `DEPT_ORG_ID` int(11) DEFAULT NULL COMMENT '所属部门',
+  `EVALUATION_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '考评人',
+  `EVALUATION_BE` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '被考评人',
+  `STATE` int(11) DEFAULT NULL COMMENT '考评状态(0未考评 1已考评)',
+  `CYCLE` int(11) DEFAULT NULL COMMENT '周期(0月度 1季度 2年度)',
+  `YEAR` int(11) DEFAULT NULL COMMENT '考评年份',
+  `MONTH` int(11) DEFAULT NULL COMMENT '考评月份',
+  `EVALUATION_GRADE` int(11) DEFAULT NULL COMMENT '绩效等级(0A 1B 2C 3D 4E)',
+  `VALUE` DECIMAL(18,2) DEFAULT NULL COMMENT '考评得分',
+  `DATE_START` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考评开始时间',
+  `DATE_END` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考评结束时间',
+  `DATE_EVALUATION` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考评时间', 
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评结果';
+CREATE TABLE `sc_evaluation_result_task` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `EVALUATION_RESULT_ID` int(11) NOT NULL COMMENT '考评结果ID',
+  `TOTAL_COUNT` int(11) DEFAULT NULL COMMENT '任务总数',
+  `COMPLETE_COUNT` int(11) DEFAULT NULL COMMENT '已完成',
+  `NO_COMPLETE_COUNT` int(11) DEFAULT NULL COMMENT '待完成',
+  `DELAY_COMPLETE_COUNT` int(11) DEFAULT NULL COMMENT '延期完成',
+  `COMPLETION_RATE` decimal(18,2) DEFAULT NULL COMMENT '完成率',
+  `DELAY_RATE` decimal(18,2) DEFAULT NULL COMMENT '延期率',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评结果任务详情';
+CREATE TABLE `sc_evaluation_result_details` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `TENANT_ID` varchar(100) DEFAULT NULL COMMENT '租户标识',
+  `EVALUATION_RESULT_ID` int(11) NOT NULL COMMENT '考评结果ID',
+  `EVALUATION_ITEM_ID` int(11) NOT NULL COMMENT '考评项ID',
+  `VALUE` DECIMAL(18,2) DEFAULT NULL COMMENT '考评得分',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评结果任务详情';
+
+
+

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

@@ -68,7 +68,7 @@ public class MonitorDataReportController {
             @ApiParam(value = "场景ids", required = true) @RequestParam List<Long> sceneIds,
             @ApiParam(value = "日期,格式:2020-12-12") @RequestParam(name = "reportDate",required = false) String reportDate,
             @ApiParam(value = "类型,1年2月3日4自定义", required = true) @RequestParam Integer reportType,
-            @ApiParam(value = "场景类型:1水源 0其他",defaultValue = "0") @RequestParam(required = false ,defaultValue = "0") Integer sceneType,
+            @ApiParam(value = "场景类型:1水源 2水厂 3泵站 0其他",defaultValue = "0") @RequestParam(required = false ,defaultValue = "0") Integer sceneType,
             @ApiParam(value = "开始时间") @RequestParam(name = "startTime",required = false) String startTime,
             @ApiParam(value = "结束时间") @RequestParam(name = "endTime",required = false) String endTime
     ){
@@ -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);
 
@@ -153,7 +153,7 @@ public class MonitorDataReportController {
 
 
     @RequestMapping(value = "getDeviceWaterSupplie",method = RequestMethod.GET)
-    @ApiOperation(value = "概览首页——近30天水量")
+    @ApiOperation(value = "概览首页——近15天水量")
     public AjaxMessage<List<DeviceWaterSupply>> getDeviceWaterSupplie(){
         return new AjaxMessage<>(ResultStatus.OK,monitorDataReportService.deviceWaterSupplie());
     }

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

@@ -33,7 +33,7 @@ public class SecSupplyController {
     private MonitorDataReportService monitorDataReportService;
 
 
-    @ApiOperation(value = "二供概览首页——近30天供水量",notes = "sceneType 1为水源2水厂3泵站")
+    @ApiOperation(value = "二供概览首页——近15天供水量",notes = "sceneType 1为水源2水厂3泵站")
     @RequestMapping(value = "/selectAmountByTypeName", method = RequestMethod.GET)
     @ResponseBody
     public AjaxMessage<List<AmountDayThirtyDto>> findAmountDayThirty(@ApiParam(value = "一级场景类型", required = true) @RequestParam Integer sceneType) {

+ 4 - 0
sms_water/src/main/java/com/huaxu/dto/ReportAttributeDto.java

@@ -26,6 +26,10 @@ public class ReportAttributeDto  implements Serializable {
     @ApiModelProperty("设备属性类型")
     @JsonIgnore
     private Integer attributeType;
+
+
+    @ApiModelProperty("单位")
+    private String unit;
     /**
      * 最小值
      */

+ 3 - 0
sms_water/src/main/java/com/huaxu/dto/ReportDto.java

@@ -79,4 +79,7 @@ public class ReportDto implements Serializable {
 
     @ApiModelProperty(value = "结束时间")
     private String endTime;
+
+    @ApiModelProperty("场景类型名称")
+    private String sceneTypeName;
 }

+ 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;
     }

+ 3 - 4
sms_water/src/main/java/com/huaxu/entity/AlarmSetting.java

@@ -1,9 +1,6 @@
 package com.huaxu.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -117,10 +114,12 @@ public class AlarmSetting implements Serializable {
      * 报警设置开始时间
      */
     @ApiModelProperty(value = "报警设置开始时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String startTime;
     /**
      * 报警设置结束时间
      */
     @ApiModelProperty(value = "报警设置结束时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String endTime;
 }

+ 1 - 1
sms_water/src/main/java/com/huaxu/rabbitmq/AlarmDataHandler.java

@@ -60,7 +60,7 @@ public class AlarmDataHandler {
         Double receivedValue            = null;
         List<AlarmDetailsEntity> insert = null;
         List<AlarmDetailsEntity> update = null;
-        // 获取需要验证的报警条件
+        // 获取需要验证的报警条件monitorDataEntity.getDeviceId()
         List<DeviceCheckAlarmDto> deviceCheckAlarmDtos = alarmDetailMapper.selectDeviceForCheckAlarm(monitorDataEntity.getDeviceId(),"参数报警");
         // 有设置报警参数
         if (deviceCheckAlarmDtos.size() == 0 || StringUtils.isBlank(deviceCheckAlarmDtos.get(0).getIdentifiter())){

+ 1 - 1
sms_water/src/main/java/com/huaxu/rabbitmq/ReportWaterPumpStateHandler.java

@@ -77,7 +77,7 @@ public class ReportWaterPumpStateHandler {
      *           -> 00:30-null   运行时间
     * @Date 14:08 2021/4/21
     * @Param [md5Query :查询条件, monitorDataEntity, valueEntity, inserList :需要插入的数据集合, stateValue:泵站状态,receiveDateTime:上报数据的时间]
-    * @return boolean
+    * @return
     **/
     private void addOrUpdate(String md5Query , MonitorDataEntity monitorDataEntity,
                                   MonitorDataValueEntity valueEntity ,List<ReportWaterPumpStateEntity> inserList,

+ 54 - 25
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()) {
@@ -56,12 +67,15 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
             }
             // 固定参数项
             calcUsage(item, reportList);
+            Integer parentSceneId = item.getParentSceneId();
+            item.setParentSceneId(null);
             //动态参数项
             List<ReportAttributeDto> reportAttributeDtos = this.findAttributeList(item);
+            item.setParentSceneId(parentSceneId);
             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 +127,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 +152,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 +160,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 +182,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,9 +190,10 @@ 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());
         }
         dto.setStartTime(queryDto.getStartTime());
@@ -184,25 +210,26 @@ 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 (!mapsTitle.containsKey(title.getAttributeName())){
-                mapsTitle.put(title.getAttributeName(), numCount++);
-                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返回
-        return deviceChildrenMap.values().stream().collect(Collectors.toList());
+        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.getParamId(), numCount++);
+            }
+        }
+        return resultList;
     }
 
     /**
@@ -212,14 +239,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<>();
@@ -265,7 +293,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() : 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();
@@ -275,9 +303,10 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         if (CollectionUtil.isEmpty(deviceChildrenList)){
             deviceChildrenList = new ArrayList<>();
         }
+        String unit = StringUtils.isEmpty(v.getUnit()) ? "" : "("+v.getUnit()+")";
         ReportTitleDto.DeviceChildren deviceChildren = new ReportTitleDto.DeviceChildren();
-        deviceChildren.setName(v.getAttributeName());
-
+        deviceChildren.setName(v.getAttributeName() + unit);
+        deviceChildren.setParamId(v.getDeviceParmId().toString());
         // 检查是否有设置维度
         List<ReportTitleDto.StatisticalDimension> statisticalDimensions = new ArrayList<>();
         if (v.isShowMaxValue()){

+ 14 - 3
sms_water/src/main/java/com/huaxu/service/DayReportService.java

@@ -11,6 +11,8 @@ import com.huaxu.util.UserUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -135,9 +137,18 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
             if (reportDtos.get(i).getHour().equals(item.getHour()))
                 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 (item.getSceneTypeName() != null && "水源水厂".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 - 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 (item.getSceneTypeName() != null && "水源水厂".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/SecSupplyService.java

@@ -50,7 +50,7 @@ public class SecSupplyService {
         Calendar begin = Calendar.getInstance();// 得到一个Calendar的实例
         begin.setTime(new Date()); // 设置时间为当前时间
         List<AmountDayThirtyDto> listC = new ArrayList<>();
-        for (int i = 1; i <= 30; i++) {
+        for (int i = 1; i <= 15; i++) {
             begin.add(Calendar.DATE, -1);// 日期加1
             Date d = new Date(begin.getTimeInMillis());
             DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

+ 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 (item.getSceneTypeName() != null && "水源水厂".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()) {

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

@@ -187,19 +187,20 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         if (type == null) {
             return monitorDataChartReportDeviceDtos;
         }
+        Integer stype = sceneType == 2 || sceneType == 3 ? 0 : sceneType ;
         if(type == 3){
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByDay(sceneType,sceneIds,year,month,day,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByDay(stype,sceneIds,year,month,day,
                    loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
        } else if(type == 2){
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByMonth(sceneType,sceneIds,year,month,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByMonth(stype,sceneIds,year,month,
                    loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
        } else if(type == 1){
-           monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByYear(sceneType,sceneIds,year,
+           monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByYear(stype,sceneIds,year,
                    loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
        } else if (type == 4) {
             startTime += " 00:00:00";
             endTime   += " 23:59:59";
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReport(sceneType,sceneIds,startTime,endTime,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReport(stype,sceneIds,startTime,endTime,
                     loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         }
         if (monitorDataChartReportDeviceDtos != null && type == 4) {
@@ -207,15 +208,18 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         }else if (monitorDataChartReportDeviceDtos != null){
             FillLoseData(monitorDataChartReportDeviceDtos,type,year,month,day);
         }
-        //单位转换为“万”
+        // 场景类型为泵站的不需要转换
+        if (sceneType == 3){
+            return monitorDataChartReportDeviceDtos;
+        }
+        // 其他场景需要转换为单位“万”
         for(MonitorDataChartReportDeviceDto monitorDataChartReportDeviceDto : monitorDataChartReportDeviceDtos){
             for(MonitorDataChartReportAttributeDto monitorDataChartReportAttributeDto:monitorDataChartReportDeviceDto.getAttributeData()){
-                monitorDataChartReportAttributeDto.setUnit("万"+monitorDataChartReportAttributeDto.getUnit());
+                monitorDataChartReportAttributeDto.setUnit("万"+monitorDataChartReportAttributeDto.getUnit() == null ? "" : monitorDataChartReportAttributeDto.getUnit());
                 for(MonitorDataChartReportValueDto monitorDataChartReportValueDto: monitorDataChartReportAttributeDto.getMonitorDataChartReportValue()){
                     monitorDataChartReportValueDto.setData(new BigDecimal(monitorDataChartReportValueDto.getData()).divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP).doubleValue());
                     monitorDataChartReportValueDto.setMonitorData(monitorDataChartReportValueDto.getData()+monitorDataChartReportAttributeDto.getUnit());
                 }
-
             }
         }
         return monitorDataChartReportDeviceDtos;
@@ -227,19 +231,20 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         if (type == null) {
             return monitorDataChartReportDeviceDtos;
         }
+        Integer stype = sceneType == 2 || sceneType == 3 ? 0 : sceneType ;
         if ( type == 3){
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByDay(sceneType,sceneIds,year,month,day,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByDay(stype,sceneIds,year,month,day,
                     loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         } else if(type == 2){
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByMonth(sceneType,sceneIds,year,month,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByMonth(stype,sceneIds,year,month,
                     loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         } else if(type == 1){
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByYear(sceneType,sceneIds,year,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByYear(stype,sceneIds,year,
                     loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         } else if (type == 4) {
             startTime += " 00:00:00";
             endTime   += " 23:59:59";
-            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReport(sceneType,sceneIds,startTime,endTime,
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReport(stype,sceneIds,startTime,endTime,
                     loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         }
         if (monitorDataChartReportDeviceDtos != null && type == 4){
@@ -252,7 +257,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
             MonitorDataChartReportAttributeDto newAttrData = new MonitorDataChartReportAttributeDto();
             List<MonitorDataChartReportAttributeDto> attributeDtos =  water.getAttributeData();
             newAttrData.setAttributeName("水电耗");
-            newAttrData.setUnit("kwh/");
+            newAttrData.setUnit("kwh/");
             newAttrData.setAttributeType("99");
             // 计算水电耗=每日电量/每日用水量*100
             // 缺失每日电量或者每日水量将不进行计算
@@ -286,10 +291,10 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
             valueDto.setMonitorData("");
             if (b1.compareTo(new BigDecimal(0)) == 0 || b2.compareTo(new BigDecimal(0)) == 0) {
                 valueDto.setData(0d);
-                valueDto.setMonitorData("0 kwh/");
+                valueDto.setMonitorData("0 kwh/");
             } else {
-                valueDto.setData(b1.divide(b2, 5, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).doubleValue());
-                valueDto.setMonitorData(valueDto.getData() + " kwh/");
+                valueDto.setData(b1.divide(b2, 3, RoundingMode.HALF_UP).doubleValue());
+                valueDto.setMonitorData(valueDto.getData() + " kwh/");
             }
         }
     }
@@ -731,7 +736,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         deviceWaterSupplies.add(0, deviceWaterSupplyDay);
 
 
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < 15; i++) {
             LocalDate newLocalDate = localDate.plusDays(-i);
             if (i == deviceWaterSupplies.size()
                     || !newLocalDate.isEqual(LocalDate.of(deviceWaterSupplies.get(i).getYear(),

+ 8 - 8
sms_water/src/main/resources/application-dev.properties

@@ -118,16 +118,16 @@ ribbon.ReadTimeout=5000
 ribbon.ConnectionTimeout=5000
 
 #localhost
-message.spring.rabbitmq.host=127.0.0.1
-message.spring.rabbitmq.port=5672
-message.spring.rabbitmq.username=andy
-message.spring.rabbitmq.password=andy
+#message.spring.rabbitmq.host=127.0.0.1
+#message.spring.rabbitmq.port=5672
+#message.spring.rabbitmq.username=andy
+#message.spring.rabbitmq.password=andy
 
 ##rabbitmq
-#message.spring.rabbitmq.host=114.135.61.188
-#message.spring.rabbitmq.port=55672
-#message.spring.rabbitmq.username=zoniot
-#message.spring.rabbitmq.password=zcxk100
+message.spring.rabbitmq.host=114.135.61.188
+message.spring.rabbitmq.port=55672
+message.spring.rabbitmq.username=zoniot
+message.spring.rabbitmq.password=zcxk100
 message.spring.rabbitmq.virtual-host= /
 message.spring.rabbitmq.requested-heartbeat = 10
 message.spring.rabbitmq.listener.simple.acknowledge-mode = NONE

+ 1 - 1
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -682,7 +682,7 @@
         left join sms_alarm_setting b on a.alarm_setting_id=b.id and b.status = 1 and b.alarm_condition!='='
         <include refid="alarmDetailJoins"/>
         where a.`STATUS` = 1
-        and a.DEVICE_ID=#{deviceId} and a.scene_id=#{sceneId} and a.state=1
+        and a.DEVICE_ID=#{deviceId} and (a.scene_id=#{sceneId} or a.PARENT_SCENE_ID=#{sceneId}) and a.state=1
     </select>
 
     <select id="getAlarmInfoForWorkOrderManage" resultType="com.huaxu.dto.DeviceAlarmInfoForOrder">

+ 17 - 7
sms_water/src/main/resources/mapper/DayReportMapper.xml

@@ -145,10 +145,14 @@
         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"
+        <if test="dayReport.type != null">
+          a.DEVICE_NAME as "deviceName"
+        </if>
+        <if test="dayReport.type == null">
+            b.parent_scene_id as "parentSceneId",
+            c.SCENE_NAME as "parentSceneName",
+            t.SCENE_TYPE_NAME as "sceneTypeName"
+        </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">
@@ -159,6 +163,7 @@
         </if>
         and b.`STATUS`=1
         inner join sms_scene c on b.PARENT_SCENE_ID=c.id
+        inner join sms_scene_type t on c.SCENE_TYPE_ID  = t.id
         <where>
             b.IS_REPORT=1
             <if test="dayReport.tenantId != null  and dayReport.tenantId != ''">and a.tenant_id =
@@ -180,14 +185,19 @@
                 </foreach>
             </if>
         </where>
+        <if test="dayReport.type == null">
         order by b.parent_scene_id,a.year,a.month,a.day,a.hour
+        </if>
+        <if test="dayReport.type != null">
+            order by a.year,a.month,a.day,a.hour
+        </if>
     </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
@@ -209,7 +219,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 - 2
sms_water/src/main/resources/mapper/DeviceParmMapper.xml

@@ -226,7 +226,8 @@
     </select>
     <select id="findAttributeNameList" resultType="com.huaxu.dto.ReportAttributeDto">
         SELECT DISTINCT tab.attributeName,tab.attributeType,tab.SEQ,tab.showMinValue,tab.showAvgValue,tab.showMaxValue,
-        tab.showSumValue,tab.showLatestValue,tab.classify,tab.showOnOff,tab.deviceName,tab.deviceParmId,tab.dimensionId
+        tab.showSumValue,tab.showLatestValue,tab.classify,tab.showOnOff,tab.deviceName,tab.deviceParmId,tab.dimensionId,
+        tab.unit
         from
         (SELECT
         IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
@@ -240,7 +241,8 @@
         s.CLASSIFY AS "classify",
         s.SHOW_ON_OFF AS "showOnOff",
         d.DEVICE_NAME AS "deviceName",
-        a.id AS "deviceParmId"
+        a.id AS "deviceParmId",
+        b.UNIT as "unit"
         FROM sms_device_parm a
         INNER JOIN sms_device d on d.ID = a.DEVICE_ID
         INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID

+ 222 - 284
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -29,24 +29,24 @@
     <!-- 图表 -->
     <select id="MonitorDataChartReportByDay" resultMap="MonitorDataChartReportMap">
         SELECT
-            r.`HOUR` AS "dateLabel",
-            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
-            r.DEVICE_CODE AS "devoceCode",
-            r.ATTRIBUTE_NAME AS "attributeName",
-            da.unit AS "unit",
+        r.`HOUR` AS "dateLabel",
+        CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+        r.DEVICE_CODE AS "devoceCode",
+        IFNULL(p.REMARK, r.ATTRIBUTE_NAME) AS "attributeName",
+        da.unit AS "unit",
 
-            ROUND( sum(r.AVG_VALUE), 2 ) AS "data",
-            max(r.COLLECT_DATE) AS "date"
+        ROUND( sum(r.AVG_VALUE), 3 ) 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
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
         left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1 and d.ENABLE_STATE = 1  and d.`STATUS`= 1
-            and p.PARENT_SCENE_ID=#{sceneId}
-            and r.year=#{year}
-            and r.month=#{month}
-            and r.day=#{day}
+        and p.PARENT_SCENE_ID=#{sceneId}
+        and r.year=#{year}
+        and r.month=#{month}
+        and r.day=#{day}
         <if test="tenantId != null and tenantId != '' ">
             and d.tenant_id = #{tenantId}
         </if>
@@ -83,14 +83,14 @@
     </select>
     <select id="MonitorDataChartReportByMonth" resultMap="MonitorDataChartReportMap">
         SELECT
-            r.`day` AS "dateLabel",
-            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
-            r.DEVICE_CODE AS "devoceCode",
-            r.ATTRIBUTE_NAME AS "attributeName",
-            da.unit AS "unit",
+        r.`day` AS "dateLabel",
+        CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+        r.DEVICE_CODE AS "devoceCode",
+        IFNULL(p.REMARK, r.ATTRIBUTE_NAME) AS "attributeName",
+        da.unit AS "unit",
 
-            ROUND( sum(r.AVG_VALUE), 2 ) AS "data",
-            max(r.COLLECT_DATE) AS "date"
+        ROUND( sum(r.AVG_VALUE), 3 ) 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
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
@@ -135,14 +135,14 @@
     </select>
     <select id="MonitorDataChartReportByYear" resultMap="MonitorDataChartReportMap">
         SELECT
-            r.`month` AS "dateLabel",
-            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
-            r.DEVICE_CODE AS "devoceCode",
-            r.ATTRIBUTE_NAME AS "attributeName",
-            da.unit AS "unit",
+        r.`month` AS "dateLabel",
+        CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+        r.DEVICE_CODE AS "devoceCode",
+        IFNULL(p.REMARK, r.ATTRIBUTE_NAME) AS "attributeName",
+        da.unit AS "unit",
 
-            ROUND( sum(r.AVG_VALUE), 2 ) AS "data",
-            max(r.COLLECT_DATE) AS "date"
+        ROUND( sum(r.AVG_VALUE), 3 ) 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
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
@@ -188,39 +188,39 @@
     <!-- 对比————用水量、耗电量 -->
     <select id="MonitorDataEnergyReportByDay" resultMap="MonitorDataChartReportMap">
         SELECT
-            r.`HOUR` AS "dateLabel",
-            IF( p.parm_type = 5, '耗电量', IF( p.parm_type = 4, '取水量', '用水量' ) ) AS "attributeName",
-            s.SCENE_NAME AS "deviceName",
-            p.parm_type AS "attributeType",
-            da.unit AS "unit",
+        r.`HOUR` AS "dateLabel",
+        IF( p.parm_type = 5, '耗电量', IF( p.parm_type = 4, '取水量', '用水量' ) ) AS "attributeName",
+        s.SCENE_NAME AS "deviceName",
+        p.parm_type AS "attributeType",
+        da.unit AS "unit",
 
-            ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
-            max( r.COLLECT_DATE ) AS "date"
+        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
         left join sms_scene s on s.id=p.parent_scene_id
         left join sms_device_attribute  da ON da.id = p.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
         WHERE p.`STATUS`= 1
-            <if test="sceneType != null and sceneType == 1">
-                and p.parm_type in (4,5)
-            </if>
-            <if test="sceneType == null or  sceneType == 0">
-                and p.parm_type in (3,5)
-            </if>
+        <if test="sceneType != null and sceneType == 1">
+            and p.parm_type in (4,5)
+        </if>
+        <if test="sceneType == null or  sceneType == 0">
+            and p.parm_type in (3,5)
+        </if>
 
         and d.ENABLE_STATE = 1  and d.`STATUS`= 1
-            AND r.YEAR = #{year}  and r.month=#{month}  and r.day=#{day}
-            <if test="sceneIds != null and sceneIds.size()>0">
-                and p.PARENT_SCENE_ID in
-                <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
-                    #{item}
-                </foreach>
-            </if>
-            <if test="tenantId != null and tenantId != '' ">
-                and d.tenant_id = #{tenantId}
-            </if>
-            <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+        AND r.YEAR = #{year}  and r.month=#{month}  and r.day=#{day}
+        <if test="sceneIds != null and sceneIds.size()>0">
+            and p.PARENT_SCENE_ID in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="tenantId != null and tenantId != '' ">
+            and d.tenant_id = #{tenantId}
+        </if>
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
                 and ( d.DEPT_ORG_ID in
                 <foreach collection="programItems" item="item" open="(" close=")" separator=",">
@@ -252,19 +252,19 @@
     </select>
     <select id="MonitorDataEnergyReportByMonth" resultMap="MonitorDataChartReportMap">
         SELECT
-            r.`day` AS "dateLabel",
-            <if test="sceneType != null and sceneType == 1">
-                IF( p.parm_type = 5, '耗电量','取水量'  ) AS "attributeName",
-            </if>
-            <if test="sceneType == null or sceneType == 0">
+        r.`day` AS "dateLabel",
+        <if test="sceneType != null and sceneType == 1">
+            IF( p.parm_type = 5, '耗电量','取水量'  ) AS "attributeName",
+        </if>
+        <if test="sceneType == null or sceneType == 0">
             IF( p.parm_type = 5, '耗电量','用水量'  ) AS "attributeName",
         </if>
-            s.SCENE_NAME AS "deviceName",
-            p.parm_type AS "attributeType",
-            da.unit AS "unit",
+        s.SCENE_NAME AS "deviceName",
+        p.parm_type AS "attributeType",
+        da.unit AS "unit",
 
-            ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
-            max( r.COLLECT_DATE ) AS "date"
+        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
         left join sms_scene s on s.id=p.parent_scene_id
@@ -320,19 +320,19 @@
     </select>
     <select id="MonitorDataEnergyReportByYear" resultMap="MonitorDataChartReportMap">
         SELECT
-            r.`month` AS "dateLabel",
+        r.`month` AS "dateLabel",
         <if test="sceneType != null and sceneType == 1">
             IF( p.parm_type = 5, '耗电量','取水量'  ) AS "attributeName",
         </if>
         <if test="sceneType == null or sceneType == 0">
             IF( p.parm_type = 5, '耗电量','用水量'  ) AS "attributeName",
         </if>
-            s.SCENE_NAME AS "deviceName",
-            p.parm_type AS "attributeType",
-            da.unit AS "unit",
+        s.SCENE_NAME AS "deviceName",
+        p.parm_type AS "attributeType",
+        da.unit AS "unit",
 
-            ifnull( ROUND( sum( r.SUM_VALUE ), 2 ), 0 ) AS "data",
-            max( r.COLLECT_DATE ) AS "date"
+        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
         left join sms_scene s on s.id=p.parent_scene_id
@@ -562,7 +562,7 @@
         select
         a.*,DATE_ADD(#{beginDate},INTERVAL a.dateLabel-1 ${dateType}) as "date"
         from (
-            select
+        select
         ${dateType}(ad.ALARM_START_TIME) as  "dateLabel"
 
         <if test="dateType != null and dateType == 'month'">
@@ -575,24 +575,24 @@
             ,DATE_FORMAT(max(ad.ALARM_START_TIME),'%Y-%m-%d %H:00') as "dateStringLabel"
         </if>
 
-            ,ad.PARENT_SCENE_NAME as "deviceName"
-            ,'报警次数' as "attributeName"
-            ,count(1) as "monitorData"
-            ,count(1) as "data"
-            from sms_alarm_details ad
-            left join sms_device d on ad.DEVICE_ID=d.ID
+        ,ad.PARENT_SCENE_NAME as "deviceName"
+        ,'报警次数' as "attributeName"
+        ,count(1) as "monitorData"
+        ,count(1) as "data"
+        from sms_alarm_details ad
+        left join sms_device d on ad.DEVICE_ID=d.ID
 
-            where ad.ALARM_START_TIME &lt; #{endDate} and ad.ALARM_START_TIME >= #{beginDate} and d.ENABLE_STATE = 1  and d.`STATUS`= 1
-            <if test="sceneIds != null and sceneIds.size()>0">
-                and ad.parent_scene_id  in
-                <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
-                    #{item}
-                </foreach>
-            </if>
-            <if test="tenantId != null and tenantId != '' ">
-                and d.tenant_id = #{tenantId}
-            </if>
-            <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+        where ad.ALARM_START_TIME &lt; #{endDate} and ad.ALARM_START_TIME >= #{beginDate} and d.ENABLE_STATE = 1  and d.`STATUS`= 1
+        <if test="sceneIds != null and sceneIds.size()>0">
+            and ad.parent_scene_id  in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="tenantId != null and tenantId != '' ">
+            and d.tenant_id = #{tenantId}
+        </if>
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
                 and ( d.DEPT_ORG_ID in
                 <foreach collection="programItems" item="item" open="(" close=")" separator=",">
@@ -620,84 +620,69 @@
             </if>
         </if>
 
-            group by ad.PARENT_SCENE_NAME,${dateType}(ad.ALARM_START_TIME)
+        group by ad.PARENT_SCENE_NAME,${dateType}(ad.ALARM_START_TIME)
         )a
         order by deviceName,dateLabel
     </select>
     <!-- 根据场景类型查询设备-->
     <select id="getDeviceBySceneTypeName" resultType="com.huaxu.entity.DeviceEntity">
-    select
+        select
         distinct d.DEVICE_NAME as "deviceName",d.id
-    from sms_scene_type st
-    left join sms_scene s on s.SCENE_TYPE_ID =st.id
-    left join sms_device_scene ds on ds.SCENE_ID=s.ID
-    left join sms_device d on d.id=ds.DEVICE_ID
-    where st.SCENE_TYPE_NAME=#{sceneTypeName} and d.`STATUS`= 1 and  d.ENABLE_STATE = 1 and s.ENABLE_STATE = 1 and  ds.status=1
-    <if test="tenantId != null and tenantId != '' ">
-        and d.tenant_id = #{tenantId}
-    </if>
-    <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
-        <if test="permissonType == 5 or permissonType == 2">
-            and ( d.DEPT_ORG_ID in
-            <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                #{item.orgId}
-            </foreach>
-            or
-            d.COMPANY_ORG_ID in
-            <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                #{item.orgId}
-            </foreach>
-            )
-        </if>
-        <if test="permissonType == 4 or permissonType == 3">
-            and d.DEPT_ORG_ID in
-            <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                #{item.orgId}
-            </foreach>
+        from sms_scene_type st
+        left join sms_scene s on s.SCENE_TYPE_ID =st.id
+        left join sms_device_scene ds on ds.SCENE_ID=s.ID
+        left join sms_device d on d.id=ds.DEVICE_ID
+        where st.SCENE_TYPE_NAME=#{sceneTypeName} and d.`STATUS`= 1 and  d.ENABLE_STATE = 1 and s.ENABLE_STATE = 1 and  ds.status=1
+        <if test="tenantId != null and tenantId != '' ">
+            and d.tenant_id = #{tenantId}
         </if>
-        <if test="permissonType == 1">
-            and d.COMPANY_ORG_ID in
-            <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                #{item.orgId}
-            </foreach>
-            and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( d.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                d.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and d.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and d.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
+            </if>
         </if>
-    </if>
 
-</select>
+    </select>
 
     <!-- 设备报表 -->
     <select id="MonitorDataDeviceReportByDay" resultMap="MonitorDataChartReportMap">
         SELECT
-            d.DEVICE_NAME AS "deviceName",
-            p.parm_type AS "attributeType",
-            IF( p.parm_type = 13, '压力',
-                IF( p.parm_type = 14, '瞬时流量',
-                    IF( p.parm_type = 16, '流速',
-                        IF( p.parm_type = 7, 'PH',
-                            IF( p.parm_type = 15, 'COD',
-                                IF( p.parm_type = 9, '浊度',
-                                    IF( p.parm_type = 11, '余氯', '' )))))))
-            AS "attributeName",
-            da.unit AS "unit",
-            r.`HOUR` AS "dateLabel",
-            ifnull( ROUND( sum( r.AVG_VALUE ), 2 ), 0 ) AS "data",
-            max( r.COLLECT_DATE ) AS "date"
+        d.DEVICE_NAME AS "deviceName",
+        p.parm_type AS "attributeType",
+        IFNULL(p.REMARK,da.`NAME`) AS "attributeName",
+        da.unit AS "unit",
+        r.`HOUR` AS "dateLabel",
+        ifnull( ROUND( sum( r.AVG_VALUE ), 2 ), 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
         left join sms_device_attribute  da ON da.id = p.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = p.DEVICE_ID
-        WHERE p.`STATUS`= 1   and d.ENABLE_STATE = 1  and d.`STATUS`= 1
+
+        WHERE p.`STATUS`= 1 and p.IS_CHART = 1 and d.ENABLE_STATE = 1  and d.`STATUS`= 1
         AND r.YEAR = #{year}  and r.month=#{month}  and r.day=#{day}
-        <if test="searchType != null and searchType == 1">
-            and p.parm_type = 13
-        </if>
-        <if test="searchType != null and searchType == 2">
-            and p.parm_type in (14,16)
-        </if>
-        <if test="searchType != null and searchType == 3">
-            and p.parm_type in (7,9,11,15)
-        </if>
         <if test="deviceIds != null and deviceIds.size()>0">
             and d.id in
             <foreach collection="deviceIds" item="item" open="(" close=")" separator=",">
@@ -734,21 +719,15 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        GROUP BY d.DEVICE_NAME, p.parm_type,da.unit,r.HOUR
+        GROUP BY d.DEVICE_NAME, p.parm_type,p.REMARK,da.`NAME`,da.unit,r.HOUR
         order by r.`hour` asc
     </select>
+
     <select id="MonitorDataDeviceReportByMonth" resultMap="MonitorDataChartReportMap">
         SELECT
         d.DEVICE_NAME AS "deviceName",
         p.parm_type AS "attributeType",
-        IF( p.parm_type = 13, '压力',
-            IF( p.parm_type = 14, '瞬时流量',
-                IF( p.parm_type = 16, '流速',
-                    IF( p.parm_type = 7, 'PH',
-                        IF( p.parm_type = 15, 'COD',
-                            IF( p.parm_type = 9, '浊度',
-                                IF( p.parm_type = 11, '余氯', '' )))))))
-        AS "attributeName",
+        IFNULL(p.REMARK,da.`NAME`) AS "attributeName",
         da.unit AS "unit",
         r.`day` AS "dateLabel",
         ifnull( ROUND( sum( r.AVG_VALUE ), 2 ), 0 ) AS "data",
@@ -757,17 +736,8 @@
         LEFT JOIN sms_month_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         left join sms_device_attribute  da ON da.id = p.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = p.DEVICE_ID
-        WHERE p.`STATUS`= 1   and d.ENABLE_STATE = 1
+        WHERE p.`STATUS`= 1 and p.IS_CHART =1  and d.ENABLE_STATE = 1
         AND r.YEAR = #{year}  and r.month=#{month}
-        <if test="searchType != null and searchType == 1">
-            and p.parm_type = 13
-        </if>
-        <if test="searchType != null and searchType == 2">
-            and p.parm_type in (14,16)
-        </if>
-        <if test="searchType != null and searchType == 3">
-            and p.parm_type in (7,9,11,15)
-        </if>
         <if test="deviceIds != null and deviceIds.size()>0">
             and d.id in
             <foreach collection="deviceIds" item="item" open="(" close=")" separator=",">
@@ -804,21 +774,14 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        GROUP BY d.DEVICE_NAME, p.parm_type,da.unit,r.day
+        GROUP BY d.DEVICE_NAME, p.parm_type,p.REMARK,da.`NAME`,da.unit,r.day
         order by r.day asc
     </select>
     <select id="MonitorDataDeviceReportByYear" resultMap="MonitorDataChartReportMap">
         SELECT
         d.DEVICE_NAME AS "deviceName",
         p.parm_type AS "attributeType",
-        IF( p.parm_type = 13, '压力',
-            IF( p.parm_type = 14, '瞬时流量',
-                IF( p.parm_type = 16, '流速',
-                    IF( p.parm_type = 7, 'PH',
-                        IF( p.parm_type = 15, 'COD',
-                            IF( p.parm_type = 9, '浊度',
-                                IF( p.parm_type = 11, '余氯', '' )))))))
-        AS "attributeName",
+        IFNULL(p.REMARK,da.`NAME`) AS "attributeName",
         da.unit AS "unit",
         r.month AS "dateLabel",
         ifnull( ROUND( sum( r.AVG_VALUE ), 2 ), 0 ) AS "data",
@@ -827,17 +790,8 @@
         LEFT JOIN sms_year_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         left join sms_device_attribute  da ON da.id = p.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = p.DEVICE_ID
-        WHERE p.`STATUS`= 1   and d.ENABLE_STATE = 1
+        WHERE p.`STATUS`= 1 and p.IS_CHART =1  and d.ENABLE_STATE = 1
         AND r.YEAR = #{year}
-        <if test="searchType != null and searchType == 1">
-            and p.parm_type = 13
-        </if>
-        <if test="searchType != null and searchType == 2">
-            and p.parm_type in (14,16)
-        </if>
-        <if test="searchType != null and searchType == 3">
-            and p.parm_type in (7,9,11,15)
-        </if>
         <if test="deviceIds != null and deviceIds.size()>0">
             and d.id in
             <foreach collection="deviceIds" item="item" open="(" close=")" separator=",">
@@ -874,7 +828,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        GROUP BY d.DEVICE_NAME, p.parm_type,da.unit,r.month
+        GROUP BY d.DEVICE_NAME, p.parm_type,p.REMARK,da.`NAME`,da.unit,r.month
         order by r.`month` asc
     </select>
 
@@ -917,18 +871,18 @@
         select distinct d.DEVICE_CODE
         FROM sms_scene_type st
         LEFT JOIN sms_scene s ON s.SCENE_TYPE_ID = st.ID
-        LEFT JOIN sms_device_scene ds ON ds.PARENT_SCENE_ID = s.ID
+        LEFT JOIN sms_device_scene ds ON (ds.PARENT_SCENE_ID = s.ID or ds.SCENE_ID = s.ID)
         LEFT JOIN sms_device d ON d.id = ds.DEVICE_ID
         WHERE st.`STATUS` = 1 AND s.`STATUS` = 1 AND ds.`STATUS` = 1 AND d.`STATUS` = 1
-            <if test="companyOrgId != null">
-                and d.COMPANY_ORG_ID =#{companyOrgId}
-            </if>
-            <if test="sceneId != null">
-                and s.id =#{sceneId}
-            </if>
-            <if test="sceneTypeName != null and sceneTypeName != ''">
-                AND st.SCENE_TYPE_NAME = #{sceneTypeName}
-            </if>
+        <if test="companyOrgId != null">
+            and d.COMPANY_ORG_ID =#{companyOrgId}
+        </if>
+        <if test="sceneId != null">
+            and s.id =#{sceneId}
+        </if>
+        <if test="sceneTypeName != null and sceneTypeName != ''">
+            AND st.SCENE_TYPE_NAME = #{sceneTypeName}
+        </if>
         and s.TENANT_ID=#{tenantId}
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
@@ -961,9 +915,9 @@
     </select>
 
     <select id="getDeviceWaterFor30Day" resultType="com.huaxu.dto.generalView.DeviceWaterSupply">
-         select
-              r.year,r.month,r.day,
-            sum(r.SUM_VALUE)/10000 as "amount"
+        select
+        r.year,r.month,r.day,
+        sum(r.SUM_VALUE)/10000 as "amount"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
@@ -971,7 +925,7 @@
 
         where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = '水厂' and s.ENABLE_STATE = 1
         and dp.PARM_TYPE = 3   and dp.TENANT_ID=#{tenantId}
-        and r.COLLECT_DATE >= DATE_SUB(CURDATE(),INTERVAL 29 day)
+        and r.COLLECT_DATE >= DATE_SUB(CURDATE(),INTERVAL 14 day)
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
                 and ( s.DEPT_ORG_ID in
@@ -1005,10 +959,10 @@
 
     <select id="getDeviceWaterDetailForNow" resultType="com.huaxu.dto.generalView.DeviceWaterDetail">
         select
-            s.SCENE_NAME as "sceneName"
-            ,dp.DEVICE_ID as "deviceId"
-            ,dp.ATTRIBUTE_ID as "attributeId"
-            ,dp.PARM_TYPE as "parmType"
+        s.SCENE_NAME as "sceneName"
+        ,dp.DEVICE_ID as "deviceId"
+        ,dp.ATTRIBUTE_ID as "attributeId"
+        ,dp.PARM_TYPE as "parmType"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
@@ -1045,11 +999,11 @@
     </select>
     <select id="getDeviceWaterDetailForDay" resultType="com.huaxu.dto.generalView.DeviceWaterDetail">
         select
-             s.SCENE_NAME as "sceneName"
-            ,dp.DEVICE_ID as "deviceId"
-            ,dp.ATTRIBUTE_ID as "attributeId"
-            ,dp.PARM_TYPE as "parmType"
-            ,r.LATEST_VALUE  as "latestValue"
+        s.SCENE_NAME as "sceneName"
+        ,dp.DEVICE_ID as "deviceId"
+        ,dp.ATTRIBUTE_ID as "attributeId"
+        ,dp.PARM_TYPE as "parmType"
+        ,r.LATEST_VALUE  as "latestValue"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
@@ -1100,14 +1054,14 @@
     </select>
     <select id="getDeviceWaterDetailForMonth" resultType="java.math.BigDecimal">
         select
-            sum(ifnull(r.SUM_VALUE,0)) as "amount"
+        sum(ifnull(r.SUM_VALUE,0)) as "amount"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
         left join sms_month_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID and r.year = #{year} and r.month= #{month}
         where  dp.`STATUS`=1
         <if test="sceneTypeName!=null">
-           and st.SCENE_TYPE_NAME = #{sceneTypeName}
+            and st.SCENE_TYPE_NAME = #{sceneTypeName}
         </if>
         <if test="sceneTypeName == null">
             and (st.SCENE_TYPE_NAME = '水源' or st.SCENE_TYPE_NAME = '水厂' or st.SCENE_TYPE_NAME = '泵站')
@@ -1151,7 +1105,7 @@
     </select>
     <select id="getDeviceWaterDetailForYear" resultType="java.math.BigDecimal">
         select
-            sum(ifnull(r.SUM_VALUE,0)) as "amount"
+        sum(ifnull(r.SUM_VALUE,0)) as "amount"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
@@ -1204,7 +1158,7 @@
 
     <select id="getAlarmInfoForScene" resultType="com.huaxu.dto.generalView.SceneAlarm">
         select
-			s.SCENE_NAME as "sceneName",count(ad.id) as "alarmNumber"
+        s.SCENE_NAME as "sceneName",count(ad.id) as "alarmNumber"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id and s.PARENT_SCENE_ID = 0
         left join sms_alarm_details ad on ad.STATE = 1 and ad.PARENT_SCENE_ID=s.id
@@ -1244,24 +1198,24 @@
 
     <select id="getQualificationForScene" resultType="com.huaxu.dto.generalView.SceneNormalRate">
         select
-            sum(if(alarmNumber > 0 ,1,0)) as  "abnormal",
-            sum(if(alarmNumber > 0 ,0,1)) as  "normal",
-            ROUND(sum(if(alarmNumber > 0 ,0,1))/if(count(1) != 0, count(1),1) * 100,2) as "normalRate"
+        sum(if(alarmNumber > 0 ,1,0)) as  "abnormal",
+        sum(if(alarmNumber > 0 ,0,1)) as  "normal",
+        ROUND(sum(if(alarmNumber > 0 ,0,1))/if(count(1) != 0, count(1),1) * 100,2) as "normalRate"
         from (
-            select
-                s.SCENE_NAME as "sceneName"
-                <if test="parmType != null and  parmType == -1">
-                    ,sum( if(dp.PARM_TYPE IN ( 15, 8, 10, 11, 18, 19 ) and ad.id is not null,1,0) ) AS "alarmNumber"
-                </if>
-                <if test="parmType != null and  parmType != -1">
-                    ,sum( if(dp.PARM_TYPE = #{parmType} and ad.id is not null,1,0) ) AS "alarmNumber"
-                </if>
+        select
+        s.SCENE_NAME as "sceneName"
+        <if test="parmType != null and  parmType == -1">
+            ,sum( if(dp.PARM_TYPE IN ( 15, 8, 10, 11, 18, 19 ) and ad.id is not null,1,0) ) AS "alarmNumber"
+        </if>
+        <if test="parmType != null and  parmType != -1">
+            ,sum( if(dp.PARM_TYPE = #{parmType} and ad.id is not null,1,0) ) AS "alarmNumber"
+        </if>
         from sms_scene_type st
-            left join sms_scene s on s.SCENE_TYPE_ID =st.id and PARENT_SCENE_ID ='0'
-            left join sms_device_parm dp on dp.PARENT_SCENE_ID =s.ID
-            left join sms_alarm_details ad on ad.STATE = 1 and ad.PARENT_SCENE_ID=dp.PARENT_SCENE_ID and ad.DEVICE_ID =dp.DEVICE_ID and ad.ATTRIBUTE_ID =dp.ATTRIBUTE_ID
+        left join sms_scene s on s.SCENE_TYPE_ID =st.id and PARENT_SCENE_ID ='0'
+        left join sms_device_parm dp on dp.PARENT_SCENE_ID =s.ID
+        left join sms_alarm_details ad on ad.STATE = 1 and ad.PARENT_SCENE_ID=dp.PARENT_SCENE_ID and ad.DEVICE_ID =dp.DEVICE_ID and ad.ATTRIBUTE_ID =dp.ATTRIBUTE_ID
 
-            where s.`STATUS`=1  and s.ENABLE_STATE = 1 and st.SCENE_TYPE_NAME = '水厂' and s.TENANT_ID =#{tenantId}  and dp.`STATUS` = 1
+        where s.`STATUS`=1  and s.ENABLE_STATE = 1 and st.SCENE_TYPE_NAME = '水厂' and s.TENANT_ID =#{tenantId}  and dp.`STATUS` = 1
 
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
@@ -1290,27 +1244,27 @@
                 and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
             </if>
         </if>
-            group by s.SCENE_NAME
+        group by s.SCENE_NAME
         ) a
 
     </select>
 
     <select id="getWaterSupplyData" resultType="com.huaxu.dto.generalView.WaterSupplyData">
-         select
-             r.year
-            ,r.month
-            ,r.day
-            ,dp.PARM_TYPE as "parmType"
-            ,sum(r.SUM_VALUE) as "amount"
-            ,da.UNIT as "unit"
+        select
+        r.year
+        ,r.month
+        ,r.day
+        ,dp.PARM_TYPE as "parmType"
+        ,sum(r.SUM_VALUE) as "amount"
+        ,da.UNIT as "unit"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
         left join sms_device_attribute da on dp.ATTRIBUTE_ID =da.ID
         left join sms_month_report r on r.DEVICE_ID =dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
         where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = #{sceneTypeName} and s.ENABLE_STATE = 1
-            and r.COLLECT_DATE >= DATE_SUB(CURDATE(),INTERVAL 7 day)
-            and dp.PARM_TYPE in (3,5,6)   and dp.TENANT_ID=#{tenantId}
+        and r.COLLECT_DATE >= DATE_SUB(CURDATE(),INTERVAL 7 day)
+        and dp.PARM_TYPE in (3,5,6)   and dp.TENANT_ID=#{tenantId}
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
                 and ( s.DEPT_ORG_ID in
@@ -1449,7 +1403,7 @@
         left join sms_month_report r on r.DEVICE_ID =dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
         where  dp.`STATUS`=1
         <if test="sceneTypeName != null ">
-           and st.SCENE_TYPE_NAME = #{sceneTypeName}
+            and st.SCENE_TYPE_NAME = #{sceneTypeName}
         </if>
         <if test="sceneTypeName == null ">
             and st.SCENE_TYPE_NAME in ('水源','水厂','泵站')
@@ -1491,36 +1445,36 @@
         select  sum(ifnull(a.WATER_USAGE,0)) as "amount"
         from sms_month_sellwater a
         <where>
-        <if test="companyOrgId != null">
-            and a.COMPANY_ORG_ID = #{companyOrgId}
-        </if>
-        and a.TENANT_ID=#{tenantId}
-        <if test="searchType ==1">
-          and  date_format(a.COLLECT_DATE, '%Y-%m') = DATE_FORMAT(now(), '%Y-%m')
-        </if>
-        <if test="searchType ==2">
-         and   date_format(a.COLLECT_DATE, '%Y') = DATE_FORMAT(now(), '%Y')
-        </if>
-        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
-            <if test="permissonType == 5 or permissonType == 2">
-               and a.COMPANY_ORG_ID in
-                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                    #{item.orgId}
-                </foreach>
+            <if test="companyOrgId != null">
+                and a.COMPANY_ORG_ID = #{companyOrgId}
             </if>
-            <if test="permissonType == 4 or permissonType == 3">
-                and a.COMPANY_ORG_ID in
-                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                    #{item.orgId}
-                </foreach>
+            and a.TENANT_ID=#{tenantId}
+            <if test="searchType ==1">
+                and  date_format(a.COLLECT_DATE, '%Y-%m') = DATE_FORMAT(now(), '%Y-%m')
             </if>
-            <if test="permissonType == 1">
-                and a.COMPANY_ORG_ID in
-                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
-                    #{item.orgId}
-                </foreach>
+            <if test="searchType ==2">
+                and   date_format(a.COLLECT_DATE, '%Y') = DATE_FORMAT(now(), '%Y')
+            </if>
+            <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+                <if test="permissonType == 5 or permissonType == 2">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="permissonType == 4 or permissonType == 3">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
             </if>
-        </if>
         </where>
     </select>
     <select id="monthMonitorData" resultMap="MonitorDataChartReportMap">
@@ -1528,10 +1482,10 @@
         r.`day` AS "dateLabel",
         CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
         r.DEVICE_CODE AS "devoceCode",
-        r.ATTRIBUTE_NAME AS "attributeName",
+        IFNULL(p.REMARK, r.ATTRIBUTE_NAME) AS "attributeName",
         da.unit AS "unit",
 
-        ROUND( sum(r.AVG_VALUE), 2 ) AS "data",
+        ROUND( sum(r.AVG_VALUE), 3 ) 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
@@ -1580,14 +1534,7 @@
         SELECT
         d.DEVICE_NAME AS "deviceName",
         p.parm_type AS "attributeType",
-        IF( p.parm_type = 13, '压力',
-        IF( p.parm_type = 14, '瞬时流量',
-        IF( p.parm_type = 16, '流速',
-        IF( p.parm_type = 7, 'PH',
-        IF( p.parm_type = 15, 'COD',
-        IF( p.parm_type = 9, '浊度',
-        IF( p.parm_type = 11, '余氯', '' )))))))
-        AS "attributeName",
+        IFNULL(p.REMARK,da.`NAME`) AS "attributeName",
         da.unit AS "unit",
         r.`day` AS "dateLabel",
         ifnull( ROUND( sum( r.AVG_VALUE ), 2 ), 0 ) AS "data",
@@ -1596,19 +1543,10 @@
         LEFT JOIN sms_month_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         left join sms_device_attribute  da ON da.id = p.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = p.DEVICE_ID
-        WHERE p.`STATUS`= 1   and d.ENABLE_STATE = 1
+        WHERE p.`STATUS`= 1 and p.IS_CHART = 1  and d.ENABLE_STATE = 1
         <if test="startTime != null and endTime != null ">
             and r.COLLECT_DATE BETWEEN #{startTime} AND #{endTime}
         </if>
-        <if test="searchType != null and searchType == 1">
-            and p.parm_type = 13
-        </if>
-        <if test="searchType != null and searchType == 2">
-            and p.parm_type in (14,16)
-        </if>
-        <if test="searchType != null and searchType == 3">
-            and p.parm_type in (7,9,11,15)
-        </if>
         <if test="deviceIds != null and deviceIds.size()>0">
             and d.id in
             <foreach collection="deviceIds" item="item" open="(" close=")" separator=",">
@@ -1645,7 +1583,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        GROUP BY d.DEVICE_NAME, p.parm_type,da.unit,r.day
+        GROUP BY d.DEVICE_NAME, p.parm_type,p.REMARK,da.`NAME`,da.unit,r.day
         order by r.day asc
     </select>
     <select id="MonitorDataEnergyReport" resultMap="MonitorDataChartReportMap">
@@ -1661,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

+ 19 - 9
sms_water/src/main/resources/mapper/MonthReportMapper.xml

@@ -142,10 +142,14 @@
         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"
+        <if test="monthReport.type != null">
+            a.DEVICE_NAME as "deviceName"
+        </if>
+        <if test="monthReport.type == null">
+            b.parent_scene_id as "parentSceneId",
+            c.SCENE_NAME as "parentSceneName",
+            t.SCENE_TYPE_NAME as "sceneTypeName"
+        </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">
@@ -156,6 +160,7 @@
         </if>
         and b.`STATUS`=1
         inner join sms_scene c on b.PARENT_SCENE_ID=c.id
+        inner join sms_scene_type t on c.SCENE_TYPE_ID  = t.id
         <where>
             b.IS_REPORT=1
             <if test="monthReport.tenantId != null  and monthReport.tenantId != ''">and a.tenant_id =
@@ -179,14 +184,19 @@
                 </foreach>
             </if>
         </where>
-        order by  b.parent_scene_id,a.year,a.month,a.day
+        <if test="monthReport.type == null">
+            order by b.parent_scene_id,a.year,a.month,a.day
+        </if>
+        <if test="monthReport.type != null">
+            order by a.year,a.month,a.day
+        </if>
     </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
@@ -210,7 +220,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">
@@ -343,7 +353,7 @@
         sum(a.SUM_VALUE) as "sumValue"
         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 and b.`STATUS`=1
-        where DATE_SUB(CURDATE(), INTERVAL 30 DAY) &lt;= date(a.COLLECT_DATE)
+        where DATE_SUB(CURDATE(), INTERVAL 15 DAY) &lt;= date(a.COLLECT_DATE)
         and b.PARM_TYPE=3 and b.PARENT_SCENE_ID in
         <foreach collection="monthReport.parentSceneLists" item="dramaId" open="(" close=")" separator=",">
             #{dramaId.id}

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

@@ -133,10 +133,10 @@
     </sql>
 
     <sql id="deviceInnerJoins">
-        inner join sms_scene_type t3 on t1.scene_type_id=t3.id
+        inner join sms_scene_type t3 on t1.scene_type_id=t3.id and t3. status = 1
         inner join sms_device_scene t2 on t2.parent_scene_id=t1.id and t2. status = 1
         inner join sms_device t6 on t2.device_id=t6.id and t6. status = 1 and t6.enable_state = 1
-        inner join sms_scene t4 on t2.scene_id=t4.id
+        inner join sms_scene t4 on t2.scene_id=t4.id and t4. status = 1
         inner join sms_scene_type t5 on t4.scene_type_id=t5.id and t5. status = 1
     </sql>
 
@@ -440,7 +440,7 @@
     </select>
     <!--查询设备地图参数数据-->
     <select id="selectDeviceMapParam" resultMap="deviceDataMap">
-        select distinct t1.id device_id,t1.device_code,t1.device_name,t1.point_x,point_y,t1.address,t2.attribute_id, ifnull(t2.remark, t3.`name`) attribute_name,t3.unit,
+        select distinct t1.id device_id,t1.device_code,t1.device_name,t1.point_x,point_y,t1.address,t2.attribute_id, ifnull(t2.remark, t3.`name`) attribute_name,t3.unit,t2.parm_type attribute_type,
          t2.seq,case when t2.attribute_id is  null then null when t6.id is null then 0 else 1 end is_alarm,concat(t11.alarm_condition,cast(t11.alarm_value as char)+0) alarm_range
         <if test="flag == null or flag ==0">
             ,if (t4.alarm_count>0, 1, 0) device_state
@@ -655,7 +655,7 @@
             </if>
             from sms_alarm_details a1 where a1.`status` = 1 and a1.state = 1 group by a1.scene_id, a1.device_id
         )t7 on t7.scene_id=t2.scene_id and t7.device_id=t2.device_id
-        left join sms_device_parm t8 on t8.scene_id = t2.scene_id and t8.device_id=t2.device_id and t8. status = 1 and t8.is_suspension = 1
+        left join sms_device_parm t8 on t8.device_id=t2.device_id and t8. status = 1 and t8.is_suspension = 1
         left join sms_device_attribute t9 on t8.attribute_id=t9.id and t9.status = 1
         left join sms_alarm_details t10 on t10.scene_id=t2.scene_id and t10.device_id=t2.device_id and t10.attribute_id=t8.attribute_id and t10.status = 1 and t10.state=1
         left join sms_alarm_setting t11 on t10.alarm_setting_id=t11.id and t11.status = 1 and t11.alarm_condition!='='

+ 18 - 8
sms_water/src/main/resources/mapper/YearReportMapper.xml

@@ -141,10 +141,14 @@
         a.tenant_id as "tenantId" ,
         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"
+        <if test="yearReport.type != null">
+            a.DEVICE_NAME as "deviceName"
+        </if>
+        <if test="yearReport.type == null">
+            b.parent_scene_id as "parentSceneId",
+            c.SCENE_NAME as "parentSceneName",
+            t.SCENE_TYPE_NAME as "sceneTypeName"
+        </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">
@@ -155,6 +159,7 @@
         </if>
         and b.`STATUS`=1
         inner join sms_scene c on b.PARENT_SCENE_ID=c.id
+        inner join sms_scene_type t on c.SCENE_TYPE_ID  = t.id
         <where>
             b.IS_REPORT=1
             <if test="yearReport.tenantId != null  and yearReport.tenantId != ''">and a.tenant_id =
@@ -176,14 +181,19 @@
                 </foreach>
             </if>
         </where>
-        order by  b.parent_scene_id,a.year,a.month
+        <if test="yearReport.type == null">
+            order by b.parent_scene_id,a.year,a.month
+        </if>
+        <if test="yearReport.type != null">
+            order by a.year,a.month
+        </if>
     </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
@@ -203,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">
         select