Explorar el Código

Merge branch 'usky-zyj' of uskycloud/usky-modules into server-165

James hace 1 año
padre
commit
e9d4344e44

+ 2 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVResponseVO.java

@@ -15,6 +15,8 @@ public class DataTVResponseVO implements Serializable {
     private Integer deviceType;
     //安装位置
     private String installAddress;
+    //设备状态;1:在线,2:离线
+    private Integer deviceStatus;
     //设备属性集合
     private List<DeviceAttributeVO> dp;
 }

+ 16 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVStatisticResponseVO.java

@@ -0,0 +1,16 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DataTVStatisticResponseVO implements Serializable {
+
+    //告警数
+    private Integer alarmNum;
+
+    //离线数
+    private Integer offlineNum;
+
+}

+ 12 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java

@@ -136,7 +136,7 @@ public class DmpDeviceInfoController {
     }
 
     /**
-     * 监控电视墙实时数据接口
+     * 监控电视墙实时数据
      *
      * @param requestVO
      * @return
@@ -146,6 +146,17 @@ public class DmpDeviceInfoController {
         return ApiResult.success(dmpDeviceInfoService.dataTVList(requestVO));
     }
 
+    /**
+     * 监控电视墙设备(告警、离线)统计
+     *
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("dataTVStatistic")
+    public ApiResult<List<DataTVStatisticResponseVO>> dataTVStatistic(@RequestBody DataTVRequestVO requestVO){
+        return ApiResult.success(dmpDeviceInfoService.dataTVStatistic(requestVO));
+    }
+
     /**
      * 获取设备某个时间端内的汇总值
      * @param requestVO

+ 4 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceInfoMapper.java

@@ -27,4 +27,8 @@ public interface DmpDeviceInfoMapper extends CrudMapper<DmpDeviceInfo> {
     Page<DmpDeviceInfo> page(IPage<DmpDeviceInfo> page, @Param("ar")DmpDeviceInfoRequest dmpDeviceInfoRequest, @Param("tenantId") Integer tenantId);
 
     List<ProductTVAttributeVO> attributeList(@Param("procutIdList") List<Integer> productIdList);
+
+    Integer baseAlarmCount(@Param("deviceIdList") List<String> deviceIdList);
+
+    Integer deviceOfflineCount(@Param("deviceIdList") List<String> deviceIdList);
 }

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java

@@ -63,6 +63,8 @@ public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
     CommonPage<DataTVResponseVO> dataTVList(DataTVRequestVO requestVO);
 
+    List<DataTVStatisticResponseVO> dataTVStatistic(DataTVRequestVO requestVO);
+
     List<Map<String,Object>> deviceDataTotal(DataTotalRequestVO requestVO);
     List<DataAverageResponseVO> deviceDataAverage(DataAverageRequestVO requestVO);
     List<DataAverageExportVO> DataAverageExport(DataAverageRequestVO requestVO);

+ 39 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -581,6 +581,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select(DmpDeviceInfo::getProductId,DmpDeviceInfo::getDeviceId,DmpDeviceInfo::getDeviceName,DmpDeviceInfo::getDeviceType,DmpDeviceInfo::getInstallAddress)
                 .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
+                .eq(DmpDeviceInfo::getDeleteFlag,0)
                 .eq(requestVO.getDeviceType() != null,DmpDeviceInfo::getDeviceType,requestVO.getDeviceType())
                 .eq(StringUtils.isNotBlank(requestVO.getDeviceId()),DmpDeviceInfo::getDeviceId,requestVO.getDeviceId())
                 .orderByDesc(DmpDeviceInfo::getId);
@@ -602,6 +603,10 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
             List<ProductTVAttributeVO> attributeVOList = baseMapper.attributeList(productIdList);
 
             if(deviceIdList.size() > 0){
+                LambdaQueryWrapper<DmpDeviceStatus> queryWrapper1 = Wrappers.lambdaQuery();
+                queryWrapper1.in(DmpDeviceStatus::getDeviceId,deviceIdList);
+                List<DmpDeviceStatus> deviceStatusList = dmpDeviceStatusService.list(queryWrapper1);
+
                 List<DataRealTimeResponseVO> dataRealList = deviceDataClient.data(null,deviceIdList);
                 for(int i=0;i<page.getRecords().size();i++){
                     DataTVResponseVO dataTVResponseVO = new DataTVResponseVO();
@@ -609,6 +614,14 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
                     dataTVResponseVO.setDeviceName(page.getRecords().get(i).getDeviceName());
                     dataTVResponseVO.setDeviceType(page.getRecords().get(i).getDeviceType());
                     dataTVResponseVO.setInstallAddress(page.getRecords().get(i).getInstallAddress());
+                    if(CollectionUtils.isNotEmpty(deviceStatusList)){
+                        for (int j = 0; j < deviceStatusList.size(); j++) {
+                            if(page.getRecords().get(i).getDeviceId().equals(deviceStatusList.get(j).getDeviceId())){
+                                dataTVResponseVO.setDeviceStatus(deviceStatusList.get(j).getDeviceStatus());
+                            }
+                        }
+                    }
+
                     List<DeviceAttributeVO> list1 = new ArrayList<>();
                     if(dataRealList.size() > 0){
                         for (int j = 0; j < dataRealList.size(); j++) {
@@ -647,6 +660,32 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         return new CommonPage<>(list,page.getTotal(),page.getSize(),page.getCurrent());
     }
 
+    @Override
+    public List<DataTVStatisticResponseVO> dataTVStatistic(DataTVRequestVO requestVO){
+        List<DataTVStatisticResponseVO> list = new ArrayList<>();
+        LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(DmpDeviceInfo::getProductId,DmpDeviceInfo::getDeviceId,DmpDeviceInfo::getDeviceName,DmpDeviceInfo::getDeviceType,DmpDeviceInfo::getInstallAddress)
+                .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
+                .eq(DmpDeviceInfo::getDeleteFlag,0)
+                .eq(requestVO.getDeviceType() != null,DmpDeviceInfo::getDeviceType,requestVO.getDeviceType())
+                .orderByDesc(DmpDeviceInfo::getId);
+        List<DmpDeviceInfo> list1 = this.list(queryWrapper);
+        if(CollectionUtils.isNotEmpty(list1)){
+            List<String> deviceIdList = new ArrayList<>();
+            for (int i = 0; i < list1.size(); i++) {
+                deviceIdList.add(list1.get(i).getDeviceId());
+            }
+            Integer alarmCount = baseMapper.baseAlarmCount(deviceIdList);
+            Integer offlineCount = baseMapper.deviceOfflineCount(deviceIdList);
+            DataTVStatisticResponseVO responseVO = new DataTVStatisticResponseVO();
+            responseVO.setAlarmNum(alarmCount);
+            responseVO.setOfflineNum(offlineCount);
+            list.add(responseVO);
+        }
+
+        return list;
+    }
+
     @Override
     public List<Map<String,Object>> deviceDataTotal(DataTotalRequestVO requestVO){
         List<Map<String,Object>> list = dataQueryClient.deviceDataTotal(requestVO);

+ 30 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

@@ -74,5 +74,35 @@
             </if>
         </where>
     </select>
+    <select id="baseAlarmCount" resultType="integer">
+        select count(*)
+        from base_alarm
+        <where>
+            <if test="deviceIdList != null and deviceIdList.size() > 0">
+                and device_id in
+                <foreach item="item" collection="deviceIdList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="1 == 1">
+                and handle_status = 0
+            </if>
+        </where>
+    </select>
+    <select id="deviceOfflineCount" resultType="integer">
+        select count(*)
+        from dmp_device_status
+        <where>
+            <if test="deviceIdList != null and deviceIdList.size() > 0">
+            and device_id in
+                <foreach item="item" collection="deviceIdList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="1 == 1">
+                and device_status = 2
+            </if>
+        </where>
+    </select>
 
 </mapper>