master
masong 2 years ago
parent bd458192ad
commit a713d1e189
  1. 2
      src/main/java/com/cjy/controller/IndexController.java
  2. 60
      src/main/java/com/cjy/domain/LevelEquipmentConfigInfo.java
  3. 87
      src/main/java/com/cjy/domain/LevelEquipmentConfigRecord.java
  4. 75
      src/main/java/com/cjy/domain/LevelEquipmentInfo.java
  5. 12
      src/main/java/com/cjy/iot/netty/config/LaunchRunner.java
  6. 10
      src/main/java/com/cjy/iot/netty/server/NettyServer.java
  7. 38
      src/main/java/com/cjy/iot/netty/server/NettyServerChannelInitializer.java
  8. 141
      src/main/java/com/cjy/iot/netty/server/NettyServerHandler.java
  9. 24
      src/main/java/com/cjy/mapper/LevelEquipmentConfigInfoMapper.java
  10. 19
      src/main/java/com/cjy/mapper/LevelEquipmentConfigRecordMapper.java
  11. 22
      src/main/java/com/cjy/mapper/LevelEquipmentInfoMapper.java
  12. 12
      src/main/java/com/cjy/receiver/DeviceReceiver.java
  13. 35
      src/main/java/com/cjy/service/LevelEquipmentConfigInfoService.java
  14. 20
      src/main/java/com/cjy/service/LevelEquipmentConfigRecordService.java
  15. 30
      src/main/java/com/cjy/service/LevelEquipmentInfoService.java
  16. 35
      src/main/java/com/cjy/service/impl/LevelEquipmentConfigInfoServiceImpl.java
  17. 25
      src/main/java/com/cjy/service/impl/LevelEquipmentConfigRecordServiceImpl.java
  18. 35
      src/main/java/com/cjy/service/impl/LevelEquipmentInfoServiceImpl.java
  19. 29
      src/main/resources/mapper/levelEquipment/LevelEquipmentConfigInfoMapper.xml
  20. 17
      src/main/resources/mapper/levelEquipment/LevelEquipmentConfigRecordMapper.xml
  21. 38
      src/main/resources/mapper/levelEquipment/LevelEquipmentInfoMapper.xml

@ -32,7 +32,7 @@ public class IndexController {
return "设备对接项目暂不提供页面显示";
}
@GetMapping("/test")
public String tests() {
String messageData = "test message, hello!";
log.error("出错了");

@ -0,0 +1,60 @@
package com.cjy.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 液位设备配置信息表
*
* @TableName level_equipment_config_info
*/
@Data
public class LevelEquipmentConfigInfo implements Serializable {
/**
* 设备id
*/
private String equipmentId;
/**
* 设备状态 0:不做处理 1:更换ip 2:更换时间间隔 3:取消更换ip指令
*/
private Integer status;
/**
* 新服务地址
*/
private String ipAddress;
/**
* 设备推送时间间隔
*/
private Integer timeSpan;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
public LevelEquipmentConfigInfo(String equipmentId, Integer status, Integer timeSpan, Date createTime, Date updateTime) {
this.equipmentId = equipmentId;
this.status = status;
this.timeSpan = timeSpan;
this.createTime = createTime;
this.updateTime = updateTime;
}
public LevelEquipmentConfigInfo(String equipmentId, Integer status, String ipAddress, Integer timeSpan, Date createTime) {
this.equipmentId = equipmentId;
this.status = status;
this.ipAddress = ipAddress;
this.timeSpan = timeSpan;
this.createTime = createTime;
}
public LevelEquipmentConfigInfo() {
}
}

@ -0,0 +1,87 @@
package com.cjy.domain;
import java.io.Serializable;
import java.util.Date;
/**
* 液位设备配置更改记录表
*
* @TableName level_equipment_config_record
*/
public class LevelEquipmentConfigRecord implements Serializable {
/**
* 设备id
*/
private String equipmentId;
/**
* 设备状态 0:不做处理 1:更换ip 2:更换时间间隔 3:取消更换ip指令
*/
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createTime;
/**
* 设备id
*/
private void setEquipmentId(String equipmentId) {
this.equipmentId = equipmentId;
}
/**
* 设备状态 0:不做处理 1:更换ip 2:更换时间间隔 3:取消更换ip指令
*/
private void setStatus(Integer status) {
this.status = status;
}
/**
* 备注
*/
private void setRemark(String remark) {
this.remark = remark;
}
/**
* 创建时间
*/
private void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 设备id
*/
private String getEquipmentId() {
return this.equipmentId;
}
/**
* 设备状态 0:不做处理 1:更换ip 2:更换时间间隔 3:取消更换ip指令
*/
private Integer getStatus() {
return this.status;
}
/**
* 备注
*/
private String getRemark() {
return this.remark;
}
/**
* 创建时间
*/
private Date getCreateTime() {
return this.createTime;
}
}

@ -0,0 +1,75 @@
package com.cjy.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 设备信息表
*
* @TableName level_equipment_info
*/
public class LevelEquipmentInfo {
/**
* 设备id
*/
private String equipmentId;
/**
* 名称
*/
private String name;
/**
* 删除状态
*/
private String delFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 删除时间
*/
private Date delTime;
public String getEquipmentId() {
return equipmentId;
}
public void setEquipmentId(String equipmentId) {
this.equipmentId = equipmentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getDelTime() {
return delTime;
}
public void setDelTime(Date delTime) {
this.delTime = delTime;
}
}

@ -3,6 +3,9 @@ package com.cjy.iot.netty.config;
import cn.hutool.cron.CronUtil;
import com.cjy.iot.netty.SocketProperties;
import com.cjy.iot.netty.server.NettyServer;
import com.cjy.service.LevelEquipmentConfigInfoService;
import com.cjy.service.LevelEquipmentConfigRecordService;
import com.cjy.service.LevelEquipmentInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@ -27,13 +30,18 @@ public class LaunchRunner implements CommandLineRunner {
@Resource
private NettyServer nettyServer;
@Resource
private LevelEquipmentInfoService levelEquipmentInfoService;
@Resource
private LevelEquipmentConfigInfoService levelEquipmentConfigInfoService;
@Resource
private LevelEquipmentConfigRecordService levelEquipmentConfigRecordService;
@Override
public void run(String... args) throws Exception {
TaskRunner();
InetSocketAddress address = new InetSocketAddress(socketProperties.getHost(), socketProperties.getPort());
log.info("netty服务器启动地址:" + socketProperties.getHost());
nettyServer.start(address);
nettyServer.start(address,levelEquipmentConfigInfoService,levelEquipmentConfigRecordService,levelEquipmentInfoService);
}
/**

@ -1,5 +1,8 @@
package com.cjy.iot.netty.server;
import com.cjy.service.LevelEquipmentConfigInfoService;
import com.cjy.service.LevelEquipmentConfigRecordService;
import com.cjy.service.LevelEquipmentInfoService;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelOption;
@ -22,7 +25,10 @@ import java.net.InetSocketAddress;
@Slf4j
@Component
public class NettyServer {
public void start(InetSocketAddress address) {
public void start(InetSocketAddress address,
LevelEquipmentConfigInfoService levelEquipmentConfigInfoService,
LevelEquipmentConfigRecordService levelEquipmentConfigRecordService,
LevelEquipmentInfoService levelEquipmentInfoService) {
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
@ -35,7 +41,7 @@ public class NettyServer {
//使用指定的端口设置套接字地址
.localAddress(address)
//使用自定义处理类
.childHandler(new NettyServerChannelInitializer())
.childHandler(new NettyServerChannelInitializer(levelEquipmentConfigInfoService,levelEquipmentConfigRecordService,levelEquipmentInfoService))
//服务端可连接队列数,对应TCP/IP协议listen函数中backlog参数
.option(ChannelOption.SO_BACKLOG, 128)
//保持长连接,2小时无数据激活心跳机制

@ -2,6 +2,9 @@ package com.cjy.iot.netty.server;
import com.cjy.iot.netty.MyDecoder;
import com.cjy.iot.netty.MyEncoder;
import com.cjy.service.LevelEquipmentConfigInfoService;
import com.cjy.service.LevelEquipmentConfigRecordService;
import com.cjy.service.LevelEquipmentInfoService;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
@ -15,6 +18,15 @@ import io.netty.channel.socket.SocketChannel;
* @Version 1.0
*/
public class NettyServerChannelInitializer extends ChannelInitializer<SocketChannel> {
private LevelEquipmentConfigInfoService levelEquipmentConfigInfoService;
private LevelEquipmentConfigRecordService levelEquipmentConfigRecordService;
private LevelEquipmentInfoService levelEquipmentInfoService;
public NettyServerChannelInitializer(LevelEquipmentConfigInfoService levelEquipmentConfigInfoService, LevelEquipmentConfigRecordService levelEquipmentConfigRecordService, LevelEquipmentInfoService levelEquipmentInfoService) {
this.levelEquipmentConfigInfoService = levelEquipmentConfigInfoService;
this.levelEquipmentConfigRecordService = levelEquipmentConfigRecordService;
this.levelEquipmentInfoService = levelEquipmentInfoService;
}
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
@ -28,7 +40,31 @@ public class NettyServerChannelInitializer extends ChannelInitializer<SocketChan
//如果是读空闲或者写空闲,不处理,根据自己业务考虑使用
//pipeline.addLast(new IdleStateHandler(600,,0,0, TimeUnit.SECONDS));
//自定义的空间监测
pipeline.addLast(new NettyServerHandler());
pipeline.addLast(new NettyServerHandler(levelEquipmentConfigInfoService,levelEquipmentConfigRecordService,levelEquipmentInfoService));
}
public LevelEquipmentConfigInfoService getLevelEquipmentConfigInfoService() {
return levelEquipmentConfigInfoService;
}
public void setLevelEquipmentConfigInfoService(LevelEquipmentConfigInfoService levelEquipmentConfigInfoService) {
this.levelEquipmentConfigInfoService = levelEquipmentConfigInfoService;
}
public LevelEquipmentConfigRecordService getLevelEquipmentConfigRecordService() {
return levelEquipmentConfigRecordService;
}
public void setLevelEquipmentConfigRecordService(LevelEquipmentConfigRecordService levelEquipmentConfigRecordService) {
this.levelEquipmentConfigRecordService = levelEquipmentConfigRecordService;
}
public LevelEquipmentInfoService getLevelEquipmentInfoService() {
return levelEquipmentInfoService;
}
public void setLevelEquipmentInfoService(LevelEquipmentInfoService levelEquipmentInfoService) {
this.levelEquipmentInfoService = levelEquipmentInfoService;
}
}

@ -1,6 +1,12 @@
package com.cjy.iot.netty.server;
import com.alibaba.fastjson2.JSONObject;
import com.cjy.domain.LevelEquipmentConfigInfo;
import com.cjy.domain.LevelEquipmentInfo;
import com.cjy.rabbitmq.RabbitMQConfig;
import com.cjy.service.LevelEquipmentConfigInfoService;
import com.cjy.service.LevelEquipmentConfigRecordService;
import com.cjy.service.LevelEquipmentInfoService;
import com.cjy.utils.SpringBeanFactory;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
@ -11,7 +17,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@ -25,6 +33,16 @@ import java.util.Map;
*/
@Slf4j
public class NettyServerHandler extends ChannelInboundHandlerAdapter {
private LevelEquipmentConfigInfoService levelEquipmentConfigInfoService;
private LevelEquipmentConfigRecordService levelEquipmentConfigRecordService;
private LevelEquipmentInfoService levelEquipmentInfoService;
public NettyServerHandler(LevelEquipmentConfigInfoService levelEquipmentConfigInfoService, LevelEquipmentConfigRecordService levelEquipmentConfigRecordService, LevelEquipmentInfoService levelEquipmentInfoService) {
this.levelEquipmentConfigInfoService = levelEquipmentConfigInfoService;
this.levelEquipmentConfigRecordService = levelEquipmentConfigRecordService;
this.levelEquipmentInfoService = levelEquipmentInfoService;
}
/**
* 说明 客户端连接服务端时会触发该函数
*
@ -84,19 +102,85 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
String data = String.valueOf(msg);
log.info("消息内容:{}", data);
RabbitTemplate rabbitTemplate = SpringBeanFactory.getBean(RabbitTemplate.class);
try{
InetSocketAddress inetSocketAddress = (InetSocketAddress) ctx.channel().remoteAddress();
String clientIp = inetSocketAddress.getAddress().getHostAddress();
int clientPort = inetSocketAddress.getPort();
Map<String,Object> map = new HashMap<>();
map.put("ip",clientIp);
map.put("port",clientPort);
map.put("data",data);
rabbitTemplate.convertAndSend(RabbitMQConfig.DEVICE_EXCHANGE,RabbitMQConfig.DEVICE_ROUT_KEY, map);
}catch (Exception e){
log.error("数据存储出错,客户端id{},客户端消息:{}",ctx.channel().id(),data);
}
try {
InetSocketAddress inetSocketAddress = (InetSocketAddress) ctx.channel().remoteAddress();
String clientIp = inetSocketAddress.getAddress().getHostAddress();
int clientPort = inetSocketAddress.getPort();
Map<String, Object> map = new HashMap<>();
map.put("ip", clientIp);
map.put("port", clientPort);
map.put("data", data);
rabbitTemplate.convertAndSend(RabbitMQConfig.DEVICE_EXCHANGE, RabbitMQConfig.DEVICE_ROUT_KEY, map);
} catch (Exception e) {
log.error("数据存储出错,客户端id{},客户端消息:{}", ctx.channel().id(), data);
}
JSONObject jsonObject = JSONObject.parseObject(data);
LevelEquipmentInfo levelEquipmentInfo = levelEquipmentInfoService.selectLevelEquipmentInfo((jsonObject.get("ID") + ""));
/*
* 设备信息存在3种情况
* 1. 设备信息不在库内 直接进行消息确认回复
* 2. 设备信息在库内 不是删除停用状态 不做处理
* 3. 设备信息在库内 是删除停用状态 更改数据状态为1 修改 并对设备进行消息确认回复
*
* */
if (null == levelEquipmentInfo) {
log.info("不存在设备数据 进行确认回复");
// 该设备不在当前库内进行消息回复
this.channelWrite(ctx.channel().id(), "{\"SERCHECK\":\"1\"}");
// 入库
levelEquipmentInfo = new LevelEquipmentInfo();
levelEquipmentInfo.setEquipmentId(jsonObject.get("ID").toString());
levelEquipmentInfo.setDelFlag("0");
levelEquipmentInfo.setCreateTime(new Date());
levelEquipmentInfoService.insertLevelEquipmentInfo(levelEquipmentInfo);
// 配置信息如表
LevelEquipmentConfigInfo levelEquipmentConfigInfo = new LevelEquipmentConfigInfo(jsonObject.get("ID") + "", 0, "127.0.0.1:8088", 5000, new Date());
levelEquipmentConfigInfoService.insertLevelEquipmentConfigInfo(levelEquipmentConfigInfo);
} else {
// 设备信息存在时删除状态
if ("2".equals(levelEquipmentInfo.getDelFlag())) {
this.channelWrite(ctx.channel().id(), "{\"SERCHECK\":\"1\"}");
levelEquipmentInfo.setDelFlag("1");
levelEquipmentInfoService.updateLevelEquipmentInfo(levelEquipmentInfo);
log.info("设备已断开连接 进行确认回复");
} else {
/*
* 读取设备信息表该设备配置做响应处理
* 0 不操作
* 1.更换ip
* 2.更换时间间隔
* 3.重置更换ip操作当服务器对设备发送更换ip指令后 设备会往新旧2个地址发送数据
* 设备接收到新服务确认指令后会断开当前服务连接设备重启设备接收到当前服务的确认指令后设备忽略下发的新服务重启后依然连接当前服务
* */
LevelEquipmentConfigInfo levelEquipmentConfigInfo = levelEquipmentConfigInfoService.selectLevelEquipmentConfigInfoByLevelEquipmentId(jsonObject.get("ID") + "");
if (1 ==levelEquipmentConfigInfo.getStatus()) {
//更改ip
this.channelWrite(ctx.channel().id(), "{\"IPPORT\":\"" + levelEquipmentConfigInfo.getIpAddress() + "\"}");
levelEquipmentConfigInfo.setStatus(0);
levelEquipmentConfigInfo.setUpdateTime(new Date());
levelEquipmentConfigInfoService.updateLevelEquipmentConfigInfo(levelEquipmentConfigInfo);
log.info("对设备进行更改ip操作。。。");
} else if (2 == levelEquipmentConfigInfo.getStatus()) {
// 更改时间间隔
this.channelWrite(ctx.channel().id(), "{\"PER\":\"" + levelEquipmentConfigInfo.getTimeSpan() + "\"}");
levelEquipmentConfigInfo.setStatus(0);
levelEquipmentConfigInfo.setUpdateTime(new Date());
levelEquipmentConfigInfoService.updateLevelEquipmentConfigInfo(levelEquipmentConfigInfo);
log.info("对设备进行更改时间间隔操作。。。");
} else if (3 == levelEquipmentConfigInfo.getStatus()) {
// 设备重置
this.channelWrite(ctx.channel().id(), "{\"SERCHECK\":\"1\"}");
levelEquipmentConfigInfo.setStatus(0);
levelEquipmentConfigInfo.setUpdateTime(new Date());
levelEquipmentConfigInfoService.updateLevelEquipmentConfigInfo(levelEquipmentConfigInfo);
log.info("对设备进行重置操作。。。");
}
}
}
//根据要求接收json串
// Integer water = Integer.parseInt(data.substring(6,10),16);
// log.info("当前水位:{}cm",water);
@ -111,7 +195,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
* @param msg
* @throws Exception
*/
public void channelWrite(ChannelId channelId, Object msg) throws Exception {
public void channelWrite(ChannelId channelId, String msg) throws Exception {
Channel channel = ChannelMap.getChannelMap().get(channelId);
if (channel == null) {
log.info("通道:{},不存在", channelId);
@ -124,13 +208,14 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
byte[] msgBytes = {0x01, 0x03, 0x00, 0x02, 0x00, 0x01, 0x25, (byte) 0xCA};
// 指令发送
ByteBuf buffer = Unpooled.buffer();
log.info("开始发送报文:{}", Arrays.toString(msgBytes));
log.info("开始发送报文:{}", msg);
byte[] bytes = msg.getBytes(StandardCharsets.UTF_8);
buffer.writeBytes(msgBytes);
channel.writeAndFlush(buffer).addListener((ChannelFutureListener) future -> {
if (future.isSuccess()) {
log.info("客户端:{},回写成功:{}", channelId, Arrays.toString(msgBytes));
} else {
log.info("客户端:{},回写失败:{}", channelId, Arrays.toString(msgBytes));
log.info("客户端:{},回写失败:{}", channelId, future.cause());
}
});
@ -187,4 +272,28 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
ctx.close();
log.info("{}:发生了错误,此连接被关闭。此时连通数量:{}", ctx.channel().id(), ChannelMap.getChannelMap().size());
}
public LevelEquipmentConfigInfoService getLevelEquipmentConfigInfoService() {
return levelEquipmentConfigInfoService;
}
public void setLevelEquipmentConfigInfoService(LevelEquipmentConfigInfoService levelEquipmentConfigInfoService) {
this.levelEquipmentConfigInfoService = levelEquipmentConfigInfoService;
}
public LevelEquipmentConfigRecordService getLevelEquipmentConfigRecordService() {
return levelEquipmentConfigRecordService;
}
public void setLevelEquipmentConfigRecordService(LevelEquipmentConfigRecordService levelEquipmentConfigRecordService) {
this.levelEquipmentConfigRecordService = levelEquipmentConfigRecordService;
}
public LevelEquipmentInfoService getLevelEquipmentInfoService() {
return levelEquipmentInfoService;
}
public void setLevelEquipmentInfoService(LevelEquipmentInfoService levelEquipmentInfoService) {
this.levelEquipmentInfoService = levelEquipmentInfoService;
}
}

@ -0,0 +1,24 @@
package com.cjy.mapper;
import com.cjy.domain.LevelEquipmentConfigInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:21
* @ClassName: LevelEquipmentConfigInfoMapper
* @Version 1.0
*/
@Mapper
public interface LevelEquipmentConfigInfoMapper {
LevelEquipmentConfigInfo selectLevelEquipmentConfigInfoByLevelEquipmentId(@Param("equipmentId") String equipmentId);
int insertLevelEquipmentConfigInfo(LevelEquipmentConfigInfo levelEquipmentConfigInfo);
int updateLevelEquipmentConfigInfo(LevelEquipmentConfigInfo levelEquipmentConfigInfo);
}

@ -0,0 +1,19 @@
package com.cjy.mapper;
import com.cjy.domain.LevelEquipmentConfigRecord;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:22
* @ClassName: LevelEquipmentConfigRecordMapper
* @Version 1.0
*/
@Mapper
public interface LevelEquipmentConfigRecordMapper {
int insertLevelEquipmentConfigRecord(LevelEquipmentConfigRecord levelEquipmentConfigRecord);
}

@ -0,0 +1,22 @@
package com.cjy.mapper;
import com.cjy.domain.LevelEquipmentInfo;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:20
* @ClassName: LevelEquipmentInfoMapper
* @Version 1.0
*/
@Mapper
public interface LevelEquipmentInfoMapper {
int insertLevelEquipmentInfo(LevelEquipmentInfo levelEquipmentInfo);
int updateLevelEquipmentInfo(LevelEquipmentInfo levelEquipmentInfo);
LevelEquipmentInfo selectLevelEquipmentInfo(@Param("equipmentId") String equipmentId);
}

@ -117,9 +117,9 @@ public class DeviceReceiver {
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
deviceInfo.setDeviceId(jsonObject.get("ID") + "");
deviceInfo.setFuelLevel(new BigDecimal(jsonObject.get("DATA") + ""));
JSONObject locJsonObject = JSONObject.parseObject(jsonObject.get("LOC").toString());
deviceInfo.setLatitude(Double.parseDouble(locJsonObject.get("LAT") + ""));
deviceInfo.setLongitude(Double.parseDouble(locJsonObject.get("LON") + ""));
// JSONObject locJsonObject = JSONObject.parseObject(jsonObject.get("LOC").toString());
// deviceInfo.setLatitude(Double.parseDouble(locJsonObject.get("LAT") + ""));
// deviceInfo.setLongitude(Double.parseDouble(locJsonObject.get("LON") + ""));
@ -145,9 +145,9 @@ public class DeviceReceiver {
deviceChangeInfo.setDeviceId(deviceInfo.getDeviceId());
deviceChangeInfo.setUpdateTime(deviceInfo.getCreateTime());
deviceChangeInfo.setFuelLevel(deviceInfo.getFuelLevel());
double[] lngLat_gcj02 = CoordinateTransformUtil.transformWGS84ToGCJ02(deviceInfo.getLongitude(), deviceInfo.getLatitude());
deviceChangeInfo.setLatitude(lngLat_gcj02[1]);
deviceChangeInfo.setLongitude(lngLat_gcj02[0]);
// double[] lngLat_gcj02 = CoordinateTransformUtil.transformWGS84ToGCJ02(deviceInfo.getLongitude(), deviceInfo.getLatitude());
// deviceChangeInfo.setLatitude(lngLat_gcj02[1]);
// deviceChangeInfo.setLongitude(lngLat_gcj02[0]);
return deviceChangeInfo;
}
}

@ -0,0 +1,35 @@
package com.cjy.service;
import com.cjy.domain.LevelEquipmentConfigInfo;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:13
* @ClassName: LevelEquipmentConfigInfoService
* @Version 1.0
*/
public interface LevelEquipmentConfigInfoService {
/**
* 根据设备id 查询 液位设备配置信息
* @param equipmentId
* @return
*/
LevelEquipmentConfigInfo selectLevelEquipmentConfigInfoByLevelEquipmentId(String equipmentId);
/**
* 修改设备配置信息
* @param levelEquipmentConfigInfo
* @return
*/
boolean updateLevelEquipmentConfigInfo(LevelEquipmentConfigInfo levelEquipmentConfigInfo);
/**
* 新增设备配置信息
* @param levelEquipmentConfigInfo
* @return
*/
boolean insertLevelEquipmentConfigInfo(LevelEquipmentConfigInfo levelEquipmentConfigInfo);
}

@ -0,0 +1,20 @@
package com.cjy.service;
import com.cjy.domain.LevelEquipmentConfigRecord;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:13
* @ClassName: LevelEquipmentConfigRecordService
* @Version 1.0
*/
public interface LevelEquipmentConfigRecordService {
/**
* 新增 液位设备配置更改记录
* @param levelEquipmentConfigRecord
* @return
*/
boolean insertLevelEquipmentConfigRecord(LevelEquipmentConfigRecord levelEquipmentConfigRecord);
}

@ -0,0 +1,30 @@
package com.cjy.service;
import com.cjy.domain.LevelEquipmentInfo;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:13
* @ClassName: LevelEquipmentInfoService
* @Version 1.0
*/
public interface LevelEquipmentInfoService {
/**
* 新增 液位设备信息
* @param levelEquipmentInfo
* @return
*/
boolean insertLevelEquipmentInfo(LevelEquipmentInfo levelEquipmentInfo);
/**
* 修改 液位设备信息
* @param levelEquipmentInfo
* @return
*/
boolean updateLevelEquipmentInfo(LevelEquipmentInfo levelEquipmentInfo);
LevelEquipmentInfo selectLevelEquipmentInfo(String equipmentId);
}

@ -0,0 +1,35 @@
package com.cjy.service.impl;
import com.cjy.domain.LevelEquipmentConfigInfo;
import com.cjy.mapper.LevelEquipmentConfigInfoMapper;
import com.cjy.service.LevelEquipmentConfigInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:18
* @ClassName: LevelEquipmentConfigInfoServiceImpl
* @Version 1.0
*/
@Service
public class LevelEquipmentConfigInfoServiceImpl implements LevelEquipmentConfigInfoService {
@Autowired
private LevelEquipmentConfigInfoMapper levelEquipmentConfigInfoMapper;
@Override
public LevelEquipmentConfigInfo selectLevelEquipmentConfigInfoByLevelEquipmentId(String equipmentId) {
return levelEquipmentConfigInfoMapper.selectLevelEquipmentConfigInfoByLevelEquipmentId(equipmentId);
}
@Override
public boolean updateLevelEquipmentConfigInfo(LevelEquipmentConfigInfo levelEquipmentConfigInfo) {
return levelEquipmentConfigInfoMapper.updateLevelEquipmentConfigInfo(levelEquipmentConfigInfo)>0;
}
@Override
public boolean insertLevelEquipmentConfigInfo(LevelEquipmentConfigInfo levelEquipmentConfigInfo) {
return levelEquipmentConfigInfoMapper.insertLevelEquipmentConfigInfo(levelEquipmentConfigInfo)>0;
}
}

@ -0,0 +1,25 @@
package com.cjy.service.impl;
import com.cjy.domain.LevelEquipmentConfigRecord;
import com.cjy.mapper.LevelEquipmentConfigRecordMapper;
import com.cjy.service.LevelEquipmentConfigRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:18
* @ClassName: LevelEquipmentConfigRecordServiceImpl
* @Version 1.0
*/
@Service
public class LevelEquipmentConfigRecordServiceImpl implements LevelEquipmentConfigRecordService {
@Autowired
private LevelEquipmentConfigRecordMapper levelEquipmentConfigRecordMapper;
@Override
public boolean insertLevelEquipmentConfigRecord(LevelEquipmentConfigRecord levelEquipmentConfigRecord) {
return levelEquipmentConfigRecordMapper.insertLevelEquipmentConfigRecord(levelEquipmentConfigRecord)>0;
}
}

@ -0,0 +1,35 @@
package com.cjy.service.impl;
import com.cjy.domain.LevelEquipmentInfo;
import com.cjy.mapper.LevelEquipmentInfoMapper;
import com.cjy.service.LevelEquipmentInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 说明
*
* @Author 清风煮酒QaQ
* @Date 2023-10-23 9:19
* @ClassName: LevelEquipmentInfoServiceImpl
* @Version 1.0
*/
@Service
public class LevelEquipmentInfoServiceImpl implements LevelEquipmentInfoService {
@Autowired
private LevelEquipmentInfoMapper levelEquipmentInfoMapper;
@Override
public boolean insertLevelEquipmentInfo(LevelEquipmentInfo levelEquipmentInfo) {
return levelEquipmentInfoMapper.insertLevelEquipmentInfo(levelEquipmentInfo)>0;
}
@Override
public boolean updateLevelEquipmentInfo(LevelEquipmentInfo levelEquipmentInfo) {
return false;
}
@Override
public LevelEquipmentInfo selectLevelEquipmentInfo(String equipmentId) {
return levelEquipmentInfoMapper.selectLevelEquipmentInfo(equipmentId);
}
}

@ -0,0 +1,29 @@
<?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.cjy.mapper.LevelEquipmentConfigInfoMapper">
<resultMap type="LevelEquipmentConfigInfo" id="LevelEquipmentConfigResult">
<result property="equipmentId" column="equipment_id"/>
<result property="status" column="status"/>
<result property="ipAddress" column="ip_address"/>
<result property="timeSpan" column="time_span"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<insert id="insertLevelEquipmentConfigInfo" parameterType="LevelEquipmentConfigInfo">
INSERT INTO level_equipment_config_info (equipment_id, status, ip_address, time_span,create_time) VALUES
(#{equipmentId}, #{status}, #{ipAddress}, #{timeSpan},#{createTime})
</insert>
<update id="updateLevelEquipmentConfigInfo" parameterType="LevelEquipmentConfigInfo">
UPDATE level_equipment_config_info SET status=#{status},update_time = #{updateTime}
<if test="ipAddress != null">, ip_address=#{ipAddress}</if>
<if test="timeSpan != null">, time_span=#{timeSpan}</if>
where equipment_id =#{equipmentId}
</update>
<select id="selectLevelEquipmentConfigInfoByLevelEquipmentId" resultType="LevelEquipmentConfigInfo">
select equipment_id as equipmentId, status,ip_address as ipAddress,time_span as timeSpan, create_time as createTime,update_time as updateTime
from level_equipment_config_info where equipment_id =#{equipmentId}
</select>
</mapper>

@ -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.cjy.mapper.LevelEquipmentConfigRecordMapper">
<resultMap type="LevelEquipmentConfigRecord" id="LevelEquipmentConfigRecordResult">
<result property="equipmentId" column="equipment_id"/>
<result property="status" column="status"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
</resultMap>
<insert id="insertLevelEquipmentConfigRecord" parameterType="LevelEquipmentConfigRecord">
insert into level_equipment_config_record(equipment_id,status,remark,create_time)
values ( #{equipmentId},#{status},#{remark},#{createTime} )
</insert>
</mapper>

@ -0,0 +1,38 @@
<?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.cjy.mapper.LevelEquipmentInfoMapper">
<resultMap type="LevelEquipmentInfo" id="LevelEquipmentInfoResult">
<result property="equipmentId" column="equipment_id"/>
<result property="name" column="name"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="delTime" column="del_time"/>
</resultMap>
<insert id="insertLevelEquipmentInfo" parameterType="LevelEquipmentInfo">
insert into level_equipment_info(equipment_id,
<if test="name != null and name !=''">name,</if>
del_flag, create_time, del_time)
values (#{equipmentId},
<if test="name != null and name !=''">#{name},</if>
#{delFlag}, #{createTime}, #{delTime})
</insert>
<update id="updateLevelEquipmentInfo" parameterType="LevelEquipmentInfo">
update level_equipment_info
set del_flag =#{delFlag},
del_time =#{delTime}
where equipment_id = #{equipmentId}
</update>
<select id="selectLevelEquipmentInfo" resultType="com.cjy.domain.LevelEquipmentInfo">
select equipment_id as equipmentId,
name,
del_flag as delFlag,
create_time as createTime,
del_time as delTime
from level_equipment_info
where equipment_id = #{equipmentId}
</select>
</mapper>
Loading…
Cancel
Save