Kaynağa Gözat

1、修改控制设备代码逻辑;2、新增网关设备注册mqtt处理逻辑;

james 4 ay önce
ebeveyn
işleme
3e6448644b
19 değiştirilmiş dosya ile 210 ekleme ve 36 silme
  1. 19 0
      data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/domain/EgDeviceConfig.java
  2. 19 0
      data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/mapper/EgDeviceConfigMapper.java
  3. 2 2
      data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/service/config/mqtt/MqttBaseConfig.java
  4. 16 1
      data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/service/config/mqtt/MqttInConfig.java
  5. 10 15
      data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/service/mqtt/control/control.java
  6. 1 1
      data-gateway/data-gateway-eg-kat/src/main/resources/application.yml
  7. BIN
      data-gateway/data-gateway-eg-kat/src/main/resources/db/yt_gateway.db
  8. 1 1
      data-transfer/data-transfer-api/src/main/java/com/usky/transfer/RemoteTransferService.java
  9. 1 1
      data-transfer/data-transfer-api/src/main/java/com/usky/transfer/factory/RemoteTransferFallbackFactory.java
  10. 2 2
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/controller/api/DataTransferControllerApi.java
  11. 2 2
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/controller/web/QueryDeviceDataController.java
  12. 2 2
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/domain/DmpDeviceCommand.java
  13. 1 1
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/DmpDeviceCommandService.java
  14. 1 1
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/QueryInfluxdbDataService.java
  15. 2 2
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/impl/DmpDeviceCommandServiceImpl.java
  16. 4 4
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/impl/QueryInfluxdbDataServiceImpl.java
  17. 4 0
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/listener/MqttListener.java
  18. 122 0
      data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/mqtt/add/Add.java
  19. 1 1
      data-transfer/data-transfer-biz/src/main/resources/logback.xml

+ 19 - 0
data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/domain/EgDeviceConfig.java

@@ -0,0 +1,19 @@
+package com.usky.gateway.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class EgDeviceConfig implements Serializable {
+    private String deviceUuid;
+
+    private String deviceId;
+
+    private String deviceName;
+
+    private String ip;
+    private String port;
+
+    private String egNumber;
+}

+ 19 - 0
data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/mapper/EgDeviceConfigMapper.java

@@ -0,0 +1,19 @@
+package com.usky.gateway.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.usky.gateway.domain.EgDeviceConfig;
+import com.usky.gateway.domain.GatewayDeviceConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 用户信息表 Mapper 接口
+ * </p>
+ *
+ * @since 2022-04-21
+ */
+@Repository
+@Mapper
+public interface EgDeviceConfigMapper extends BaseMapper<EgDeviceConfig> {}  // 结合mybatis plus
+

+ 2 - 2
data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/service/config/mqtt/MqttBaseConfig.java

@@ -25,8 +25,8 @@ public class MqttBaseConfig {
 	@Value("${mqtt.url}")
 	private String hostUrl;
 
-	@Value("${mqtt.sub-topics}")
-	private String msgTopic;
+//	@Value("${mqtt.sub-topics}")
+//	private String msgTopic;
 
 	@Value("${mqtt.keep-alive-interval}")
 	//心跳间隔

+ 16 - 1
data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/service/config/mqtt/MqttInConfig.java

@@ -1,5 +1,10 @@
 package com.usky.gateway.service.config.mqtt;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.gateway.domain.EgDeviceConfig;
+import com.usky.gateway.domain.GatewayDeviceConfig;
+import com.usky.gateway.mapper.EgDeviceConfigMapper;
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -24,6 +29,8 @@ public class MqttInConfig {
 
     @Autowired
     private MqttBaseConfig mqttBaseConfig;
+    @Autowired
+    private EgDeviceConfigMapper egDeviceConfigMapper;
 
     public static final String CHANNEL_NAME_INPUT = "mqttInputChannel";
 
@@ -40,7 +47,15 @@ public class MqttInConfig {
      */
     @Bean
     public MessageProducer inbound() {
-        String[] tops = mqttBaseConfig.getMsgTopic().split(",");
+//        String[] tops = mqttBaseConfig.getMsgTopic().split(",");
+        LambdaQueryWrapper<EgDeviceConfig> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(EgDeviceConfig::getDeviceUuid);
+        List<EgDeviceConfig> list = egDeviceConfigMapper.selectList(queryWrapper);
+        String[] tops = new String[list.size()];
+        for (int i = 0; i < list.size(); i++) {
+            tops[i] = "/"+list.get(i).getDeviceUuid()+"/control";
+        }
+
         String clientId = "gateway-eg-kat-mqtt-in-" + System.currentTimeMillis();
         MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(clientId,
                 mqttBaseConfig.mqttClientFactory(), tops);

+ 10 - 15
data-gateway/data-gateway-eg-kat/src/main/java/com/usky/gateway/service/mqtt/control/control.java

@@ -4,7 +4,9 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.gateway.domain.EgDeviceConfig;
 import com.usky.gateway.domain.GatewayDeviceConfig;
+import com.usky.gateway.mapper.EgDeviceConfigMapper;
 import com.usky.gateway.mapper.GatewayDeviceConfigMapper;
 import com.usky.gateway.service.config.mqtt.MqttOutConfig;
 import com.usky.gateway.service.config.udp.UdpBaseConfig;
@@ -29,11 +31,6 @@ import java.util.Map;
 @Configuration
 @Data
 public class control implements MqttStrategy {
-//    @Value("${udp.deviceIp}")
-//    private String deviceIp;
-//
-//    @Value("${udp.sendingPort}")
-//    private Integer sendingPort;
 
     @Autowired
     private UdpUtil udpUtil;
@@ -43,32 +40,30 @@ public class control implements MqttStrategy {
     private MqttOutConfig.MqttGateway mqttGateway;
 
     @Autowired
-    private GatewayDeviceConfigMapper gatewayDeviceConfigMapper;
+    private EgDeviceConfigMapper egDeviceConfigMapper;
 
     //处理下发命令消息,下发命令控制设备
     public String disposeMessage(MqttBaseVO mqttBaseVO) {
         String[] topics = mqttBaseVO.getTopic().split("/");
-        String productCode = topics[1];
+        String deviceUuid = topics[1];
         JSONObject obj_data = JSONObject.parseObject(mqttBaseVO.getData().toString());
         Integer commandId = Integer.parseInt(obj_data.get("id").toString());
         Object params = JSONObject.toJSONString(obj_data.get("params"));
         JSONObject params_data = JSON.parseObject(params.toString());
-        String deviceId = params_data.getString("deviceId");
         String commandCode = params_data.getString("commandCode");
         String commandValue = params_data.getString("commandValue");
 
         //开门   17 40 00 00 E0 F4 4D 0D 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
         if(commandCode.equals("door_onoff")){
             //通过查询db文件获取对应udpIp udpPort 目标设备id 门号
-            LambdaQueryWrapper<GatewayDeviceConfig> queryWrapper = Wrappers.lambdaQuery();
-            queryWrapper.select(GatewayDeviceConfig::getIp,GatewayDeviceConfig::getPort,GatewayDeviceConfig::getParam1,GatewayDeviceConfig::getParam2)
-                    .eq(GatewayDeviceConfig::getProductCode,productCode)
-                    .eq(GatewayDeviceConfig::getDeviceId,deviceId);
-            GatewayDeviceConfig one = gatewayDeviceConfigMapper.selectOne(queryWrapper);
+            LambdaQueryWrapper<EgDeviceConfig> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.select(EgDeviceConfig::getDeviceId,EgDeviceConfig::getIp,EgDeviceConfig::getPort,EgDeviceConfig::getEgNumber)
+                    .eq(EgDeviceConfig::getDeviceUuid,deviceUuid);
+            EgDeviceConfig one = egDeviceConfigMapper.selectOne(queryWrapper);
             if(one != null){
-                String devId = one.getParam1();
+                String devId = one.getDeviceId();
                 byte[] deviceByte = byteUtil.toLH(Integer.parseInt(devId));
-                int doorNum = Integer.parseInt(one.getParam2());
+                int doorNum = Integer.parseInt(one.getEgNumber());
                 byte bDoorNum = (byte)doorNum;
                 byte[] requestBytes = new byte[] { 0x17, 0x40, 0x00, 0x00, deviceByte[0], deviceByte[1], deviceByte[2], deviceByte[3], bDoorNum, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                 byteUtil.printBytes(requestBytes);

+ 1 - 1
data-gateway/data-gateway-eg-kat/src/main/resources/application.yml

@@ -49,7 +49,7 @@ mqtt:
 #  url: tcp://192.168.123.165:1883
 #  username: admin
   password: usky
-  sub-topics: /502_KAT/+/control
+#  sub-topics: /502_KAT/+/control
   url: tcp://47.98.201.73:1883
   username: usky
 # 和嵌入式udp通信的发送端口和监听端口地址

BIN
data-gateway/data-gateway-eg-kat/src/main/resources/db/yt_gateway.db


+ 1 - 1
data-transfer/data-transfer-api/src/main/java/com/usky/transfer/RemoteTransferService.java

@@ -24,5 +24,5 @@ public interface RemoteTransferService {
      * 下发单个设备控制命令
      */
     @PostMapping("/deviceControl")
-    Map<String,Object> deviceControl(@RequestParam("productCode") String productCode, @RequestParam(value = "deviceId",required = false) String deviceId, @RequestParam("commandStr") String commandStr,@RequestParam(value = "tenantId") Integer tenantId, @RequestParam(value = "userId") Long userId, @RequestParam(value = "userName") String userName);
+    Map<String,Object> deviceControl(@RequestParam("productCode") String productCode, @RequestParam(value = "deviceUuid",required = false) String deviceUuid, @RequestParam("commandStr") String commandStr,@RequestParam(value = "tenantId") Integer tenantId, @RequestParam(value = "userId") Long userId, @RequestParam(value = "userName") String userName);
 }

+ 1 - 1
data-transfer/data-transfer-api/src/main/java/com/usky/transfer/factory/RemoteTransferFallbackFactory.java

@@ -36,7 +36,7 @@ public class RemoteTransferFallbackFactory implements FallbackFactory<RemoteTran
                 throw new BusinessException(throwable.getMessage());
             }
             @Override
-            public Map<String,Object> deviceControl(String productCode, String deviceId, String commandStr,Integer tenantId, Long userId, String userName) {
+            public Map<String,Object> deviceControl(String productCode, String deviceUuid, String commandStr,Integer tenantId, Long userId, String userName) {
                 throw new BusinessException(throwable.getMessage());
             }
         };

+ 2 - 2
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/controller/api/DataTransferControllerApi.java

@@ -29,7 +29,7 @@ public class DataTransferControllerApi implements RemoteTransferService {
      * 下发单个设备控制命令
      */
     @Override
-    public Map<String,Object> deviceControl(String productCode, String deviceId, String commandStr,Integer tenantId, Long userId, String userName){
-        return queryInfluxdbDataService.deviceControl(productCode, deviceId, commandStr, tenantId, userId, userName);
+    public Map<String,Object> deviceControl(String productCode, String deviceUuid, String commandStr,Integer tenantId, Long userId, String userName){
+        return queryInfluxdbDataService.deviceControl(productCode, deviceUuid, commandStr, tenantId, userId, userName);
     }
 }

+ 2 - 2
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/controller/web/QueryDeviceDataController.java

@@ -201,12 +201,12 @@ public class QueryDeviceDataController {
     @GetMapping("deviceCommandRecord")
     public ApiResult<CommonPage<DmpDeviceCommand>> deviceCommandRecord(@RequestParam(value = "commandStatus",required = false) Integer commandStatus,
                                                                        @RequestParam(value = "productCode",required = false) String productCode,
-                                                                       @RequestParam(value = "deviceId",required = false) String deviceId,
+                                                                       @RequestParam(value = "deviceUuid",required = false) String deviceUuid,
                                                                        @RequestParam(value = "userName",required = false) String userName,
                                                                        @RequestParam(value = "startTime",required = false) String startTime,
                                                                        @RequestParam(value = "endTime",required = false) String endTime,
                                                                        @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                                                        @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize){
-        return ApiResult.success(dmpDeviceCommandService.deviceCommandRecord(commandStatus,productCode,deviceId,userName,startTime,endTime,pageNum,pageSize));
+        return ApiResult.success(dmpDeviceCommandService.deviceCommandRecord(commandStatus,productCode,deviceUuid,userName,startTime,endTime,pageNum,pageSize));
     }
 }

+ 2 - 2
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/domain/DmpDeviceCommand.java

@@ -33,9 +33,9 @@ public class DmpDeviceCommand implements Serializable {
     private String productCode;
 
     /**
-     * 设备编码
+     * 设备Uuid
      */
-    private String deviceId;
+    private String deviceUuid;
 
     /**
      * 下发命令内容

+ 1 - 1
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/DmpDeviceCommandService.java

@@ -15,5 +15,5 @@ import org.springframework.web.bind.annotation.RequestParam;
  */
 public interface DmpDeviceCommandService extends CrudService<DmpDeviceCommand> {
 
-    CommonPage<DmpDeviceCommand> deviceCommandRecord(Integer commandStatus,String productCode,String deviceId,String userName,String startTime,String endTime,Integer pageNum,Integer pageSize);
+    CommonPage<DmpDeviceCommand> deviceCommandRecord(Integer commandStatus,String productCode,String deviceUuid,String userName,String startTime,String endTime,Integer pageNum,Integer pageSize);
 }

+ 1 - 1
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/QueryInfluxdbDataService.java

@@ -18,6 +18,6 @@ public interface QueryInfluxdbDataService extends CrudService<QueryInfluxdbData>
 
     Map<String,Object> sendDeviceDataToMQ(DeviceDataWriteVO writeVO);
 
-    Map<String,Object> deviceControl(String productCode, String deviceId, String commandStr,Integer tenantId, Long userId, String userName);
+    Map<String,Object> deviceControl(String productCode, String deviceUuid, String commandStr,Integer tenantId, Long userId, String userName);
 
 }

+ 2 - 2
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/impl/DmpDeviceCommandServiceImpl.java

@@ -25,12 +25,12 @@ import org.springframework.stereotype.Service;
 public class DmpDeviceCommandServiceImpl extends AbstractCrudService<DmpDeviceCommandMapper, DmpDeviceCommand> implements DmpDeviceCommandService {
 
     @Override
-    public CommonPage<DmpDeviceCommand> deviceCommandRecord(Integer commandStatus,String productCode,String deviceId, String userName, String startTime, String endTime, Integer pageNum, Integer pageSize){
+    public CommonPage<DmpDeviceCommand> deviceCommandRecord(Integer commandStatus,String productCode,String deviceUuid, String userName, String startTime, String endTime, Integer pageNum, Integer pageSize){
         IPage<DmpDeviceCommand> page = new Page<>(pageNum,pageSize);
         LambdaQueryWrapper<DmpDeviceCommand> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(commandStatus != null,DmpDeviceCommand::getCommandStatus,commandStatus)
                 .like(StringUtils.isNotBlank(productCode),DmpDeviceCommand::getProductCode,productCode)
-                .like(StringUtils.isNotBlank(deviceId),DmpDeviceCommand::getDeviceId,deviceId)
+                .like(StringUtils.isNotBlank(deviceUuid),DmpDeviceCommand::getDeviceUuid,deviceUuid)
                 .like(StringUtils.isNotBlank(userName),DmpDeviceCommand::getUserName,userName)
                 .between(StringUtils.isNotBlank(startTime)&&StringUtils.isNotBlank(endTime),DmpDeviceCommand::getCreatedTime,startTime,endTime)
                 .eq(DmpDeviceCommand::getTenantId, SecurityUtils.getTenantId())

+ 4 - 4
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/impl/QueryInfluxdbDataServiceImpl.java

@@ -56,15 +56,15 @@ public class QueryInfluxdbDataServiceImpl extends AbstractCrudService<QueryInflu
     private MqttOutConfig.MqttGateway mqttGateway;
 
     @Override
-    public Map<String,Object> deviceControl(String productCode, String deviceId, String commandStr,Integer tenantId, Long userId, String userName){
+    public Map<String,Object> deviceControl(String productCode, String deviceUuid, String commandStr,Integer tenantId, Long userId, String userName){
         Map<String,Object> rec_map = new HashMap<>();
 
 
         //存储下发设备控制命令到数据库表中
         DmpDeviceCommand command = new DmpDeviceCommand();
         command.setProductCode(productCode);
-        if(StringUtils.isNotBlank(deviceId)){
-            command.setDeviceId(deviceId);
+        if(StringUtils.isNotBlank(deviceUuid)){
+            command.setDeviceUuid(deviceUuid);
         }
 
         command.setCommandContent(commandStr);
@@ -86,7 +86,7 @@ public class QueryInfluxdbDataServiceImpl extends AbstractCrudService<QueryInflu
         dmpDeviceCommandService.updateById(command);
         //推送下发设备控制mqtt
         if(StringUtils.isNotBlank(commandStr)){
-            String topic = "/"+productCode+"/"+deviceId+"/control";
+            String topic = "/"+deviceUuid+"/control";
             mqttGateway.sendToMqtt(topic,dataJson.toJSONString());
         }
 

+ 4 - 0
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/listener/MqttListener.java

@@ -52,6 +52,10 @@ public class MqttListener {
                     mqttBaseVO.setDescribe("controlResponse");
                     mqttBaseVO.setData(payload);
                 }
+                else if(topic.indexOf("add") != -1){
+                    mqttBaseVO.setDescribe("add");
+                    mqttBaseVO.setData(payload);
+                }
                 //统一处理数据
                 simpleContext.getResource(mqttBaseVO);
             }

+ 122 - 0
data-transfer/data-transfer-biz/src/main/java/com/usky/transfer/service/mqtt/add/Add.java

@@ -0,0 +1,122 @@
+package com.usky.transfer.service.mqtt.add;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.util.UUIDUtils;
+import com.usky.transfer.domain.DmpDevice;
+import com.usky.transfer.domain.DmpDeviceStatus;
+import com.usky.transfer.domain.DmpProduct;
+import com.usky.transfer.service.DmpDeviceService;
+import com.usky.transfer.service.DmpDeviceStatusService;
+import com.usky.transfer.service.DmpProductService;
+import com.usky.transfer.service.mqtt.MqttStrategy;
+import com.usky.transfer.service.vo.DeviceMapVO;
+import com.usky.transfer.service.vo.MqttBaseVO;
+import com.usky.transfer.service.vo.ProductMapVO;
+import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Service("add")
+public class Add implements MqttStrategy {
+    @Autowired
+    private DmpProductService dmpProductService;
+
+    @Autowired
+    private DmpDeviceService dmpDeviceService;
+
+    @Autowired
+    private DmpDeviceStatusService dmpDeviceStatusService;
+
+    public String disposeMessage(MqttBaseVO mqttBaseVO){
+        String deviceInfoStr = mqttBaseVO.getData().toString();
+        JSONObject deviceInfoJson = JSONObject.parseObject(deviceInfoStr);
+        String productCode = deviceInfoJson.get("productCode").toString();
+        String deviceId = deviceInfoJson.get("deviceId").toString();
+
+        //判断上报数据对应产品是否注册,如未注册则为非法
+        Map<String, ProductMapVO> productMapList = dmpProductService.getProductMap();
+        if(!productMapList.containsKey(productCode)){
+            //通过查询数据库再确认下产品是否注册
+            LambdaQueryWrapper<DmpProduct> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(DmpProduct::getDeleteFlag,0)
+                    .eq(DmpProduct::getProductCode,productCode);
+            DmpProduct one = dmpProductService.getOne(queryWrapper);
+            if(one == null){
+                log.error(productCode+" 产品未注册");
+                return null;
+            }else{
+                dmpProductService.deleteProductCache();
+            }
+        }
+
+        //判断上报数据设备是否已注册(要判断注册过的设备是不是属于本产品的),未注册自动注册
+        Map<String, DeviceMapVO> deviceMapList = dmpProductService.getDeviceMap();
+        if(!deviceMapList.containsKey(deviceId)){
+            DmpDevice dmpDeviceInfo = new DmpDevice();
+            ProductMapVO productMapVO = productMapList.get(productCode);
+            dmpDeviceInfo.setDeviceId(deviceId);
+            dmpDeviceInfo.setDeviceName("");
+            dmpDeviceInfo.setDeviceType(productMapVO.getDeviceType());
+            dmpDeviceInfo.setProductId(productMapVO.getProductId());
+            dmpDeviceInfo.setProductCode(productCode);
+            dmpDeviceInfo.setCreatedBy(productMapVO.getCreatedBy());
+            dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+            dmpDeviceInfo.setTenantId(productMapVO.getTenantId());
+            dmpDeviceInfo.setServiceStatus(1);
+            dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid());
+            dmpDeviceService.save(dmpDeviceInfo);
+
+            DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
+            dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
+            dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
+            dmpDeviceStatus.setDeviceStatus(2);
+            dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
+            dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
+            dmpDeviceStatusService.save(dmpDeviceStatus);
+
+            dmpProductService.deleteDeviceCache();
+        }else if(deviceMapList.containsKey(deviceId)){
+            LambdaQueryWrapper<DmpDevice> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(DmpDevice::getDeleteFlag,0)
+                    .eq(DmpDevice::getProductCode,productCode)
+                    .eq(DmpDevice::getDeviceId,deviceId);
+            DmpDevice one = dmpDeviceService.getOne(queryWrapper);
+            if(one == null){
+                DmpDevice dmpDeviceInfo = new DmpDevice();
+                ProductMapVO productMapVO = productMapList.get(productCode);
+                dmpDeviceInfo.setDeviceId(deviceId);
+                dmpDeviceInfo.setDeviceName("");
+                dmpDeviceInfo.setDeviceType(productMapVO.getDeviceType());
+                dmpDeviceInfo.setProductId(productMapVO.getProductId());
+                dmpDeviceInfo.setProductCode(productCode);
+                dmpDeviceInfo.setCreatedBy(productMapVO.getCreatedBy());
+                dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+                dmpDeviceInfo.setTenantId(productMapVO.getTenantId());
+                dmpDeviceInfo.setServiceStatus(1);
+                dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid());
+                dmpDeviceService.save(dmpDeviceInfo);
+
+                DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
+                dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
+                dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
+                dmpDeviceStatus.setDeviceStatus(2);
+                dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
+                dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
+                dmpDeviceStatusService.save(dmpDeviceStatus);
+
+                dmpProductService.deleteDeviceCache();
+            }
+        }
+
+        return null;
+    }
+}

+ 1 - 1
data-transfer/data-transfer-biz/src/main/resources/logback.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="60 seconds" debug="false">
     <!-- 日志存放路径 -->
-	<property name="log.path" value="/var/log/uskycloud/usky-demo" />
+	<property name="log.path" value="/var/log/uskycloud/data-transfer" />
    <!-- 日志输出格式 -->
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />