浏览代码

'开发监控电视墙实时数据采集接口'

james 1 年之前
父节点
当前提交
a2e771bf41

+ 1 - 1
service-backend/service-backend-api/src/main/java/com/usky/backend/client/DeviceDataClient.java

@@ -13,5 +13,5 @@ import java.util.List;
 public interface DeviceDataClient {
 
     @RequestMapping(value = "data")
-    List<DataRealTimeResponseVO> data(@RequestParam("productCode") String productCode, @RequestParam(value = "deviceIds") List<String> deviceIds);
+    List<DataRealTimeResponseVO> data(@RequestParam(value = "productCode",required = false) String productCode, @RequestParam(value = "deviceIds",required = false) List<String> deviceIds);
 }

+ 22 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVRequestVO.java

@@ -0,0 +1,22 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DataTVRequestVO implements Serializable {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+    /**
+     * 设备类型
+     */
+    private Integer deviceType;
+}

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

@@ -0,0 +1,20 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class DataTVResponseVO implements Serializable {
+    //设备Id
+    private String deviceId;
+    //设备名称
+    private String deviceName;
+    //设备类型编码
+    private Integer deviceType;
+    //安装位置
+    private String installAddress;
+    //设备属性集合
+    private List<DeviceAttributeVO> dp;
+}

+ 19 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DeviceAttributeVO.java

@@ -0,0 +1,19 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DeviceAttributeVO implements Serializable {
+    //属性编码
+    private String code;
+    //属性名称
+    private String name;
+    //属性值
+    private String value;
+    //单位
+    private String unit;
+    //上报时间
+    private String time;
+}

+ 2 - 1
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataRealTimeServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.backend.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.backend.domain.DataRealTime;
 import com.usky.backend.domain.request.DataRealTimeRequestVO;
@@ -31,7 +32,7 @@ public class DataRealTimeServiceImpl extends AbstractCrudService<DataRealTimeMap
         List<DataRealTimeResponseVO> responseVOList = new ArrayList<>();
 
         LambdaQueryWrapper<DataRealTime> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(DataRealTime::getProductCode, productCode)
+        queryWrapper.eq(StringUtils.isNotBlank(productCode),DataRealTime::getProductCode, productCode)
                 .in(DataRealTime::getDeviceId, deviceIds);
         List<DataRealTime> list = this.list(queryWrapper);
         if(CollectionUtils.isNotEmpty(list)){

+ 11 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java

@@ -4,10 +4,7 @@ package com.usky.iot.controller.web;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.usky.backend.domain.DataAverageExportVO;
-import com.usky.backend.domain.DataAverageRequestVO;
-import com.usky.backend.domain.DataAverageResponseVO;
-import com.usky.backend.domain.DataTotalRequestVO;
+import com.usky.backend.domain.*;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.utils.poi.ExcelUtil;
@@ -138,7 +135,16 @@ public class DmpDeviceInfoController {
         return ApiResult.success(dmpDeviceInfoService.deviceCurrentDataList(deviceName,installAddress,productCode,pageNum,pageSize));
     }
 
-
+    /**
+     * 监控电视墙实时数据接口
+     *
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("dataTVList")
+    public ApiResult<CommonPage<DataTVResponseVO>> dataTVList(@RequestBody DataTVRequestVO requestVO){
+        return ApiResult.success(dmpDeviceInfoService.dataTVList(requestVO));
+    }
 
     /**
      * 获取设备某个时间端内的汇总值

+ 3 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java

@@ -1,9 +1,6 @@
 package com.usky.iot.service;
 
-import com.usky.backend.domain.DataAverageExportVO;
-import com.usky.backend.domain.DataAverageRequestVO;
-import com.usky.backend.domain.DataAverageResponseVO;
-import com.usky.backend.domain.DataTotalRequestVO;
+import com.usky.backend.domain.*;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDeviceInfo;
@@ -64,6 +61,8 @@ public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
     CommonPage<Object> deviceCurrentDataList(String deviceName,String installAddress,String productCode,Integer pageNum,Integer pageSize);
 
+    CommonPage<DataTVResponseVO> dataTVList(DataTVRequestVO requestVO);
+
     List<Map<String,Object>> deviceDataTotal(DataTotalRequestVO requestVO);
     List<DataAverageResponseVO> deviceDataAverage(DataAverageRequestVO requestVO);
     List<DataAverageExportVO> DataAverageExport(DataAverageRequestVO requestVO);

+ 77 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -18,10 +18,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mysql.cj.x.protobuf.MysqlxDatatypes;
 import com.usky.backend.client.DataQueryClient;
 import com.usky.backend.client.DeviceDataClient;
-import com.usky.backend.domain.DataAverageExportVO;
-import com.usky.backend.domain.DataAverageRequestVO;
-import com.usky.backend.domain.DataAverageResponseVO;
-import com.usky.backend.domain.DataTotalRequestVO;
+import com.usky.backend.domain.*;
 import com.usky.backend.domain.response.DataRealTimeResponseVO;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
@@ -34,12 +31,14 @@ import com.usky.iot.mapper.DmpDeviceInfoMapper;
 import com.usky.iot.service.BaseFacilityDeviceService;
 import com.usky.iot.service.DmpDeviceInfoService;
 import com.usky.iot.service.DmpDeviceStatusService;
+import com.usky.iot.service.DmpProductAttributeService;
 import com.usky.iot.service.vo.*;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
+import sun.net.dns.ResolverConfiguration;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
@@ -62,6 +61,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     @Autowired
     private DmpDeviceStatusService dmpDeviceStatusService;
 
+    @Autowired
+    private DmpProductAttributeService dmpProductAttributeService;
+
     @Autowired
     private BaseFacilityDeviceService baseFacilityDeviceService;
 
@@ -571,6 +573,77 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         return new CommonPage<>(objectList,total,pageNum,pageSize);
     }
 
+    @Override
+    public CommonPage<DataTVResponseVO> dataTVList(DataTVRequestVO requestVO){
+        List<DataTVResponseVO> list = new ArrayList<>();
+
+        IPage<DmpDeviceInfo> page = new Page<>(requestVO.getCurrent(), requestVO.getSize());
+        LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(DmpDeviceInfo::getDeviceId,DmpDeviceInfo::getDeviceName,DmpDeviceInfo::getDeviceType,DmpDeviceInfo::getInstallAddress)
+                .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
+                .eq(requestVO.getDeviceType() != null,DmpDeviceInfo::getDeviceType,requestVO.getDeviceType())
+                .orderByDesc(DmpDeviceInfo::getId);
+        page = this.page(page,queryWrapper);
+        if(page.getSize() <=0){
+            return new CommonPage<>(list,0,requestVO.getSize(),requestVO.getCurrent());
+        }
+
+        if(page.getRecords().size() > 0){
+            List<String> deviceIdList = new ArrayList<>();
+            for(int i=0;i<page.getRecords().size();i++){
+                deviceIdList.add(page.getRecords().get(i).getDeviceId());
+            }
+
+            QueryWrapper<DmpProductAttribute> query = new QueryWrapper<>();
+            query.select("DISTINCT attribute_code,attribute_name,attribute_unit");
+            List<DmpProductAttribute> attributeVOList = dmpProductAttributeService.list(query);
+
+            if(deviceIdList.size() > 0){
+                List<DataRealTimeResponseVO> dataRealList = deviceDataClient.data(null,deviceIdList);
+                for(int i=0;i<page.getRecords().size();i++){
+                    DataTVResponseVO dataTVResponseVO = new DataTVResponseVO();
+                    dataTVResponseVO.setDeviceId(page.getRecords().get(i).getDeviceId());
+                    dataTVResponseVO.setDeviceName(page.getRecords().get(i).getDeviceName());
+                    dataTVResponseVO.setDeviceType(page.getRecords().get(i).getDeviceType());
+                    dataTVResponseVO.setInstallAddress(page.getRecords().get(i).getInstallAddress());
+                    List<DeviceAttributeVO> list1 = new ArrayList<>();
+                    if(dataRealList.size() > 0){
+                        for (int j = 0; j < dataRealList.size(); j++) {
+                            if(page.getRecords().get(i).getDeviceId().equals(dataRealList.get(j).getDeviceId())){
+                                DeviceAttributeVO attributeVO = new DeviceAttributeVO();
+                                attributeVO.setCode(dataRealList.get(j).getAttributeName());
+                                attributeVO.setValue(dataRealList.get(j).getAttributeData());
+                                attributeVO.setTime(""+dataRealList.get(j).getDataTime());
+                                if((attributeVOList.size() >0)){
+                                    for (int k = 0; k < attributeVOList.size(); k++) {
+                                        if(dataRealList.get(j).getAttributeName().equals(attributeVOList.get(k).getAttributeCode())){
+                                            if(Objects.nonNull(attributeVOList.get(k).getAttributeName())){
+                                                attributeVO.setName(attributeVOList.get(k).getAttributeName());
+                                            }
+                                            if(Objects.nonNull(attributeVOList.get(k).getAttributeUnit())){
+                                                attributeVO.setUnit(attributeVOList.get(k).getAttributeUnit());
+                                            }
+                                            break;
+                                        }
+                                    }
+                                }
+
+                                list1.add(attributeVO);
+                            }
+                        }
+                    }
+                    dataTVResponseVO.setDp(list1);
+                    list.add(dataTVResponseVO);
+                }
+
+
+            }
+        }
+
+
+        return new CommonPage<>(list,page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
     @Override
     public List<Map<String,Object>> deviceDataTotal(DataTotalRequestVO requestVO){
         List<Map<String,Object>> list = dataQueryClient.deviceDataTotal(requestVO);