瀏覽代碼

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

yuejiaying 3 年之前
父節點
當前提交
1cab7ea65b
共有 21 個文件被更改,包括 487 次插入88 次删除
  1. 1 1
      operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java
  2. 1 0
      readme.md
  3. 128 49
      sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java
  4. 2 0
      sms_water/src/main/java/com/huaxu/dao/DeviceParmMapper.java
  5. 3 0
      sms_water/src/main/java/com/huaxu/dao/ReportDimensionSettingMapper.java
  6. 1 0
      sms_water/src/main/java/com/huaxu/dto/ReportDto.java
  7. 2 0
      sms_water/src/main/java/com/huaxu/dto/ReportQueryDto.java
  8. 3 0
      sms_water/src/main/java/com/huaxu/entity/ReportDimensionSettingEntity.java
  9. 75 6
      sms_water/src/main/java/com/huaxu/service/AbstractReportService.java
  10. 2 0
      sms_water/src/main/java/com/huaxu/service/DeviceParmService.java
  11. 82 12
      sms_water/src/main/java/com/huaxu/service/MonthReportService.java
  12. 2 0
      sms_water/src/main/java/com/huaxu/service/ReportDimensionSettingService.java
  13. 45 8
      sms_water/src/main/java/com/huaxu/service/ReportService.java
  14. 1 0
      sms_water/src/main/java/com/huaxu/service/YearReportService.java
  15. 5 0
      sms_water/src/main/java/com/huaxu/service/impl/DeviceParmServiceImpl.java
  16. 7 2
      sms_water/src/main/java/com/huaxu/service/impl/ReportDimensionSettingServiceImpl.java
  17. 45 0
      sms_water/src/main/java/com/huaxu/util/MongoDbUtil.java
  18. 1 1
      sms_water/src/main/resources/logback-spring.xml
  19. 15 6
      sms_water/src/main/resources/mapper/DataAlarmManageMapper.xml
  20. 59 1
      sms_water/src/main/resources/mapper/DeviceParmMapper.xml
  21. 7 2
      sms_water/src/main/resources/mapper/ReportDimensionSettingMapper.xml

+ 1 - 1
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java

@@ -84,7 +84,7 @@ public class WorkOrderManageController {
     @Value("${UMIS.sys_video_path}")
     private String videoDir;
 
-    @Value("{UMIS.sys_app_package_path}")
+    @Value("${UMIS.sys_app_package_path}")
     private String appPackageDir;
 
     /**select

+ 1 - 0
readme.md

@@ -250,6 +250,7 @@ CREATE TABLE `uims_ver_manage` (
 
 
 =========已升级到正式环境20210527==================================================================================
+ALTER TABLE sms_report_dimension_setting ADD type int(1) null COMMENT 'null 统计分析 1历史数据';
 ## sms 调度数据库
 ALTER TABLE sms_water_property ADD TENANT_ID varchar(100) null COMMENT '租户标识'
 ,ADD COMPANY_ORG_ID varchar(11) null COMMENT '所属公司'

+ 128 - 49
sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java

@@ -62,35 +62,6 @@ public class DayMonthYearReportController {
         Pagination<ReportDto> pages = new Pagination<>(iPage);
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
-
-    @ApiOperation(value = "按年月日统计报表")
-    @RequestMapping(value = "/getReportBySceneIdsNews", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getReportBySceneIdsNew(iPage, queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-    @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
-    @RequestMapping(value = "/getDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage, queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
     @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
     @RequestMapping(value = "/getDevicePressReportByDeviceIds", method = RequestMethod.POST)
     @ResponseBody
@@ -118,18 +89,6 @@ public class DayMonthYearReportController {
 
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
-
-    @ApiOperation(value = "按设备统计水质年月日统计报表")
-    @RequestMapping(value = "/getDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
-        queryDto.setType(3);
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage,queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
     @ApiOperation(value = "按设备统计水质年月日统计报表")
     @RequestMapping(value = "/getDevicWaterReportByDeviceIds", method = RequestMethod.POST)
     @ResponseBody
@@ -170,25 +129,123 @@ public class DayMonthYearReportController {
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
 
-    @ApiOperation(value = "获取自定义报表统计维度")
+
+    @ApiOperation(value = "【统计分析】--按年月日统计报表")
+    @RequestMapping(value = "/getReportBySceneIdsNews", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getReportBySceneIdsNew(iPage, queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+
+    @ApiOperation(value = "【历史数据】--按日期获取历史数据统计报表")
+    @RequestMapping(value = "/getHistoryDataReportBySceneIdsNews", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getHistoryDataReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getHistoryDataReportBySceneIdsNews(iPage, queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+    @ApiOperation(value = "【统计分析】--按设备统计压力及流量年月日统计报表")
+    @RequestMapping(value = "/getDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage, queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+    @ApiOperation(value = "【历史数据】--按设备统计压力及流量年月日统计报表")
+    @RequestMapping(value = "/getHistoryDataDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getHistoryDataDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getPipeHistoryDataDevicePressReportByDeviceIds(iPage, queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+    @ApiOperation(value = "【统计分析】--按设备统计水质年月日统计报表")
+    @RequestMapping(value = "/getDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
+        queryDto.setType(3);
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage,queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+    @ApiOperation(value = "【历史数据】--按设备统计水质年月日统计报表")
+    @RequestMapping(value = "/getHistoryDataDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getHistoryDataDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
+        queryDto.setType(3);
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getPipeHistoryDataDevicePressReportByDeviceIds(iPage,queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+    @ApiOperation(value = "【统计分析】--获取自定义报表统计维度")
     @RequestMapping(value = "/getCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> getCustomDimension(
             @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids
-           ) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null));
+    ) {
+        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null,0));
+    }
+
+    @ApiOperation(value = "【历史数据】--获取历史数据自定义报表统计维度")
+    @RequestMapping(value = "/getHistoryDataCustomDimension", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<List<ReportAttributeDto>> getHistoryDataCustomDimension(
+            @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids
+    ) {
+        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null, 1));
     }
 
-    @ApiOperation(value = "获取管网自定义报表统计维度")
+    @ApiOperation(value = "【统计分析】--获取管网自定义报表统计维度")
     @RequestMapping(value = "/getPipelineCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> getPipelineCustomDimension(
             @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) Long deviceId,
             @ApiParam(value = "类型:1压力,2流量,3水质", required = true) @RequestParam(required = true) Integer type) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type));
+        return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type,0));
+    }
+
+    @ApiOperation(value = "【历史数据】--获取管网自定义报表统计维度")
+    @RequestMapping(value = "/getHistoryDataPipelineCustomDimension", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<List<ReportAttributeDto>> getHistoryDataPipelineCustomDimension(
+            @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) Long deviceId,
+            @ApiParam(value = "类型:1压力,2流量,3水质", required = true) @RequestParam(required = true) Integer type) {
+        return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type,1));
     }
 
-    @ApiOperation(value = "修改自定义报表统计维度")
+    @ApiOperation(value = "【统计分析/历史数据】--修改自定义报表统计维度")
     @RequestMapping(value = "/updateCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> updateCustomDimension(@RequestBody @Valid List<ReportStatisticalDimensionDto> dataList) {
@@ -197,8 +254,8 @@ public class DayMonthYearReportController {
     }
 
     @RequestMapping(value = "/export/excel", method = RequestMethod.POST)
-    @ApiOperation(value = "报表导出")
-    public AjaxMessage<String> exportExcel(@RequestBody ReportQueryDto queryDto) {
+    @ApiOperation(value = "【统计分析】--报表导出")
+    public AjaxMessage<String> exportExcel(@RequestBody  @Valid ReportQueryDto queryDto) {
         IPage<ReportDto> iPage = new Page<>(1, 1000000);
         if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
             queryDto.setStartTime(null);
@@ -218,4 +275,26 @@ public class DayMonthYearReportController {
         return new AjaxMessage<>(ResultStatus.OK, filePath);
     }
 
+    @RequestMapping(value = "/export/historyDataExcel", method = RequestMethod.POST)
+    @ApiOperation(value = "【历史数据】--报表导出")
+    public AjaxMessage<String> historyDataExcel(@RequestBody  @Valid ReportQueryDto queryDto) {
+        IPage<ReportDto> iPage = new Page<>(1, 1000000);
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())) {
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        if (queryDto.getType() == null) {
+            iPage = reportService.getHistoryDataReportBySceneIdsNews(iPage, queryDto);
+        } else {
+            iPage = reportService.getPipeHistoryDataDevicePressReportByDeviceIds(iPage, queryDto);
+        }
+        List<ReportDto> list = iPage.getRecords();
+        if (CollectionUtil.isEmpty(list)) {
+            return new AjaxMessage<>(ResultStatus.OK);
+        }
+        List<List<String>> reportTitle = ReportExcelUtil.toExcelTitleList(list.get(0).getReportTitle(), queryDto.getSceneType());
+        String filePath = ExcelUtil.writeSimpleExcelWithHeader(baseDir, SceneEnum.getMsg(queryDto.getSceneType()) + "报表", reportTitle, ReportExcelUtil.toReportExcelDto(list, queryDto.getSceneType()));
+        return new AjaxMessage<>(ResultStatus.OK, filePath);
+    }
+
 }

+ 2 - 0
sms_water/src/main/java/com/huaxu/dao/DeviceParmMapper.java

@@ -71,6 +71,8 @@ public interface DeviceParmMapper  {
 
     List<ReportAttributeDto> findAttributeNameList(@Param("report") ReportDto reportDto);
 
+    List<ReportAttributeDto> findHistoryDataAttributeNameList(@Param("report") ReportDto reportDto);
+
     List<DeviceParmInfoDto> findBySceneDeviceId(@Param("info") DeviceParmInfoDto deviceParmInfo);
 
     List<DeviceParmInfoDto> selectBindByDeviceId(@Param("sceneId")Long sceneId, @Param("deviceId")Long deviceId);

+ 3 - 0
sms_water/src/main/java/com/huaxu/dao/ReportDimensionSettingMapper.java

@@ -2,6 +2,7 @@ package com.huaxu.dao;
 
 import com.huaxu.dto.ReportStatisticalDimensionDto;
 import com.huaxu.entity.ReportDimensionSettingEntity;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -13,5 +14,7 @@ public interface ReportDimensionSettingMapper {
 
     List<ReportDimensionSettingEntity> findDimensionSetting(Integer userId);
 
+    List<ReportDimensionSettingEntity> findHistoryDataDimensionSetting(Integer userId);
+
     void updateDimensionSetting(ReportStatisticalDimensionDto dto);
 }

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

@@ -60,6 +60,7 @@ public class ReportDto implements Serializable {
     List<Map<String,Object>> dataMapValues;
 
     @ApiModelProperty(value = "统计时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
     private String collectDate;
 
     @ApiModelProperty("报表标题")

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

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 @Data
@@ -28,6 +29,7 @@ public class ReportQueryDto implements Serializable {
     private Integer type;
 
     @ApiModelProperty(value = "场景类型:1:水源,2:水厂,3:泵站,4:管网")
+    @NotNull
     private Integer sceneType;
 
     @ApiModelProperty("年")

+ 3 - 0
sms_water/src/main/java/com/huaxu/entity/ReportDimensionSettingEntity.java

@@ -52,4 +52,7 @@ public class ReportDimensionSettingEntity implements Serializable {
 
     @ApiModelProperty(value = "是否展示最新值")
     private boolean showLatestValue;
+
+    @ApiModelProperty(value = "类型 null 统计分析  1历史数据")
+    private Integer type;
 }

+ 75 - 6
sms_water/src/main/java/com/huaxu/service/AbstractReportService.java

@@ -1,7 +1,9 @@
 package com.huaxu.service;
 
+import ch.qos.logback.core.joran.conditional.ElseAction;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaxu.common.StringUtils;
@@ -9,11 +11,15 @@ import com.huaxu.dao.DeviceSceneMapper;
 import com.huaxu.dto.*;
 import com.huaxu.dto.scene.SceneIdDto;
 import com.huaxu.entity.DayReportEntity;
+import com.huaxu.entity.DeviceParmEntity;
+import com.huaxu.entity.MonitorDataEntity;
+import com.huaxu.entity.MonitorDataValueEntity;
 import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -50,7 +56,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         Map<String, Integer> mapsTitle = new LinkedHashMap<>();
         Map<String, ReportAttributeDto> mapsAttributeTitle = new LinkedHashMap<>();
         // 获取标题
-        List<ReportTitleDto> reportTitleDtos = getReportTitle(reportDto, mapsTitle, mapsAttributeTitle);
+        List<ReportTitleDto> reportTitleDtos = getReportTitle(reportDto, mapsTitle, mapsAttributeTitle,0);
         // 固定参数项
         List<ReportDto> reportList = findReport(reportDto);
         // 如果为空,把自定义表头返回回去
@@ -88,8 +94,67 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
             total  ++;
         }
     }
-
-
+    /**
+     * 报表数据处理
+     * @param queryDto
+     * @param devices
+     * @param reportPage
+     */
+    public void  reportHistoryDataHandle(ReportQueryDto queryDto, List<DeviceDto> devices, Page<ReportDto> reportPage, Page<MonitorDataEntity> historyData , boolean isPipe) {
+        // 组装查询参数
+        ReportDto reportDto = getQueryReportDto(queryDto, devices, isPipe);
+        // 设置报表标题
+        Map<String, Integer> mapsTitle = new LinkedHashMap<>();
+        Map<String, ReportAttributeDto> mapsAttributeTitle = new LinkedHashMap<>();
+        // 获取标题
+        List<ReportTitleDto> reportTitleDtos = getReportTitle(reportDto, mapsTitle, mapsAttributeTitle, 1);
+        // 如果为空,把自定义表头返回回去
+        reportPage.setSize(historyData.getSize());
+        reportPage.setCurrent(historyData.getCurrent());
+        reportPage.setTotal(historyData.getTotal());
+        if (CollectionUtil.isEmpty(historyData.getRecords())) {
+            List<ReportDto> reportDtos = new ArrayList<>();
+            ReportDto reportDto1 = new ReportDto();
+            reportDto1.setReportTitle(reportTitleDtos);
+            reportDtos.add(reportDto1);
+            reportPage.setRecords(reportDtos);
+            return;
+        }
+        //获取场景名称
+        String sceneName = "";
+        if(!isPipe) {
+            sceneName = sceneService.getById(queryDto.getIds()[0]).getSceneName();
+        }
+        int total = 0;
+        // 单个属性值
+        List<ReportDto> reportDtos = new LinkedList<>();
+        for (MonitorDataEntity item : historyData.getRecords()) {
+            ReportDto reportDtoTemp = new ReportDto();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            reportDtoTemp.setCollectDate(sdf.format(item.getCollectDate()));
+            reportDtoTemp.setParentSceneName(sceneName);
+            reportDtoTemp.setDeviceIds(devices);
+            reportDtoTemp.setDeviceName(item.getDeviceName());
+            if (total == 0) {
+                reportDtoTemp.setReportTitle(reportTitleDtos);
+            }
+            //动态参数项
+            Map<String, ReportAttributeDto> mapData = new LinkedHashMap<>();
+            for (MonitorDataValueEntity itemData : item.getDataValues()) {
+                if (!mapData.containsKey(itemData.getAttributeId().toString())) {
+                    ReportAttributeDto itemData2 = new ReportAttributeDto();
+                    itemData2.setAttributeName(itemData.getAttributeName());
+                    itemData2.setLatestValue(itemData.getDataValue());
+                    mapData.put(itemData.getAttributeId().toString(), itemData2);
+                }
+            }
+            // 获取统计维度的值
+            reportDtoTemp.setDataMapValues(getStatisticalDimensionsValue(mapsTitle, mapData, mapsAttributeTitle));
+            reportDtos.add(reportDtoTemp);
+            total++;
+        }
+        reportPage.setRecords(reportDtos);
+    }
 
     /**
      * 查询场景下的所有设备信息
@@ -206,10 +271,15 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
      * @return
      */
     public List<ReportTitleDto> getReportTitle(ReportDto reportDto, Map<String, Integer> mapsTitle,
-                                                Map<String, ReportAttributeDto> mapsAttributeTitle){
+                                                Map<String, ReportAttributeDto> mapsAttributeTitle,int reportType){
         // 设置标题
         Map<String, ReportTitleDto> deviceChildrenMap = new HashMap<>();
-        List<ReportAttributeDto> reportAttributeDtos2 = deviceParmService.findAttributeNameList(reportDto);
+        List<ReportAttributeDto> reportAttributeDtos2 = new LinkedList<>();
+        if(reportType==0) {
+            reportAttributeDtos2= deviceParmService.findAttributeNameList(reportDto);
+        }else {
+            reportAttributeDtos2 = deviceParmService.findHistoryDataAttributeNameList(reportDto);
+        }
         int numCount = 0;
         for (ReportAttributeDto reportAttributeDto : reportAttributeDtos2) {
             // 判断开关是否开启
@@ -385,5 +455,4 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
      * @return
      */
     abstract List<ReportAttributeDto> findAttributeList(ReportDto item);
-
 }

+ 2 - 0
sms_water/src/main/java/com/huaxu/service/DeviceParmService.java

@@ -85,6 +85,8 @@ public interface DeviceParmService {
 
     List<ReportAttributeDto> findAttributeNameList(ReportDto reportDto);
 
+    List<ReportAttributeDto> findHistoryDataAttributeNameList(ReportDto reportDto);
+
     List<DeviceParmInfoDto> selectBySceneAndDeviceId(Integer parentSceneId, Integer sceneId, Integer deviceId);
 
     void batchSaveEdit(Long sceneId, Long deviceId,List<DeviceParmInfoDto> deviceParmInfos);

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

@@ -8,16 +8,25 @@ import com.huaxu.dao.DayReportMapper;
 import com.huaxu.dao.MonthReportMapper;
 import com.huaxu.dto.*;
 import com.huaxu.entity.DayReportEntity;
+import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonthReportEntity;
 import com.huaxu.model.LoginUser;
+import com.huaxu.util.MongoDbUtil;
 import com.huaxu.util.UserUtil;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigInteger;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 日报Service接口
@@ -31,6 +40,9 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
     @Resource
     private MonthReportMapper monthReportMapper;
 
+    @Autowired
+    MongoDbUtil mongoDbUtil;
+
     /**
      * 查列表
      */
@@ -141,13 +153,13 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
                 index = i;
             }
         }
-        if (index == -1){
+        if (index == -1) {
             return;
         }
-        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){
+        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));
@@ -173,7 +185,6 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
     }
 
 
-
     public Page<DevicePressReportAttributeDto> findDevicePressPage(IPage<DevicePressReportAttributeDto> page, Long[] ids, Integer year, Integer month, Integer day, Integer type) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         Page<DevicePressReportAttributeDto> reportPage = new Page<>();
@@ -246,28 +257,87 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
     }
 
 
-
-    public Page<ReportDto> findDevicePressPageReport(IPage<ReportDto> page,  ReportQueryDto queryDto) {
+    public Page<ReportDto> findDevicePressPageReport(IPage<ReportDto> page, ReportQueryDto queryDto) {
         Page<ReportDto> reportPage = new Page<>();
         List<DeviceDto> devices = devicesToList(queryDto.getIds());
-        if (devices.size() == 0 ){
+        if (devices.size() == 0) {
             return reportPage;
         }
 
-        reportPage = monthReportMapper.findPageReprot(page, getReportPageQuery(queryDto, devices,true));
+        reportPage = monthReportMapper.findPageReprot(page, getReportPageQuery(queryDto, devices, true));
         reportDataHandle(queryDto, devices, reportPage, true);
         return reportPage;
     }
 
+    /**
+     * 查询历史数据压力及流量统计
+     * @param page
+     * @param queryDto
+     * @return
+     */
+    public Page<ReportDto> findHistoryDataDevicePressPageReport(IPage<ReportDto> page, ReportQueryDto queryDto) {
+        Page<ReportDto> reportPage = new Page<>();
+        List<DeviceDto> devices = devicesToList(queryDto.getIds());
+        if (devices.size() == 0) {
+            return reportPage;
+        }
+        List<Long> deviceIds = new ArrayList<>();
+        deviceIds = devices.stream().map(DeviceDto::getId).collect(Collectors.toList());
+        Query query = new Query();
+        Sort sort = new Sort(Sort.Direction.ASC, "deviceId").and(new Sort(Sort.Direction.ASC, "collectDate"));
+        query.addCriteria(Criteria.where("deviceId").in(deviceIds));
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            query.addCriteria(Criteria.where("collectDate").gte(format.parse(queryDto.getStartTime())).lt(format.parse(queryDto.getEndTime())));
+        } catch (ParseException e) {
+            System.out.println("异常");
+        }
+        query.with(sort);
+        Page<MonitorDataEntity> info = mongoDbUtil.pagination(MonitorDataEntity.class, page.getSize(), page.getCurrent(), query);
+        reportHistoryDataHandle(queryDto, devices, reportPage, info,true);
+        return reportPage;
+    }
+
     public Page<ReportDto> findPageReport(IPage<ReportDto> page, ReportQueryDto queryDto) {
         Page<ReportDto> reportPage = new Page<>();
         // 查询场景下的所有设备信息
         List<DeviceDto> devices = findDevices(queryDto.getIds());
-        if (devices.size() == 0 ){
+        if (devices.size() == 0) {
             return reportPage;
         }
-        reportPage = monthReportMapper.findPageReprot(page, getReportPageQuery(queryDto, devices,false));
+        reportPage = monthReportMapper.findPageReprot(page, getReportPageQuery(queryDto, devices, false));
         reportDataHandle(queryDto, devices, reportPage, false);
         return reportPage;
     }
+
+    /**
+     * 查询历史数据
+     *
+     * @param page
+     * @param queryDto
+     * @return
+     */
+    public Page<ReportDto> findHistoryDataPageReport(IPage<ReportDto> page, ReportQueryDto queryDto) {
+        Page<ReportDto> reportPage = new Page<>();
+        // 查询场景下的所有设备信息
+        List<DeviceDto> devices = findDevices(queryDto.getIds());
+        if (devices.size() == 0) {
+            return reportPage;
+        }
+        List<Long> deviceIds = new ArrayList<>();
+        deviceIds = devices.stream().map(DeviceDto::getId).collect(Collectors.toList());
+        Query query = new Query();
+        Sort sort = new Sort(Sort.Direction.ASC, "deviceId").and(new Sort(Sort.Direction.ASC, "collectDate"));
+        query.addCriteria(Criteria.where("deviceId").in(deviceIds));
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            query.addCriteria(Criteria.where("collectDate").gte(format.parse(queryDto.getStartTime())).lt(format.parse(queryDto.getEndTime())));
+        } catch (ParseException e) {
+          System.out.println("异常");
+        }
+        query.with(sort);
+        Page<MonitorDataEntity> info = mongoDbUtil.pagination(MonitorDataEntity.class, page.getSize(), page.getCurrent(), query);
+        reportHistoryDataHandle(queryDto, devices, reportPage, info,false);
+        return reportPage;
+    }
 }

+ 2 - 0
sms_water/src/main/java/com/huaxu/service/ReportDimensionSettingService.java

@@ -10,6 +10,8 @@ public interface ReportDimensionSettingService {
 
     List<ReportDimensionSettingEntity> findDimensionSetting(Integer userId);
 
+    List<ReportDimensionSettingEntity> findHistoryDataDimensionSetting(Integer userId);
+
     /**
      * 批量修改统计维度信息
      * @return

+ 45 - 8
sms_water/src/main/java/com/huaxu/service/ReportService.java

@@ -7,13 +7,17 @@ import com.huaxu.dao.DeviceSceneMapper;
 import com.huaxu.dto.*;
 import com.huaxu.dto.scene.SceneIdDto;
 import com.huaxu.entity.DeviceSceneEntity;
+import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.exception.ServiceException;
 import com.huaxu.model.LoginUser;
 import com.huaxu.util.DatesUtil;
+import com.huaxu.util.MongoDbUtil;
 import com.huaxu.util.UserUtil;
 import com.mchange.lang.LongUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -37,6 +41,7 @@ public class ReportService {
     private DeviceSceneMapper deviceSceneMapper;
 
 
+
     /**
      * 查询日报月报及年报表
      *
@@ -88,7 +93,7 @@ public class ReportService {
             reportPage = dayReportService.findPageReport(page, queryDto);
         }
         // 月报或自定义时间
-        if (queryDto.getReportType() == 1  || queryDto.getReportType() == 3) {
+        if (queryDto.getReportType() == 1 || queryDto.getReportType() == 3) {
             formatTime(queryDto);
             queryDto.setDay(null);
             reportPage = monthReportService.findPageReport(page, queryDto);
@@ -102,6 +107,22 @@ public class ReportService {
         return reportPage;
     }
 
+    /**
+     * @Author wyy
+     * @Description 查询历史数据
+     * @Date 11:31 2021/4/15
+     * @Param [page, queryDto]
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.dto.ReportDto>
+     **/
+    public IPage<ReportDto> getHistoryDataReportBySceneIdsNews(IPage<ReportDto> page, ReportQueryDto queryDto) {
+        Page<ReportDto> reportPage = new Page<>();
+        formatTime(queryDto);
+        reportPage = monthReportService.findHistoryDataPageReport(page, queryDto);
+        return reportPage;
+    }
+
+
+
     public IPage<DevicePressReportAttributeDto> getDevicePressReportByDeviceIds(IPage<DevicePressReportAttributeDto> page, Long[] ids, Integer year, Integer month, Integer day, Integer reportType, Integer type) {
         Page<DevicePressReportAttributeDto> reportPage = new Page<>();
         // 日报
@@ -159,16 +180,24 @@ public class ReportService {
         return reportPage;
     }
 
+    public IPage<ReportDto> getPipeHistoryDataDevicePressReportByDeviceIds(IPage<ReportDto> page, ReportQueryDto queryDto) {
+
+        Page<ReportDto> reportPage = new Page<>();
+        formatTime(queryDto);
+        reportPage = monthReportService.findHistoryDataDevicePressPageReport(page, queryDto);
+        return reportPage;
+    }
+
 
     /**
      * 查询场景下的统计维度
      * @param deviceId
      * @return
      */
-    public List<ReportAttributeDto> findPipeAttributeNameList(Long deviceId, Integer type){
+    public List<ReportAttributeDto> findPipeAttributeNameList(Long deviceId, Integer type,Integer reportType) {
         ReportDto reportDto = new ReportDto();
-        String name = type == 1 ? "压力" : ((type == 2) ?  "流量" : "水质");
-        SceneIdDto sceneIdDto = deviceSceneMapper.findSceneId("管网",name, deviceId);
+        String name = type == 1 ? "压力" : ((type == 2) ? "流量" : "水质");
+        SceneIdDto sceneIdDto = deviceSceneMapper.findSceneId("管网", name, deviceId);
         if (sceneIdDto != null) {
             reportDto.setSceneId(sceneIdDto.getSceneId());
         }
@@ -178,7 +207,11 @@ public class ReportService {
         deviceDtos.add(dto);
         reportDto.setDeviceIds(deviceDtos);
         reportDto.setUserId(UserUtil.getCurrentUser().getId());
-        return deviceParmService.findAttributeNameList(reportDto);
+        if (reportType == 0) {
+            return deviceParmService.findAttributeNameList(reportDto);
+        } else {
+            return deviceParmService.findHistoryDataAttributeNameList(reportDto);
+        }
     }
 
     /**
@@ -186,10 +219,10 @@ public class ReportService {
      * @param ids
      * @return
      */
-    public List<ReportAttributeDto> findAttributeNameList(Long[] ids, Long[] deviceIds){
+    public List<ReportAttributeDto> findAttributeNameList(Long[] ids, Long[] deviceIds,Integer type) {
         ReportDto reportDto = new ReportDto();
         reportDto.setParentSceneIds(ids);
-        if (deviceIds != null && deviceIds.length > 0){
+        if (deviceIds != null && deviceIds.length > 0) {
             List<DeviceDto> deviceDtos = new ArrayList<>();
             for (Long deviceId : deviceIds) {
                 DeviceDto dto = new DeviceDto();
@@ -199,7 +232,11 @@ public class ReportService {
             reportDto.setDeviceIds(deviceDtos);
         }
         reportDto.setUserId(UserUtil.getCurrentUser().getId());
-        return deviceParmService.findAttributeNameList(reportDto);
+        if (type == 0) {
+            return deviceParmService.findAttributeNameList(reportDto);
+        } else {
+            return deviceParmService.findHistoryDataAttributeNameList(reportDto);
+        }
     }
 
     /**

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

@@ -242,4 +242,5 @@ public class YearReportService extends AbstractReportService<YearReportMapper, Y
         reportDataHandle(queryDto, devices, reportPage, false);
         return reportPage;
     }
+
 }

+ 5 - 0
sms_water/src/main/java/com/huaxu/service/impl/DeviceParmServiceImpl.java

@@ -136,6 +136,11 @@ public class DeviceParmServiceImpl  implements DeviceParmService {
         return deviceParmMapper.findAttributeNameList(reportDto);
     }
 
+    @Override
+    public List<ReportAttributeDto> findHistoryDataAttributeNameList(ReportDto reportDto) {
+        return deviceParmMapper.findHistoryDataAttributeNameList(reportDto);
+    }
+
     @Override
     public List<DeviceParmInfoDto> selectBySceneAndDeviceId(Integer parentSceneId, Integer sceneId, Integer deviceId) {
         List<DeviceParmInfoDto> deviceParmInfos = new ArrayList<>();

+ 7 - 2
sms_water/src/main/java/com/huaxu/service/impl/ReportDimensionSettingServiceImpl.java

@@ -25,15 +25,20 @@ public class ReportDimensionSettingServiceImpl implements ReportDimensionSetting
         return reportDimensionSettingMapper.findDimensionSetting(userId);
     }
 
+    @Override
+    public List<ReportDimensionSettingEntity> findHistoryDataDimensionSetting(Integer userId) {
+        return reportDimensionSettingMapper.findHistoryDataDimensionSetting(userId);
+    }
+
     @Override
     public void batchUpdateStatisticalDimension(List<ReportStatisticalDimensionDto> statisticalDimensionDtos) {
         LoginUser loginUser = UserUtil.getCurrentUser();
         for (ReportStatisticalDimensionDto deviceParmEntity : statisticalDimensionDtos) {
-            if (StringUtils.isEmpty(deviceParmEntity.getDimensionId())){
+            if (StringUtils.isEmpty(deviceParmEntity.getDimensionId())) {
                 deviceParmEntity.setUserId(loginUser.getId());
                 deviceParmEntity.setTenantId(loginUser.getTenantId());
                 reportDimensionSettingMapper.saveDimensionSetting(deviceParmEntity);
-            }  else {
+            } else {
                 reportDimensionSettingMapper.updateDimensionSetting(deviceParmEntity);
             }
         }

+ 45 - 0
sms_water/src/main/java/com/huaxu/util/MongoDbUtil.java

@@ -0,0 +1,45 @@
+package com.huaxu.util;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ *MongoDB查询分页方法
+ */
+@Component
+public class MongoDbUtil<T> {
+
+    @Resource
+    private MongoTemplate mongoTemplate;
+
+    /**
+     * MongDb分页公共方法
+     *
+     * @param clazz    实体类的class对象
+     * @param pageSize 每页的数量
+     * @param pageNum  当前的页数
+     * @param query    query是啥不知道赶紧去查下,相当于sql语句
+     * @return
+     */
+    public Page<T> pagination(Class<T> clazz, long pageSize, long pageNum, Query query) {
+        long total = this.mongoTemplate.count(query, clazz);
+        Integer pages = (int) Math.ceil((double) total / (double) pageSize);
+        if (pageNum <= 0 || pageNum > pages) {
+            pageNum = 1;
+        }
+        long skip = pageSize * (pageNum - 1);
+        query.skip(skip).limit(Math.toIntExact(pageSize));
+        List<T> list = mongoTemplate.find(query, clazz);
+        Page pageResult = new Page();
+        pageResult.setTotal(total);
+        pageResult.setCurrent(pageNum);
+        pageResult.setSize(pageSize);
+        pageResult.setRecords(list);
+        return pageResult;
+    }
+}

+ 1 - 1
sms_water/src/main/resources/logback-spring.xml

@@ -22,7 +22,7 @@
             <pattern>${FILE_LOG_PATTERN}</pattern>
         </encoder>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${LOG_PATH}/smartcity-user.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <fileNamePattern>${LOG_PATH}/smswater-user.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
             <maxHistory>365</maxHistory>
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>100MB</maxFileSize>

+ 15 - 6
sms_water/src/main/resources/mapper/DataAlarmManageMapper.xml

@@ -32,12 +32,21 @@
 
     <select id="findPage" resultType="com.huaxu.vo.DataAlarmManageVo">
         select
-            <include refid="alarmManage_result_list"></include>
-        from sms_data_alarm_manage a
-
-        inner join sms_device t1 on m
-        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 t3.device_id = t1.id and t3.attribute_id=t2.id and t3.status=1
+               m.id,m.alarm_name, t2.name as be_attribute_name,s.SCENE_NAME as be_scene_name,
+               m.compute_rules,m.alar_rules,m.alar_value,mm.to_attribute_name,mm.to_scene_name
+        from
+           sms_data_alarm_manage  m
+        INNER JOIN sms_scene s on s.id = m.be_scene_id and s.status = 1
+        INNER JOIN sms_device t1 on m.be_device_id = t1.id and t1.status = 1
+        INNER JOIN sms_device_attribute t2 on m.be_attribute_id=t2.id  and t2.status =1
+        LEFT JOIN  (
+            select m.id, t2.name as to_attribute_name,s.SCENE_NAME as to_scene_name
+            from
+            sms_data_alarm_manage  m
+            INNER JOIN sms_scene s on s.id = m.to_scene_id and s.status = 1
+            INNER JOIN sms_device t1 on m.to_device_id = t1.id and t1.status = 1
+            INNER JOIN sms_device_attribute t2 on m.to_attribute_id=t2.id  and t2.status =1
+        ) mm on mm.id = m.id
         <where>
             <if test="dto.userType != null and dto.userType != -999 and dto.userType!=-9999 and  dto.programItems != null and dto.programItems.size() > 0">
                 <if test="dto.permissonType == 5 or dto.permissonType == 2">

+ 59 - 1
sms_water/src/main/resources/mapper/DeviceParmMapper.xml

@@ -136,7 +136,12 @@
         <if test="attributeId != null">
             and p.attribute_id = #{attributeId}
         </if>
-
+        <if test="tenantId != null">
+            and p.TENANT_ID = #{tenantId}
+        </if>
+        <if test="parentSceneId != null">
+            and p.parent_scene_id = #{parentSceneId}
+        </if>
     </select>
 
     <!-- 新增所有列 -->
@@ -277,6 +282,59 @@
         ) as tab
         ORDER BY tab.SEQ asc
     </select>
+    <select id="findHistoryDataAttributeNameList" 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.unit
+        from
+        (SELECT
+        IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
+        a.parm_type as "attributeType",a.SEQ,
+        s.SHOW_MIN_VALUE AS "showMinValue",
+        s.SHOW_AVG_VALUE AS "showAvgValue",
+        s.SHOW_MAX_VALUE AS "showMaxValue",
+        s.SHOW_SUM_VALUE AS "showSumValue",
+        s.SHOW_LATEST_VALUE AS "showLatestValue",
+        s.id as "dimensionId",
+        s.CLASSIFY AS "classify",
+        s.SHOW_ON_OFF AS "showOnOff",
+        d.DEVICE_NAME AS "deviceName",
+        a.ATTRIBUTE_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
+        LEFT JOIN sms_report_dimension_setting s on s.device_parm_id=a.ID and s.type=1
+        <if test ="report.userId != null">
+            and s.user_id =#{report.userId}
+        </if>
+        where
+        a.IS_REPORT=1 and a.status=1
+        <if test="report.deviceIds != null and report.deviceIds.size() > 0">
+            and a.DEVICE_ID in
+            <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
+                #{dramaId.id}
+            </foreach>
+        </if>
+        <if test="report.parentSceneIds != null and report.parentSceneIds.length > 0">
+            and a.PARENT_SCENE_ID in
+            <foreach collection="report.parentSceneIds" item="dramaId" open="(" close=")" separator=",">
+                #{dramaId}
+            </foreach>
+        </if>
+        <if test="report.sceneId != null ">
+            and a.scene_id = #{report.sceneId}
+        </if>
+        <if test="report.parmType != null">
+            and a.PARM_TYPE in
+            <foreach collection="report.parmType" item="typeId" open="(" close=")" separator=",">
+                #{typeId}
+            </foreach>
+        </if>
+        ORDER BY a.SEQ asc
+        ) as tab
+        ORDER BY tab.SEQ asc
+    </select>
     <select id="findBySceneDeviceId" resultType="com.huaxu.dto.DeviceParmInfoDto">
             select a.id as "deviceId",b.id as "attributeId",b.`NAME` as "attributeName"
             ,case when p.ID is null then 0 else 1 end as "isCheck"

+ 7 - 2
sms_water/src/main/resources/mapper/ReportDimensionSettingMapper.xml

@@ -4,9 +4,9 @@
 
     <insert id="saveDimensionSetting" parameterType="com.huaxu.dto.ReportStatisticalDimensionDto">
         insert into sms_report_dimension_setting(user_id,tenant_id,device_parm_id,classify,show_on_off,show_min_value,show_avg_value,
-                                                 show_max_value,show_sum_value,show_latest_value)
+                                                 show_max_value,show_sum_value,show_latest_value,type)
         values (#{userId},#{tenantId},#{deviceParmId},#{classify},#{showOnOff},#{showMinValue},
-                #{showAvgValue},#{showMaxValue},#{showSumValue},#{showLatestValue})
+                #{showAvgValue},#{showMaxValue},#{showSumValue},#{showLatestValue},#{type})
     </insert>
 
     <update id="updateDimensionSetting">
@@ -27,4 +27,9 @@
         select * from  sms_report_dimension_setting where user_id =#{userId}
     </select>
 
+    <select id="findHistoryDataDimensionSetting" resultType="com.huaxu.entity.ReportDimensionSettingEntity">
+        select * from  sms_report_dimension_setting where user_id =#{userId} and type=1
+    </select>
+
+
 </mapper>