Pārlūkot izejas kodu

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

gez 1 gadu atpakaļ
vecāks
revīzija
63cfcf99b3

+ 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);

+ 16 - 27
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -184,37 +184,23 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         List<BaseAlarm> list = new ArrayList<>();
 
         LambdaQueryWrapper<BaseAlarm> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
+                .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
+                .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
+                        baseAlarmListVO.getAlarmType())
+                .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
+                .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
+                .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId());
         if (StringUtils.isNotBlank(baseAlarmListVO.getTypeCode())){
             if (baseAlarmListVO.getTypeCode().equals("1")){
-                queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
-                        .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
-                        .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
-                                baseAlarmListVO.getAlarmType())
-                        .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
-                        .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
-                        .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
-                        .eq(BaseAlarm::getAlarmGrade,1)
+                queryWrapper.eq(BaseAlarm::getAlarmGrade,1)
                         .orderByDesc(BaseAlarm::getId);
             }else if (baseAlarmListVO.getTypeCode().equals("2")){
-                queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
-                        .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
-                        .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
-                                baseAlarmListVO.getAlarmType())
-                        .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
-                        .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
-                        .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
-                        .ne(BaseAlarm::getAlarmGrade,1)
+                queryWrapper.ne(BaseAlarm::getAlarmGrade,1)
                         .orderByDesc(BaseAlarm::getId);
             }
         }else {
-            queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
-                    .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
-                    .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
-                            baseAlarmListVO.getAlarmType())
-                    .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
-                    .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
-                    .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
-                    .orderByDesc(BaseAlarm::getId);
+            queryWrapper.orderByDesc(BaseAlarm::getId);
         }
         List<BaseAlarm> records = this.list(queryWrapper);
         if(records.size()>0){
@@ -718,16 +704,19 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         queryWrapper.select("COUNT(alarm_grade=1 or null) as alarmCount","COUNT(alarm_grade!=1 or" +
                 " null) as hiddenCount","COUNT(alarm_grade=1 and handle_status=1 or null) as ahAlarmCount","COUNT" +
                 "(alarm_grade!=1 and handle_status=1 or null) as ahHiddenCount")
-                .between("alarm_time",startOfDay,now);
+                .between("alarm_time",startOfDay,now)
+                .eq("tenant_id",SecurityUtils.getTenantId());
         List<Map<String,Object>> alarmStatisticList = this.listMaps(queryWrapper);
         QueryWrapper<BaseAlarm> queryWrapper1 = Wrappers.query();
         queryWrapper1.select("COUNT(alarm_grade=1 or null) as alarmCount","COUNT(alarm_grade=1 and handle_status=1 or null) as ahAlarmCount")
-                .between("alarm_time",startOfYear,now);
+                .between("alarm_time",startOfYear,now)
+                .eq("tenant_id",SecurityUtils.getTenantId());
         List<Map<String,Object>> alarmStatisticList1 = this.listMaps(queryWrapper1);
         QueryWrapper<BaseAlarm> queryWrapper2 = Wrappers.query();
         queryWrapper2.select("COUNT(alarm_grade=1 and handle_status=0 or null) as alarmCount","COUNT(alarm_grade=1 " +
                 "and alarm_type='111' or null) as fireAlarmCount","COUNT(alarm_grade!=1 and handle_status=0 or null) " +
-                "as hiddenCount");
+                "as hiddenCount")
+                .eq("tenant_id",SecurityUtils.getTenantId());
         List<Map<String,Object>> alarmStatisticList2 = this.listMaps(queryWrapper2);
         BigDecimal ahAlarmCountBig = new BigDecimal(Integer.valueOf(alarmStatisticList.get(0).get("ahAlarmCount").toString()));
         BigDecimal temp = new BigDecimal(Integer.valueOf(alarmStatisticList.get(0).get("alarmCount").toString()));

+ 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>

+ 0 - 13
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpHj2017ServiceImpl.java

@@ -39,19 +39,6 @@ public class SpHj2017ServiceImpl extends AbstractCrudService<SpHj2017Mapper, SpH
         QueryWrapper<SpHj2017> queryWrapper = Wrappers.query();
         queryWrapper.select("DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS alarm_time", "data2 AS alarm_type", "data4 AS alarm_point", "device_code")
                 .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype IN (1,3)");
-        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
-        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
-            // 如果同时传了 startTime 和 endTime
-            queryWrapper.between("time", startTimeString, endTimeString);
-        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
-            // 如果只传了 startTime
-            queryWrapper.between("time", startTimeString, LocalDateTime.now().toString());
-        } else if (StringUtils.isNotBlank(endTimeString) && StringUtils.isBlank(startTimeString)) {
-            // 如果只传了 endTime
-            queryWrapper.le("time", endTimeString);
-        } else {
-            throw new BusinessException("时间参数错误");
-        }
         queryWrapper.last("LIMIT " + pageSize + " OFFSET " + startIndex)
                 .orderByDesc("id");
         List<Map<String, Object>> deviceStatusList = this.listMaps(queryWrapper);