Răsfoiți Sursa

feate: app新增统计接口

jackzhou 6 luni în urmă
părinte
comite
ac87fa5288

+ 19 - 3
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/controller/AppController.java

@@ -1,6 +1,7 @@
 package vip.xiaonuo.coldchain.modular.app.controller;
 
 import cn.hutool.core.io.resource.InputStreamResource;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
@@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.coldchain.modular.app.param.*;
 import vip.xiaonuo.coldchain.modular.app.service.AppDeviceService;
 import vip.xiaonuo.coldchain.modular.app.service.MessageService;
+import vip.xiaonuo.common.pojo.CommonResult;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -22,19 +24,33 @@ import java.util.Map;
 @RestController
 @RequestMapping("/coldchain/api/app")
 public class AppController {
-
     @Autowired
     private AppDeviceService appDeviceService;
     @Autowired
     private MessageService messageService;
 
 
+    @GetMapping("/device-status")
+    @Operation(summary = "设备总缆")
+    public CommonResult<DeviceStatus> getDeviceStatus() {
+        int totalDevices = 180;
+        int onlineDevices = 120;
+        int offlineDevices = 60;
+        DeviceStatus deviceStatus = new DeviceStatus(totalDevices, onlineDevices, offlineDevices);
+        return CommonResult.data(deviceStatus);
+    }
+
     @GetMapping("/devices")
     @Operation(summary = "设备列表")
-    public List<AppDevice> getDevices() {
-        return appDeviceService.getAllDevices();
+    public CommonResult<Page<AppDevice>> devices(AppDevicePageParam appDevicePageParam) {
+        return CommonResult.data(appDeviceService.getAllDevices(appDevicePageParam));
     }
 
+    @Operation(summary = "分页设备")
+    @GetMapping("/device/page")
+    public CommonResult<Page<AppDevice>> devicePage(AppDevicePageParam appDevicePageParam) {
+        return CommonResult.data(appDeviceService.pageDevices(appDevicePageParam));
+    }
 
     /**
      * 添加设备接口

+ 18 - 4
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/AppDevice.java

@@ -8,6 +8,7 @@ package vip.xiaonuo.coldchain.modular.app.param;
  * @date 2024/11/17 22:30:15
  */
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -15,6 +16,7 @@ import lombok.NoArgsConstructor;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
@@ -22,15 +24,25 @@ import java.util.Locale;
 @AllArgsConstructor
 @NoArgsConstructor
 public class AppDevice {
+    @Schema(description = "设备名称")
     private String deviceName;
+    @Schema(description = "设备编码")
     private String deviceCode;
+    /**
+     * 状态(1:正常,2:闲置)
+     */
+    @Schema(description = "状态(1:正常,2:停用)")
+    private Integer status = 1;
+
     /**
      * 电池电量 (%)
      */
+    @Schema(description = "电池电量 (%)")
     private double batteryPercentage;
     /**
      * 最近更新时间
      */
+    @Schema(description = "最近更新时间")
     private LocalDateTime lastUpdated;
 
     /**
@@ -38,22 +50,24 @@ public class AppDevice {
      *
      * @return
      */
+    @Schema(description = "是否插电")
     private boolean plugIn = false;
 
     /**
-     * 上次一次登录时间
+     * 最近一次登录时间
      *
      * @return
      */
+    @Schema(description = "最近一次登录时间")
     private LocalDateTime lastLoginTime;
 
     /**
-     * 关键的设备探头
+     * 关键的设备探头集合
      *
      * @return
      */
-
-    private List<AppDeviceData> children;
+    @Schema(description = "关键的设备探头集合")
+    private List<AppDeviceData> children=new ArrayList<AppDeviceData>();
 
 
     // 格式化 lastUpdated 的显示方法

+ 1 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/AppDeviceData.java

@@ -21,6 +21,7 @@ public class AppDeviceData {
     private Double humidity;            // 设备湿度 (%)
     private Double co2Level;            // 二氧化碳浓度 (ppm)
     private Double batteryPercentage;   // 电池电量 (%)
+
     /**
      * 路数,默认路数1
      */

+ 46 - 11
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/service/AppDeviceService.java

@@ -8,26 +8,30 @@ package vip.xiaonuo.coldchain.modular.app.service;
  * @date 2024/11/17 22:30:41
  */
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
-import vip.xiaonuo.coldchain.modular.app.param.AppDevice;
-import vip.xiaonuo.coldchain.modular.app.param.AppDeviceAddParam;
-import vip.xiaonuo.coldchain.modular.app.param.AppDeviceData;
-import vip.xiaonuo.coldchain.modular.app.param.AppDeviceQueryParams;
+import vip.xiaonuo.coldchain.modular.app.param.*;
+import vip.xiaonuo.coldchain.modular.app.param.mock.AppDeviceTestDataGenerator;
+import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
 @Service
+@RequiredArgsConstructor
 public class AppDeviceService {
+    private final MonitorTargetService monitorTargetService;
+    private final MonitorDeviceService monitorDeviceService;
 
-    public List<AppDevice> getAllDevices() {
-        List<AppDevice> appDevices = new ArrayList<>();
-        // 示例设备数据
-//        appDevices.add(new AppDevice("Device A", 80.5, 31.4, LocalDateTime.now().minusDays(1), 75)); // 1天前
-//        appDevices.add(new AppDevice("Device B", 90.2, 25.0, LocalDateTime.now().minusDays(5), 85)); // 5天前
-//        appDevices.add(new AppDevice("Device C", 65.75, 28.5, LocalDateTime.now().minusDays(10), 70)); // 10天前
-        return appDevices;
+    public Page<AppDevice> getAllDevices(AppDevicePageParam appDevicePageParam) {
+        // 获取分页数据
+        return AppDeviceTestDataGenerator.getPagedDeviceData(appDevicePageParam);
     }
 
     // 模拟设备保存操作,实际应用中可能会是数据库操作
@@ -92,4 +96,35 @@ public class AppDeviceService {
         }
         return filteredData;
     }
+
+    /**
+     * 监控对象列表包含温湿度监控指标--全部
+     *
+     * @return
+     */
+    public List<AppDevice> appDevices(AppDevicePageParam appDevicePageParam) {
+        List<AppDevice> rlt = Lists.newArrayList();
+
+        return rlt;
+    }
+
+    /**
+     * 监控对象列表包含温湿度监控指标--分页
+     *
+     * @return
+     */
+    public Page<AppDevice> pageDevices(AppDevicePageParam appDevicePageParam) {
+        List<AppDevice> rlt = Lists.newArrayList();
+        MonitorTargetPageParam monitorTargetPageParam = new MonitorTargetPageParam();
+        monitorTargetPageParam.setUserId("1543837863788879871");
+        monitorTargetPageParam.setCurrent(appDevicePageParam.getCurrent());
+        monitorTargetPageParam.setSize(appDevicePageParam.getSize());
+        Page<MonitorTarget> pageByUser = monitorTargetService.getPageByUser(monitorTargetPageParam);
+        pageByUser.getRecords().forEach(mt -> {
+            //获取通道的集合
+//            List<MonitorChannel> monitorChannels = monitorChannelService.listByTargetId(mt.getId());
+            //单个通道的温湿度信息
+        });
+        return null;
+    }
 }