Ver código fonte

【fix】设备信息同步

chengjing 2 anos atrás
pai
commit
e60980cdba

+ 12 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagDeviceRegisterEntity.java

@@ -76,6 +76,9 @@ public class EartagDeviceRegisterEntity implements Serializable {
     @Column(name = "update_type")
     private String updateType;
 
+    @Column(name = "sync_Time")
+    private Timestamp syncTime;
+
     public void setId(Integer id) {
         this.id = id;
     }
@@ -244,6 +247,14 @@ public class EartagDeviceRegisterEntity implements Serializable {
         return updateType;
     }
 
+    public void setSyncTime(Timestamp syncTime) {
+        this.syncTime = syncTime;
+    }
+
+    public Timestamp getSyncTime() {
+        return syncTime;
+    }
+
     @Override
     public String toString() {
         return "EartagDeviceRegisterEntity{" +
@@ -268,6 +279,7 @@ public class EartagDeviceRegisterEntity implements Serializable {
                 "remark=" + remark + '\'' +
                 "createDate=" + createDate + '\'' +
                 "updateType=" + updateType + '\'' +
+                "syncTime=" + syncTime + '\'' +
                 '}';
     }
 }

+ 4 - 3
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDeviceRegisterRepo.java

@@ -1,14 +1,12 @@
 package com.huimv.eartag2.common.dao.repo;
 
 import com.huimv.eartag2.common.dao.entity.EartagDeviceRegisterEntity;
-import org.hibernate.annotations.SQLInsert;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
-import java.sql.Date;
 import java.sql.Timestamp;
-import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 public interface EartagDeviceRegisterRepo extends JpaRepository<EartagDeviceRegisterEntity, Integer>, JpaSpecificationExecutor<EartagDeviceRegisterEntity> {
@@ -35,4 +33,7 @@ public interface EartagDeviceRegisterRepo extends JpaRepository<EartagDeviceRegi
     EartagDeviceRegisterEntity getByChipId(String chipId);
 
 
+    @Query(value = "update eartag_device_register set sync_time=?1 where chip_id=?2" ,nativeQuery = true)
+    @Modifying
+    public void updateDeviceRegister(Timestamp sysnTime,String chipId);
 }

+ 3 - 4
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/listener/ManageListener.java

@@ -2,14 +2,13 @@ package com.huimv.eartag2.manage.listener;
 
 import com.huimv.eartag2.common.mq.Const;
 import com.huimv.eartag2.manage.service.IDeviceRegisterService;
-import com.huimv.eartag2.manage.service.IDeviceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.text.ParseException;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -27,9 +26,9 @@ public class ManageListener {
 
     @RabbitListener(queues = Const.QUEUE_SYNC_DEVICE_FANOUT)
     @RabbitHandler
-    public void processSyncDeviceRegister(Map<String,String> map) throws ParseException {
+    public void processSyncDeviceRegister(List<Map<String,String>> bizDeviceRegisters){
         System.out.println("---------------收到消息");
-        IDeviceRegisterService.fanoutSyncDevice(map);
+        IDeviceRegisterService.fanoutSyncDevice(bizDeviceRegisters);
     }
 
 }

+ 2 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceRegisterService.java

@@ -3,6 +3,7 @@ package com.huimv.eartag2.manage.service;
 import com.huimv.eartag2.common.utils.Result;
 
 import java.text.ParseException;
+import java.util.List;
 import java.util.Map;
 
 public interface IDeviceRegisterService {
@@ -24,5 +25,5 @@ public interface IDeviceRegisterService {
     //注销设备
     Result setDeviceStatus(Integer id, Integer deviceStatus) throws ParseException;
 
-    void fanoutSyncDevice(Map<String,String> map) throws ParseException;
+    Result fanoutSyncDevice(List<Map<String,String>> bizDeviceRegisters);
 }

+ 32 - 14
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceRegisterServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.persistence.criteria.Order;
 import javax.persistence.criteria.Predicate;
@@ -25,6 +26,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Project : huimv.shiwan
@@ -315,20 +317,36 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
     }
 
     @Override
-    public void fanoutSyncDevice(Map<String,String> map) throws ParseException {
-        if ( "FARM_CODE".equals(map.get("farmCode"))){
-            //说明消息中的数据是该业务平台的,进行数据持久化
-            EartagDeviceRegisterEntity deviceRegisterEntity = new EartagDeviceRegisterEntity();
-            deviceRegisterEntity.setChipId(map.get("chipId").trim());
-            deviceRegisterEntity.setDeviceCode(map.get("deviceCode").trim());
-            deviceRegisterEntity.setFarmId(map.get("farmCode").trim());
-            deviceRegisterEntity.setRegisterTime(new DateUtil().getTimestamp());
-            deviceRegisterEntity.setFarmName( map.get("farmName"));
-            //默认设备状态未激活
-            deviceRegisterEntity.setDeviceStatus(2);
-            deviceRegisterRepo.saveAndFlush(deviceRegisterEntity);
-        }else {
-            System.out.println("不是该牧场的设备");
+    @Transactional
+    public Result fanoutSyncDevice(List<Map<String,String>> bizDeviceRegisters) {
+        System.out.println(bizDeviceRegisters);
+        //获取当前消息中,属于本服务的设备注册消息
+        for (Map<String, String> bizDeviceRegister : bizDeviceRegisters) {
+            String farmCode = bizDeviceRegister.get("farmCode");
+            System.out.println(farmCode);
+            if ( FARM_CODE.equals(farmCode)){
+                EartagDeviceRegisterEntity farmCode1 = deviceRegisterRepo.getDeviceRegister(bizDeviceRegister.get("deviceCode"));
+                if(farmCode1!=null){
+                    System.out.println(farmCode1);
+                    //设备注册数据存在
+                    deviceRegisterRepo.updateDeviceRegister(new DateUtil().getTimestamp(),farmCode1.getChipId());
+                }else {
+                    //说明消息中的数据是该业务平台的,进行数据持久化
+                    EartagDeviceRegisterEntity deviceRegisterEntity = new EartagDeviceRegisterEntity();
+                    deviceRegisterEntity.setChipId(bizDeviceRegister.get("chipId"));
+                    deviceRegisterEntity.setDeviceCode(bizDeviceRegister.get("deviceCode"));
+                    deviceRegisterEntity.setFarmId(bizDeviceRegister.get("farmCode"));
+                    deviceRegisterEntity.setRegisterTime(new DateUtil().getTimestamp());
+                    deviceRegisterEntity.setFarmName(bizDeviceRegister.get("farmName"));
+                    //默认设备状态未激活
+                    deviceRegisterEntity.setDeviceStatus(2);
+                    deviceRegisterEntity.setSyncTime(new DateUtil().getTimestamp());
+                    deviceRegisterRepo.saveAndFlush(deviceRegisterEntity);
+                }
+            }else {
+                return new Result(ResultCode.SUCCESS);
+            }
         }
+        return new Result(ResultCode.SUCCESS);
     }
 }

+ 1 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java

@@ -348,6 +348,7 @@ public class DeviceServiceImpl implements IDeviceService {
             contentJo.put("registerTime",dateUtil.formatDatetimeText(contentJo.getDate("registerTime")));
             contentJo.put("lastTime",dateUtil.formatDatetimeText(contentJo.getDate("lastTime")));
             contentJo.put("activeTime",dateUtil.formatDatetimeText(contentJo.getDate("activeTime")));
+            contentJo.put("syncTime",dateUtil.formatDatetimeText(contentJo.getDate("syncTime")));
         }
         return new Result(ResultCode.SUCCESS, pageJo);
     }

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application-dev.yml

@@ -95,7 +95,7 @@ spring:
   #redis
   redis:
     database: 0
-    host: 192.168.1.68
+    host: 122.112.224.199
     port: 6379
     password: hm123456
     timeout: 5000ms

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application.properties

@@ -1,5 +1,5 @@
 #spring.profiles.active=dev
-spring.profiles.active=dev
+spring.profiles.active=prod2
 
 # mysql:/cache:
 device.online.access_mode=mysql