Jelajahi Sumber

新增 首页获取设备状态统计接口

zhaiyifei 11 bulan lalu
induk
melakukan
874c66c4f3

+ 36 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/reqvo/IotDeviceListStatReqVo.java

@@ -0,0 +1,36 @@
+package com.yunfeiyun.agmp.iotm.web.domain.reqvo;
+
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.iot.common.domain.IotBaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class IotDeviceListStatReqVo extends IotBaseEntity {
+    @Excel(name = "设备业务标识")
+    private String devBid;
+
+    /** 设备类型标识 */
+    @Excel(name = "设备型号标识")
+    private String devtypeBid;
+
+    private String devCode;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String devName;
+
+    /** 设备状态 */
+    @Excel(name = "设备状态")
+    private String devStatus;
+
+    /** 经度 设备上报 */
+    @Excel(name = "经度 设备上报")
+    private BigDecimal devLng;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private BigDecimal devLat;
+}

+ 34 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/resvo/IotDeviceListStatResVo.java

@@ -0,0 +1,34 @@
+package com.yunfeiyun.agmp.iotm.web.domain.resvo;
+
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.iot.common.domain.IotBaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class IotDeviceListStatResVo extends IotBaseEntity {
+    @Excel(name = "设备业务标识")
+    private String devBid;
+
+    /** 设备类型标识 */
+    @Excel(name = "设备型号标识")
+    private String devtypeBid;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String devName;
+
+    /** 设备状态 */
+    @Excel(name = "设备状态")
+    private String devStatus;
+
+    /** 经度 设备上报 */
+    @Excel(name = "经度 设备上报")
+    private BigDecimal devLng;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private BigDecimal devLat;
+}

+ 4 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/IIotHomeService.java

@@ -1,5 +1,7 @@
 package com.yunfeiyun.agmp.iotm.web.service;
 package com.yunfeiyun.agmp.iotm.web.service;
 
 
+import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListStatReqVo;
+import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeDeviceStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeDeviceStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeTypeStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeTypeStatResVo;
 
 
@@ -9,4 +11,6 @@ public interface IIotHomeService {
     public List<IotHomeTypeStatResVo> getDeviceTypeStat();
     public List<IotHomeTypeStatResVo> getDeviceTypeStat();
 
 
     public IotHomeDeviceStatResVo getDeviceStatusStat();
     public IotHomeDeviceStatResVo getDeviceStatusStat();
+
+    public List<IotDeviceListStatResVo> getDeviceListStat(IotDeviceListStatReqVo reqVo);
 }
 }

+ 51 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotHomeServiceImpl.java

@@ -1,13 +1,23 @@
 package com.yunfeiyun.agmp.iotm.web.service.impl;
 package com.yunfeiyun.agmp.iotm.web.service.impl;
 
 
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.service.MongoService;
+import com.yunfeiyun.agmp.iot.common.util.BigDecimalUtil;
+import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListStatReqVo;
+import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeDeviceStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeDeviceStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeTypeStatResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotHomeTypeStatResVo;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotHomeService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotHomeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.MatchOperation;
+import org.springframework.data.mongodb.core.aggregation.ProjectionOperation;
+import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.List;
 
 
 @Service
 @Service
@@ -16,6 +26,9 @@ public class IotHomeServiceImpl implements IIotHomeService {
     @Autowired
     @Autowired
     private IIotDeviceService iIotDeviceService;
     private IIotDeviceService iIotDeviceService;
 
 
+    @Autowired
+    private MongoService mongoService;
+
     @Override
     @Override
     public List<IotHomeTypeStatResVo> getDeviceTypeStat() {
     public List<IotHomeTypeStatResVo> getDeviceTypeStat() {
         IotDevice iotDevice = new IotDevice();
         IotDevice iotDevice = new IotDevice();
@@ -27,4 +40,42 @@ public class IotHomeServiceImpl implements IIotHomeService {
         IotDevice iotDevice = new IotDevice();
         IotDevice iotDevice = new IotDevice();
         return iIotDeviceService.selectHomeDeviceStatusStat(iotDevice);
         return iIotDeviceService.selectHomeDeviceStatusStat(iotDevice);
     }
     }
+
+    @Override
+    public List<IotDeviceListStatResVo> getDeviceListStat(IotDeviceListStatReqVo reqVo) {
+        String tid = SecurityUtils.getTid();
+        BigDecimal devLng = reqVo.getDevLng();
+        BigDecimal devLat = reqVo.getDevLat();
+        double lng = 0;
+        double lat = 0;
+        if(devLng != null && devLat != null) {
+            lng = BigDecimalUtil.format(lng).doubleValue();
+            lat = BigDecimalUtil.format(lat).doubleValue();
+        }
+
+        Criteria criteria = new Criteria()
+                .and("tid").is(tid);
+        MatchOperation matchOperation = Aggregation.match(criteria);
+
+        ProjectionOperation projectionOperationResult = Aggregation.project("_id")
+                .and("_id").as("devtypeBid")
+                .and("count").as("count");
+
+//        Aggregation aggregation = Aggregation.newAggregation(
+//                matchOperation,
+//                groupOperation,
+//                projectionOperationResult
+//        );
+//        List<IotIndexDevicetypeCountResVo> dataList = mongoService.aggregate(IotDeviceGeoLocation.class, aggregation, IotIndexDevicetypeCountResVo.class);
+//        for(IotIndexDevicetypeCountResVo item : dataList) {
+//            String devtypeBid = item.getDevtypeBid();
+//            TosDevicetype devicetype = devicetypeMap.get(devtypeBid);
+//            if (devicetype != null) {
+//                item.setDevtypeName(devicetype.getDevtypeName());
+//                item.setDevtypePreview(devicetype.getDevtypePreview());
+//            }
+//        }
+
+        return null;
+    }
 }
 }