Browse Source

Merge remote-tracking branch 'origin/master'

hym 4 years ago
parent
commit
1b4d806d08
30 changed files with 1613 additions and 83 deletions
  1. 5 0
      sms_water/pom.xml
  2. 76 0
      sms_water/src/main/java/com/huaxu/controller/MapSettingController.java
  3. 33 21
      sms_water/src/main/java/com/huaxu/controller/OnlineMonitorController.java
  4. 3 1
      sms_water/src/main/java/com/huaxu/controller/SystemSettingController.java
  5. 34 0
      sms_water/src/main/java/com/huaxu/dao/DayReportMapper.java
  6. 18 0
      sms_water/src/main/java/com/huaxu/dao/MapSettingMapper.java
  7. 37 0
      sms_water/src/main/java/com/huaxu/dao/MonthReportMapper.java
  8. 13 0
      sms_water/src/main/java/com/huaxu/dao/OnlineMonitorMapper.java
  9. 37 0
      sms_water/src/main/java/com/huaxu/dao/YearReportMapper.java
  10. 3 0
      sms_water/src/main/java/com/huaxu/dto/AlarmDetailsDto.java
  11. 9 3
      sms_water/src/main/java/com/huaxu/dto/MonitorDataCollectDto.java
  12. 5 1
      sms_water/src/main/java/com/huaxu/dto/MonitorDataDto.java
  13. 94 0
      sms_water/src/main/java/com/huaxu/dto/OnlineDataDto.java
  14. 127 0
      sms_water/src/main/java/com/huaxu/entity/DayReportEntity.java
  15. 92 0
      sms_water/src/main/java/com/huaxu/entity/MapSetting.java
  16. 53 0
      sms_water/src/main/java/com/huaxu/entity/MonitorDataEntity.java
  17. 23 0
      sms_water/src/main/java/com/huaxu/entity/MonitorDataValueEntity.java
  18. 126 0
      sms_water/src/main/java/com/huaxu/entity/MonthReportEntity.java
  19. 126 0
      sms_water/src/main/java/com/huaxu/entity/YearReportEntity.java
  20. 55 0
      sms_water/src/main/java/com/huaxu/service/DayReportService.java
  21. 43 0
      sms_water/src/main/java/com/huaxu/service/MapSettingService.java
  22. 54 0
      sms_water/src/main/java/com/huaxu/service/MonthReportService.java
  23. 11 5
      sms_water/src/main/java/com/huaxu/service/OnlineMonitorService.java
  24. 7 0
      sms_water/src/main/java/com/huaxu/service/SceneService.java
  25. 55 0
      sms_water/src/main/java/com/huaxu/service/YearReportService.java
  26. 30 1
      sms_water/src/main/java/com/huaxu/service/impl/OnlineMonitorImpl.java
  27. 117 0
      sms_water/src/main/resources/mapper/DayReportMapper.xml
  28. 117 0
      sms_water/src/main/resources/mapper/MonthReportMapper.xml
  29. 93 51
      sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml
  30. 117 0
      sms_water/src/main/resources/mapper/YearReportMapper.xml

+ 5 - 0
sms_water/pom.xml

@@ -68,6 +68,11 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
+	  <!-- mongo db-->
+       <dependency>
+           <groupId>org.springframework.boot</groupId>
+           <artifactId>spring-boot-starter-data-mongodb</artifactId>
+       </dependency>
    </dependencies>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 76 - 0
sms_water/src/main/java/com/huaxu/controller/MapSettingController.java

@@ -0,0 +1,76 @@
+package com.huaxu.controller;
+
+import com.huaxu.entity.MapSetting;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.LoginUser;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.service.MapSettingService;
+import com.huaxu.util.UserUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 地图设置控制层
+ *
+ * @author yjy
+ * @since 2020-12-4
+ */
+@RestController
+@RequestMapping("/mapSetting")
+@Api(tags = "地图设置")
+public class MapSettingController {
+    /**
+     * 服务对象
+     */
+    @Autowired
+    private MapSettingService mapSettingService;
+
+    /**
+     * 根据机构查询地图设置数据
+     *
+     * @param sceneTypeName 一级场景类型名称
+     * @return 单条数据
+     */
+    @RequestMapping(value = "selectMap", method = RequestMethod.GET)
+    @ApiOperation(value = "查询用户单条地图配置数据")
+    public AjaxMessage<MapSetting> selectMap(
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName) {
+       if(sceneTypeName==null) {
+           return new AjaxMessage<>(ResultStatus.PARAM_ERROR);
+       }
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        Integer userId=currentUser.getId();
+        MapSetting result = mapSettingService.selectMap(sceneTypeName,userId);
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+    /**
+     * 保存地图配置数据
+     *
+     * @param mapSetting 地图设置信息
+     * @return
+     */
+    @RequestMapping(value = "saveSystem", method = RequestMethod.POST)
+    @ApiOperation(value = "保存单条地图配置数据")
+    public AjaxMessage<Boolean> saveSystem(
+            @ApiParam(value = "地图设置信息", required = true) @RequestBody MapSetting mapSetting) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        MapSetting idSetting= mapSettingService.selectMap(mapSetting.getSceneTypeName(),currentUser.getId());
+        Integer mapId=idSetting != null?idSetting.getId():null;
+        Integer id = mapSetting.getId() != null?mapSetting.getId():mapId;
+        mapSetting.setUserId(currentUser.getId());
+        if(id==null){//没有查询到数据则新增
+            mapSetting.setCreateBy(currentUser.getUsername());
+        }else {//修改
+            mapSetting.setId(id);
+            mapSetting.setUpdateBy(currentUser.getUsername());
+        }
+        mapSetting.setStatus(1);
+        boolean result = mapSettingService.saveMap(mapSetting);
+
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+
+}

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

@@ -1,12 +1,14 @@
 package com.huaxu.controller;
 
 
-import com.huaxu.common.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.MonitorDataCollectDto;
-import com.huaxu.entity.AlarmDetailsEntity;
+import com.huaxu.dto.OnlineDataDto;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
 import com.huaxu.service.OnlineMonitorService;
 import com.huaxu.service.SceneService;
@@ -17,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -64,7 +65,7 @@ public class OnlineMonitorController {
     }
 
     @RequestMapping(value="selectMapSuspension" , method = RequestMethod.GET)
-    @ApiOperation(value = "查询地图悬浮数据")
+    @ApiOperation(value = "查询地图悬浮数据及用水量排行")
     public AjaxMessage<List<MonitorDataCollectDto>> selectMapSuspension(
             @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName){
         MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
@@ -83,23 +84,34 @@ public class OnlineMonitorController {
         return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectMapParam(monitorDataCollectDto));
     }
 
-    @RequestMapping(value="selectUsageRank" , method = RequestMethod.GET)
-    @ApiOperation(value = "查询用水量排行")
-    public AjaxMessage<List<MonitorDataCollectDto>> selectUsageRank(
-            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName){
-        //查询该场景类型的一级场景
-        SceneEntity sceneEntity = new SceneEntity();
-        sceneEntity.setSceneTypeName(sceneTypeName);
-        List<SceneEntity> sceneEntities = sceneService.selectByTypeName(sceneEntity);
-        List<MonitorDataCollectDto> result=new ArrayList<MonitorDataCollectDto>();
-        for(SceneEntity scene:sceneEntities){
-            MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
-            monitorDataCollectDto.setSceneId(scene.getId());
-            monitorDataCollectDto.setSceneName(scene.getSceneName());
-            //计算用水量
-            result.add(monitorDataCollectDto);
-        }
-        return new AjaxMessage<>(ResultStatus.OK, result);
+    @RequestMapping(value="selectPage" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询实时数据列表")
+    public AjaxMessage<Pagination<OnlineDataDto>> selectPage(
+            @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum,
+            @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize,
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
+            @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){
+        OnlineDataDto onlineDataDto=new OnlineDataDto();
+        onlineDataDto.setSceneTypeName(sceneTypeName);
+        onlineDataDto.setSceneName(sceneName);
+        onlineDataDto.setSceneIds(sceneService.findByParentIdsLike(null));
+
+        IPage<OnlineDataDto> iPage = new Page<>(pageNum, pageSize);
+        iPage = onlineMonitorService.selectPage(iPage, onlineDataDto);
+        Pagination<OnlineDataDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK, pages);
+    }
+
+    @RequestMapping(value="selectAlarmStats" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询设备报警分析")
+    public AjaxMessage<List<Map<String, Object>>> selectAlarmStats(
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
+            @ApiParam(value = "查询天数 1、3、7", required = true) @RequestParam Integer days){
+        AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
+        alarmDetailsDto.setSceneTypeName(sceneTypeName);
+        alarmDetailsDto.setDays(days);
+        alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmStats(alarmDetailsDto));
     }
 
 }

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

@@ -46,8 +46,10 @@ public class SystemSettingController {
     public AjaxMessage<SystemSetting> selectSystem(
             @ApiParam(value = "所属公司", required = false) @RequestParam(required = false) Integer companyOrgId,
             @ApiParam(value = "所属部门", required = false) @RequestParam(required = false) Integer deptOrgId) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
        if(companyOrgId==null&&deptOrgId==null) {
-           return new AjaxMessage<>(ResultStatus.PARAM_ERROR);
+           companyOrgId=currentUser.getCompanyId();
+           deptOrgId=currentUser.getDepartmentId();
        }
         SystemSetting result = systemSettingService.selectSystem(companyOrgId,deptOrgId);
         return new AjaxMessage<>(ResultStatus.OK, result);

+ 34 - 0
sms_water/src/main/java/com/huaxu/dao/DayReportMapper.java

@@ -0,0 +1,34 @@
+package com.huaxu.dao;
+
+import com.huaxu.entity.DayReportEntity;
+import java.io.Serializable;
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+/**
+ *
+ * sms_day_reportDAO接口
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Mapper
+public interface DayReportMapper extends BaseMapper<DayReportEntity> {
+
+	/**
+     * 自定义分页查询
+     * @param  page 
+     * @param  dayReportEntity 实体类
+     */
+     Page<DayReportEntity> findPage(IPage<DayReportEntity> page,
+                                       @Param("dayReport") DayReportEntity dayReportEntity);
+
+     DayReportEntity findDayReportById(Serializable id);
+
+
+     List<DayReportEntity> findList(DayReportEntity dayReportEntity);
+
+     /**删除相关方法  使用mybatis-plus集成的 **/
+}

+ 18 - 0
sms_water/src/main/java/com/huaxu/dao/MapSettingMapper.java

@@ -0,0 +1,18 @@
+package com.huaxu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaxu.entity.MapSetting;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 地图设置Dao接口
+ *
+ * @author yjy
+ * @since 2020-12-4
+ */
+@Mapper
+public interface MapSettingMapper extends BaseMapper<MapSetting> {
+
+
+}

+ 37 - 0
sms_water/src/main/java/com/huaxu/dao/MonthReportMapper.java

@@ -0,0 +1,37 @@
+package com.huaxu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.entity.DayReportEntity;
+import com.huaxu.entity.MonthReportEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *
+ * sms_day_reportDAO接口
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Mapper
+public interface MonthReportMapper extends BaseMapper<MonthReportEntity> {
+
+	/**
+     * 自定义分页查询
+     * @param  page 
+     * @param  monthReportEntity 实体类
+     */
+     Page<MonthReportEntity> findPage(IPage<MonthReportEntity> page,
+                                       @Param("monthReport") MonthReportEntity monthReportEntity);
+
+    MonthReportEntity findMonthReportById(Serializable id);
+
+
+     List<MonthReportEntity> findList(MonthReportEntity monthReportEntity);
+
+     /**删除相关方法  使用mybatis-plus集成的 **/
+}

+ 13 - 0
sms_water/src/main/java/com/huaxu/dao/OnlineMonitorMapper.java

@@ -1,8 +1,11 @@
 package com.huaxu.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.MonitorDataCollectDto;
+import com.huaxu.dto.OnlineDataDto;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
@@ -39,4 +42,14 @@ public interface OnlineMonitorMapper {
      * @return
      */
     List<MonitorDataCollectDto> selectMapParam(MonitorDataCollectDto monitorDataCollectDto);
+    /**
+     * 分页查询
+     * @return
+     */
+    IPage<OnlineDataDto> selectPage(@Param("page") IPage<OnlineDataDto> page, @Param("onlineDataDto") OnlineDataDto onlineDataDto);
+    /**
+     * 查询设备报警分析
+     * @return
+     */
+    List<Map<String, Object>> selectAlarmStats(AlarmDetailsDto alarmDetailsDto);
 }

+ 37 - 0
sms_water/src/main/java/com/huaxu/dao/YearReportMapper.java

@@ -0,0 +1,37 @@
+package com.huaxu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.entity.DayReportEntity;
+import com.huaxu.entity.YearReportEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *
+ * sms_day_reportDAO接口
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Mapper
+public interface YearReportMapper extends BaseMapper<YearReportEntity> {
+
+	/**
+     * 自定义分页查询
+     * @param  page 
+     * @param  yearReportEntity 实体类
+     */
+     Page<YearReportEntity> findPage(IPage<YearReportEntity> page,
+                                       @Param("yearReport") YearReportEntity yearReportEntity);
+
+    YearReportEntity findYearReportById(Serializable id);
+
+
+     List<YearReportEntity> findList(YearReportEntity yearReportEntity);
+
+     /**删除相关方法  使用mybatis-plus集成的 **/
+}

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

@@ -74,6 +74,9 @@ public class AlarmDetailsDto extends AlarmDetailsEntity {
     @ApiModelProperty(value ="一级场景类型名称",hidden = true)
     @JsonIgnore
     private String sceneTypeName;
+    @ApiModelProperty(value ="查询天数",hidden = true)
+    @JsonIgnore
+    private Integer days;
 
 
 }

+ 9 - 3
sms_water/src/main/java/com/huaxu/dto/MonitorDataCollectDto.java

@@ -42,15 +42,21 @@ public class MonitorDataCollectDto {
     @ApiModelProperty(value = "采集时间")
     private Date collectDate;
 
-    @ApiModelProperty("今日供水量")
-    private Double supplyWaterUsage;
+    @ApiModelProperty("今日供水量or今日出水量")
+    private Double yieldWaterUsage;
 
-    @ApiModelProperty("今日取水量")
+    @ApiModelProperty("今日取水量or今日进水量")
     private Double intakeWaterUsage;
 
     @ApiModelProperty("今日耗电量")
     private Double powerUsage;
 
+    @ApiModelProperty("今日耗药量")
+    private Double drugUsage;
+
+    @ApiModelProperty("场景状态 1报警 0正常")
+    private Integer sceneState;
+
     @ApiModelProperty("实时数据")
     private List<MonitorDataDto> MonitorDataEntities;
 

+ 5 - 1
sms_water/src/main/java/com/huaxu/dto/MonitorDataDto.java

@@ -20,6 +20,10 @@ public class MonitorDataDto implements Serializable {
 
     private static final long serialVersionUID = 6916916266193290481L;
 
+    @ApiModelProperty(value = "设备编号")
+    private Integer deviceId;
+    @ApiModelProperty(value = "设备名称")
+    private Integer deviceName;
     @ApiModelProperty(value = "设备属性编号")
     private Integer attributeId;
     @ApiModelProperty(value = "设备属性名称")
@@ -30,6 +34,6 @@ public class MonitorDataDto implements Serializable {
     private String unit;
     @ApiModelProperty(value = "规格值")
     private String specsName;
-    @ApiModelProperty(value = "是否报警")
+    @ApiModelProperty(value = "是否报警 1报警 0正常")
     private Integer isAlarm;
 }

+ 94 - 0
sms_water/src/main/java/com/huaxu/dto/OnlineDataDto.java

@@ -0,0 +1,94 @@
+package com.huaxu.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.huaxu.model.ProgramItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description
+ * @auto yjy
+ * @data 2020-12-3
+ */
+@ApiModel("在线监测列表数据")
+@Data
+public class OnlineDataDto {
+
+    private static final long serialVersionUID = -3866939316262264972L;
+
+    @ApiModelProperty("所属场景id")
+    private Long sceneId;
+
+    @ApiModelProperty("所属场景")
+    private String sceneName;
+
+    @ApiModelProperty("今日供水量、今日出水量")
+    private Double yieldWaterUsage;
+
+    @ApiModelProperty("今日取水量、今日进水量")
+    private Double intakeWaterUsage;
+
+    @ApiModelProperty("今日耗电量")
+    private Double powerUsage;
+
+    @ApiModelProperty("今日耗药量")
+    private Double drugUsage;
+
+    @ApiModelProperty("瞬时流量")
+    private Integer sceneState;
+
+    @ApiModelProperty("供水PH、出水PH")
+    private MonitorDataDto yieldPh;
+
+    @ApiModelProperty("供水浊度、出水浊度")
+    private MonitorDataDto yieldTurbidity;
+
+    @ApiModelProperty("取水PH、进水PH")
+    private MonitorDataDto intakePh;
+
+    @ApiModelProperty("取水浊度、进水浊度")
+    private MonitorDataDto intakeTurbidity;
+
+    @ApiModelProperty("水位")
+    private MonitorDataDto waterLevel;
+
+    @ApiModelProperty("压力")
+    private MonitorDataDto pressure;
+
+    @ApiModelProperty("余氯")
+    private MonitorDataDto residualChlorine;
+
+    @ApiModelProperty("水泵状态")
+    private List<MonitorDataDto> pumpStatus;
+
+    @ApiModelProperty(value = "场景ids" ,hidden = true )
+    @JsonIgnore
+    private List<Long> sceneIds;
+
+    @ApiModelProperty(value = "租户标识",hidden = true)
+    @JsonIgnore
+    private String tenantId;
+
+    @ApiModelProperty(value ="权限",hidden = true)
+    @JsonIgnore
+    private List<ProgramItem> programItems;
+
+    @ApiModelProperty(value="用户权限类型",hidden = true)
+    @JsonIgnore
+    private Integer permissonType;
+
+    /** 用户类型 */
+    @ApiModelProperty(value = "用户类型(-9999 超管 -999普通用户 2普通用户)",hidden = true)
+    @JsonIgnore
+    private String userType;
+
+    @ApiModelProperty(value ="一级场景类型名称",hidden = true)
+    @JsonIgnore
+    private String sceneTypeName;
+}

+ 127 - 0
sms_water/src/main/java/com/huaxu/entity/DayReportEntity.java

@@ -0,0 +1,127 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * sms_day_report
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Data
+@TableName("sms_day_report")
+public class DayReportEntity{
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */ 
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    /** 租户标识 */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    /** 年 */
+    @ApiModelProperty(value = "年")
+    private Integer year;
+
+    /** 月 */
+    @ApiModelProperty(value = "月")
+    private Integer month;
+
+    /** 日 */
+    @ApiModelProperty(value = "日")
+    private Integer day;
+
+    /** 时 */
+    @ApiModelProperty(value = "时")
+    private Integer hour;
+
+    /** 一级场景 */
+    @ApiModelProperty(value = "一级场景")
+    private Long parentSceneId;
+
+    /** 一级场景名称 */
+    @ApiModelProperty(value = "一级场景名称")
+    private String parentSceneName;
+
+    /** 场景信息 */
+    @ApiModelProperty(value = "场景信息")
+    private Long sceneId;
+
+    /** 场景名称 */
+    @ApiModelProperty(value = "场景名称")
+    private String sceneName;
+
+    /** 设备信息 */
+    @ApiModelProperty(value = "设备信息")
+    private Long deviceId;
+
+    /** 设备名称 */
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    /** 设备编号 */
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+
+    /** 设备属性 */
+    @ApiModelProperty(value = "设备属性")
+    private Long attributeId;
+
+    /** 设备属性名称 */
+    @ApiModelProperty(value = "设备属性名称")
+    private String attributeName;
+
+    /** 最小值 */
+    @ApiModelProperty(value = "最小值")
+    private Double minValue;
+
+    /** 最大值 */
+    @ApiModelProperty(value = "最大值")
+    private Double maxValue;
+
+    /** 平均值 */
+    @ApiModelProperty(value = "平均值")
+    private Double avgValue;
+
+    /** 合计值 */
+    @ApiModelProperty(value = "合计值")
+    private Double sumValue;
+
+    /** 最新值 */
+    @ApiModelProperty(value = "最新值")
+    private Double latestValue;
+
+    /** 采集时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @NotNull(message = "参数值不能为空")
+    @ApiModelProperty(value = "采集时间")
+    private Date collectDate;
+
+
+    @JsonIgnore
+    private Date dateCreate;
+
+    @ApiModelProperty(value = "创建人")
+    @JsonIgnore
+    private String createBy;
+
+    @JsonIgnore
+    private Date dateUpdate;
+
+    @ApiModelProperty(value = "更新人")
+    @JsonIgnore
+    private String updateBy;
+}

+ 92 - 0
sms_water/src/main/java/com/huaxu/entity/MapSetting.java

@@ -0,0 +1,92 @@
+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.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 地图设置(sms_map_setting)实体类
+ *
+ * @author yjy
+ * @since 2020-12-4
+ */
+@Data
+@ApiModel
+@TableName("sms_map_setting")
+public class MapSetting implements Serializable {
+    private static final long serialVersionUID = 460807634914426955L;
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "主键")
+    @TableId(type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户编号
+     */
+    @ApiModelProperty(value = "用户编号")
+    private Integer userId;
+    /**
+     * 场景类型名称
+     */
+    @ApiModelProperty(value = "场景类型名称")
+    private String sceneTypeName;
+    /**
+     * 中心点经度
+     */
+    @ApiModelProperty(value = "中心点经度")
+    private BigDecimal pointX;
+    /**
+     * 中心点纬度
+     */
+    @ApiModelProperty(value = "中心点纬度")
+    private BigDecimal pointY;
+    /**
+     * 地图层级
+     */
+    @ApiModelProperty(value = "地图层级")
+    private Integer mapLevel;
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 数据删除标识
+     */
+    @ApiModelProperty(value = "数据删除标识")
+    @TableLogic
+    private Integer status;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date dateCreate;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
+    private Date dateUpdate;
+}

+ 53 - 0
sms_water/src/main/java/com/huaxu/entity/MonitorDataEntity.java

@@ -0,0 +1,53 @@
+package com.huaxu.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.io.Serializable;
+import java.math.BigInteger;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2020-12-01 10:14
+ */
+@Data
+@Document(collection = "SMS_MONITOR_DATA")
+public class MonitorDataEntity implements Serializable {
+
+    private static final long serialVersionUID = 1631901801203895285L;
+
+    @ApiModelProperty("主键")
+    private BigInteger id;
+    @ApiModelProperty("租户标识")
+    private String tenantId;
+    @ApiModelProperty("一级场景信息")
+    private Integer parentSceneId;
+    @ApiModelProperty("一级场景名称")
+    private String parentSceneName;
+    @ApiModelProperty("场景信息")
+    private Integer sceneId;
+    @ApiModelProperty("场景名称")
+    private String sceneName;
+    @ApiModelProperty("设备信息")
+    private Integer deviceId;
+    @ApiModelProperty("设备名称")
+    private String deviceName;
+    @ApiModelProperty("设备编号")
+    private String deviceCode;
+//    @ApiModelProperty("设备属性")
+//    private Integer attributeId;
+//    @ApiModelProperty("设备属性名称")
+//    private String attributeName;
+//
+//    @ApiModelProperty("采集数据")
+//    private BigInteger dataValue;
+    @ApiModelProperty("设备数据")
+    List<MonitorDataValueEntity> dataValues;
+
+    @ApiModelProperty("采集时间")
+    private Date collectDate;
+}

+ 23 - 0
sms_water/src/main/java/com/huaxu/entity/MonitorDataValueEntity.java

@@ -0,0 +1,23 @@
+package com.huaxu.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2020-12-01 10:50
+ */
+@Data
+public class MonitorDataValueEntity {
+
+    @ApiModelProperty("设备属性")
+    private Integer attributeId;
+    @ApiModelProperty("设备属性名称")
+    private String attributeName;
+    @ApiModelProperty("属性标识符")
+    private String identifier;
+    @ApiModelProperty("采集数据")
+    private Double dataValue;
+}

+ 126 - 0
sms_water/src/main/java/com/huaxu/entity/MonthReportEntity.java

@@ -0,0 +1,126 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * sms_day_report
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Data
+@TableName("sms_month_report")
+public class MonthReportEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */ 
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    /** 租户标识 */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    /** 年 */
+    @ApiModelProperty(value = "年")
+    private Integer year;
+
+    /** 月 */
+    @ApiModelProperty(value = "月")
+    private Integer month;
+
+    /** 日 */
+    @ApiModelProperty(value = "日")
+    private Integer day;
+
+    /** 时 */
+    @ApiModelProperty(value = "时")
+    private Integer hour;
+
+    /** 一级场景 */
+    @ApiModelProperty(value = "一级场景")
+    private Long parentSceneId;
+
+    /** 一级场景名称 */
+    @ApiModelProperty(value = "一级场景名称")
+    private String parentSceneName;
+
+    /** 场景信息 */
+    @ApiModelProperty(value = "场景信息")
+    private Long sceneId;
+
+    /** 场景名称 */
+    @ApiModelProperty(value = "场景名称")
+    private String sceneName;
+
+    /** 设备信息 */
+    @ApiModelProperty(value = "设备信息")
+    private Long deviceId;
+
+    /** 设备名称 */
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    /** 设备编号 */
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+
+    /** 设备属性 */
+    @ApiModelProperty(value = "设备属性")
+    private Long attributeId;
+
+    /** 设备属性名称 */
+    @ApiModelProperty(value = "设备属性名称")
+    private String attributeName;
+
+    /** 最小值 */
+    @ApiModelProperty(value = "最小值")
+    private Double minValue;
+
+    /** 最大值 */
+    @ApiModelProperty(value = "最大值")
+    private Double maxValue;
+
+    /** 平均值 */
+    @ApiModelProperty(value = "平均值")
+    private Double avgValue;
+
+    /** 合计值 */
+    @ApiModelProperty(value = "合计值")
+    private Double sumValue;
+
+    /** 最新值 */
+    @ApiModelProperty(value = "最新值")
+    private Double latestValue;
+
+    /** 采集时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @NotNull(message = "参数值不能为空")
+    @ApiModelProperty(value = "采集时间")
+    private Date collectDate;
+
+
+    @JsonIgnore
+    private Date dateCreate;
+
+    @ApiModelProperty(value = "创建人")
+    @JsonIgnore
+    private String createBy;
+
+    @JsonIgnore
+    private Date dateUpdate;
+
+    @ApiModelProperty(value = "更新人")
+    @JsonIgnore
+    private String updateBy;
+}

+ 126 - 0
sms_water/src/main/java/com/huaxu/entity/YearReportEntity.java

@@ -0,0 +1,126 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * sms_day_report
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Data
+@TableName("sms_year_report")
+public class YearReportEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */ 
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    /** 租户标识 */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    /** 年 */
+    @ApiModelProperty(value = "年")
+    private Integer year;
+
+    /** 月 */
+    @ApiModelProperty(value = "月")
+    private Integer month;
+
+    /** 日 */
+    @ApiModelProperty(value = "日")
+    private Integer day;
+
+    /** 时 */
+    @ApiModelProperty(value = "时")
+    private Integer hour;
+
+    /** 一级场景 */
+    @ApiModelProperty(value = "一级场景")
+    private Long parentSceneId;
+
+    /** 一级场景名称 */
+    @ApiModelProperty(value = "一级场景名称")
+    private String parentSceneName;
+
+    /** 场景信息 */
+    @ApiModelProperty(value = "场景信息")
+    private Long sceneId;
+
+    /** 场景名称 */
+    @ApiModelProperty(value = "场景名称")
+    private String sceneName;
+
+    /** 设备信息 */
+    @ApiModelProperty(value = "设备信息")
+    private Long deviceId;
+
+    /** 设备名称 */
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    /** 设备编号 */
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+
+    /** 设备属性 */
+    @ApiModelProperty(value = "设备属性")
+    private Long attributeId;
+
+    /** 设备属性名称 */
+    @ApiModelProperty(value = "设备属性名称")
+    private String attributeName;
+
+    /** 最小值 */
+    @ApiModelProperty(value = "最小值")
+    private Double minValue;
+
+    /** 最大值 */
+    @ApiModelProperty(value = "最大值")
+    private Double maxValue;
+
+    /** 平均值 */
+    @ApiModelProperty(value = "平均值")
+    private Double avgValue;
+
+    /** 合计值 */
+    @ApiModelProperty(value = "合计值")
+    private Double sumValue;
+
+    /** 最新值 */
+    @ApiModelProperty(value = "最新值")
+    private Double latestValue;
+
+    /** 采集时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @NotNull(message = "参数值不能为空")
+    @ApiModelProperty(value = "采集时间")
+    private Date collectDate;
+
+
+    @JsonIgnore
+    private Date dateCreate;
+
+    @ApiModelProperty(value = "创建人")
+    @JsonIgnore
+    private String createBy;
+
+    @JsonIgnore
+    private Date dateUpdate;
+
+    @ApiModelProperty(value = "更新人")
+    @JsonIgnore
+    private String updateBy;
+}

+ 55 - 0
sms_water/src/main/java/com/huaxu/service/DayReportService.java

@@ -0,0 +1,55 @@
+package com.huaxu.service;
+
+
+import com.huaxu.dao.DayReportMapper;
+import com.huaxu.entity.DayReportEntity;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import javax.annotation.Resource;
+
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+import java.util.List;
+import java.util.Arrays;
+
+/**
+ * 日报Service接口
+ *
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Service
+public class DayReportService extends ServiceImpl<DayReportMapper, DayReportEntity> {
+
+    @Resource
+    private DayReportMapper dayReportMapper;
+
+    /**
+     * 查列表
+     */
+    public List<DayReportEntity> findList(DayReportEntity dayReportEntity) {
+        return dayReportMapper.findList(dayReportEntity);
+    }
+
+    /**
+     * 保存
+     */
+    public boolean addDayReport(DayReportEntity dayReport) {
+        if (this.save(dayReport)) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 根居ID获取对象
+     */
+    public DayReportEntity findDayReportById(Long id) {
+        return dayReportMapper.findDayReportById(id);
+    }
+}

+ 43 - 0
sms_water/src/main/java/com/huaxu/service/MapSettingService.java

@@ -0,0 +1,43 @@
+package com.huaxu.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaxu.dao.MapSettingMapper;
+import com.huaxu.entity.MapSetting;
+import com.huaxu.model.LoginUser;
+import com.huaxu.util.UserUtil;
+import org.springframework.stereotype.Service;
+
+/**
+ * 地图设置服务接口
+ *
+ * @author yjy
+ * @since 2020-12-4
+ */
+@Service
+public class MapSettingService extends ServiceImpl<MapSettingMapper,MapSetting> {
+
+    /**
+     * 根据机构查询单条数据
+     *
+     * @param sceneTypeName 一级场景类型名称
+     * @return 单条数据
+     */
+    public MapSetting selectMap(String sceneTypeName,Integer userId){
+        MapSetting res=new MapSetting();
+        if(userId != null) {
+            res = this.getOne(new QueryWrapper<MapSetting>().eq("USER_ID", userId).eq("SCENE_TYPE_NAME",sceneTypeName));
+        }
+        return res;
+    }
+    /**
+     * 保存数据
+     *
+     * @param MapSetting 地图设置信息
+     * @return
+     */
+    public boolean saveMap(MapSetting MapSetting) {
+        return this.saveOrUpdate(MapSetting);
+    }
+
+}

+ 54 - 0
sms_water/src/main/java/com/huaxu/service/MonthReportService.java

@@ -0,0 +1,54 @@
+package com.huaxu.service;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaxu.dao.DayReportMapper;
+import com.huaxu.dao.MonthReportMapper;
+import com.huaxu.entity.DayReportEntity;
+import com.huaxu.entity.MonthReportEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 日报Service接口
+ *
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Service
+public class MonthReportService extends ServiceImpl<MonthReportMapper, MonthReportEntity> {
+
+    @Resource
+    private MonthReportMapper monthReportMapper;
+
+    /**
+     * 查列表
+     */
+    public List<MonthReportEntity> findList(MonthReportEntity monthReportEntity) {
+        return monthReportMapper.findList(monthReportEntity);
+    }
+
+
+
+    /**
+     * 保存
+     */
+    public boolean addMonthReport(MonthReportEntity monthReport) {
+        if (this.save(monthReport)) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 根居ID获取对象
+     */
+    public MonthReportEntity findMonthReportById(Long id) {
+        return monthReportMapper.findMonthReportById(id);
+    }
+}

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

@@ -1,11 +1,7 @@
 package com.huaxu.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.huaxu.dto.AlarmDetailsDto;
-import com.huaxu.dto.AlarmDetailsHistoryDto;
-import com.huaxu.dto.AlarmDetailsRealTimeDto;
-import com.huaxu.dto.MonitorDataCollectDto;
-import com.huaxu.entity.AlarmDetailsEntity;
+import com.huaxu.dto.*;
 
 import java.util.List;
 import java.util.Map;
@@ -37,4 +33,14 @@ public interface OnlineMonitorService {
      * @return
      */
     List<MonitorDataCollectDto> selectMapParam(MonitorDataCollectDto monitorDataCollectDto);
+    /**
+     * 分页查询
+     * @return
+     */
+    IPage<OnlineDataDto> selectPage(IPage<OnlineDataDto> page,  OnlineDataDto onlineDataDto);
+    /**
+     * 查询设备报警分析
+     * @return
+     */
+    List<Map<String, Object>> selectAlarmStats(AlarmDetailsDto alarmDetailsDto);
 }

+ 7 - 0
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -347,6 +347,13 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         if (id != null)
             sceneEntity.setParentSceneIds("%," + id + ",%");
         List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
+        for (SceneEntity item : sceneEntities) {
+            SceneImageEntity sceneImageEntity = new SceneImageEntity();
+            sceneImageEntity.setSceneId(id);
+            List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
+            item.setSceneImages(sceneImageEntities);
+        }
+
         List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
         return sceneTree;
     }

+ 55 - 0
sms_water/src/main/java/com/huaxu/service/YearReportService.java

@@ -0,0 +1,55 @@
+package com.huaxu.service;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaxu.dao.DayReportMapper;
+import com.huaxu.dao.MonthReportMapper;
+import com.huaxu.dao.YearReportMapper;
+import com.huaxu.entity.DayReportEntity;
+import com.huaxu.entity.MonthReportEntity;
+import com.huaxu.entity.YearReportEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 日报Service接口
+ *
+ * @author: WYY
+ * @date 2020-12-03 16:20
+ */
+@Service
+public class YearReportService extends ServiceImpl<YearReportMapper, YearReportEntity> {
+
+    @Resource
+    private YearReportMapper yearReportMapper;
+
+    /**
+     * 查列表
+     */
+    public List<YearReportEntity> findList(YearReportEntity yearReportEntity) {
+        return yearReportMapper.findList(yearReportEntity);
+    }
+
+
+    /**
+     * 保存
+     */
+    public boolean addYearReport(YearReportEntity yearReport) {
+        if (this.save(yearReport)) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 根居ID获取对象
+     */
+    public YearReportEntity findYearReportById(Long id) {
+        return yearReportMapper.findYearReportById(id);
+    }
+}

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

@@ -6,6 +6,7 @@ import com.huaxu.dao.OnlineMonitorMapper;
 import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.DeviceDto;
 import com.huaxu.dto.MonitorDataCollectDto;
+import com.huaxu.dto.OnlineDataDto;
 import com.huaxu.entity.DeviceEntity;
 import com.huaxu.model.LoginUser;
 import com.huaxu.service.DeviceService;
@@ -89,5 +90,33 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
         monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
         return onlineMonitorMapper.selectMapParam(monitorDataCollectDto);
     }
-
+    /**
+     * 分页查询
+     * @return
+     */
+    @Override
+    public IPage<OnlineDataDto> selectPage(IPage<OnlineDataDto> page, OnlineDataDto onlineDataDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        onlineDataDto.setTenantId(loginUser.getTenantId());
+        onlineDataDto.setProgramItems(loginUser.getProgramItemList());
+        onlineDataDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        onlineDataDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectPage(page,onlineDataDto);
+    }
+    /**
+     * 查询设备报警分析
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> selectAlarmStats(AlarmDetailsDto alarmDetailsDto)
+    {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        alarmDetailsDto.setTenantId(loginUser.getTenantId());
+        alarmDetailsDto.setProgramItems(loginUser.getProgramItemList());
+        alarmDetailsDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        alarmDetailsDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectAlarmStats(alarmDetailsDto);
+    }
 }

+ 117 - 0
sms_water/src/main/resources/mapper/DayReportMapper.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.DayReportMapper">
+
+
+    <resultMap type="DayReportEntity" id="DayReportResult">
+        <result property="id" column="id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="year" column="year"/>
+        <result property="month" column="month"/>
+        <result property="day" column="day"/>
+        <result property="hour" column="hour"/>
+        <result property="parentSceneId" column="parent_scene_id"/>
+        <result property="parentSceneName" column="parent_scene_name"/>
+        <result property="sceneId" column="scene_id"/>
+        <result property="sceneName" column="scene_name"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="deviceName" column="device_name"/>
+        <result property="deviceCode" column="device_code"/>
+        <result property="attributeId" column="attribute_id"/>
+        <result property="attributeName" column="attribute_name"/>
+        <result property="minValue" column="min_value"/>
+        <result property="maxValue" column="max_value"/>
+        <result property="avgValue" column="avg_value"/>
+        <result property="sumValue" column="sum_value"/>
+        <result property="latestValue" column="latest_value"/>
+        <result property="collectDate" column="collect_date"/>
+        <result property="dateCreate" column="date_create"/>
+        <result property="createBy" column="create_by"/>
+        <result property="dateUpdate" column="date_update"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!--  实体栏位  -->
+    <sql id="dayReportColumns">
+         a.id as "id" ,
+         a.tenant_id as "tenantId" ,
+         a.year as "year" ,
+         a.month as "month" ,
+         a.day as "day" ,
+         a.hour as "hour" ,
+         a.parent_scene_id as "parentSceneId" ,
+         a.parent_scene_name as "parentSceneName" ,
+         a.scene_id as "sceneId" ,
+         a.scene_name as "sceneName" ,
+         a.device_id as "deviceId" ,
+         a.device_name as "deviceName" ,
+         a.device_code as "deviceCode" ,
+         a.attribute_id as "attributeId" ,
+         a.attribute_name as "attributeName" ,
+         a.min_value as "minValue" ,
+         a.max_value as "maxValue" ,
+         a.avg_value as "avgValue" ,
+         a.sum_value as "sumValue" ,
+         a.latest_value as "latestValue" ,
+         a.collect_date as "collectDate" ,
+         a.date_create as "dateCreate" ,
+         a.create_by as "createBy" ,
+         a.date_update as "dateUpdate" ,
+         a.update_by as "updateBy" 
+     </sql>
+
+
+    <!--  根据主键获取实体   -->
+    <select id="findDayReportById" resultType="com.huaxu.entity.DayReportEntity">
+        SELECT
+        <include refid="dayReportColumns"/>
+        FROM sms_day_report a
+        WHERE a.id = #{id}
+    </select>
+
+    <!--  根据获取实体List   -->
+    <select id="findList" resultType="com.huaxu.entity.DayReportEntity">
+        SELECT
+        <include refid="dayReportColumns"/>
+        FROM sms_day_report a
+        <where>
+            <if test="tenantId != null  and tenantId != ''">and a.tenant_id = #{tenantId}</if>
+            <if test="year != null ">and a.year = #{year}</if>
+            <if test="month != null ">and a.month = #{month}</if>
+            <if test="day != null ">and a.day = #{day}</if>
+            <if test="hour != null ">and a.hour = #{hour}</if>
+            <if test="parentSceneId != null ">and a.parent_scene_id = #{parentSceneId}</if>
+            <if test="sceneId != null ">and a.scene_id = #{sceneId}</if>
+            <if test="deviceId != null ">and a.device_id = #{deviceId}</if>
+            <if test="deviceCode != null  and deviceCode != ''">and a.device_code = #{deviceCode}</if>
+            <if test="attributeId != null ">and a.attribute_id = #{attributeId}</if>
+            <if test="collectDate != null ">and a.collect_date = #{collectDate}</if>
+        </where>
+    </select>
+
+    <!--  根据获取实体 page   -->
+    <select id="findPage" resultType="com.huaxu.entity.DayReportEntity">
+        SELECT
+        <include refid="dayReportColumns"/>
+        FROM sms_day_report a
+        <where>
+            <if test="dayReport.tenantId != null  and dayReport.tenantId != ''">and a.tenant_id =
+                #{dayReport.tenantId}
+            </if>
+            <if test="dayReport.year != null ">and a.year = #{dayReport.year}</if>
+            <if test="dayReport.month != null ">and a.month = #{dayReport.month}</if>
+            <if test="dayReport.day != null ">and a.day = #{dayReport.day}</if>
+            <if test="dayReport.hour != null ">and a.hour = #{dayReport.hour}</if>
+            <if test="dayReport.parentSceneId != null ">and a.parent_scene_id = #{dayReport.parentSceneId}</if>
+            <if test="dayReport.sceneId != null ">and a.scene_id = #{dayReport.sceneId}</if>
+            <if test="dayReport.deviceId != null ">and a.device_id = #{dayReport.deviceId}</if>
+            <if test="dayReport.deviceCode != null  and dayReport.deviceCode != ''">and a.device_code =
+                #{dayReport.deviceCode}
+            </if>
+            <if test="dayReport.attributeId != null ">and a.attribute_id = #{dayReport.attributeId}</if>
+            <if test="dayReport.collectDate != null ">and a.collect_date = #{dayReport.collectDate}</if>
+        </where>
+    </select>
+</mapper>

+ 117 - 0
sms_water/src/main/resources/mapper/MonthReportMapper.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.MonthReportMapper">
+
+
+    <resultMap type="MonthReportEntity" id="MonthReportResult">
+        <result property="id" column="id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="year" column="year"/>
+        <result property="month" column="month"/>
+        <result property="day" column="day"/>
+        <result property="hour" column="hour"/>
+        <result property="parentSceneId" column="parent_scene_id"/>
+        <result property="parentSceneName" column="parent_scene_name"/>
+        <result property="sceneId" column="scene_id"/>
+        <result property="sceneName" column="scene_name"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="deviceName" column="device_name"/>
+        <result property="deviceCode" column="device_code"/>
+        <result property="attributeId" column="attribute_id"/>
+        <result property="attributeName" column="attribute_name"/>
+        <result property="minValue" column="min_value"/>
+        <result property="maxValue" column="max_value"/>
+        <result property="avgValue" column="avg_value"/>
+        <result property="sumValue" column="sum_value"/>
+        <result property="latestValue" column="latest_value"/>
+        <result property="collectDate" column="collect_date"/>
+        <result property="dateCreate" column="date_create"/>
+        <result property="createBy" column="create_by"/>
+        <result property="dateUpdate" column="date_update"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!--  实体栏位  -->
+    <sql id="monthReportColumns">
+         a.id as "id" ,
+         a.tenant_id as "tenantId" ,
+         a.year as "year" ,
+         a.month as "month" ,
+         a.day as "day" ,
+         a.hour as "hour" ,
+         a.parent_scene_id as "parentSceneId" ,
+         a.parent_scene_name as "parentSceneName" ,
+         a.scene_id as "sceneId" ,
+         a.scene_name as "sceneName" ,
+         a.device_id as "deviceId" ,
+         a.device_name as "deviceName" ,
+         a.device_code as "deviceCode" ,
+         a.attribute_id as "attributeId" ,
+         a.attribute_name as "attributeName" ,
+         a.min_value as "minValue" ,
+         a.max_value as "maxValue" ,
+         a.avg_value as "avgValue" ,
+         a.sum_value as "sumValue" ,
+         a.latest_value as "latestValue" ,
+         a.collect_date as "collectDate" ,
+         a.date_create as "dateCreate" ,
+         a.create_by as "createBy" ,
+         a.date_update as "dateUpdate" ,
+         a.update_by as "updateBy" 
+     </sql>
+
+
+    <!--  根据主键获取实体   -->
+    <select id="findMonthReportById" resultType="com.huaxu.entity.MonthReportEntity">
+        SELECT
+        <include refid="monthReportColumns"/>
+        FROM sms_month_report a
+        WHERE a.id = #{id}
+    </select>
+
+    <!--  根据获取实体List   -->
+    <select id="findList" resultType="com.huaxu.entity.MonthReportEntity">
+        SELECT
+        <include refid="monthReportColumns"/>
+        FROM sms_month_report a
+        <where>
+            <if test="tenantId != null  and tenantId != ''">and a.tenant_id = #{tenantId}</if>
+            <if test="year != null ">and a.year = #{year}</if>
+            <if test="month != null ">and a.month = #{month}</if>
+            <if test="day != null ">and a.day = #{day}</if>
+            <if test="hour != null ">and a.hour = #{hour}</if>
+            <if test="parentSceneId != null ">and a.parent_scene_id = #{parentSceneId}</if>
+            <if test="sceneId != null ">and a.scene_id = #{sceneId}</if>
+            <if test="deviceId != null ">and a.device_id = #{deviceId}</if>
+            <if test="deviceCode != null  and deviceCode != ''">and a.device_code = #{deviceCode}</if>
+            <if test="attributeId != null ">and a.attribute_id = #{attributeId}</if>
+            <if test="collectDate != null ">and a.collect_date = #{collectDate}</if>
+        </where>
+    </select>
+
+    <!--  根据获取实体 page   -->
+    <select id="findPage" resultType="com.huaxu.entity.MonthReportEntity">
+        SELECT
+        <include refid="monthReportColumns"/>
+        FROM sms_month_report a
+        <where>
+            <if test="monthReport.tenantId != null  and monthReport.tenantId != ''">and a.tenant_id =
+                #{monthReport.tenantId}
+            </if>
+            <if test="monthReport.year != null ">and a.year = #{monthReport.year}</if>
+            <if test="monthReport.month != null ">and a.month = #{monthReport.month}</if>
+            <if test="monthReport.day != null ">and a.day = #{monthReport.day}</if>
+            <if test="monthReport.hour != null ">and a.hour = #{monthReport.hour}</if>
+            <if test="monthReport.parentSceneId != null ">and a.parent_scene_id = #{monthReport.parentSceneId}</if>
+            <if test="monthReport.sceneId != null ">and a.scene_id = #{monthReport.sceneId}</if>
+            <if test="monthReport.deviceId != null ">and a.device_id = #{monthReport.deviceId}</if>
+            <if test="monthReport.deviceCode != null  and monthReport.deviceCode != ''">and a.device_code =
+                #{monthReport.deviceCode}
+            </if>
+            <if test="monthReport.attributeId != null ">and a.attribute_id = #{monthReport.attributeId}</if>
+            <if test="monthReport.collectDate != null ">and a.collect_date = #{monthReport.collectDate}</if>
+        </where>
+    </select>
+</mapper>

+ 93 - 51
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -8,14 +8,41 @@
         <result property="pointX" column="point_x" jdbcType="VARCHAR"/>
         <result property="pointY" column="point_y" jdbcType="VARCHAR"/>
         <result property="address" column="address" jdbcType="VARCHAR"/>
+        <result property="sceneState" column="scene_state" jdbcType="INTEGER"/>
         <collection property="MonitorDataEntities" ofType="com.huaxu.dto.MonitorDataDto" javaType="list">
+            <result property="deviceId" column="device_id" jdbcType="INTEGER"/>
             <result property="attributeId" column="attribute_id" jdbcType="INTEGER"/>
             <result property="attributeName" column="attribute_name" jdbcType="VARCHAR"/>
             <result property="unit" column="unit" jdbcType="VARCHAR"/>
             <result property="isAlarm" column="is_Alarm" jdbcType="VARCHAR"/>
         </collection>
     </resultMap>
+    <sql id="Base_Column_List">
+        t1.id scene_Id,
+        t1.scene_name ,
+        t1.point_x ,
+        t1.point_y,
+        t1.address ,
+        if (t7.alarm_count>0, 1, 0) scene_state,
+        t5.device_id,
+        t5.attribute_id ,
+        ifnull(t5.remark, t5.`name`) attribute_name,
+        t5.unit ,
+        if (t6.id is null, 0, 1) is_alarm
+    </sql>
 
+    <sql id="monitorDataJoins">
+        inner join sms_scene t2 on find_in_set(t1.id, t2.parent_scene_ids) and t2. status = 1
+        inner join sms_scene_type t3 on t3.id = t1.scene_type_id and t3. status = 1
+        left join sms_device t4 on t4.scene_id=t2.id
+        left join (
+            select substring_index(substring_index(a3.parent_scene_ids, ',', 2), ',', -1) one_scene_id,count(1) alarm_count
+            from sms_device a1
+            inner join sms_alarm_details a2 on a1.id=a2.device_id and a2.`status` = 1 and  a2.state = 1
+            inner join sms_scene a3 on a3.id=a1.scene_id and a3.`status` = 1
+            where a1.`status` = 1 group by one_scene_id
+        )t7 on t7.one_scene_id=t1.id
+    </sql>
     <!--查询实时报警信息-->
     <select id="selectAlarmDetails" resultType="com.huaxu.dto.AlarmDetailsDto">
         select
@@ -73,66 +100,81 @@
     <!--查询地图悬浮数据-->
     <select id="selectMapSuspension" resultMap="monitorDataMap">
         select
-        t4.id scene_Id,
-        t4.scene_name ,
-        t4.point_x ,
-        t4.point_y,
-        t4.address ,
-        t3.attribute_id ,
-        ifnull(t3.remark, t2.`name`) attribute_Name,
-        t2.unit ,
-        if (t5.id is null, 0, 1) is_Alarm
-        from sms_device t1
-        inner join sms_device_attribute t2 on t1.device_type_id = t2.device_type_id and t2.`status` = 1
-        inner join sms_device_parm t3 on t1.id = t3.device_id and t3.attribute_id = t2.id and t3.`status` = 1
-        inner join (
-            select a.id,a.scene_name,a.point_x,a.point_y,a.address,b.id c_id,b.scene_name c_scene_name
-            from sms_scene a
-            inner join sms_scene b on find_in_set(a.id, b.parent_scene_ids) and b. status = 1
-            inner join sms_scene_type s on s.id = a.scene_type_id and s. status = 1
-            where a.parent_scene_id = 0 and a. status = 1 and s.scene_type_name = #{sceneTypeName}
-            <if test="sceneIds != null and sceneIds.size() > 0">
-                and b.id  in
-                <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
-                    #{item}
-                </foreach>
-            </if>
-        ) t4 on t1.scene_id = t4.c_id
-        left join sms_alarm_details t5 on t5.device_id = t1.id and t5.attribute_id = t3.attribute_id and t5.state = 1
-        where t1.`status` = 1 and t3.is_suspension = 1
-        order by t4.scene_name,t3.seq
+        <include refid="Base_Column_List"/>
+        from sms_scene t1
+        <include refid="monitorDataJoins"/>
+        left join(
+            select a1.device_id,a1.attribute_id,a1.remark,a1.seq,a2.name,a2.unit from sms_device_parm a1
+            inner join sms_device_attribute a2 on a1.attribute_id=a2.id
+            where a1. status = 1 and a1.device_id is not null and a1.attribute_id is not null and a2.status = 1 and a1.is_suspension = 1
+        )t5 on t5.device_id=t4.id
+        left join sms_alarm_details t6 on t6.device_id = t4.id and t6.attribute_id = t5.attribute_id and t6.state = 1
+        where t1.parent_scene_id = 0 and t1. status = 1 and t3.scene_type_name = #{sceneTypeName}
+        <if test="sceneIds != null and sceneIds.size() > 0">
+            and t1.id  in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        order by t1.scene_name,t5.seq
     </select>
     <!--查询地图参数数据-->
     <select id="selectMapParam" resultMap="monitorDataMap">
         select
-        t4.id scene_Id,
-        t4.scene_name ,
-        t4.point_x ,
-        t4.point_y,
-        t4.address ,
-        t3.attribute_id ,
-        ifnull(t3.remark, t2.`name`) attribute_Name,
-        t2.unit ,
-        if (t5.id is null, 0, 1) is_Alarm
-        from sms_device t1
-        inner join sms_device_attribute t2 on t1.device_type_id = t2.device_type_id and t2.`status` = 1
-        inner join sms_device_parm t3 on t1.id = t3.device_id and t3.attribute_id = t2.id and t3.`status` = 1
-        inner join (
-        select a.id,a.scene_name,a.point_x,a.point_y,a.address,b.id c_id,b.scene_name c_scene_name
-        from sms_scene a
-        inner join sms_scene b on find_in_set(a.id, b.parent_scene_ids) and b. status = 1
-        inner join sms_scene_type s on s.id = a.scene_type_id and s. status = 1
-        where a.parent_scene_id = 0 and a. status = 1 and a.id = #{sceneId}
+        <include refid="Base_Column_List"/>
+        from sms_scene t1
+        <include refid="monitorDataJoins"/>
+        left join(
+            select a1.device_id,a1.attribute_id,a1.remark,a1.seq,a2.name,a2.unit from sms_device_parm a1
+            inner join sms_device_attribute a2 on a1.attribute_id=a2.id
+            where a1. status = 1 and a1.device_id is not null and a1.attribute_id is not null and a2.status = 1 and a1.is_map = 1
+        )t5 on t5.device_id=t4.id
+        left join sms_alarm_details t6 on t6.device_id = t4.id and t6.attribute_id = t5.attribute_id and t6.state = 1
+        where t1.parent_scene_id = 0 and t1. status = 1 and t1.id = #{sceneId}
         <if test="sceneIds != null and sceneIds.size() > 0">
-            and b.id  in
+            and t1.id  in
             <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-        ) t4 on t1.scene_id = t4.c_id
-        left join sms_alarm_details t5 on t5.device_id = t1.id and t5.attribute_id = t3.attribute_id and t5.state = 1
-        where t1.`status` = 1 and t3.is_map = 1
-        order by t4.scene_name,t3.seq
+        order by t1.scene_name,t5.seq
     </select>
+    <select id="selectPage" resultType="com.huaxu.dto.OnlineDataDto">
+        select t1.id scene_id,t1.scene_name
+        from sms_scene t1
+        inner join sms_scene t2 on find_in_set(t1.id, t2.parent_scene_ids) and t2. status = 1
+        inner join sms_scene_type t3 on t3.id = t1.scene_type_id and t3. status = 1
+        where t1.parent_scene_id = 0 and t1. status = 1 and t3.scene_type_name = #{onlineDataDto.sceneTypeName}
+        <if test="onlineDataDto.sceneIds != null and onlineDataDto.sceneIds.size() > 0">
+            and t1.id  in
+            <foreach collection="onlineDataDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
 
+    </select>
+    <!--查询实时报警数量-->
+    <select id="selectAlarmStats" resultType="java.util.Map">
+        select
+        t4.id,
+        t4.device_name as "deviceName",
+        count(1) as "alarmCount",
+        sum(timestampdiff(minute,t5.alarm_start_time,ifnull(t5.alarm_end_time,now()))) as "alarmduration"
+        from sms_scene t1
+        inner join sms_scene t2 on find_in_set(t1.id, t2.parent_scene_ids) and t2. status = 1
+        inner join sms_scene_type t3 on t3.id = t1.scene_type_id and t3. status = 1
+        inner join sms_device t4 on t4.scene_id=t2.id and t4.`status`=1
+        inner join sms_alarm_details t5 on t5.device_id=t4.id and t5. status = 1
+        where t1.parent_scene_id = 0 and t1. status = 1 and t3.scene_type_name = #{sceneTypeName}
+        <if test="sceneIds != null and sceneIds.size() > 0">
+            and t1.id  in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="days != null">
+            and t5.alarm_start_time>DATE(NOW() + INTERVAL-#{days}+1 DAY)
+        </if>
+        group by t4.id,t4.device_name
+    </select>
 </mapper>

+ 117 - 0
sms_water/src/main/resources/mapper/YearReportMapper.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.YearReportMapper">
+
+
+    <resultMap type="YearReportEntity" id="YearReportResult">
+        <result property="id" column="id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="year" column="year"/>
+        <result property="month" column="month"/>
+        <result property="day" column="day"/>
+        <result property="hour" column="hour"/>
+        <result property="parentSceneId" column="parent_scene_id"/>
+        <result property="parentSceneName" column="parent_scene_name"/>
+        <result property="sceneId" column="scene_id"/>
+        <result property="sceneName" column="scene_name"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="deviceName" column="device_name"/>
+        <result property="deviceCode" column="device_code"/>
+        <result property="attributeId" column="attribute_id"/>
+        <result property="attributeName" column="attribute_name"/>
+        <result property="minValue" column="min_value"/>
+        <result property="maxValue" column="max_value"/>
+        <result property="avgValue" column="avg_value"/>
+        <result property="sumValue" column="sum_value"/>
+        <result property="latestValue" column="latest_value"/>
+        <result property="collectDate" column="collect_date"/>
+        <result property="dateCreate" column="date_create"/>
+        <result property="createBy" column="create_by"/>
+        <result property="dateUpdate" column="date_update"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!--  实体栏位  -->
+    <sql id="yearReportColumns">
+         a.id as "id" ,
+         a.tenant_id as "tenantId" ,
+         a.year as "year" ,
+         a.month as "month" ,
+         a.day as "day" ,
+         a.hour as "hour" ,
+         a.parent_scene_id as "parentSceneId" ,
+         a.parent_scene_name as "parentSceneName" ,
+         a.scene_id as "sceneId" ,
+         a.scene_name as "sceneName" ,
+         a.device_id as "deviceId" ,
+         a.device_name as "deviceName" ,
+         a.device_code as "deviceCode" ,
+         a.attribute_id as "attributeId" ,
+         a.attribute_name as "attributeName" ,
+         a.min_value as "minValue" ,
+         a.max_value as "maxValue" ,
+         a.avg_value as "avgValue" ,
+         a.sum_value as "sumValue" ,
+         a.latest_value as "latestValue" ,
+         a.collect_date as "collectDate" ,
+         a.date_create as "dateCreate" ,
+         a.create_by as "createBy" ,
+         a.date_update as "dateUpdate" ,
+         a.update_by as "updateBy" 
+     </sql>
+
+
+    <!--  根据主键获取实体   -->
+    <select id="findYearReportById" resultType="com.huaxu.entity.YearReportEntity">
+        SELECT
+        <include refid="yearReportColumns"/>
+        FROM sms_year_report a
+        WHERE a.id = #{id}
+    </select>
+
+    <!--  根据获取实体List   -->
+    <select id="findList" resultType="com.huaxu.entity.YearReportEntity">
+        SELECT
+        <include refid="yearReportColumns"/>
+        FROM sms_year_report a
+        <where>
+            <if test="tenantId != null  and tenantId != ''">and a.tenant_id = #{tenantId}</if>
+            <if test="year != null ">and a.year = #{year}</if>
+            <if test="month != null ">and a.month = #{month}</if>
+            <if test="day != null ">and a.day = #{day}</if>
+            <if test="hour != null ">and a.hour = #{hour}</if>
+            <if test="parentSceneId != null ">and a.parent_scene_id = #{parentSceneId}</if>
+            <if test="sceneId != null ">and a.scene_id = #{sceneId}</if>
+            <if test="deviceId != null ">and a.device_id = #{deviceId}</if>
+            <if test="deviceCode != null  and deviceCode != ''">and a.device_code = #{deviceCode}</if>
+            <if test="attributeId != null ">and a.attribute_id = #{attributeId}</if>
+            <if test="collectDate != null ">and a.collect_date = #{collectDate}</if>
+        </where>
+    </select>
+
+    <!--  根据获取实体 page   -->
+    <select id="findPage" resultType="com.huaxu.entity.YearReportEntity">
+        SELECT
+        <include refid="yearReportColumns"/>
+        FROM sms_year_report a
+        <where>
+            <if test="yearReport.tenantId != null  and yearReport.tenantId != ''">and a.tenant_id =
+                #{yearReport.tenantId}
+            </if>
+            <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
+            <if test="yearReport.month != null ">and a.month = #{yearReport.month}</if>
+            <if test="yearReport.day != null ">and a.day = #{yearReport.day}</if>
+            <if test="yearReport.hour != null ">and a.hour = #{yearReport.hour}</if>
+            <if test="yearReport.parentSceneId != null ">and a.parent_scene_id = #{yearReport.parentSceneId}</if>
+            <if test="yearReport.sceneId != null ">and a.scene_id = #{yearReport.sceneId}</if>
+            <if test="yearReport.deviceId != null ">and a.device_id = #{yearReport.deviceId}</if>
+            <if test="yearReport.deviceCode != null  and yearReport.deviceCode != ''">and a.device_code =
+                #{yearReport.deviceCode}
+            </if>
+            <if test="yearReport.attributeId != null ">and a.attribute_id = #{yearReport.attributeId}</if>
+            <if test="yearReport.collectDate != null ">and a.collect_date = #{yearReport.collectDate}</if>
+        </where>
+    </select>
+</mapper>