Преглед изворни кода

场景设备关联接口增加

wangli пре 4 година
родитељ
комит
8311241b41

+ 11 - 0
sms_water/src/main/java/com/huaxu/controller/DeviceController.java

@@ -99,6 +99,17 @@ public class DeviceController {
         deviceDto.setEnableState(enableState);
         return new AjaxMessage<>(ResultStatus.OK, deviceService.selectList(deviceDto));
     }
+
+    @RequestMapping(value="selectListBySceneId" , method = RequestMethod.GET)
+    @ApiOperation(value = "根据场景查询设备信息(场景设备联动)")
+    public AjaxMessage<List<DeviceDto>> selectListBySceneId(
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId
+    ){
+        DeviceDto deviceDto = new DeviceDto();
+        deviceDto.setSceneId(sceneId);
+        return new AjaxMessage<>(ResultStatus.OK, deviceService.selectListBySceneId(deviceDto));
+    }
+
     @RequestMapping(value="selectListByScene" , method = RequestMethod.GET)
     @ApiOperation(value = "按场景查询设备信息(场景绑定设备信息)")
     public AjaxMessage<List<DeviceDto>> selectListByScene(

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

@@ -67,4 +67,6 @@ public interface DeviceMapper {
 
     List<DeviceDto> selectListByScene( @Param("deviceDto") DeviceDto deviceDto);
 
+    List<DeviceDto> selectListBySceneId( @Param("deviceDto") DeviceDto deviceDto);
+
 }

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

@@ -51,5 +51,6 @@ public interface DeviceService {
     List<DeviceDto> selectList(DeviceDto deviceDto);
 
     List<DeviceDto> selectListByScene(DeviceDto deviceDto);
+    List<DeviceDto> selectListBySceneId(DeviceDto deviceDto);
 
 }

+ 11 - 0
sms_water/src/main/java/com/huaxu/service/impl/DeviceServiceImpl.java

@@ -112,4 +112,15 @@ public class DeviceServiceImpl implements DeviceService {
         return deviceMapper.selectListByScene(deviceDto);
     }
 
+
+    @Override
+    public List<DeviceDto> selectListBySceneId(DeviceDto deviceDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        deviceDto.setTenantId(loginUser.getTenantId());
+        deviceDto.setProgramItems(loginUser.getProgramItemList());
+        deviceDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        deviceDto.setPermissonType(loginUser.getPermissonType());
+        return deviceMapper.selectListBySceneId(deviceDto);
+    }
 }

+ 45 - 1
sms_water/src/main/resources/mapper/DeviceMapper.xml

@@ -104,7 +104,51 @@
         </if>
 
     </select>
-    <!--通过实体作为筛选条件查询-->
+    <select id="selectListBySceneId" resultType="com.huaxu.dto.DeviceDto">
+        select
+        d.id
+        ,d.DEVICE_NAME as "deviceName"
+        from sms_device d
+        left join sms_device_scene s on s.DEVICE_ID=d.ID
+        where d.status = 1 and s.status=1
+        <if test="deviceDto.sceneId != null ">
+            and s.SCENE_ID=#{deviceDto.sceneId}
+        </if>
+
+        <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
+            and d.tenant_id = #{deviceDto.tenantId}
+        </if>
+
+        <if test="deviceDto.userType!=null and deviceDto.userType!=-999 and deviceDto.userType!=-9999 and  deviceDto.programItems != null and deviceDto.programItems.size() > 0">
+            <if test="deviceDto.permissonType == 5 or deviceDto.permissonType == 2">
+                and ( d.DEPT_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                d.COMPANY_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="deviceDto.permissonType == 4 or deviceDto.permissonType == 3">
+                and d.DEPT_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="deviceDto.permissonType == 1">
+                and d.COMPANY_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
+            </if>
+        </if>
+    </select>
+
+
     <select id="selectListByScene" resultType="com.huaxu.dto.DeviceDto">
         select
          d.id

+ 9 - 6
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -29,7 +29,7 @@
     <select id="MonitorDataChartReportByDay" resultMap="MonitorDataChartReportMap">
         SELECT
             r.`HOUR` AS "dateLabel",
-            CONCAT( r.PARENT_SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
             r.DEVICE_CODE AS "devoceCode",
             r.ATTRIBUTE_NAME AS "attributeName",
             da.unit AS "unit",
@@ -40,6 +40,7 @@
         LEFT JOIN sms_day_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
+        left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1
             and p.PARENT_SCENE_ID=#{sceneId}
             and r.year=#{year}
@@ -75,14 +76,14 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.hour ,r.PARENT_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,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`HOUR` ASC
 
     </select>
     <select id="MonitorDataChartReportByMonth" resultMap="MonitorDataChartReportMap">
         SELECT
             r.`day` AS "dateLabel",
-            CONCAT( r.PARENT_SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
             r.DEVICE_CODE AS "devoceCode",
             r.ATTRIBUTE_NAME AS "attributeName",
             da.unit AS "unit",
@@ -93,6 +94,7 @@
         LEFT JOIN sms_month_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
+        left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1
         and p.PARENT_SCENE_ID=#{sceneId}
         and r.year=#{year}
@@ -127,13 +129,13 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.day ,r.PARENT_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,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`day` ASC
     </select>
     <select id="MonitorDataChartReportByYear" resultMap="MonitorDataChartReportMap">
         SELECT
             r.`month` AS "dateLabel",
-            CONCAT( r.PARENT_SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
             r.DEVICE_CODE AS "devoceCode",
             r.ATTRIBUTE_NAME AS "attributeName",
             da.unit AS "unit",
@@ -144,6 +146,7 @@
         LEFT JOIN sms_year_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
+        left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1
         and p.PARENT_SCENE_ID=#{sceneId}
         and r.year=#{year}
@@ -177,7 +180,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.month ,r.PARENT_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,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`month` ASC
     </select>