Browse Source

Merge branch 'usky-zyj' into server-165

james 1 year ago
parent
commit
c38048b35d
33 changed files with 999 additions and 69 deletions
  1. 22 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/client/DataQueryClient.java
  2. 22 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/MetricItemVo.java
  3. 32 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/StatusVO.java
  4. 41 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/request/HistoryQueryVo.java
  5. 31 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/request/LastQueryVo.java
  6. 53 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/response/HistoryResultVo.java
  7. 23 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/response/LastResultVo.java
  8. 5 0
      service-backend/service-backend-biz/pom.xml
  9. 1 1
      service-backend/service-backend-biz/src/main/java/com/usky/backend/MybatisGeneratorUtils.java
  10. 77 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataQueryController.java
  11. 22 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataRealTimeController.java
  12. 0 21
      service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/SysConfigController.java
  13. 40 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/api/DataQueryApi.java
  14. 66 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/DataRealTime.java
  15. 18 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataRealTimeMapper.java
  16. 14 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataQueryService.java
  17. 16 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataRealTimeService.java
  18. 63 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataQueryServiceImpl.java
  19. 20 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataRealTimeServiceImpl.java
  20. 17 0
      service-backend/service-backend-biz/src/main/resources/mapper.backend/DataRealTimeMapper.xml
  21. 5 0
      service-iot/service-iot-biz/pom.xml
  22. 2 2
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/MybatisGeneratorUtils.java
  23. 62 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DeviceHttpController.java
  24. 80 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceTypeController.java
  25. 14 14
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java
  26. 3 5
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceStatus.java
  27. 91 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceType.java
  28. 16 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceTypeMapper.java
  29. 28 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceTypeService.java
  30. 77 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceTypeServiceImpl.java
  31. 11 15
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DmpDeviceInfoRequest.java
  32. 5 11
      service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml
  33. 22 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceTypeMapper.xml

+ 22 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/client/DataQueryClient.java

@@ -0,0 +1,22 @@
+package com.usky.backend.client;
+
+import com.usky.backend.domain.StatusVO;
+import com.usky.backend.domain.request.LastQueryVo;
+import com.usky.backend.domain.response.LastResultVo;
+import com.usky.common.core.bean.ApiResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+@FeignClient(contextId = "dataQueryClient", value = "usky-backend")
+public interface DataQueryClient {
+
+    @PostMapping("/last")
+    ApiResult<List<LastResultVo>> last(@RequestBody LastQueryVo lastQueryVo);
+
+    @GetMapping("/status")
+    public ApiResult<List<StatusVO>> status();
+}

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

@@ -0,0 +1,22 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Data
+public class MetricItemVo implements Serializable {
+
+    private LocalDateTime timestamp;
+    private Object value;
+
+    public MetricItemVo() {
+    }
+
+    public MetricItemVo(LocalDateTime timestamp, Object value) {
+        this.timestamp = timestamp;
+        this.value = value;
+    }
+}

+ 32 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/StatusVO.java

@@ -0,0 +1,32 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.apache.tomcat.jni.Local;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class StatusVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 设备Id
+     */
+    private String  deviceId;
+
+    /**
+     * 设备数据时间
+     */
+    private String time;
+
+    public StatusVO(String deviceId, String time){
+        this.deviceId = deviceId;
+        this.time = time;
+    }
+
+}

+ 41 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/request/HistoryQueryVo.java

@@ -0,0 +1,41 @@
+package com.usky.backend.domain.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistoryQueryVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+     /**
+     * 开始时间戳
+     */
+    private Integer startTime;
+
+     /**
+     * 结束时间戳
+     */
+    private Integer endTime;
+
+     /**
+     * 设备Id
+     */
+    private String  deviceId;
+
+    /**
+     * 指标名
+     */
+    private List<String>  metrics;
+
+
+
+}

+ 31 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/request/LastQueryVo.java

@@ -0,0 +1,31 @@
+package com.usky.backend.domain.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class LastQueryVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+     /**
+     * 设备Id
+     */
+    private String  deviceId;
+
+    /**
+     * 指标名
+     */
+    private List<String>  metrics;
+
+
+
+}

+ 53 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/response/HistoryResultVo.java

@@ -0,0 +1,53 @@
+package com.usky.backend.domain.response;
+
+import com.usky.backend.domain.MetricItemVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class HistoryResultVo implements Serializable {
+
+   private static final long serialVersionUID = 8837428366010205858L;
+
+   private String deviceId;
+   private String metric;
+   private List<MetricItemVo> metricItems;
+
+   public HistoryResultVo(String deviceId, String metric, List<MetricItemVo> metricItems) {
+      this.deviceId = deviceId;
+      this.metric = metric;
+      this.metricItems = metricItems;
+   }
+
+//   public static class MetricItem implements Serializable {
+//      private static final long serialVersionUID = 6319020786538254074L;
+//      private Date timestamp;
+//      private Object value;
+//
+//      public MetricItem() {
+//      }
+//
+//      public MetricItem(Date timestamp, Object value) {
+//         this.timestamp = timestamp;
+//         this.value = value;
+//      }
+//
+//      public Date getTimestamp() {
+//         return timestamp;
+//      }
+//
+//      public void setTimestamp(Date timestamp) {
+//         this.timestamp = timestamp;
+//      }
+//
+//      public Object getValue() {
+//         return value;
+//      }
+//
+//      public void setValue(Object value) {
+//         this.value = value;
+//      }
+//   }
+}

+ 23 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/response/LastResultVo.java

@@ -0,0 +1,23 @@
+package com.usky.backend.domain.response;
+
+import com.usky.backend.domain.MetricItemVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class LastResultVo implements Serializable {
+
+    private static final long serialVersionUID = 8837428366010205859L;
+
+    private String deviceId;
+    private String metric;
+    private List<MetricItemVo> metricItems;
+
+    public LastResultVo(String deviceId, String metric, List<MetricItemVo> metricItems) {
+        this.deviceId = deviceId;
+        this.metric = metric;
+        this.metricItems = metricItems;
+    }
+}

+ 5 - 0
service-backend/service-backend-biz/pom.xml

@@ -34,6 +34,11 @@
             <artifactId>springfox-swagger-ui</artifactId>
             <version>${swagger.fox.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>service-backend-api</artifactId>
+            <version>0.0.1</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
service-backend/service-backend-biz/src/main/java/com/usky/backend/MybatisGeneratorUtils.java

@@ -43,7 +43,7 @@ public class MybatisGeneratorUtils {
         //2、数据源配置
         //修改数据源
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://usky-cloud-mysql:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-data?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
         dsc.setDriverName("com.mysql.jdbc.Driver");
         dsc.setUsername("usky");
         dsc.setPassword("Yt#75Usky");

+ 77 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataQueryController.java

@@ -0,0 +1,77 @@
+package com.usky.backend.controller;
+import com.usky.backend.domain.MetricItemVo;
+import com.usky.backend.domain.StatusVO;
+import com.usky.backend.domain.request.HistoryQueryVo;
+import com.usky.backend.domain.request.LastQueryVo;
+import com.usky.backend.domain.response.HistoryResultVo;
+import com.usky.backend.domain.response.LastResultVo;
+import com.usky.backend.service.DataQueryService;
+import com.usky.common.core.bean.ApiResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *  数据统一查询 前端控制器
+ * </p>
+ *
+ */
+@RestController
+@Api(tags = "数据统一查询")
+@RequestMapping("/dataQuery")
+public class DataQueryController {
+    @Autowired
+    private DataQueryService dataQueryService;
+
+    @GetMapping("/history")
+    @ApiOperation("获取单个设备单属性历史数据")
+    public ApiResult<HistoryResultVo> history(@RequestParam("startTime") String startTime,
+                                              @RequestParam("endTime") String endTime,
+                                              @RequestParam("deviceId") String deviceId,
+                                              @RequestParam("metric") String metric ) {
+        //以下是mock模拟数据
+        List<MetricItemVo> items = new ArrayList<>();
+        items.add(new MetricItemVo(LocalDateTime.now(),12.3));
+        HistoryResultVo historyResultVo = new HistoryResultVo(deviceId,metric,items);
+        return ApiResult.success(historyResultVo);
+    }
+
+    @PostMapping("/history")
+    @ApiOperation("获取单个设备多属性历史数据")
+    public ApiResult<List<HistoryResultVo>> history(@RequestBody HistoryQueryVo historyQueryVo) {
+        List<HistoryResultVo> result  = new ArrayList<>();
+        List<MetricItemVo> items = new ArrayList<>();
+        items.add(new MetricItemVo(LocalDateTime.now(),12.3));
+        HistoryResultVo historyResultVo = new HistoryResultVo(historyQueryVo.getDeviceId(),"cpu.load",items);
+        result.add(historyResultVo);
+        return ApiResult.success(result);
+    }
+
+    /**
+     * 获取单个设备多指标实时数据
+     * @param lastQueryVo
+     * @return
+     */
+    @PostMapping("/last")
+    @ApiOperation("获取单个设备多指标实时数据")
+    public ApiResult<List<LastResultVo>> last(@RequestBody LastQueryVo lastQueryVo) {
+        return ApiResult.success(dataQueryService.last(lastQueryVo));
+    }
+
+    /**
+     * 查询设备状态
+     * @return
+     */
+    @GetMapping("/status")
+    public ApiResult<List<StatusVO>> status(){
+        return ApiResult.success(dataQueryService.status());
+    }
+
+}
+

+ 22 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataRealTimeController.java

@@ -0,0 +1,22 @@
+package com.usky.backend.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 实时数据表 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-07
+ */
+@RestController
+@RequestMapping("/dataRealTime")
+public class DataRealTimeController {
+
+}
+

+ 0 - 21
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/SysConfigController.java

@@ -1,21 +0,0 @@
-package com.usky.backend.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.stereotype.Controller;
-
-/**
- * <p>
- * 参数配置表 前端控制器
- * </p>
- *
- * @author ya
- * @since 2022-04-29
- */
-@Controller
-@RequestMapping("/sysConfig")
-public class SysConfigController {
-
-}
-

+ 40 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/api/DataQueryApi.java

@@ -0,0 +1,40 @@
+package com.usky.backend.controller.api;
+import com.usky.backend.client.DataQueryClient;
+import com.usky.backend.domain.StatusVO;
+import com.usky.backend.domain.request.LastQueryVo;
+import com.usky.backend.domain.response.LastResultVo;
+import com.usky.backend.service.DataQueryService;
+import com.usky.common.core.bean.ApiResult;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  数据统一查询 前端控制器
+ * </p>
+ *
+ */
+@RestController
+@Api(tags = "数据统一查询RPC")
+@RequestMapping("/dataQueryApi")
+public class DataQueryApi implements DataQueryClient {
+
+    @Autowired
+    private DataQueryService dataQueryService;
+
+    @Override
+    public ApiResult<List<LastResultVo>> last(LastQueryVo lastQueryVo) {
+        List<LastResultVo> last = dataQueryService.last(lastQueryVo);
+        return ApiResult.success(last);
+    }
+
+    @Override
+    public ApiResult<List<StatusVO>> status(){
+        List<StatusVO> list = dataQueryService.status();
+        return ApiResult.success(list);
+    }
+
+}

+ 66 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/DataRealTime.java

@@ -0,0 +1,66 @@
+package com.usky.backend.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 实时数据表
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DataRealTime implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 设备类型
+     */
+    private Integer deviceType;
+
+    /**
+     * 属性名称
+     */
+    private String attributeName;
+
+    /**
+     * 属性值
+     */
+    private String attributeData;
+
+    /**
+     * 数据时间
+     */
+    private LocalDateTime dataTime;
+
+    /**
+     * 插入时间
+     */
+    private LocalDateTime insertTime;
+
+
+}

+ 18 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataRealTimeMapper.java

@@ -0,0 +1,18 @@
+package com.usky.backend.mapper;
+
+import com.usky.backend.domain.DataRealTime;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 实时数据表 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-07
+ */
+@Repository
+public interface DataRealTimeMapper extends CrudMapper<DataRealTime> {
+
+}

+ 14 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataQueryService.java

@@ -0,0 +1,14 @@
+package com.usky.backend.service;
+
+
+import com.usky.backend.domain.StatusVO;
+import com.usky.backend.domain.request.LastQueryVo;
+import com.usky.backend.domain.response.LastResultVo;
+
+import java.util.List;
+
+public interface DataQueryService {
+    List<LastResultVo> last(LastQueryVo lastQueryVo);
+
+    List<StatusVO> status();
+}

+ 16 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataRealTimeService.java

@@ -0,0 +1,16 @@
+package com.usky.backend.service;
+
+import com.usky.backend.domain.DataRealTime;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 实时数据表 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-07
+ */
+public interface DataRealTimeService extends CrudService<DataRealTime> {
+
+}

+ 63 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataQueryServiceImpl.java

@@ -0,0 +1,63 @@
+package com.usky.backend.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.backend.domain.DataRealTime;
+import com.usky.backend.domain.MetricItemVo;
+import com.usky.backend.domain.StatusVO;
+import com.usky.backend.domain.request.LastQueryVo;
+import com.usky.backend.domain.response.LastResultVo;
+import com.usky.backend.service.DataQueryService;
+import com.usky.backend.service.DataRealTimeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DataQueryServiceImpl implements DataQueryService {
+    @Autowired
+    private DataRealTimeService dataRealTimeService;
+
+    @Override
+    public List<LastResultVo> last(LastQueryVo lastQueryVo){
+        List<LastResultVo> list = new ArrayList<>();
+
+        List<String> items = lastQueryVo.getMetrics();
+        for(int i=0;i<items.size();i++){
+            LambdaQueryWrapper<DataRealTime> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.select(DataRealTime::getAttributeData,DataRealTime::getDataTime)
+                    .eq(DataRealTime::getDeviceId,lastQueryVo.getDeviceId())
+                    .eq(DataRealTime::getAttributeName,items.get(i));
+            DataRealTime one = dataRealTimeService.getOne(queryWrapper);
+            List<MetricItemVo> list1 = new ArrayList<>();
+            MetricItemVo metric = new MetricItemVo(one.getDataTime(),one.getAttributeData());
+            list1.add(metric);
+            LastResultVo lastResultVo = new LastResultVo(lastQueryVo.getDeviceId(),items.get(i),list1);
+            list.add(lastResultVo);
+        }
+
+        return list;
+    }
+
+    @Override
+    public List<StatusVO> status(){
+        List<StatusVO> list = new ArrayList<>();
+        QueryWrapper<DataRealTime> query = Wrappers.query();
+        query.select("device_id as deviceId","Max(data_time) as maxTime")
+                .groupBy("device_id");
+        List<Map<String,Object>> maps = dataRealTimeService.listMaps(query);
+        if(maps.size()>0) {
+            for (int i = 0; i < maps.size(); i++) {
+                StatusVO statusVO = new StatusVO(maps.get(i).get("deviceId").toString(),maps.get(i).get("maxTime").toString());
+                list.add(statusVO);
+            }
+        }
+
+        return list;
+    }
+
+}

+ 20 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataRealTimeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.backend.service.impl;
+
+import com.usky.backend.domain.DataRealTime;
+import com.usky.backend.mapper.DataRealTimeMapper;
+import com.usky.backend.service.DataRealTimeService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 实时数据表 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-07
+ */
+@Service
+public class DataRealTimeServiceImpl extends AbstractCrudService<DataRealTimeMapper, DataRealTime> implements DataRealTimeService {
+
+}

+ 17 - 0
service-backend/service-backend-biz/src/main/resources/mapper.backend/DataRealTimeMapper.xml

@@ -0,0 +1,17 @@
+<?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.usky.backend.mapper.DataRealTimeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.backend.domain.DataRealTime">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="device_code" property="deviceCode" />
+        <result column="device_type" property="deviceType" />
+        <result column="attribute_name" property="attributeName" />
+        <result column="attribute_data" property="attributeData" />
+        <result column="data_time" property="dataTime" />
+        <result column="insert_time" property="insertTime" />
+    </resultMap>
+
+</mapper>

+ 5 - 0
service-iot/service-iot-biz/pom.xml

@@ -37,6 +37,11 @@
             <artifactId>poi-ooxml</artifactId>
             <version>4.1.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>service-backend-api</artifactId>
+            <version>0.0.1</version>
+        </dependency>
 
 
     </dependencies>

+ 2 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/MybatisGeneratorUtils.java

@@ -43,7 +43,7 @@ public class MybatisGeneratorUtils {
         //2、数据源配置
         //修改数据源
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-fire?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
         dsc.setDriverName("com.mysql.jdbc.Driver");
         dsc.setUsername("usky");
         dsc.setPassword("Yt#75Usky");
@@ -71,7 +71,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("base_ggp_facility");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("dmp_device_type");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 62 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DeviceHttpController.java

@@ -0,0 +1,62 @@
+package com.usky.iot.controller.web;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+//import com.usky.backend.client.DataQueryClient;
+//import com.usky.backend.domain.StatusVO;
+//import com.usky.backend.domain.request.LastQueryVo;
+//import com.usky.backend.domain.response.LastResultVo;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.iot.domain.DmpDeviceStatus;
+import com.usky.iot.service.DmpDeviceStatusService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+/**
+ * @author zyj
+ * @date 2023/6/8 13:52:05
+ */
+@RestController
+@RequestMapping("/deviceHttp")
+public class DeviceHttpController {
+//    @Autowired
+//    private DataQueryClient dataQueryClient;
+//
+//    @Autowired
+//    private DmpDeviceStatusService dmpDeviceStatusService;
+//
+//    @PostMapping("/last")
+//    public ApiResult<List<LastResultVo>> lastDeviceInfo(@RequestBody LastQueryVo lastQueryVO) {
+//        return dataQueryClient.last(lastQueryVO);
+//    }
+//
+//    @GetMapping("/status")
+//    public ApiResult<Void> status(){
+//         List<StatusVO> list = dataQueryClient.status().getData();
+//         if(CollectionUtils.isNotEmpty(list)){
+//             for(int i=0;i<list.size();i++){
+//                 String date = list.get(i).getTime().substring(1,10);
+//                 String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+//                 LambdaUpdateWrapper<DmpDeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
+//                 if(date.equals(currentDate)){
+//                     updateWrapper.set(DmpDeviceStatus::getDeviceStatus,1)
+//                             .set(DmpDeviceStatus::getLastOnlineTime,LocalDateTime.parse(list.get(i).getTime(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
+//                             .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId());
+//                 }else{
+//                     updateWrapper.set(DmpDeviceStatus::getDeviceStatus,2)
+//                             .set(DmpDeviceStatus::getLastOfflineTime,LocalDateTime.parse(list.get(i).getTime(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
+//                             .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId());
+//                 }
+//                 dmpDeviceStatusService.update(updateWrapper);
+//             }
+//         }
+//         return ApiResult.success();
+//    }
+
+
+}

+ 80 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceTypeController.java

@@ -0,0 +1,80 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.DmpDeviceType;
+import com.usky.iot.service.DmpDeviceTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 设备信息类型 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-06
+ */
+@RestController
+@RequestMapping("/dmpDeviceType")
+public class DmpDeviceTypeController {
+    @Autowired
+    private DmpDeviceTypeService dmpDeviceTypeService;
+
+    /**
+     * 新增
+     * @param dmpDeviceType
+     * @return
+     */
+    @PostMapping("add")
+    public ApiResult<Void> add(@RequestBody DmpDeviceType dmpDeviceType){
+        dmpDeviceTypeService.add(dmpDeviceType);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param dmpDeviceType
+     * @return
+     */
+    @PutMapping("edit")
+    public ApiResult<Void> edit(@RequestBody DmpDeviceType dmpDeviceType){
+        dmpDeviceTypeService.edit(dmpDeviceType);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @DeleteMapping("remove")
+    public ApiResult<Void> remove(@RequestParam("id") Integer id){
+        dmpDeviceTypeService.remove(id);
+        return ApiResult.success();
+    }
+
+    /**
+     *  列表查询
+     *
+     * @param typeCode 类型编号
+     * @param typeName 类型名称
+     * @param pageNum 当前页
+     * @param pageSize 每页条数
+     * @return
+     */
+    @GetMapping("getDeviceTypeList")
+    public ApiResult<CommonPage<DmpDeviceType>> getDeviceTypeList(@RequestParam(value = "typeCode",required = false) String typeCode,
+                                                                  @RequestParam(value = "typeName",required = false) String typeName,
+                                                                  @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                                  @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize){
+        return ApiResult.success(dmpDeviceTypeService.getDeviceTypeList(typeCode,typeName,pageNum,pageSize));
+    }
+
+}
+

+ 14 - 14
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java

@@ -62,6 +62,11 @@ public class DmpDeviceInfo implements Serializable {
      */
     private String imsiCode;
 
+    /**
+     * 是否自动订阅
+     */
+    private Integer subscribeFlag;
+
     /**
      * 节点类型
      */
@@ -103,28 +108,23 @@ public class DmpDeviceInfo implements Serializable {
     private Integer tenantId;
 
     /**
-     * 产品名称
-     */
-    @TableField(exist = false)
-    private String productName;
-
-    /**
-     * 业务状态;1:未激活,2:已激活,3:禁用
+     * 单位编号
      */
-    private Integer serviceStatus;
+    private String companyCode;
 
     /**
-     * 是否自动订阅
+     * 安装位置
      */
-    private Integer subscribeFlag;
+    private String installAddress;
 
     /**
-     * 单位编号
+     * 业务状态;1:未激活,2:已激活,3:禁用
      */
-    private String companyCode;
+    private Integer serviceStatus;
 
     /**
-     * 安装位置
+     * 设备状态;1:在线,2:离线
      */
-    private String installAddress;
+    @TableField(exist = false)
+    private Integer deviceStatus;
 }

+ 3 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceStatus.java

@@ -2,20 +2,18 @@ package com.usky.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import java.time.LocalDateTime;
+import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 设备状态表
  * </p>
  *
  * @author ya
- * @since 2022-10-08
+ * @since 2023-06-08
  */
 @Data
 @EqualsAndHashCode(callSuper = false)

+ 91 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceType.java

@@ -0,0 +1,91 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 设备信息类型
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DmpDeviceType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 类型编码
+     */
+    private String typeCode;
+
+    /**
+     * 类型简称
+     */
+    private String typeAbbrevia;
+
+    /**
+     * 类型名称
+     */
+    private String typeName;
+
+    /**
+     * 类型所属领域(1、消防 2、园区)
+     */
+    private Integer typeDomain;
+
+    /**
+     * 类型图片路径
+     */
+    private String typeImg;
+
+    /**
+     * 数据字段
+     */
+    private String dataField;
+
+    /**
+     * 描述
+     */
+    private String typeDesc;
+
+    /**
+     * 租户号
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updatedTime;
+
+
+}

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceTypeMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.DmpDeviceType;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 设备信息类型 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-06
+ */
+public interface DmpDeviceTypeMapper extends CrudMapper<DmpDeviceType> {
+
+}

+ 28 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceTypeService.java

@@ -0,0 +1,28 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.DmpDeviceType;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 设备信息类型 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-06
+ */
+public interface DmpDeviceTypeService extends CrudService<DmpDeviceType> {
+    void add(DmpDeviceType dmpDeviceType);
+
+    boolean checkNameUnique(DmpDeviceType dmpDeviceType);
+
+    void edit(DmpDeviceType dmpDeviceType);
+
+    void remove(Integer id);
+
+    CommonPage<DmpDeviceType> getDeviceTypeList(String typeCode, String typeName, Integer pageNum, Integer pageSize);
+
+}

+ 77 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceTypeServiceImpl.java

@@ -0,0 +1,77 @@
+package com.usky.iot.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.DmpDeviceType;
+import com.usky.iot.domain.DmpProductAttribute;
+import com.usky.iot.mapper.DmpDeviceTypeMapper;
+import com.usky.iot.service.DmpDeviceTypeService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 设备信息类型 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2023-06-06
+ */
+@Service
+public class DmpDeviceTypeServiceImpl extends AbstractCrudService<DmpDeviceTypeMapper, DmpDeviceType> implements DmpDeviceTypeService {
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(DmpDeviceType dmpDeviceType) {
+        if (checkNameUnique(dmpDeviceType)) {
+            throw new BusinessException("新增设备类型'" + dmpDeviceType.getTypeName() + "'失败,该设备类型已经存在");
+        }
+        dmpDeviceType.setCreatedBy(SecurityUtils.getUsername());
+        dmpDeviceType.setCreatedTime(LocalDateTime.now());
+        this.save(dmpDeviceType);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(DmpDeviceType dmpDeviceType) {
+        dmpDeviceType.setUpdatedBy(SecurityUtils.getUsername());
+        dmpDeviceType.setUpdatedTime(LocalDateTime.now());
+        this.updateById(dmpDeviceType);
+    }
+
+    @Override
+    public boolean checkNameUnique(DmpDeviceType dmpDeviceType) {
+        Integer id = null == dmpDeviceType.getId() ? -1 : dmpDeviceType.getId();
+        LambdaQueryWrapper<DmpDeviceType> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(DmpDeviceType::getTypeName, dmpDeviceType.getTypeName());
+        DmpDeviceType one = this.getOne(queryWrapper);
+        return null != one && !Objects.equals(one.getId(), id);
+    }
+
+    @Override
+    public void remove(Integer id) {
+        this.removeById(id);
+    }
+
+    @Override
+    public CommonPage<DmpDeviceType> getDeviceTypeList(String typeCode, String typeName, Integer pageNum, Integer pageSize) {
+        IPage<DmpDeviceType> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<DmpDeviceType> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(typeCode), DmpDeviceType::getTypeCode, typeCode)
+                .like(StringUtils.isNotBlank(typeName), DmpDeviceType::getTypeName, typeName);
+        page = this.page(page, queryWrapper);
+        return new CommonPage<>(page.getRecords(), page.getTotal(), pageSize, pageNum);
+    }
+}

+ 11 - 15
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DmpDeviceInfoRequest.java

@@ -17,28 +17,24 @@ public class DmpDeviceInfoRequest {
     private Integer size;
 
     /**
-     * 设备名称
+     * 产品ID
      */
-    private String deviceName;
-    /**
-     * 产品id
-      */
     private Integer productId;
+
     /**
-     * 产品名称
+     * 设备名称
      */
-    private String productName;
+    private String deviceName;
+
     /**
-     * 设备状态
+     * 业务状态(1:未激活,2:已激活,3:禁用)
       */
-    private Integer deviceStatus;
+    private Integer serviceStatus;
 
     /**
-     * 开始时间
-     */
-    private Date startTime;
-    /**
-     * 结束时间
+     * 设备状态;1:在线,2:离线
      */
-    private Date endTime;
+    private Integer deviceStatus;
+
+
 }

+ 5 - 11
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

@@ -21,25 +21,19 @@
         <result column="tenant_id" property="tenantId" />
     </resultMap>
     <select id="page" resultType="com.usky.iot.domain.DmpDeviceInfo">
-        select ddi.*,dpi.product_name as productName, dds.device_status as deviceStatus
-        from dmp_product dpi
-        inner join dmp_device ddi
-        on dpi.id = ddi.product_id
+        select ddi.*,dds.device_status as deviceStatus
+        from dmp_device ddi
         left join dmp_device_status dds
         on ddi.device_id  = dds.device_id
         <where>
-            <if test="ar.startTime != null and ar.endTime != null">
-                and  dds.last_online_time between #{ar.startTime}
-                and #{ar.endTime}
-            </if>
             <if test="ar.deviceName != null">
                 and ddi.device_name like CONCAT('%',#{ar.deviceName},'%')
             </if>
             <if test="ar.productId != null">
-                and dpi.id = #{ar.productId}
+                and ddi.product_id = #{ar.productId}
             </if>
-            <if test="ar.productName != null">
-                and dpi.product_name like CONCAT('%',#{ar.productName},'%')
+            <if test="ar.serviceStatus != null">
+                and ddi.service_status = #{ar.serviceStatus}
             </if>
             <if test="ar.deviceStatus != null">
                 and dds.device_status = #{ar.deviceStatus}

+ 22 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceTypeMapper.xml

@@ -0,0 +1,22 @@
+<?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.usky.iot.mapper.DmpDeviceTypeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.DmpDeviceType">
+        <id column="id" property="id" />
+        <result column="type_code" property="typeCode" />
+        <result column="type_abbrevia" property="typeAbbrevia" />
+        <result column="type_name" property="typeName" />
+        <result column="type_domain" property="typeDomain" />
+        <result column="type_img" property="typeImg" />
+        <result column="data_field" property="dataField" />
+        <result column="type_desc" property="typeDesc" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="created_by" property="createdBy" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_by" property="updatedBy" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+</mapper>