Browse Source

feat(sensor): 新增传感器接口

高家顺 3 years ago
parent
commit
67d896a59d

+ 3 - 4
sql/file_collect.sql

@@ -26,7 +26,6 @@ CREATE TABLE `kr_b_line`  (
   `province_id` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份id',
   `city_id` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '城市id',
   `line_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '线路名称',
-  `robot_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '机器人名称',
   `voltage` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '电压等级,例:直流220kV,交流xkV',
   `line_status` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '线路状态:在运,停运',
   `service_begintime` datetime(0) COMMENT '投运时间',
@@ -43,7 +42,7 @@ CREATE TABLE `kr_b_line`  (
 -- ----------------------------
 -- Records of kr_b_line
 -- ----------------------------
-INSERT INTO `kr_b_line` VALUES (6, '370000000000', '370300000000', '淄齐线', '机器人名称', '220kV', '在运', '2021-09-15 00:10:02', 1, 31, 1, '2021-09-15 00:45:35');
+INSERT INTO `kr_b_line` VALUES (6, '370000000000', '370300000000', '淄齐线', '220kV', '在运', '2021-09-15 00:10:02', 1, 31, 1, '2021-09-15 00:45:35');
 
 -- ----------------------------
 -- Table structure for kr_b_line_upload_log
@@ -3813,8 +3812,8 @@ CREATE TABLE `kr_b_tower`  (
   `tower_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '杆塔名称',
   `tower_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '杆塔编号(SDG-18,SZT1-24等)',
   `hardware_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '金具串型号',
-  `longitude` decimal(10, 7) NOT NULL COMMENT '经度',
-  `latitude` decimal(10, 7) NOT NULL COMMENT '纬度',
+  `longitude` decimal(13, 10) NOT NULL COMMENT '经度',
+  `latitude` decimal(13, 10) NOT NULL COMMENT '纬度',
   `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '杆塔性质(直线塔、耐张塔)',
   `is_station` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否为太阳能基站塔',
   `is_weather` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否为微气象杆塔',

+ 2 - 2
src/main/java/com/macro/mall/tiny/common/util/CommonUtils.java

@@ -21,8 +21,8 @@ public class CommonUtils {
             BigDecimal m = new BigDecimal(jwd.contains("′") ? jwd.split("°")[1].split("′")[0] : "0");
             BigDecimal s = new BigDecimal(jwd.contains("″") ? jwd.split("′")[1].split("″")[0] : "0");
             //divide相除可能会报错(无限循环小数),要设置保留小数点
-            return d.add(m.divide(bd, 7, BigDecimal.ROUND_HALF_UP)
-                    .add(s.divide(bd.multiply(bd), 7, BigDecimal.ROUND_HALF_UP)));
+            return d.add(m.divide(bd, 10, BigDecimal.ROUND_HALF_UP)
+                    .add(s.divide(bd.multiply(bd), 10, BigDecimal.ROUND_HALF_UP)));
         }
         return new BigDecimal(jwd);
     }

+ 75 - 0
src/main/java/com/macro/mall/tiny/modules/business/controller/KrBSensorController.java

@@ -0,0 +1,75 @@
+package com.macro.mall.tiny.modules.business.controller;
+
+
+import com.macro.mall.tiny.common.api.CommonResult;
+import com.macro.mall.tiny.modules.business.dto.CommonIdParam;
+import com.macro.mall.tiny.modules.business.dto.SensorQueryParam;
+import com.macro.mall.tiny.modules.business.model.KrBSensor;
+import com.macro.mall.tiny.modules.business.service.KrBSensorService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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 java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author macro
+ * @since 2021-10-20
+ */
+@RestController
+@Api(tags = "KrBSensorController", description = "提供传感器相关API")
+@RequestMapping("/device")
+public class KrBSensorController {
+
+    @Autowired
+    private KrBSensorService sensorService;
+
+    @ApiOperation("根据线路名称或传感器mac获取传感器列表")
+    @PostMapping("/get")
+    public CommonResult<List<KrBSensor>> get(@RequestBody SensorQueryParam sensorQueryParam) {
+        String lineName = sensorQueryParam.getLineName();
+        String deviceMac = sensorQueryParam.getDeviceMac();
+        List<KrBSensor> sensorList = sensorService.get(lineName, deviceMac);
+        return CommonResult.success(sensorList);
+    }
+
+    @ApiOperation("新增传感器")
+    @PostMapping("/add")
+    public CommonResult add(@RequestBody KrBSensor sensor) {
+        boolean success = sensorService.save(sensor);
+        if (success) {
+            return CommonResult.success(null);
+        }
+        return CommonResult.failed();
+    }
+
+    @ApiOperation("修改传感器")
+    @PostMapping("/update")
+    public CommonResult update(@RequestBody KrBSensor sensor) {
+        boolean success = sensorService.updateById(sensor);
+        if (success) {
+            return CommonResult.success(null);
+        }
+        return CommonResult.failed();
+    }
+
+    @ApiOperation("删除传感器")
+    @PostMapping("/delete")
+    public CommonResult delete(@RequestBody CommonIdParam idParam) {
+        Long id = idParam.getId();
+        boolean success = sensorService.removeById(id);
+        if (success) {
+            return CommonResult.success(null);
+        }
+        return CommonResult.failed();
+    }
+}
+

+ 21 - 0
src/main/java/com/macro/mall/tiny/modules/business/dto/CommonIdParam.java

@@ -0,0 +1,21 @@
+package com.macro.mall.tiny.modules.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/10/20 15:59
+ */
+@Getter
+@Setter
+public class CommonIdParam {
+
+    @NotBlank
+    @ApiModelProperty(value = "通用ID传参")
+    private Long id;
+}

+ 24 - 0
src/main/java/com/macro/mall/tiny/modules/business/dto/SensorQueryParam.java

@@ -0,0 +1,24 @@
+package com.macro.mall.tiny.modules.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/3/25 10:17
+ */
+@Getter
+@Setter
+public class SensorQueryParam {
+
+    @NotBlank
+    @ApiModelProperty(value = "线路名称")
+    private String lineName;
+
+    @ApiModelProperty(value = "设备Mac地址")
+    private String deviceMac;
+}

+ 16 - 0
src/main/java/com/macro/mall/tiny/modules/business/mapper/KrBSensorMapper.java

@@ -0,0 +1,16 @@
+package com.macro.mall.tiny.modules.business.mapper;
+
+import com.macro.mall.tiny.modules.business.model.KrBSensor;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author macro
+ * @since 2021-10-20
+ */
+public interface KrBSensorMapper extends BaseMapper<KrBSensor> {
+
+}

+ 6 - 2
src/main/java/com/macro/mall/tiny/modules/business/model/KrBLine.java

@@ -36,19 +36,23 @@ public class KrBLine implements Serializable {
     private Long id;
 
     @ApiModelProperty(value = "省份id")
-    private String provinceId;
+    private String provinceId = "0";
 
     @ApiModelProperty(value = "所属省份")
     @TableField(exist = false)
     private String province;
 
     @ApiModelProperty(value = "城市id")
-    private String cityId;
+    private String cityId = "0";
 
     @ApiModelProperty(value = "所属城市")
     @TableField(exist = false)
     private String city;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "县区id")
+    private String countyId = "0";
+
     @ApiModelProperty(value = "线路名称")
     private String lineName;
 

+ 52 - 0
src/main/java/com/macro/mall/tiny/modules/business/model/KrBSensor.java

@@ -0,0 +1,52 @@
+package com.macro.mall.tiny.modules.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author macro
+ * @since 2021-10-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("kr_b_sensor")
+@ApiModel(value="KrBSensor对象", description="")
+public class KrBSensor implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    @ApiModelProperty(value = "传感器表")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "传感器安装的杆塔ID")
+    private Long towerId;
+
+    @ApiModelProperty(value = "设备物理地址")
+    private String deviceMac;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "安装时间")
+    private Date installTime;
+
+    @ApiModelProperty(value = "备注消息")
+    private String remark;
+
+
+}

+ 19 - 0
src/main/java/com/macro/mall/tiny/modules/business/service/KrBSensorService.java

@@ -0,0 +1,19 @@
+package com.macro.mall.tiny.modules.business.service;
+
+import com.macro.mall.tiny.modules.business.model.KrBSensor;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author macro
+ * @since 2021-10-20
+ */
+public interface KrBSensorService extends IService<KrBSensor> {
+
+    List<KrBSensor> get(String lineName, String deviceMac);
+}

+ 62 - 0
src/main/java/com/macro/mall/tiny/modules/business/service/impl/KrBSensorServiceImpl.java

@@ -0,0 +1,62 @@
+package com.macro.mall.tiny.modules.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.macro.mall.tiny.modules.business.mapper.KrBLineMapper;
+import com.macro.mall.tiny.modules.business.mapper.KrBSensorMapper;
+import com.macro.mall.tiny.modules.business.mapper.KrBTowerMapper;
+import com.macro.mall.tiny.modules.business.model.KrBLine;
+import com.macro.mall.tiny.modules.business.model.KrBSensor;
+import com.macro.mall.tiny.modules.business.model.KrBTower;
+import com.macro.mall.tiny.modules.business.service.KrBSensorService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author macro
+ * @since 2021-10-20
+ */
+@Service
+public class KrBSensorServiceImpl extends ServiceImpl<KrBSensorMapper, KrBSensor> implements KrBSensorService {
+
+    @Autowired
+    private KrBSensorMapper sensorMap;
+
+    @Autowired
+    private KrBLineMapper lineMapper;
+
+    @Autowired
+    private KrBTowerMapper towerMapper;
+
+    @Override
+    public List<KrBSensor> get(String lineName, String deviceMac) {
+        LambdaQueryWrapper<KrBSensor> sensorQueryWrapper;
+        List<KrBSensor> sensorList;
+        if (!StringUtils.isBlank(deviceMac)) {
+            sensorQueryWrapper = new QueryWrapper<KrBSensor>().lambda().eq(KrBSensor::getDeviceMac, deviceMac);
+        } else {
+            LambdaQueryWrapper<KrBLine> lineQueryWrapper = new QueryWrapper<KrBLine>().lambda().eq(KrBLine::getLineName, lineName);
+            KrBLine line = lineMapper.selectOne(lineQueryWrapper);
+            if (line==null) return Lists.newArrayList();
+            Long lineId = line.getId();
+            LambdaQueryWrapper<KrBTower> towerQueryWrapper = new QueryWrapper<KrBTower>().lambda().eq(KrBTower::getLineId, lineId);
+            List<KrBTower> towerList = towerMapper.selectList(towerQueryWrapper);
+            if (towerList==null||towerList.isEmpty()) return Lists.newArrayList();
+            List<Long> towerIdList = towerList.stream().map(KrBTower::getId).collect(Collectors.toList());
+            sensorQueryWrapper = new QueryWrapper<KrBSensor>().lambda().in(KrBSensor::getTowerId, towerIdList);
+        }
+        sensorList = sensorMap.selectList(sensorQueryWrapper);
+        return sensorList;
+    }
+
+}

+ 5 - 5
src/main/resources/application-test.yml

@@ -1,12 +1,12 @@
 spring:
   datasource:
-    url: jdbc:mysql://mysql:3306/file_collect?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
-    username: root
-    password: root
+    url: jdbc:mysql://47.107.126.107:3396/eprdms_data?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+    username: user01
+    password: test@1234
   redis:
-    host: redis # Redis服务器地址
+    host: 47.107.126.107 # Redis服务器地址
     database: 0 # Redis数据库索引(默认为0)
-    port: 6379 # Redis服务器连接端口
+    port: 16733 # Redis服务器连接端口
     password: # Redis服务器连接密码(默认为空)
     timeout: 3000ms # 连接超时时间(毫秒)
 

+ 1 - 0
src/main/resources/application.yml

@@ -62,6 +62,7 @@ secure:
       - /index.html
       - /line/findByKeySimple
       - /line/detail/**
+      - /device/**
 upload:
   temp-path: ./temp/
   path: ./upload/ #文件上传路径

+ 3 - 3
src/main/resources/generator.properties

@@ -1,5 +1,5 @@
-dataSource.url=jdbc:mysql://localhost:3306/file_collect?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+dataSource.url=jdbc:mysql://47.107.126.107:3396/eprdms_data?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
 dataSource.driverName=com.mysql.cj.jdbc.Driver
-dataSource.username=root
-dataSource.password=root
+dataSource.username=user01
+dataSource.password=test@1234
 package.base=com.macro.mall.tiny.modules

+ 15 - 0
src/main/resources/mapper/business/KrBSensorMapper.xml

@@ -0,0 +1,15 @@
+<?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.macro.mall.tiny.modules.business.mapper.KrBSensorMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.macro.mall.tiny.modules.business.model.KrBSensor">
+        <id column="id" property="id" />
+        <result column="tower_id" property="towerId" />
+        <result column="device_mac" property="deviceMac" />
+        <result column="device_name" property="deviceName" />
+        <result column="install_time" property="installTime" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>