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

新增 首页获取设备类型统计接口

zhaiyifei пре 11 месеци
родитељ
комит
8e5330a6c3

+ 36 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/controller/TosHomeController.java

@@ -0,0 +1,36 @@
+package com.yunfeiyun.agmp.iotm.web.controller;
+
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.iot.common.domain.resvo.IotIndexDevicetypeCountResVo;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceGeoLocationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 物联网首页 Controller
+ * 
+ * @author 杨晓辉
+ * @date 2024-11-06
+ */
+@RestController
+@RequestMapping("/iot/home")
+public class TosHomeController extends BaseController
+{
+
+    @Autowired
+    private IIotDeviceGeoLocationService iotDeviceGeoLocationService;
+
+    /**
+     * 查询设备类型列表
+     */
+    @GetMapping("/type/list")
+    public AjaxResult list() {
+        List<IotIndexDevicetypeCountResVo> dataList = iotDeviceGeoLocationService.getDeviceTypeCountList();
+        return success(dataList);
+    }
+}

+ 13 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/IIotDeviceGeoLocationService.java

@@ -0,0 +1,13 @@
+package com.yunfeiyun.agmp.iotm.web.service;
+
+import com.yunfeiyun.agmp.iot.common.domain.resvo.IotIndexDevicetypeCountResVo;
+
+import java.util.List;
+
+public interface IIotDeviceGeoLocationService {
+
+    /**
+     * 获取设备类型数量列表
+     */
+    public List<IotIndexDevicetypeCountResVo> getDeviceTypeCountList();
+}

+ 67 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceGeoLocationServiceImpl.java

@@ -0,0 +1,67 @@
+package com.yunfeiyun.agmp.iotm.web.service.impl;
+
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.iot.common.domain.IotDeviceGeoLocation;
+import com.yunfeiyun.agmp.iot.common.domain.TosDevicetype;
+import com.yunfeiyun.agmp.iot.common.domain.resvo.IotIndexDevicetypeCountResVo;
+import com.yunfeiyun.agmp.iot.common.service.MongoService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceGeoLocationService;
+import com.yunfeiyun.agmp.iotm.web.service.ITosDevicetypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.GroupOperation;
+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 java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class IotDeviceGeoLocationServiceImpl implements IIotDeviceGeoLocationService {
+
+    @Autowired
+    private MongoService mongoService;
+
+    @Autowired
+    private ITosDevicetypeService tosDevicetypeService;
+
+    /**
+     * 获取设备类型数量列表
+     */
+    @Override
+    public List<IotIndexDevicetypeCountResVo> getDeviceTypeCountList() {
+        String tid = SecurityUtils.getTid();
+        List<TosDevicetype> devicetypeList = tosDevicetypeService.selectTosDevicetypeList(null);
+        Map<String, TosDevicetype> devicetypeMap = new HashMap<>();
+        for (TosDevicetype devicetype : devicetypeList) {
+            devicetypeMap.put(devicetype.getDevtypeBid(), devicetype);
+        }
+
+        Criteria criteria = new Criteria().and("tid").is(tid);
+        MatchOperation matchOperation = Aggregation.match(criteria);
+        GroupOperation groupOperation = Aggregation.group("devtypeBid").count().as("count");
+
+        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 dataList;
+    }
+}

+ 5 - 5
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceServiceImpl.java

@@ -11,7 +11,7 @@ import com.yunfeiyun.agmp.iot.common.enums.IotDeviceDelStatusEnum;
 import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
 import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.model.mq.IotDeviceEditMqModel;
 import com.yunfeiyun.agmp.iot.common.model.mq.IotDeviceEditMqModel;
-import com.yunfeiyun.agmp.iot.common.service.IotDeviceGeoLocationService;
+import com.yunfeiyun.agmp.iot.common.service.IotDeviceGeoLocationCommonService;
 import com.yunfeiyun.agmp.iot.common.service.TypeCacheService;
 import com.yunfeiyun.agmp.iot.common.service.TypeCacheService;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
 import com.yunfeiyun.agmp.iotm.mq.service.SendToIotsMsgService;
 import com.yunfeiyun.agmp.iotm.mq.service.SendToIotsMsgService;
@@ -66,7 +66,7 @@ public class IotDeviceServiceImpl implements IIotDeviceService {
     private String runMode;
     private String runMode;
 
 
     @Autowired
     @Autowired
-    private IotDeviceGeoLocationService iotDeviceGeoLocationService;
+    private IotDeviceGeoLocationCommonService iotDeviceGeoLocationCommonService;
 
 
 
 
     /**
     /**
@@ -313,7 +313,7 @@ public class IotDeviceServiceImpl implements IIotDeviceService {
             }
             }
         }).start();
         }).start();
 
 
-        iotDeviceGeoLocationService.insertOrUpdateBatchData(iotDeviceList);
+        iotDeviceGeoLocationCommonService.insertOrUpdateBatchData(iotDeviceList);
 
 
         return status;
         return status;
     }
     }
@@ -346,7 +346,7 @@ public class IotDeviceServiceImpl implements IIotDeviceService {
         int status = iotDeviceMapper.updateIotDevice(iotDevice);
         int status = iotDeviceMapper.updateIotDevice(iotDevice);
         List<IotDevice> iotDeviceList = new ArrayList<>();
         List<IotDevice> iotDeviceList = new ArrayList<>();
         iotDeviceList.add(iotDevice);
         iotDeviceList.add(iotDevice);
-        iotDeviceGeoLocationService.insertOrUpdateBatchData(iotDeviceList);
+        iotDeviceGeoLocationCommonService.insertOrUpdateBatchData(iotDeviceList);
         return status;
         return status;
     }
     }
 
 
@@ -368,7 +368,7 @@ public class IotDeviceServiceImpl implements IIotDeviceService {
 
 
         List<String> devBidList = new ArrayList<>();
         List<String> devBidList = new ArrayList<>();
         devBidList.add(devBid);
         devBidList.add(devBid);
-        iotDeviceGeoLocationService.deleteByDevBidList(devBidList);
+        iotDeviceGeoLocationCommonService.deleteByDevBidList(devBidList);
         return result;
         return result;
     }
     }