Browse Source

update interface

杨思远 1 week ago
parent
commit
9fba847a4e

+ 26 - 7
src/main/java/com/zhiyun/project/item/controller/DeviceController.java

@@ -3,24 +3,43 @@ package com.zhiyun.project.item.controller;
 import com.alibaba.fastjson2.JSONObject;
 import com.zhiyun.common.annotation.Anonymous;
 import com.zhiyun.common.model.ApiResult;
+import com.zhiyun.project.common.BaseController;
 import com.zhiyun.project.item.service.DeviceService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/device")
-public class DeviceController {
+public class DeviceController  {
 
     @Autowired
     private DeviceService deviceService;
 
+    // 插入设备数据
     @PostMapping("/getDeviceData")
     @Anonymous
-    public ApiResult listCompanyOptions(@RequestBody JSONObject jsonObject) {
-        return ApiResult.success(deviceService.getDeviceData(jsonObject));
+    public ApiResult insetDeviceData(@RequestBody JSONObject jsonObject) {
+        return ApiResult.success(deviceService.insetDeviceData(jsonObject));
     }
 
+    // 获取设备筛选项
+    @GetMapping("/getDeviceOptions")
+    @Anonymous
+    public ApiResult getDeviceOptions() {
+        return ApiResult.success(deviceService.getDeviceOptions());
+    }
+
+    // 获取设备信息
+    @GetMapping("/getDeviceData")
+    @Anonymous
+    public ApiResult getDeviceData(@RequestParam Integer id) {
+        return ApiResult.success(deviceService.getDeviceData(id));
+    }
+
+    //获取设备坐标列表
+    @GetMapping("/getCoordinateData")
+    @Anonymous
+    public ApiResult getCoordinateData() {
+        return ApiResult.success(deviceService.getCoordinateData());
+    }
 }

+ 2 - 1
src/main/java/com/zhiyun/project/item/domain/entity/Device.java

@@ -2,6 +2,7 @@ package com.zhiyun.project.item.domain.entity;
 
 import lombok.Data;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 @Data
@@ -21,6 +22,6 @@ public class Device {
 
     private double z;         // z坐标
 
-    private Date latestTime;  //最新时间
+    private LocalDateTime latestTime;  //最新时间
 
 }

+ 16 - 0
src/main/java/com/zhiyun/project/item/domain/vo/CoordinateVo.java

@@ -0,0 +1,16 @@
+package com.zhiyun.project.item.domain.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class CoordinateVo {
+
+    private String deviceid;
+
+    private Double[] coordinate;
+
+    private Integer statue;
+
+}

+ 27 - 0
src/main/java/com/zhiyun/project/item/domain/vo/DeviceVo.java

@@ -0,0 +1,27 @@
+package com.zhiyun.project.item.domain.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DeviceVo {
+
+    private Integer id;       // 主键ID
+
+    private String deviceid;  // 设备ID
+
+    private double lat;       // 纬度
+
+    private double lon;       // 经度
+
+    private double x;         // x坐标
+
+    private double y;         // y坐标
+
+    private double z;         // z坐标
+
+    private int statue;        // 设备状态
+
+    private LocalDateTime latestTime;  //最新时间
+}

+ 18 - 0
src/main/java/com/zhiyun/project/item/domain/vo/OptionsVo.java

@@ -0,0 +1,18 @@
+package com.zhiyun.project.item.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class OptionsVo {
+    // 唯一标识符
+    private int id;
+
+    // 标签
+    private String label;
+
+    // 内容
+    private String value;
+
+    //类型
+    private String type;
+}

+ 15 - 0
src/main/java/com/zhiyun/project/item/mapper/DeviceMapper.java

@@ -0,0 +1,15 @@
+package com.zhiyun.project.item.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhiyun.project.item.domain.entity.Device;
+import com.zhiyun.project.item.domain.vo.OptionsVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface DeviceMapper extends BaseMapper<Device> {
+    Device getDeviceById(String deviceid);
+
+    List<OptionsVo> getDeviceOptions();
+}

+ 102 - 4
src/main/java/com/zhiyun/project/item/service/DeviceService.java

@@ -1,13 +1,111 @@
 package com.zhiyun.project.item.service;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiyun.project.item.domain.entity.Device;
+import com.zhiyun.project.item.domain.vo.CoordinateVo;
+import com.zhiyun.project.item.domain.vo.DeviceVo;
+import com.zhiyun.project.item.domain.vo.OptionsVo;
+import com.zhiyun.project.item.mapper.DeviceMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
 @Service
-public class DeviceService {
-    public boolean getDeviceData(JSONObject jsonObject) {
+public class DeviceService extends ServiceImpl<DeviceMapper, Device> {
+
+    public DeviceVo getDeviceData(Integer id){
+
+        Device device = baseMapper.selectById(id);
+
+        if(device == null)
+            return null;
+
+        DeviceVo deviceVo = new DeviceVo();
+        BeanUtils.copyProperties(device, deviceVo);
+
+        LocalDateTime now = LocalDateTime.now();
+        if(Duration.between(device.getLatestTime(), now).toMinutes() < 1){
+            deviceVo.setStatue(1);
+        }else {
+            deviceVo.setStatue(0);
+        }
+
+        return deviceVo;
+    }
+
+    public List<CoordinateVo> getCoordinateData(){
+        // 查询所有设备数据
+        List<Device> deviceList = baseMapper.selectList(null);
+
+        // 如果设备列表为空,直接返回空列表
+        if (deviceList == null || deviceList.isEmpty()) {
+            return null;  // 返回空的列表
+        }
+
+        // 使用流式 API 转换 Device 列表为 CoordinateVo 列表
+        List<CoordinateVo> coordinateVoList = deviceList.stream().map(device -> {
+            // 创建 CoordinateVo 对象
+            CoordinateVo coordinateVo = new CoordinateVo();
+
+            // 设置 deviceid
+            coordinateVo.setDeviceid(device.getDeviceid());
+
+            // 设置 coordinate 数组,包含 x 和 y 坐标
+            coordinateVo.setCoordinate(new Double[]{device.getX(), device.getY()});
+
+            // 获取当前时间
+            LocalDateTime now = LocalDateTime.now();
+
+            // 判断 latestTime 和当前时间的差值
+            if (Duration.between(device.getLatestTime(), now).toMinutes() < 1) {
+                coordinateVo.setStatue(1);
+            } else {
+                coordinateVo.setStatue(0);
+            }
+
+            // 返回处理后的 CoordinateVo 对象
+            return coordinateVo;
+        }).collect(Collectors.toList());  // 收集成一个列表
+
+        // 返回 CoordinateVo 列表
+        return coordinateVoList;
+    }
+
+    public int insetDeviceData(JSONObject jsonObject) {
+        // 创建 Device 实体对象
+        Device device = new Device();
+
+        // 从jsonObject中获取值并设置到 Device 对象中
+        device.setDeviceid(jsonObject.getString("deviceid"));
+        device.setLat(jsonObject.getDouble("lat"));
+        device.setLon(jsonObject.getDouble("lon"));
+        device.setX(jsonObject.getDouble("x"));
+        device.setY(jsonObject.getDouble("y"));
+        device.setZ(jsonObject.getDouble("z"));
+
+        // 如果需要处理 latestTime 字段,可以设置为当前时间,或者从 JSON 中获取时间字段
+        // 这里暂时设置为当前时间
+        LocalDateTime now = LocalDateTime.now();  // 获取当前的 LocalDateTime
+        device.setLatestTime(now);  // 设置到 Device 对象中
+
+        //数据库操作判断
+        Device judgeObject = baseMapper.getDeviceById(device.getDeviceid());
+        if (judgeObject == null) {
+            return baseMapper.insert(device);
+        } else {
+            device.setId(judgeObject.getId());
+            System.out.println(device);
+            return baseMapper.updateById(device);
+        }
+    }
 
-        System.out.println(jsonObject);
-        return true;
+    public List<OptionsVo> getDeviceOptions() {
+        return  baseMapper.getDeviceOptions();
     }
 }

+ 18 - 0
src/main/resources/mapper/item/DeviceMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhiyun.project.item.mapper.DeviceMapper">
+
+    <select id="getDeviceById" resultType="com.zhiyun.project.item.domain.entity.Device">
+        SELECT *
+        FROM device
+        WHERE deviceid = #{decideid}
+    </select>
+
+    <select id="getDeviceOptions" resultType="com.zhiyun.project.item.domain.vo.OptionsVo">
+        SELECT
+            deviceid AS label , id AS value
+        FROM device
+    </select>
+
+
+</mapper>