Browse Source

报表统计分析

lihui007 4 years ago
parent
commit
a47c496e9a
24 changed files with 410 additions and 46 deletions
  1. 53 7
      sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java
  2. 3 1
      sms_water/src/main/java/com/huaxu/dao/DayReportMapper.java
  3. 17 0
      sms_water/src/main/java/com/huaxu/dao/ReportDimensionSettingMapper.java
  4. 2 0
      sms_water/src/main/java/com/huaxu/dto/DeviceWaterReportAttributeDto.java
  5. 5 0
      sms_water/src/main/java/com/huaxu/dto/ReportAttributeDto.java
  6. 5 1
      sms_water/src/main/java/com/huaxu/dto/ReportDto.java
  7. 9 0
      sms_water/src/main/java/com/huaxu/dto/ReportStatisticalDimensionDto.java
  8. 4 0
      sms_water/src/main/java/com/huaxu/entity/DayReportEntity.java
  9. 4 0
      sms_water/src/main/java/com/huaxu/entity/MonthReportEntity.java
  10. 55 0
      sms_water/src/main/java/com/huaxu/entity/ReportDimensionSettingEntity.java
  11. 4 0
      sms_water/src/main/java/com/huaxu/entity/YearReportEntity.java
  12. 10 1
      sms_water/src/main/java/com/huaxu/service/AbstractReportService.java
  13. 12 5
      sms_water/src/main/java/com/huaxu/service/DayReportService.java
  14. 10 0
      sms_water/src/main/java/com/huaxu/service/MonthReportService.java
  15. 18 0
      sms_water/src/main/java/com/huaxu/service/ReportDimensionSettingService.java
  16. 41 9
      sms_water/src/main/java/com/huaxu/service/ReportService.java
  17. 10 0
      sms_water/src/main/java/com/huaxu/service/YearReportService.java
  18. 41 0
      sms_water/src/main/java/com/huaxu/service/impl/ReportDimensionSettingServiceImpl.java
  19. 14 0
      sms_water/src/main/resources/application-dev.properties
  20. 16 10
      sms_water/src/main/resources/mapper/DayReportMapper.xml
  21. 19 8
      sms_water/src/main/resources/mapper/DeviceParmMapper.xml
  22. 14 2
      sms_water/src/main/resources/mapper/MonthReportMapper.xml
  23. 30 0
      sms_water/src/main/resources/mapper/ReportDimensionSettingMapper.xml
  24. 14 2
      sms_water/src/main/resources/mapper/YearReportMapper.xml

+ 53 - 7
sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java

@@ -3,12 +3,16 @@ package com.huaxu.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.dto.*;
+import com.huaxu.entity.MonitorDataValueEntity;
 import com.huaxu.entity.MonitorInfoEntity;
+import com.huaxu.entity.ReportDimensionSettingEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
+import com.huaxu.service.ReportDimensionSettingService;
 import com.huaxu.service.ReportService;
+import com.huaxu.util.UserUtil;
 import com.sun.org.apache.bcel.internal.generic.NEWARRAY;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -18,8 +22,11 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 标签信息页面控制器
@@ -34,6 +41,9 @@ public class DayMonthYearReportController {
     @Autowired
     private ReportService reportService;
 
+    @Autowired
+    private ReportDimensionSettingService reportDimensionSettingService;
+
     @ApiOperation(value = "按年月日统计报表")
     @RequestMapping(value = "/getReportBySceneIds", method = RequestMethod.POST)
     @ResponseBody
@@ -52,10 +62,28 @@ public class DayMonthYearReportController {
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
 
+    @ApiOperation(value = "按年月日统计报表")
+    @RequestMapping(value = "/getReportBySceneIdsNews", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getReportBySceneIdsNews(
+            @RequestParam Integer pageNum,
+            @RequestParam Integer pageSize,
+            @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids,
+            @ApiParam(value = "查询年", required = false) @RequestParam(required = false) Integer year ,
+            @ApiParam(value = "查询月", required = false) @RequestParam(required = false) Integer month ,
+            @ApiParam(value = "查询日", required = false) @RequestParam(required = false) Integer day ,
+            @ApiParam(value = "报表类型(0日 1月 2年)", required = true) @RequestParam(required = true) Integer reportType
+    ) {
+        IPage<ReportDto> iPage = new Page<>(pageNum, pageSize);
+        iPage = reportService.getReportBySceneIdsNew(iPage,ids,year,month,day,reportType);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
     @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
-    @RequestMapping(value = "/getDevicePressReportByDeviceIds", method = RequestMethod.POST)
+    @RequestMapping(value = "/getDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
     @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIds(
+    public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIdsNew(
             @RequestParam Integer pageNum,
             @RequestParam Integer pageSize,
             @ApiParam(value = "设备IDS", required = true) @RequestParam(required = true) Long[] ids,
@@ -71,7 +99,7 @@ public class DayMonthYearReportController {
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
 
-    /*@ApiOperation(value = "按设备统计压力及流量年月日统计报表")
+    @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
     @RequestMapping(value = "/getDevicePressReportByDeviceIds", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<Pagination<DevicePressReportAttributeDto>> getDevicePressReportByDeviceIds(
@@ -97,7 +125,25 @@ public class DayMonthYearReportController {
         }
 
         return new AjaxMessage<>(ResultStatus.OK,pages);
-    }*/
+    }
+
+    @ApiOperation(value = "按设备统计水质年月日统计报表")
+    @RequestMapping(value = "/getDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getDevicWaterReportByDeviceIdsNew(
+            @RequestParam Integer pageNum,
+            @RequestParam Integer pageSize,
+            @ApiParam(value = "设备IDS", required = true) @RequestParam(required = true) Long[] ids,
+            @ApiParam(value = "查询年", required = false) @RequestParam(required = false) Integer year ,
+            @ApiParam(value = "查询月", required = false) @RequestParam(required = false) Integer month ,
+            @ApiParam(value = "查询日", required = false) @RequestParam(required = false) Integer day ,
+            @ApiParam(value = "报表类型(0日 1月 2年)", required = true) @RequestParam(required = true) Integer reportType
+    ) {
+        IPage<ReportDto> iPage = new Page<>(pageNum, pageSize);
+        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage,ids,year,month,day,reportType,3);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
 
     @ApiOperation(value = "按设备统计水质年月日统计报表")
     @RequestMapping(value = "/getDevicWaterReportByDeviceIds", method = RequestMethod.POST)
@@ -114,8 +160,8 @@ public class DayMonthYearReportController {
         IPage<DeviceWaterReportAttributeDto> iPage = new Page<>(pageNum, pageSize);
         iPage = reportService.getDevicWaterReportByDeviceIds(iPage,ids,year,month,day,reportType);
         Pagination<DeviceWaterReportAttributeDto> pages = new Pagination<>(iPage);
-        for(DeviceWaterReportAttributeDto item : pages.getList())
-        {
+        for(DeviceWaterReportAttributeDto item : pages.getList()) {
+
             item.setAvgCLValue((double)Math.round(item.getAvgCLValue()==null?0:item.getAvgCLValue()*1000)/1000);
             item.setAvgPHValue((double)Math.round(item.getAvgPHValue()==null?0:item.getAvgPHValue()*1000)/1000);
             item.setAvgQuValue((double)Math.round(item.getAvgQuValue()==null?0:item.getAvgQuValue()*1000)/1000);
@@ -160,7 +206,7 @@ public class DayMonthYearReportController {
     @RequestMapping(value = "/updateCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> updateCustomDimension(@RequestBody @Valid List<ReportStatisticalDimensionDto> dataList) {
-        reportService.updateStatisticalDimension(dataList);
+        reportDimensionSettingService.batchUpdateStatisticalDimension(dataList);
         return new AjaxMessage<>(ResultStatus.OK);
     }
 }

+ 3 - 1
sms_water/src/main/java/com/huaxu/dao/DayReportMapper.java

@@ -42,7 +42,9 @@ public interface DayReportMapper extends BaseMapper<DayReportEntity> {
 
     Page<DevicePressReportAttributeDto> findDevicePressPage(IPage<DevicePressReportAttributeDto> page, @Param("dayReport") DayReportEntity dayReportEntity);
 
-    Page<DeviceWaterReportAttributeDto> findDeviceWaterPage(IPage<DeviceWaterReportAttributeDto> page, @Param("dayReport") DayReportEntity dayReportEntity);
+    //Page<DeviceWaterReportAttributeDto> findDeviceWaterPage(IPage<DeviceWaterReportAttributeDto> page, @Param("dayReport") DayReportEntity dayReportEntity);
+
+    Page<DeviceWaterReportAttributeDto> findDeviceWaterPage(IPage<DeviceWaterReportAttributeDto> page, @Param("dayReport") DayReportEntity dayReportEntity, @Param("userId") Integer userId);
 
     List<DayReportEntity> findDeviceLastDayValue(@Param("dayReport") DayReportEntity dayReportEntity);
     /**删除相关方法  使用mybatis-plus集成的 **/

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

@@ -0,0 +1,17 @@
+package com.huaxu.dao;
+
+import com.huaxu.dto.ReportStatisticalDimensionDto;
+import com.huaxu.entity.ReportDimensionSettingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface ReportDimensionSettingMapper {
+
+    void saveDimensionSetting(ReportStatisticalDimensionDto dto);
+
+    List<ReportDimensionSettingEntity> findDimensionSetting(Integer userId);
+
+    void updateDimensionSetting(ReportStatisticalDimensionDto dto);
+}

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

@@ -56,4 +56,6 @@ public class DeviceWaterReportAttributeDto implements Serializable {
     @ApiModelProperty(value = "Qu最新值")
     private Double latestQuValue;
 
+    @ApiModelProperty(value = "设备参数ID")
+    private Integer deviceParmId;
 }

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

@@ -83,4 +83,9 @@ public class ReportAttributeDto  implements Serializable {
 
     @ApiModelProperty(value = "是否展示最新值")
     private boolean showLatestValue;
+
+    @ApiModelProperty(value = "报表维度设置ID")
+    private Integer dimensionId;
+
+
 }

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

@@ -65,5 +65,9 @@ public class ReportDto implements Serializable {
     List<ReportTitleDto> reportTitle;
 
     @ApiModelProperty("参数类型")
-    private Integer parmType;
+    private List<Integer> parmType;
+
+    @ApiModelProperty("用户ID")
+    @JsonIgnore
+    private Integer userId;
 }

+ 9 - 0
sms_water/src/main/java/com/huaxu/dto/ReportStatisticalDimensionDto.java

@@ -12,6 +12,9 @@ public class ReportStatisticalDimensionDto implements Serializable {
 
     private static final long serialVersionUID = 4074399088580570408L;
 
+    @ApiModelProperty("主键")
+    private String dimensionId;
+
     @ApiModelProperty("归类")
     private String classify;
 
@@ -36,4 +39,10 @@ public class ReportStatisticalDimensionDto implements Serializable {
     @ApiModelProperty("展示最新值")
     private boolean showLatestValue;
 
+    @ApiModelProperty("用户ID")
+    private Integer userId;
+
+    @ApiModelProperty("租户ID")
+    private String tenantId;
+
 }

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

@@ -151,6 +151,10 @@ public class DayReportEntity{
     @JsonIgnore
     private Integer type;
 
+    @ApiModelProperty(value = "报表类型")
+    @JsonIgnore
+    private List<Integer> typeIds;
+
     public String getMapkey(){
         StringBuilder stringBuilder=new StringBuilder();
         stringBuilder.append(this.deviceId);

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

@@ -149,4 +149,8 @@ public class MonthReportEntity {
     @ApiModelProperty(value = "更新人")
     @JsonIgnore
     private String updateBy;
+
+    @ApiModelProperty(value = "报表类型")
+    @JsonIgnore
+    private List<Integer> typeIds;
 }

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

@@ -0,0 +1,55 @@
+package com.huaxu.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName ReportDimensionSettingEntity
+ * @Description: 报表统计维度设置
+ * @Author lihui
+ * @Date 2021/4/13
+ * @Version V1.0
+ **/
+@Data
+@ApiModel("报表统计维度设置")
+public class ReportDimensionSettingEntity implements Serializable {
+
+
+    private static final long serialVersionUID = 6722509154948828769L;
+
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @ApiModelProperty(value = "用户ID")
+    private Integer userId;
+
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    @ApiModelProperty(value = "设备参数ID")
+    private Integer deviceParmId;
+
+    @ApiModelProperty(value = "归类")
+    private String classify;
+
+    @ApiModelProperty(value = "展示开关")
+    private boolean showOnOff;
+
+    @ApiModelProperty(value = "是否展示最小值")
+    private boolean showMinValue;
+
+    @ApiModelProperty(value = "是否展示最大值")
+    private boolean showMaxValue;
+
+    @ApiModelProperty(value = "是否展示平均值")
+    private boolean showAvgValue;
+
+    @ApiModelProperty(value = "是否展示合计值")
+    private boolean showSumValue;
+
+    @ApiModelProperty(value = "是否展示最新值")
+    private boolean showLatestValue;
+}

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

@@ -145,4 +145,8 @@ public class YearReportEntity {
     @ApiModelProperty(value = "更新人")
     @JsonIgnore
     private String updateBy;
+
+    @ApiModelProperty(value = "报表类型")
+    @JsonIgnore
+    private List<Integer> typeIds;
 }

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

@@ -113,13 +113,22 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
      * @return
      */
     public ReportDto getQueryReportDto(ReportQueryDto queryDto, List<DeviceDto> devices, boolean isPipe){
+
         ReportDto reportDto = new ReportDto();
         reportDto.setYear(queryDto.getYear());
         reportDto.setMonth(queryDto.getMonth());
         reportDto.setDay(queryDto.getDay());
         if (isPipe){
+            Integer[] parmType = null;
+            if (queryDto.getType() == 1) {
+                parmType = new Integer[]{13};
+            } else if (queryDto.getType() == 2){
+                parmType = new Integer[]{14};
+            } else if (queryDto.getType() == 3){
+                parmType = new Integer[]{7, 9, 11};
+            }
             reportDto.setDeviceIds(devices);
-            reportDto.setParmType(queryDto.getType() == 1 ? 13 : 14);
+            reportDto.setParmType(Arrays.asList(parmType));
         } else {
             reportDto.setDeviceIds(devices);
             reportDto.setParentSceneIds(queryDto.getIds());

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

@@ -11,10 +11,7 @@ import com.huaxu.util.UserUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 日报Service接口
@@ -203,7 +200,7 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
             dayReportEntity.setTenantId(currentUser.getTenantId());
             dayReportEntity.setDeviceIds(devices);
             //查询到分页的行数
-            reportPage = dayReportMapper.findDeviceWaterPage(page, dayReportEntity);
+            reportPage = dayReportMapper.findDeviceWaterPage(page, dayReportEntity, currentUser.getId());
         }
         return reportPage;
     }
@@ -257,6 +254,7 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
 
     //根据设备ID查询报表测点信息
     private DayReportEntity getDayReportEntity(ReportQueryDto queryDto, List<DeviceDto> devices, boolean isPipe){
+
         DayReportEntity dayReportEntity = new DayReportEntity();
         dayReportEntity.setYear(queryDto.getYear());
         dayReportEntity.setMonth(queryDto.getMonth());
@@ -265,6 +263,15 @@ public class DayReportService extends AbstractReportService<DayReportMapper, Day
         dayReportEntity.setDeviceIds(devices);
         // 管网和其他有点不一样
         if (isPipe){
+            Integer[] parmType = null;
+            if (queryDto.getType() == 1) {
+                parmType = new Integer[]{13};
+            } else if (queryDto.getType() == 2){
+                parmType = new Integer[]{14};
+            } else if (queryDto.getType() == 3){
+                parmType = new Integer[]{7, 9, 11};
+            }
+            dayReportEntity.setTypeIds(Arrays.asList(parmType));
             dayReportEntity.setType(queryDto.getType());
         } else {
             dayReportEntity.setParentSceneIds(queryDto.getIds());

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

@@ -234,6 +234,7 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
         if (devices.size() == 0 ){
             return reportPage;
         }
+
         reportPage = monthReportMapper.findPage(page, getMonthReportEntity(queryDto, devices,true));
         reportDataHandle(queryDto, devices, reportPage, true);
         return reportPage;
@@ -261,6 +262,15 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
         monthReportEntity.setDeviceIds(devices);
         // 管网和其他有点不一样
         if (isPipe){
+            Integer[] parmType = null;
+            if (queryDto.getType() == 1) {
+                parmType = new Integer[]{13};
+            } else if (queryDto.getType() == 2){
+                parmType = new Integer[]{14};
+            } else if (queryDto.getType() == 3){
+                parmType = new Integer[]{7, 9, 11};
+            }
+            monthReportEntity.setTypeIds(Arrays.asList(parmType));
             monthReportEntity.setType(queryDto.getType());
         } else {
             monthReportEntity.setParentSceneIds(queryDto.getIds());

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

@@ -0,0 +1,18 @@
+package com.huaxu.service;
+
+
+import com.huaxu.dto.ReportStatisticalDimensionDto;
+import com.huaxu.entity.ReportDimensionSettingEntity;
+
+import java.util.List;
+
+public interface ReportDimensionSettingService {
+
+    List<ReportDimensionSettingEntity> findDimensionSetting(Integer userId);
+
+    /**
+     * 批量修改统计维度信息
+     * @return
+     */
+    void batchUpdateStatisticalDimension(List<ReportStatisticalDimensionDto> statisticalDimensionDtos);
+}

+ 41 - 9
sms_water/src/main/java/com/huaxu/service/ReportService.java

@@ -27,6 +27,7 @@ public class ReportService {
     @Autowired
     private DeviceParmService deviceParmService;
 
+
     /**
      * 查询日报月报及年报表
      *
@@ -37,6 +38,43 @@ public class ReportService {
      * @param reportType
      */
     public IPage<ReportDto> getReportBySceneIds(IPage<ReportDto> page, Long[] ids, Integer year, Integer month, Integer day, Integer reportType) {
+        ReportQueryDto queryDto = new ReportQueryDto();
+        queryDto.setIds(ids);
+        Page<ReportDto> reportPage = new Page<>();
+        // 日报
+        if (reportType.equals(0)) {
+            queryDto.setMonth(month);
+            queryDto.setYear(year);
+            queryDto.setDay(day);
+            reportPage = dayReportService.findPage(page, ids, year, month, day);
+            //reportPage = dayReportService.findPageReport(page, queryDto);
+        }
+        //月报
+        if (reportType.equals(1)) {
+            queryDto.setMonth(month);
+            queryDto.setYear(year);
+            reportPage = monthReportService.findPage(page, ids, year, month, day);
+            //reportPage = monthReportService.findPageReport(page, queryDto);
+        }
+        //年报
+        if (reportType.equals(2)) {
+            queryDto.setYear(year);
+            reportPage = yearReportService.findPage(page, ids, year, month, day);
+            //reportPage = yearReportService.findPageReport(page, queryDto);
+        }
+        return reportPage;
+    }
+
+    /**
+     * 查询日报月报及年报表
+     *
+     * @param ids
+     * @param year
+     * @param month
+     * @param day
+     * @param reportType
+     */
+    public IPage<ReportDto> getReportBySceneIdsNew(IPage<ReportDto> page, Long[] ids, Integer year, Integer month, Integer day, Integer reportType) {
         ReportQueryDto queryDto = new ReportQueryDto();
         queryDto.setIds(ids);
         Page<ReportDto> reportPage = new Page<>();
@@ -99,7 +137,8 @@ public class ReportService {
     }
 
 
-    public IPage<ReportDto> getPipeDevicePressReportByDeviceIds(IPage<ReportDto> page, Long[] ids, Integer year, Integer month, Integer day, Integer reportType, Integer type) {
+    public IPage<ReportDto> getPipeDevicePressReportByDeviceIds(IPage<ReportDto> page, Long[] ids, Integer year, Integer month, Integer day,
+                                                                Integer reportType, Integer type) {
         Page<ReportDto> reportPage = new Page<>();
         ReportQueryDto queryDto = new ReportQueryDto();
         queryDto.setIds(ids);
@@ -143,15 +182,8 @@ public class ReportService {
             }
             reportDto.setDeviceIds(deviceDtos);
         }
+        reportDto.setUserId(UserUtil.getCurrentUser().getId());
         return deviceParmService.findAttributeNameList(reportDto);
     }
 
-    /**
-     * 修改统计维度
-     * @param dataList
-     * @return
-     */
-    public void updateStatisticalDimension(List<ReportStatisticalDimensionDto> dataList){
-        deviceParmService.batchUpdateStatisticalDimension(dataList);
-    }
 }

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

@@ -242,11 +242,21 @@ public class YearReportService extends AbstractReportService<YearReportMapper, Y
     }
 
     private YearReportEntity getYearReportEntity(ReportQueryDto queryDto, List<DeviceDto> devices, boolean isPipe){
+
         YearReportEntity yearReportEntity = new YearReportEntity();
         yearReportEntity.setYear(queryDto.getYear());
         yearReportEntity.setTenantId(UserUtil.getCurrentUser().getTenantId());
         yearReportEntity.setDeviceIds(devices);
         if (isPipe){
+            Integer[] parmType = null;
+            if (queryDto.getType() == 1) {
+                parmType = new Integer[]{13};
+            } else if (queryDto.getType() == 2){
+                parmType = new Integer[]{14};
+            } else if (queryDto.getType() == 3){
+                parmType = new Integer[]{7, 9, 11};
+            }
+            yearReportEntity.setTypeIds(Arrays.asList(parmType));
             yearReportEntity.setType(queryDto.getType());
         } else {
             yearReportEntity.setParentSceneIds(queryDto.getIds());

+ 41 - 0
sms_water/src/main/java/com/huaxu/service/impl/ReportDimensionSettingServiceImpl.java

@@ -0,0 +1,41 @@
+package com.huaxu.service.impl;
+
+import com.huaxu.common.StringUtils;
+import com.huaxu.dao.ReportDimensionSettingMapper;
+import com.huaxu.dto.ReportStatisticalDimensionDto;
+import com.huaxu.entity.ReportDimensionSettingEntity;
+import com.huaxu.model.LoginUser;
+import com.huaxu.service.ReportDimensionSettingService;
+import com.huaxu.util.UserUtil;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@Log4j2
+public class ReportDimensionSettingServiceImpl implements ReportDimensionSettingService {
+
+    @Autowired
+    private ReportDimensionSettingMapper reportDimensionSettingMapper;
+
+    @Override
+    public List<ReportDimensionSettingEntity> findDimensionSetting(Integer userId) {
+        return reportDimensionSettingMapper.findDimensionSetting(userId);
+    }
+
+    @Override
+    public void batchUpdateStatisticalDimension(List<ReportStatisticalDimensionDto> statisticalDimensionDtos) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        for (ReportStatisticalDimensionDto deviceParmEntity : statisticalDimensionDtos) {
+            if (StringUtils.isEmpty(deviceParmEntity.getDimensionId())){
+                deviceParmEntity.setUserId(loginUser.getId());
+                deviceParmEntity.setTenantId(loginUser.getTenantId());
+                reportDimensionSettingMapper.saveDimensionSetting(deviceParmEntity);
+            }  else {
+                reportDimensionSettingMapper.updateDimensionSetting(deviceParmEntity);
+            }
+        }
+    }
+}

+ 14 - 0
sms_water/src/main/resources/application-dev.properties

@@ -153,4 +153,18 @@ receiveData.spring.rabbitmq.publisher-confirm-type=correlated
 receiveData.spring.rabbitmq.publisher-confirms=true
 receiveData.spring.rabbitmq.publisher-returns=true
 
+#=====================新增参数
+#核心线程数
+aysnc.pool.core-size=10
+#最大线程数
+aysnc.pool.max-size=20
+#空闲线程保留时间
+aysnc.pool.keep-alive=5
+#队列容量
+aysnc.queue-capacity=100
+#线程名称前缀
+aysnc.thread-name-prefix=aysnc-thread-
+#===========================对账信息begin===================================
+
+
 

+ 16 - 10
sms_water/src/main/resources/mapper/DayReportMapper.xml

@@ -103,7 +103,14 @@
         b.parent_scene_id as "parentSceneId",
         c.SCENE_NAME as "parentSceneName"
         FROM sms_day_report a
-        inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
+        inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
+        <if test="dayReport.typeIds != null">
+            and b.PARM_TYPE in
+            <foreach collection="dayReport.typeIds" item="typeId" open="(" close=")" separator=",">
+                #{typeId}
+            </foreach>
+        </if>
+        and b.`STATUS`=1
         inner join sms_scene c on b.PARENT_SCENE_ID=c.id
         <where>
             b.IS_REPORT=1
@@ -195,7 +202,12 @@
         <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
         <if test="report.day != null ">and c.`DAY`=#{report.day}</if>
         <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
-        <if test="report.parmType != null ">and a.PARM_TYPE =#{report.parmType} and a.`STATUS`=1) tab</if>
+        <if test="report.parmType != null ">and a.PARM_TYPE in
+            <foreach collection="report.parmType" item="ptype" open="(" close=")" separator=",">
+                #{ptype}
+            </foreach>
+            and a.`STATUS`=1) tab
+        </if>
         <if test="report.parmType == null ">
         and (a.PARM_TYPE =3 or a.PARM_TYPE =4 or a.PARM_TYPE =5 or a.PARM_TYPE =6) and a.`STATUS`=1) tab
         </if>
@@ -209,13 +221,7 @@
         a.DEVICE_NAME as "deviceName",
         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",
-        b.SHOW_MIN_VALUE AS "showMinValue",
-        b.SHOW_AVG_VALUE AS "showAvgValue",
-        b.SHOW_MAX_VALUE AS "showMaxValue",
-        b.SHOW_SUM_VALUE AS "showSumValue",
-        b.SHOW_LATEST_VALUE AS "showLatestValue",
-        b.SHOW_ON_OFF AS "showOnOff"
+        a.COLLECT_DATE as "collectDate"
         FROM sms_day_report a
         inner join sms_device d on d.id = a.DEVICE_ID
         inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
@@ -263,7 +269,7 @@
         case when b.PARM_TYPE=11 then a.sum_value end as "sumCLValue" ,
         case when b.PARM_TYPE=11 then a.latest_value end as "latestCLValue",
         a.COLLECT_DATE as "collectDate" ,
-        a.year,a.month,a.day,a.hour
+        a.year,a.month,a.day,a.hour,b.deviceParmId
         FROM sms_day_report a
         inner join sms_device d on d.id = a.DEVICE_ID
         inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1

+ 19 - 8
sms_water/src/main/resources/mapper/DeviceParmMapper.xml

@@ -226,23 +226,28 @@
     </select>
     <select id="findAttributeNameList" resultType="com.huaxu.dto.ReportAttributeDto">
         SELECT DISTINCT tab.attributeName,tab.attributeType,tab.SEQ,tab.showMinValue,tab.showAvgValue,tab.showMaxValue,
-        tab.showSumValue,tab.showLatestValue,tab.classify,tab.showOnOff,tab.deviceName,tab.deviceParmId
+        tab.showSumValue,tab.showLatestValue,tab.classify,tab.showOnOff,tab.deviceName,tab.deviceParmId,tab.dimensionId
         from
         (SELECT
         IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
         a.parm_type as "attributeType",a.SEQ,
-        a.SHOW_MIN_VALUE AS "showMinValue",
-        a.SHOW_AVG_VALUE AS "showAvgValue",
-        a.SHOW_MAX_VALUE AS "showMaxValue",
-        a.SHOW_SUM_VALUE AS "showSumValue",
-        a.SHOW_LATEST_VALUE AS "showLatestValue",
-        a.CLASSIFY AS "classify",
-        a.SHOW_ON_OFF AS "showOnOff",
+        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.id AS "deviceParmId"
         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
+        <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">
@@ -257,6 +262,12 @@
                 #{dramaId}
             </foreach>
         </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

+ 14 - 2
sms_water/src/main/resources/mapper/MonthReportMapper.xml

@@ -102,7 +102,14 @@
         b.parent_scene_id as "parentSceneId",
         c.SCENE_NAME as "parentSceneName"
         FROM sms_month_report a
-        inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
+        inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
+        <if test="monthReport.typeIds != null">
+            and b.PARM_TYPE in
+            <foreach collection="monthReport.typeIds" item="typeId" open="(" close=")" separator=",">
+                #{typeId}
+            </foreach>
+        </if>
+        and b.`STATUS`=1
         inner join sms_scene c on b.PARENT_SCENE_ID=c.id
         <where>
             b.IS_REPORT=1
@@ -192,7 +199,12 @@
         <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
         <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
         <if test="report.parentSceneId != null ">and c.PARENT_SCENE_ID=#{report.parentSceneId}</if>
-        <if test="report.parmType != null ">and a.PARM_TYPE =#{report.parmType} and a.`STATUS`=1) tab</if>
+        <if test="report.parmType != null ">and a.PARM_TYPE in
+            <foreach collection="report.parmType" item="ptype" open="(" close=")" separator=",">
+                #{ptype}
+            </foreach>
+         and a.`STATUS`=1) tab
+        </if>
         <if test="report.parmType == null ">
             and (a.PARM_TYPE =3 or a.PARM_TYPE =4 or a.PARM_TYPE =5 or a.PARM_TYPE =6) and a.`STATUS`=1) tab
         </if>

+ 30 - 0
sms_water/src/main/resources/mapper/ReportDimensionSettingMapper.xml

@@ -0,0 +1,30 @@
+<?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.ReportDimensionSettingMapper">
+
+    <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)
+        values (#{userId},#{tenantId},#{deviceParmId},#{classify},#{showOnOff},#{showMinValue},
+                #{showAvgValue},#{showMaxValue},#{showSumValue},#{showLatestValue})
+    </insert>
+
+    <update id="updateDimensionSetting">
+        update sms_report_dimension_setting
+        set
+            classify=#{classify},
+            show_on_off=#{showOnOff},
+            show_min_value=#{showMinValue},
+            show_avg_value=#{showAvgValue},
+            show_max_value=#{showMaxValue},
+            show_sum_value=#{showSumValue},
+            show_latest_value=#{showLatestValue}
+        where
+            id =#{dimensionId}
+    </update>
+
+    <select id="findDimensionSetting" resultType="com.huaxu.entity.ReportDimensionSettingEntity">
+        select * from  sms_report_dimension_setting where user_id =#{userId}
+    </select>
+
+</mapper>

+ 14 - 2
sms_water/src/main/resources/mapper/YearReportMapper.xml

@@ -101,7 +101,14 @@
         b.parent_scene_id as "parentSceneId",
         c.SCENE_NAME as "parentSceneName"
         FROM sms_year_report a
-        inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
+        inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
+        <if test="yearReport.typeIds != null">
+            and b.PARM_TYPE in
+            <foreach collection="yearReport.typeIds" item="typeId" open="(" close=")" separator=",">
+                #{typeId}
+            </foreach>
+        </if>
+        and b.`STATUS`=1
         inner join sms_scene c on b.PARENT_SCENE_ID=c.id
         <where>
             b.IS_REPORT=1
@@ -190,7 +197,12 @@
         <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
         <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
         <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
-        <if test="report.parmType != null ">and a.PARM_TYPE =#{report.parmType} and a.`STATUS`=1) tab</if>
+        <if test="report.parmType != null ">and a.PARM_TYPE in
+            <foreach collection="report.parmType" item="ptype" open="(" close=")" separator=",">
+                #{ptype}
+            </foreach>
+            and a.`STATUS`=1) tab
+        </if>
         <if test="report.parmType == null ">
             and (a.PARM_TYPE =3 or a.PARM_TYPE =4 or a.PARM_TYPE =5 or a.PARM_TYPE =6) and a.`STATUS`=1) tab
         </if>