lihui007 4 rokov pred
rodič
commit
2d2e9bf246

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

@@ -174,8 +174,9 @@ public class DayMonthYearReportController {
     @RequestMapping(value = "/getPipelineCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> getPipelineCustomDimension(
-            @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) Long[] deviceIds) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(null, deviceIds));
+            @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));
     }
 
     @ApiOperation(value = "修改自定义报表统计维度")

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

@@ -1,5 +1,6 @@
 package com.huaxu.dao;
 
+import com.huaxu.dto.scene.SceneIdDto;
 import com.huaxu.entity.DeviceSceneEntity;
 import java.io.Serializable;
 import java.util.List;
@@ -20,5 +21,7 @@ public interface DeviceSceneMapper extends BaseMapper<DeviceSceneEntity> {
 
      List<DeviceSceneEntity> findList(DeviceSceneEntity deviceSceneEntity);
 
+     SceneIdDto findSceneId(String firstSceneTypeName, String secondSceneTypeName, Long deviceId);
+
      /**删除相关方法  使用mybatis-plus集成的 **/
 }

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

@@ -1,5 +1,6 @@
 package com.huaxu.dto;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -7,6 +8,8 @@ import lombok.Data;
 import java.io.Serializable;
 import java.util.List;
 
+import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
+
 /**
  * @description
  * @auto wangli
@@ -23,6 +26,7 @@ public class MonitorDataChartReportAttributeDto implements Serializable {
     @ApiModelProperty("属性名称")
     private String attributeName;
     @ApiModelProperty("属性单位")
+    @JsonInclude(NON_NULL)
     private String unit;
     @ApiModelProperty("数据")
     private List<MonitorDataChartReportValueDto> monitorDataChartReportValue;

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

@@ -82,4 +82,8 @@ public class ReportDto implements Serializable {
 
     @ApiModelProperty("场景类型名称")
     private String sceneTypeName;
+
+    @ApiModelProperty("场景Id")
+    private Long sceneId;
+
 }

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

@@ -48,4 +48,7 @@ public class ReportPageQueryDto {
 
     @ApiModelProperty(value = "结束时间")
     private String endTime;
+
+    @ApiModelProperty(value = "场景ID")
+    private Long sceneId;
 }

+ 18 - 0
sms_water/src/main/java/com/huaxu/dto/scene/SceneIdDto.java

@@ -0,0 +1,18 @@
+package com.huaxu.dto.scene;
+
+import com.huaxu.entity.SceneEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SceneIdDto extends SceneEntity {
+
+    @ApiModelProperty(value = "场景Id")
+    private Long sceneId;
+
+    @ApiModelProperty(value = "父场景ID")
+    private Long parentSceneId;
+
+    @ApiModelProperty(value = "父场景IDS")
+    private String parentSceneIds;
+}

+ 14 - 17
sms_water/src/main/java/com/huaxu/service/AbstractReportService.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaxu.common.StringUtils;
+import com.huaxu.dao.DeviceSceneMapper;
 import com.huaxu.dto.*;
+import com.huaxu.dto.scene.SceneIdDto;
 import com.huaxu.entity.DayReportEntity;
 import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +33,9 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
     @Autowired
     protected DeviceParmService deviceParmService;
 
+    @Autowired
+    protected DeviceSceneMapper deviceSceneMapper;
+
 
     /**
      * 报表数据处理
@@ -152,15 +157,11 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         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};
+            String name = queryDto.getType() == 1 ? "压力" : ((queryDto.getType() == 2) ?  "流量" : "水质");
+            SceneIdDto sceneIdDto = deviceSceneMapper.findSceneId("管网",name, queryDto.getIds()[0]);
+            if (sceneIdDto != null){
+                reportDto.setSceneId(sceneIdDto.getSceneId());
             }
-            reportDto.setParmType(Arrays.asList(parmType));*/
             reportDto.setDeviceIds(devices);
         } else {
             reportDto.setDeviceIds(devices);
@@ -182,16 +183,12 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         dto.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};
-            }
-            dto.setTypeIds(Arrays.asList(parmType));*/
             dto.setType(queryDto.getType());
+            String name = queryDto.getType() == 1 ? "压力" : ((queryDto.getType() == 2) ?  "流量" : "水质");
+            SceneIdDto sceneIdDto = deviceSceneMapper.findSceneId("管网",name, queryDto.getIds()[0]);
+            if (sceneIdDto != null){
+                dto.setSceneId(sceneIdDto.getSceneId());
+            }
         } else {
             // 管网不需要场景
             dto.setParentSceneIds(queryDto.getIds());

+ 27 - 0
sms_water/src/main/java/com/huaxu/service/ReportService.java

@@ -3,7 +3,10 @@ package com.huaxu.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.common.StringUtils;
+import com.huaxu.dao.DeviceSceneMapper;
 import com.huaxu.dto.*;
+import com.huaxu.dto.scene.SceneIdDto;
+import com.huaxu.entity.DeviceSceneEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.exception.ServiceException;
 import com.huaxu.model.LoginUser;
@@ -30,6 +33,9 @@ public class ReportService {
     @Autowired
     private DeviceParmService deviceParmService;
 
+    @Autowired
+    private DeviceSceneMapper deviceSceneMapper;
+
 
     /**
      * 查询日报月报及年报表
@@ -154,6 +160,27 @@ public class ReportService {
     }
 
 
+    /**
+     * 查询场景下的统计维度
+     * @param deviceId
+     * @return
+     */
+    public List<ReportAttributeDto> findPipeAttributeNameList(Long deviceId, Integer type){
+        ReportDto reportDto = new ReportDto();
+        String name = type == 1 ? "压力" : ((type == 2) ?  "流量" : "水质");
+        SceneIdDto sceneIdDto = deviceSceneMapper.findSceneId("管网",name, deviceId);
+        if (sceneIdDto != null) {
+            reportDto.setSceneId(sceneIdDto.getSceneId());
+        }
+        List<DeviceDto> deviceDtos = new ArrayList<>();
+        DeviceDto dto = new DeviceDto();
+        dto.setId(deviceId);
+        deviceDtos.add(dto);
+        reportDto.setDeviceIds(deviceDtos);
+        reportDto.setUserId(UserUtil.getCurrentUser().getId());
+        return deviceParmService.findAttributeNameList(reportDto);
+    }
+
     /**
      * 查询场景下的统计维度
      * @param ids

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

@@ -184,6 +184,9 @@
                     #{dramaId}
                 </foreach>
             </if>
+            <if test="dayReport.sceneId != null ">
+                and b.scene_id = #{dayReport.sceneId}
+            </if>
         </where>
         <if test="dayReport.type == null">
         order by b.parent_scene_id,a.year,a.month,a.day,a.hour
@@ -217,6 +220,7 @@
         <if test="report.day != null ">and c.`DAY`=#{report.day}</if>
         <if test="report.hour != null ">and c.`HOUR`=#{report.hour}</if>
         <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
+        <if test="report.sceneId != null ">and a.scene_id = #{report.sceneId} </if>
         ORDER BY a.SEQ
         ) as tab
         group by tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE
@@ -255,6 +259,9 @@
                 #{dramaId}
             </foreach>
         </if>
+        <if test="report.sceneId != null ">
+            and a.scene_id = #{report.sceneId}
+        </if>
         <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.day != null ">and c.`DAY`=#{report.day}</if>

+ 3 - 0
sms_water/src/main/resources/mapper/DeviceParmMapper.xml

@@ -264,6 +264,9 @@
                 #{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=",">

+ 20 - 0
sms_water/src/main/resources/mapper/DeviceSceneMapper.xml

@@ -30,6 +30,13 @@
          a.update_by as "updateBy" 
      </sql>
 
+    <sql id="deviceInnerJoins">
+        inner join sms_scene_type t3 on t1.scene_type_id=t3.id and t3. status = 1
+        inner join sms_device_scene t2 on t2.parent_scene_id=t1.id and t2. status = 1
+        inner join sms_device t6 on t2.device_id=t6.id and t6. status = 1 and t6.enable_state = 1
+        inner join sms_scene t4 on t2.scene_id=t4.id and t4. status = 1
+        inner join sms_scene_type t5 on t4.scene_type_id=t5.id and t5. status = 1
+    </sql>
 
     <!--  根据主键获取实体   -->
     <select id="findDeviceSceneById" resultType="com.huaxu.entity.DeviceSceneEntity">
@@ -52,4 +59,17 @@
             <if test="deviceId != null ">and a.device_id = #{deviceId}</if>
         </where>
     </select>
+
+    <select id="findSceneId" resultType="com.huaxu.dto.scene.SceneIdDto">
+        select  t4.id as "sceneId", t4.PARENT_SCENE_ID as "parentSceneId", t4.parent_scene_ids AS "parentSceneIds"
+        from sms_scene t1
+        <include refid="deviceInnerJoins"/>
+        left join sms_device_parm t8 on t8.scene_id = t2.scene_id and t8.device_id=t2.device_id and t8. status = 1
+        left join sms_device_attribute t9 on t8.attribute_id=t9.id and t9.status = 1
+        where t1.parent_scene_id = 0 and t1. status = 1 and t1. enable_state = 1
+        and t3.scene_type_name = #{firstSceneTypeName}
+        and t5.scene_type_name = #{secondSceneTypeName}
+        and t2.DEVICE_ID = #{deviceId}
+        order by t4.scene_name,t8.seq limit 1
+    </select>
 </mapper>

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

@@ -79,7 +79,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.hour ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.hour ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,p.REMARK,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`HOUR` ASC
 
     </select>
@@ -132,7 +132,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.day ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.day ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,p.REMARK,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`day` ASC
     </select>
     <select id="MonitorDataChartReportByYear" resultMap="MonitorDataChartReportMap">
@@ -183,7 +183,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.month ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.month ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,p.REMARK,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`month` ASC
     </select>
 
@@ -1529,7 +1529,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.day ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.day ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,p.REMARK,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`day` ASC
     </select>
     <select id="MonitorDataDeviceReport" resultMap="MonitorDataChartReportMap">

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

@@ -183,6 +183,9 @@
                     #{dramaId}
                 </foreach>
             </if>
+            <if test="monthReport.sceneId != null ">
+                and b.scene_id = #{monthReport.sceneId}
+            </if>
         </where>
         <if test="monthReport.type == null">
             order by b.parent_scene_id,a.year,a.month,a.day
@@ -218,6 +221,7 @@
         <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.sceneId != null ">and a.scene_id = #{report.sceneId} </if>
         ORDER BY a.SEQ
         ) as tab
         group by tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE
@@ -257,6 +261,9 @@
                 #{dramaId}
             </foreach>
         </if>
+        <if test="report.sceneId != null ">
+            and a.scene_id = #{report.sceneId}
+        </if>
         <if test="report.startTime != null and report.endTime != null ">
             and c.COLLECT_DATE BETWEEN #{report.startTime} AND #{report.endTime}
         </if>

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

@@ -180,6 +180,9 @@
                     #{dramaId}
                 </foreach>
             </if>
+            <if test="yearReport.sceneId != null ">
+                and b.scene_id = #{yearReport.sceneId}
+            </if>
         </where>
         <if test="yearReport.type == null">
             order by b.parent_scene_id,a.year,a.month
@@ -211,6 +214,7 @@
         <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.sceneId != null ">and a.scene_id = #{report.sceneId} </if>
         ORDER BY a.SEQ
         ) as tab
         group by tab.deviceParmId,tab.attributeName,tab.ATTRIBUTE_TYPE
@@ -249,6 +253,9 @@
                 #{dramaId}
             </foreach>
         </if>
+        <if test="report.sceneId != null ">
+            and a.scene_id = #{report.sceneId}
+        </if>
         <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>