瀏覽代碼

今天修复发现的一些bug.

zhuoning 3 年之前
父節點
當前提交
2080fd85c6
共有 23 個文件被更改,包括 400 次插入156 次删除
  1. 3 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/mq/Const.java
  2. 28 0
      huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/config/TopicRabbitMQConfig.java
  3. 21 23
      huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/listener/DeviceListener.java
  4. 28 1
      huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/listener/ManageListener.java
  5. 62 57
      huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/service/impl/DeviceServiceImpl.java
  6. 1 1
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/ICacheService.java
  7. 1 1
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/CacheServiceImpl.java
  8. 23 17
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java
  9. 48 40
      huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/server/EartagServerHandler2.java
  10. 3 0
      huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/ICacheService.java
  11. 3 0
      huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IDataService.java
  12. 8 0
      huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/CacheServiceImpl.java
  13. 9 0
      huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java
  14. 3 1
      huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DeviceServiceImpl.java
  15. 16 1
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/config/TopicRabbitMQConfig.java
  16. 12 1
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceRegisterController.java
  17. 1 1
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/listener/ManageListener.java
  18. 4 1
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/ICacheService.java
  19. 1 1
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceRegisterService.java
  20. 32 2
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/CacheServiceImpl.java
  21. 21 7
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceRegisterServiceImpl.java
  22. 1 1
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java
  23. 71 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/test/java/com/huimv/eartag2/manage/utils/CacheTest.java

+ 3 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/mq/Const.java

@@ -41,4 +41,7 @@ public class Const {
     public final static String EXCHANGE_SYNC_DEVICE_REGISTER = "topic.syncDeviceRegister.exchange";
     public final static String ROUTING_KEY_SYNC_DEVICE_REGISTER = "topic.syncDeviceRegister.routeKey";
 
+    public final static String QUEUE_SYNC_EARTAG_REGISTER = "topic.syncEartagRegister.queue";
+    public final static String EXCHANGE_SYNC_EARTAG_REGISTER = "topic.syncEartagRegister.exchange";
+    public final static String ROUTING_KEY_SYNC_EARTAG_REGISTER = "topic.syncEartagRegister.routeKey";
 }

+ 28 - 0
huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/config/TopicRabbitMQConfig.java

@@ -62,4 +62,32 @@ public class TopicRabbitMQConfig {
         return BindingBuilder.bind(eartagQueue()).to(eartagExchange()).with(Const.ROUTING_KEY_EARTAG);
     }
 
+    // ############################# 设备绑定队列 ############################# //
+    @Bean
+    public Queue syncDeviceRegisterQueue() {
+        return new Queue(Const.QUEUE_SYNC_DEVICE_REGISTER);
+    }
+    @Bean
+    TopicExchange syncDeviceRegisterExchange() {
+        return new TopicExchange(Const.EXCHANGE_SYNC_DEVICE_REGISTER);
+    }
+    @Bean
+    Binding bindingDeviceRegisterExchangeMessage() {
+        return BindingBuilder.bind(syncDeviceRegisterQueue()).to(syncDeviceRegisterExchange()).with(Const.ROUTING_KEY_SYNC_DEVICE_REGISTER);
+    }
+
+    // ############################# 耳标绑定队列 ############################# //
+    @Bean
+    public Queue syncEartagRegisterQueue() {
+        return new Queue(Const.QUEUE_SYNC_EARTAG_REGISTER);
+    }
+    @Bean
+    TopicExchange syncEartagRegisterExchange() {
+        return new TopicExchange(Const.EXCHANGE_SYNC_EARTAG_REGISTER);
+    }
+    @Bean
+    Binding bindingEartagRegisterExchangeMessage() {
+        return BindingBuilder.bind(syncEartagRegisterQueue()).to(syncEartagRegisterExchange()).with(Const.ROUTING_KEY_SYNC_EARTAG_REGISTER);
+    }
+
 }

+ 21 - 23
huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/listener/DeviceListener.java

@@ -36,19 +36,18 @@ public class DeviceListener {
     private ProcessProducer processProducer;
 
     /**
-     * @Method      : processRawdata
-     * @Description : 
-     * @Params      : [RawMap]
-     * @Return      : void
-     * 
-     * @Author      : ZhuoNing
-     * @Date        : 2022/3/12       
-     * @Time        : 17:28
+     * @Method : processRawdata
+     * @Description :
+     * @Params : [RawMap]
+     * @Return : void
+     * @Author : ZhuoNing
+     * @Date : 2022/3/12
+     * @Time : 17:28
      */
     @RabbitListener(queues = Const.QUEUE_ASK_DEVICE)
     @RabbitHandler
     public void processRawdata(Map RawMap) throws ParseException {
-        System.out.println("<<<<<<<<<<<<<<< RawMap>>"+RawMap.toString());
+        System.out.println("<<<<<<<<<<<<<<< RawMap>>" + RawMap.toString());
         String askText = RawMap.get("askText").toString();
         //本模块主要执行保存以下4类数据:(其他注册数据,在线数据,状态数据等都是由其他模块工程执行处理-process2模块工程)
         //--保存原始流水数据(原始流水表)
@@ -58,14 +57,14 @@ public class DeviceListener {
 
         //处理请求报文//
         Map askMap = handleAskText(askText);
-        System.out.println("## askMap>>"+askMap.toString());
+        System.out.println("## askMap>>" + askMap.toString());
         String type = askMap.get("type").toString();
         JSONObject dataJo = (JSONObject) askMap.get("data");
-        if(type.trim().equalsIgnoreCase("device-heartbeat")){
+        if (type.trim().equalsIgnoreCase("device-heartbeat")) {
             //--(1)处理心跳数据
             //{处理设备心跳数据}
             deviceService.handleDeviceHeartbeat(dataJo);
-        }else if(type.trim().equalsIgnoreCase("device-temp")){
+        } else if (type.trim().equalsIgnoreCase("device-temp")) {
             //--(2)处理环境数据
             //{处理设备环境温度数据}
             deviceService.handleDeviceEnvtemp(dataJo);
@@ -73,14 +72,13 @@ public class DeviceListener {
     }
 
     /**
-     * @Method      : handleAskText
-     * @Description : 
-     * @Params      : [askText]
-     * @Return      : java.util.Map
-     * 
-     * @Author      : ZhuoNing
-     * @Date        : 2022/3/12       
-     * @Time        : 17:27
+     * @Method : handleAskText
+     * @Description :
+     * @Params : [askText]
+     * @Return : java.util.Map
+     * @Author : ZhuoNing
+     * @Date : 2022/3/12
+     * @Time : 17:27
      */
     private Map handleAskText(String askText) {
         Map outMap = new HashMap();
@@ -121,7 +119,7 @@ public class DeviceListener {
                 String[] otherArray = other.split("#");
                 String resi = otherArray[2];
                 int resiInt = Integer.parseInt(resi);
-                if(resiInt != 0){
+                if (resiInt != 0) {
                     Double temp = MathUtil.ln(resiInt);
                     earTemp = new BigDecimal(temp).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
                 }
@@ -152,8 +150,8 @@ public class DeviceListener {
             dataJo.put("other", dataArray[9]);
             type = "eartag";
         }
-        outMap.put("type",type);
-        outMap.put("data",dataJo);
+        outMap.put("type", type);
+        outMap.put("data", dataJo);
         return outMap;
     }
 }

+ 28 - 1
huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/listener/ManageListener.java

@@ -38,7 +38,7 @@ public class ManageListener {
     @RabbitListener(queues = Const.QUEUE_SYNC_DEVICE_REGISTER)
     @RabbitHandler
     public void processSyncDeviceRegister(Map map) throws ParseException {
-        System.out.println("3.");
+        System.out.println("device queue>>");
         JSONObject deviceRegisterJo = JSONObject.parseObject(map.get("deviceRegister").toString()) ;
         System.out.println("deviceRegisterJo>>"+deviceRegisterJo.toJSONString());
 //        System.out.println("同步设备注册信息>>"+deviceRegisterJo);
@@ -50,4 +50,31 @@ public class ManageListener {
         deviceService.countFarmAllStatus(deviceRegisterJo);
         System.out.println("5.");
     }
+
+    /**
+     * @Method      : processSyncEartagRegister
+     * @Description : 监听处理-同步耳标数据
+     * @Params      : [map]
+     * @Return      : void
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/25       
+     * @Time        : 10:14
+     */
+    @RabbitListener(queues = Const.QUEUE_SYNC_EARTAG_REGISTER)
+    @RabbitHandler
+    public void processSyncEartagRegister(Map map) throws ParseException {
+        System.out.println("eartag queue>>");
+        JSONObject deviceRegisterJo = JSONObject.parseObject(map.get("eartagRegister").toString()) ;
+        System.out.println("deviceRegisterJo>>"+deviceRegisterJo.toJSONString());
+//        System.out.println("同步设备注册信息>>"+deviceRegisterJo);
+        //{计算有效耳标总数并存储到缓存}
+        deviceService.countEffectiveDeviceTotal(deviceRegisterJo);
+        System.out.println("4.");
+
+        //{计算设备和耳标总状态}
+        deviceService.countFarmAllStatus(deviceRegisterJo);
+        System.out.println("5.");
+    }
+
 }

+ 62 - 57
huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/service/impl/DeviceServiceImpl.java

@@ -94,35 +94,36 @@ public class DeviceServiceImpl implements IDeviceService {
         //Step1:更新设备注册表[设置活动状态为1,设置活动状态更新时间]
         //Step2:更新在线统计[心跳数+1,心跳第一次上传时间,心跳最后一次时间],预先判断该数据是否存在,如果不存在要先添加记录,如果存在就修改数据
 
-
         System.out.println("dataJo>"+dataJo);
         String deviceCode = dataJo.getString("device");
         //{获取牧场id}
         String farmId = getFarmIdByDeviceCode(deviceCode);
-        String todayDateText = new com.huimv.eartag2.common.utils.DateUtil().getTodayDateText();
-        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
-        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
-
-        //1、{保存设备心跳记录}
-        saveDeviceHeartbeat(dataJo,todayDate);
-
-         String updateType="设备心跳";
-        //2、{更新设备注册表}
-        updateDeviceRegister(farmId, deviceCode,nowTimestamp,updateType);
-
-        //3、{更新在线统计表}
-        updateDeviceOnlineCountWithHeartbeat(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
-
-        //判断该设备编号是否存在缓存在线集合当中;
-        Boolean isExist = cacheService.isExistDeviceOnlineSet(farmId, deviceCode, todayDateText);
-        System.out.println("心跳处理 isExist>>"+isExist);
-        if (!isExist) {
-            //4、{更新总状态表}
-//            updateDeviceAllStatus(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
-            updateEnvtempOfDeviceAllStatus(farmId, todayDateText,todayDate,nowTimestamp);
-
-            //# 将新设备编号加入在线缓存 #
-            cacheService.putDeviceToOnlineSet(farmId, deviceCode,todayDateText);
+        if(farmId != null){
+            String todayDateText = new com.huimv.eartag2.common.utils.DateUtil().getTodayDateText();
+            java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+            Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+            //1、{保存设备心跳记录}
+            saveDeviceHeartbeat(dataJo,todayDate);
+
+            String updateType="设备心跳";
+            //2、{更新设备注册表}
+            updateDeviceRegister(farmId, deviceCode,nowTimestamp,updateType);
+
+            //3、{更新在线统计表}
+            updateDeviceOnlineCountWithHeartbeat(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
+
+            //判断该设备编号是否存在缓存在线集合当中;
+            Boolean isExist = cacheService.isExistDeviceOnlineSet(farmId, deviceCode, todayDateText);
+            System.out.println("心跳处理 isExist>>"+isExist);
+            if (!isExist) {
+                //4、{更新总状态表}
+                updateEnvtempOfDeviceAllStatus(farmId, todayDateText,todayDate,nowTimestamp);
+
+                //# 将新设备编号加入在线缓存 #
+                cacheService.putDeviceToOnlineSet(farmId, deviceCode,todayDateText);
+            }
+        }else{
+            log.error("出错:该请求的FarmId为空.请检查该设备编码["+deviceCode+"]是否存在FarmId.");
         }
         System.out.println("## END 心跳.");
     }
@@ -191,12 +192,14 @@ public class DeviceServiceImpl implements IDeviceService {
     public int getDeviceTotalByFarmIdFromDeviceRegister(String farmId){
         //从缓存钟读取设备总数
         Integer deviceTotal = cacheService.getDeviceTotal(farmId);
-        if(deviceTotal != null) {
+        if(deviceTotal != null && deviceTotal != 0) {
             return deviceTotal;
         }else{
-            List<Object[]> deviceRegList = deviceRegisterRepo.getDeviceCountByFarmId(farmId);
-            Object[] deviceRegObj = (Object[]) deviceRegList.get(0);
-            Integer total = Integer.parseInt(deviceRegObj[0].toString());
+//            List<Object[]> deviceRegList = deviceRegisterRepo.getDeviceCountByFarmId(farmId);
+//            System.out.println("deviceRegList.size>>>>"+deviceRegList.size());
+//            Object[] deviceRegObj = (Object[]) deviceRegList.get(0);
+//            Integer total = Integer.parseInt(deviceRegObj[0].toString());
+            Integer total = getEffectiveDeviceSum(farmId);
             //设置缓存
             cacheService.putDeviceTotal(total,farmId);
             //设备总数
@@ -352,33 +355,34 @@ public class DeviceServiceImpl implements IDeviceService {
         String deviceCode = dataJo.getString("device");
         //{通过设备编码取货牧场id}
         String farmId = getFarmIdByDeviceCode(deviceCode);
-        if(farmId == null){
-            log.error("出错:该设备编码["+deviceCode+"]的设备已经不存在。");
-        }
-        String temp = dataJo.getString("temp");
-        String envtemp = com.huimv.eartag2.common.utils.MathUtil.countEnvtemp(temp,2).toString();
-        String todayDateText = new com.huimv.eartag2.common.utils.DateUtil().getTodayDateText();
-        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
-        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
-
-        //1.保存环境温度流水
-        saveDeviceTemp(dataJo,todayDate,nowTimestamp);
-
-        String updateType = "环境温度";
-        //2.{更新设备注册表}
-        updateDeviceRegister(farmId, deviceCode,nowTimestamp,updateType);
-
-        //3.{更新在线统计表}
-        updateDeviceOnlineWithEnvtemp(farmId, deviceCode,envtemp,todayDate,nowTimestamp);
-
-        //判断该设备编号是否存在牧场缓存在线集合当中;
-        Boolean isExist = cacheService.isExistDeviceOnlineSet(farmId, deviceCode,todayDateText);
-        System.out.println("## 环境温度 isExist>>"+isExist);
-        if (!isExist) {
-            //4.{更新总状态表}
-            updateEnvtempOfDeviceAllStatus(farmId, todayDateText,todayDate,nowTimestamp);
-            //{将新设备编号加入在线缓存}
-            cacheService.putDeviceToOnlineSet(farmId, deviceCode, todayDateText);
+        if(farmId != null){
+            String temp = dataJo.getString("temp");
+            String envtemp = com.huimv.eartag2.common.utils.MathUtil.countEnvtemp(temp,2).toString();
+            String todayDateText = new com.huimv.eartag2.common.utils.DateUtil().getTodayDateText();
+            java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+            Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+
+            //1.保存环境温度流水
+            saveDeviceTemp(dataJo,todayDate,nowTimestamp);
+
+            String updateType = "环境温度";
+            //2.{更新设备注册表}
+            updateDeviceRegister(farmId, deviceCode,nowTimestamp,updateType);
+
+            //3.{更新在线统计表}
+            updateDeviceOnlineWithEnvtemp(farmId, deviceCode,envtemp,todayDate,nowTimestamp);
+
+            //判断该设备编号是否存在牧场缓存在线集合当中;
+            Boolean isExist = cacheService.isExistDeviceOnlineSet(farmId, deviceCode,todayDateText);
+            System.out.println("## 环境温度 isExist>>"+isExist);
+            if (!isExist) {
+                //4.{更新总状态表}
+                updateEnvtempOfDeviceAllStatus(farmId, todayDateText,todayDate,nowTimestamp);
+                //{将新设备编号加入在线缓存}
+                cacheService.putDeviceToOnlineSet(farmId, deviceCode, todayDateText);
+            }
+        }else{
+            log.error("出错:该请求的FarmId为空.请检查该设备编码["+deviceCode+"]是否存在FarmId.");
         }
         System.out.println("## END 环境数据");
     }
@@ -386,6 +390,7 @@ public class DeviceServiceImpl implements IDeviceService {
     //更新设备环境信息
     @Override
     public void updateEnvtempOfDeviceAllStatus(String farmId, String todayDateText, java.sql.Date todayDate, Timestamp nowTimestamp) throws ParseException {
+        System.out.println("## farmId>>"+farmId);
         //{获取处于工作状态的设备数量}
         Integer deviceTotal = getDeviceTotalByFarmIdFromDeviceRegister(farmId);
         System.out.println("## deviceTotal>>"+deviceTotal);
@@ -690,10 +695,10 @@ public class DeviceServiceImpl implements IDeviceService {
         System.out.println("result>>"+result);
     }
 
+    //读取有效的设备数量
     public Integer getEffectiveDeviceSum(String farmId){
         List<Object[]> deviceRegisterList = deviceRegisterRepo.getDeviceCountByFarmId(farmId);
         Object[] deviceRegObj = (Object[]) deviceRegisterList.get(0);
-        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+deviceRegObj[0].toString());
         //设备总数
         return Integer.parseInt(deviceRegObj[0].toString());
     }

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/ICacheService.java

@@ -55,7 +55,7 @@ public interface ICacheService {
 
     Integer getEartagTotal(String farmId);
 
-    void putEartagTotal_(Integer total, String farmId);
+    void putEartagTotal(Integer total, String farmId);
 
     //从缓存读取在线耳标数量
     Integer getEartagOnlineTotalFromCache(String farmId, String todayDateText);

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/CacheServiceImpl.java

@@ -365,7 +365,7 @@ public class CacheServiceImpl implements ICacheService {
     }
 
     @Override
-    public void putEartagTotal_(Integer total, String farmId) {
+    public void putEartagTotal(Integer total, String farmId) {
         String valueKey = BizConst.FARM_EARTAG_TOTAL_PREFIX+farmId;
         redisTemplate.opsForValue().set(valueKey,total);
     }

+ 23 - 17
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -67,27 +67,31 @@ public class EartagServiceImpl implements IEartagService {
         //--设备和耳标总状态表
         //获取牧场id
         String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
-        //{保存耳标流水}
-        saveEartagFlow(dataJo,nowTimestamp,todayDate,farmId);
+        if(farmId != null) {
+            //{保存耳标流水}
+            saveEartagFlow(dataJo, nowTimestamp, todayDate, farmId);
 
-        //{更新设备注册信息}
-        updateDeviceRegister(deviceCode,nowTimestamp,todayDate,farmId);
+            //{更新设备注册信息}
+            updateDeviceRegister(deviceCode, nowTimestamp, todayDate, farmId);
 
-        //{更新耳标注册信息}
-        updateEartagRegister(earmark,deviceCode,nowTimestamp,todayDate,farmId);
+            //{更新耳标注册信息}
+            updateEartagRegister(earmark, deviceCode, nowTimestamp, todayDate, farmId);
 
-        //{更新耳标在线信息}
-        updateEartagOnline(earmark,deviceCode,todayDateText,todayDate,nowTimestamp,dataJo,farmId);
+            //{更新耳标在线信息}
+            updateEartagOnline(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
 
-        //{更新耳标设备在线统计}
-        updateEartagDeviceOnlineCount(earmark,deviceCode,todayDateText,todayDate,farmId);
+            //{更新耳标设备在线统计}
+            updateEartagDeviceOnlineCount(earmark, deviceCode, todayDateText, todayDate, farmId);
 
-        //判断该设备编号是否存在牧场缓存在线集合当中;
-        if (!cacheService.isExistEartagOnlineSet(farmId, earmark,todayDateText)) {
-            //更新总状态数据
-            updateEartagPropertyOfAllStatus(farmId, todayDateText,todayDate,nowTimestamp);
-            //将耳标号加入到耳标在线集合当中
-            cacheService.putEartagToOnlineInSet(farmId, earmark,todayDateText);
+            //判断该设备编号是否存在牧场缓存在线集合当中;
+            if (!cacheService.isExistEartagOnlineSet(farmId, earmark, todayDateText)) {
+                //更新总状态数据
+                updateEartagPropertyOfAllStatus(farmId, todayDateText, todayDate, nowTimestamp);
+                //将耳标号加入到耳标在线集合当中
+                cacheService.putEartagToOnlineInSet(farmId, earmark, todayDateText);
+            }
+        }else{
+            log.error("出错:该请求的FarmId为空.请检查该设备编码["+deviceCode+"]是否存在FarmId.");
         }
     }
 
@@ -251,7 +255,7 @@ public class EartagServiceImpl implements IEartagService {
             //{读取处于工作状态的耳标总数}
             Integer total = getEartagSum(farmId,liveStatus);
             //设置耳标总数缓存
-            cacheService.putEartagTotal_(total,farmId);
+            cacheService.putEartagTotal(total,farmId);
             //处于工作状态的耳标总数
             return total;
         }
@@ -416,6 +420,8 @@ public class EartagServiceImpl implements IEartagService {
         eartagRegisterRepo.saveAndFlush(newEartagRegisterEntity);
         //{更新耳标注册消息缓存}
         cacheService.putEartagRegister(earmark,newEartagRegisterEntity);
+        //{更新耳标数量}
+        cacheService.putEartagTotal(getEartagSum(farmId,liveStatus),farmId);
     }
 
     //更新耳标注册数据

+ 48 - 40
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/server/EartagServerHandler2.java

@@ -52,7 +52,7 @@ public class EartagServerHandler2 extends ChannelInboundHandlerAdapter {
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
         ByteBuf data = (ByteBuf) msg;
         String clientAskText = data.toString(CharsetUtil.UTF_8);
-//        clientAskText = clientAskText.replaceAll("\r","").replaceAll("\n","");
+        clientAskText = clientAskText.replaceAll("\r","").replaceAll("\n","");
         System.out.println("### 服务端接收数据 >>" + clientAskText);
         //TEST-saveRawData()
 //        deviceService.saveRawData(clientAskText);
@@ -68,7 +68,7 @@ public class EartagServerHandler2 extends ChannelInboundHandlerAdapter {
                 String askText = askJa.getString(a);
                 /////////////////////////////////////////////////////////////
                 //TEST-saveRawData()
-                deviceService.saveRawData(askText);
+//                deviceService.saveRawData(askText);
                 /////////////////////////////////////////////////////////////
 
                 if (dataInputFlow == 1) {
@@ -103,74 +103,82 @@ public class EartagServerHandler2 extends ChannelInboundHandlerAdapter {
             //采集器应答数据
             if (cmd.trim().equalsIgnoreCase("0")) {
                 //不需要处理
-                System.out.println("==>1");
+                System.out.println("==>命令0");
             } else if (cmd.trim().equalsIgnoreCase("1")) {
-                System.out.println("==>2");
-                System.out.println(" >> askText>>"+askText);
+                System.out.println("==>命令1请求 askText>>" + askText.trim());
                 //处理获取设备编码命令
                 //{读取设备编码}
                 String deviceCode = dataService.getDeviceCodeByChipId(idCode);
                 log.info("芯片id>>" + idCode + " ,deviceCode>>" + deviceCode);
                 if (deviceCode != null) {
-                    System.out.println("==>2.1");
                     String answer = "hm+1+0+" + deviceCode + "+123+8+end";
-                    log.info("##获取设备编码-应答数据>>" + answer);
+                    log.info(">>返回命令1设备编码-应答数据>>" + answer);
                     ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
-                    System.out.println("==>2.2");
                 } else {
                     log.error("检测到未注册的非法采集器设备,已舍弃请求.");
                 }
-                System.out.println("==>3");
             } else if (cmd.trim().equalsIgnoreCase("2")) {
-                System.out.println("==>3");
-                System.out.println(" >> askText>>"+askText);
-                //处理服务器时间命令
-                String answer = "hm+2+" + dateUtil.getNowText() + "+4+end";
-                log.info("##获取服务器时间-应答数据>>" + answer);
-                ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
-                System.out.println("==>3.1");
+                System.out.println("==>命令2请求 askText>>" + askText);
+                if (dataService.isEffectiveDevice(idCode)) {
+                    //处理服务器时间命令
+                    String answer = "hm+2+" + dateUtil.getNowText() + "+4+end";
+                    log.info(">>返回命令2服务器时间-应答数据>>" + answer);
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+                }else {
+                    System.out.println("##获取服务器时间-无效设备编码 idCode=" + idCode);
+                }
             } else if (cmd.trim().equalsIgnoreCase("3")) {
-                System.out.println("==>4");
-                System.out.println(" >> askText>>"+askText);
+                System.out.println("==>命令3请求 askText>>" + askText);
                 //处理心跳包命令
                 //{设备心跳应答}
-                String answer = "hm+3+6+end";
-                log.info("##心跳包-应答数据>>" + answer);
-                ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
-                System.out.println("==>4.1");
-                //{发送到耳标处理消息队列}
-                dataService.sendDeviceMQ(map);
-                System.out.println("==>4.2");
+                if (dataService.isEffectiveDevice(idCode)) {
+                    String answer = "hm+3+6+end";
+                    log.info(">>返回命令3心跳包-应答数据>>" + answer);
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+
+                    //{发送到耳标处理消息队列}
+                    dataService.sendDeviceMQ(map);
+                    System.out.println("有效设备编码");
+                } else {
+                    System.out.println("##心跳包-无效设备编码 idCode=" + idCode);
+                }
             } else if (cmd.trim().equalsIgnoreCase("4")) {
-                System.out.println("==>5");
+                System.out.println("==>命令4请求 askText>>" + askText);
                 //处理设备环境温度命令
                 //{设备环境温度应答}
-                String answer = "hm+4+7+end";
-                log.info("##环境温度-应答数据>>" + answer);
-                ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
-                System.out.println("==>5.1");
-                //{发送到耳标处理消息队列}
-                dataService.sendDeviceMQ(map);
-                System.out.println("==>5.2");
+                if (dataService.isEffectiveDevice(idCode)) {
+                    String answer = "hm+4+7+end";
+                    log.info(">>返回命令4环境温度-应答数据>>" + answer);
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+
+                    //{发送到耳标处理消息队列}
+                    dataService.sendDeviceMQ(map);
+                    System.out.println("有效设备编码");
+                } else {
+                    System.out.println("##环境温度-无效设备编码 idCode=" + idCode);
+                }
             } else {
-                System.out.println("==>6");
-                log.error("##当前数据为非法数据>>" + askText);
+                System.out.println("==>未知命令");
+                log.error(">>当前数据为非法数据>>" + askText);
             }
         } else if (cmdHeader.trim().equalsIgnoreCase("zj")) {
-            System.out.println("==>7");
+            System.out.println("==>耳标命令请求 askText>>"+askText);
             //耳标应答数据(不需要应答)
             if (checkValidEarmark(cmd)) {
-                log.error("舍弃掉未配置耳标号的耳标," + askText + "");
+                log.error(">>舍弃掉未配置耳标号的耳标," + askText + "");
             } else {
                 //{检查设备是否在处于工作状态或待机状态}
-                if (dataService.isWorkStatusDevice(idCode)) {
+//                if (dataService.isWorkStatusDevice(idCode)) {
+                if (dataService.isEffectiveDevice(idCode)) {
                     //{发送到耳标处理消息队列}
                     dataService.sendEartagMQ(map);
+                    System.out.println("有效设备编码");
+                }else{
+                    System.out.println("无效设备编码 idCode="+idCode);
                 }
             }
-            System.out.println("==>7.1");
         } else {
-            System.out.println("==>8");
+            System.out.println("==>未知命令");
             log.error("##当前请求数据为非法数据>>" + askText);
         }
     }

+ 3 - 0
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/ICacheService.java

@@ -3,4 +3,7 @@ package com.huimv.eartag2.service;
 public interface ICacheService {
     //{}
     Object getDeviceCodeByChipId(String chipId);
+
+    //
+    boolean checkEffectiveDeviceSet(String idCode);
 }

+ 3 - 0
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IDataService.java

@@ -30,4 +30,7 @@ public interface IDataService {
 
     //判断是否是工作状态的设备
     boolean isWorkStatusDevice(String idCode);
+
+    //检查是否是有效设备
+    boolean isEffectiveDevice(String idCode);
 }

+ 8 - 0
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/CacheServiceImpl.java

@@ -6,6 +6,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
+import java.util.Set;
+
 /**
  * @Project : huimv.shiwan
  * @Package : com.huimv.biosafety.uface.controller
@@ -24,4 +26,10 @@ public class CacheServiceImpl implements ICacheService {
         String  hashKey = BizConst.CHIP_DEVICE_PREFIX;
         return redisTemplate.opsForHash().get(hashKey,chipId);
     }
+
+    @Override
+    public boolean checkEffectiveDeviceSet(String idCode) {
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        return redisTemplate.opsForSet().isMember(setKey,idCode);
+    }
 }

+ 9 - 0
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java

@@ -13,6 +13,7 @@ import com.huimv.eartag2.common.dao.repo.EartagRawRepo;
 import com.huimv.eartag2.common.mq.Const;
 import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.producer.Producer;
+import com.huimv.eartag2.service.ICacheService;
 import com.huimv.eartag2.service.IDataService;
 import com.huimv.eartag2.service.IDeviceService;
 import com.huimv.eartag2.service.IEartagService;
@@ -67,6 +68,8 @@ public class DataServiceImpl implements IDataService {
     private Producer producer;
     @Autowired
     private RegexUtil regexUtil;
+    @Autowired
+    private ICacheService cacheService;
 
     //处理接收数据
     @Override
@@ -551,6 +554,12 @@ public class DataServiceImpl implements IDataService {
         }
     }
 
+    @Override
+    public boolean isEffectiveDevice(String idCode) {
+        //{检查有效设备集合}
+        return cacheService.checkEffectiveDeviceSet(idCode);
+    }
+
     /**
      * 解析接收数据
      */

+ 3 - 1
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DeviceServiceImpl.java

@@ -64,7 +64,9 @@ public class DeviceServiceImpl implements IDeviceService {
         if(deviceCodeObj != null){
             return (String)deviceCodeObj;
         }else{
-            return getDeviceCodeByChipIdFromMySQL(chipId);
+            return null;
+            //{从数据库读取设备编码返回}
+//            return getDeviceCodeByChipIdFromMySQL(chipId);
         }
     }
 

+ 16 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/config/TopicRabbitMQConfig.java

@@ -18,6 +18,7 @@ import org.springframework.context.annotation.Configuration;
  **/
 @Configuration
 public class TopicRabbitMQConfig {
+    // ############################# 设备绑定队列 ############################# //
     @Bean
     public Queue syncDeviceRegisterQueue() {
         return new Queue(Const.QUEUE_SYNC_DEVICE_REGISTER);
@@ -27,7 +28,21 @@ public class TopicRabbitMQConfig {
         return new TopicExchange(Const.EXCHANGE_SYNC_DEVICE_REGISTER);
     }
     @Bean
-    Binding bindingHeartbeatExchangeMessage() {
+    Binding bindingDeviceRegisterExchangeMessage() {
         return BindingBuilder.bind(syncDeviceRegisterQueue()).to(syncDeviceRegisterExchange()).with(Const.ROUTING_KEY_SYNC_DEVICE_REGISTER);
     }
+
+    // ############################# 耳标绑定队列 ############################# //
+    @Bean
+    public Queue syncEartagRegisterQueue() {
+        return new Queue(Const.QUEUE_SYNC_EARTAG_REGISTER);
+    }
+    @Bean
+    TopicExchange syncEartagRegisterExchange() {
+        return new TopicExchange(Const.EXCHANGE_SYNC_EARTAG_REGISTER);
+    }
+    @Bean
+    Binding bindingEartagRegisterExchangeMessage() {
+        return BindingBuilder.bind(syncEartagRegisterQueue()).to(syncEartagRegisterExchange()).with(Const.ROUTING_KEY_SYNC_EARTAG_REGISTER);
+    }
 }

+ 12 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceRegisterController.java

@@ -65,14 +65,25 @@ public class DeviceRegisterController {
     @GetMapping("/editDevice")
     public Result editDevice(@RequestParam(value = "deviceCode",required = true) String deviceCode,
                              @RequestParam(value = "chipId",required = true) String chipId,
+                             @RequestParam(value = "LastDeviceStatus",required = true) Integer LastDeviceStatus,
                              @RequestParam(value = "deviceStatus",required = true) Integer deviceStatus,
                              @RequestParam(value = "activeStatus",required = true) Integer activeStatus,
                              @RequestParam(value = "deviceAlias",required = false) String deviceAlias,
                              @RequestParam(value = "location",required = false) String location,
                              @RequestParam(value = "remark",required = false) String remark,
                              @RequestParam(value = "id",required = true) Integer id){
+
+        log.info("(editDevice).deviceCode>>"+deviceCode);
+        log.info("(editDevice).chipId>>"+chipId);
+        log.info("(editDevice).LastDeviceStatus>>"+LastDeviceStatus);
+        log.info("(editDevice).deviceStatus>>"+deviceStatus);
+        log.info("(editDevice).activeStatus>>"+activeStatus);
+        log.info("(editDevice).deviceAlias>>"+deviceAlias);
+        log.info("(editDevice).location>>"+location);
+        log.info("(editDevice).remark>>"+remark);
+        log.info("(editDevice).id>>"+id);
         //{编辑}
-        return deviceRegisterService.editDevice(chipId,deviceCode,deviceStatus,activeStatus,deviceAlias,location,remark,id);
+        return deviceRegisterService.editDevice(chipId,deviceCode,LastDeviceStatus,deviceStatus,activeStatus,deviceAlias,location,remark,id);
     }
 
     @GetMapping("/removeDevice")

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

@@ -22,7 +22,7 @@ import java.util.Map;
  **/
 @Component
 @Slf4j
-public class ManageListener {
+public class ManageListener_cancel {
     @Autowired
     private IDeviceService deviceService;
     /**

+ 4 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/ICacheService.java

@@ -28,6 +28,7 @@ public interface ICacheService {
     //
     void putAllDeviceSet(List list);
 
+    //
     void putAllDeviceSet(String deviceCode);
 
     //将芯片ID加入到缓存中
@@ -40,11 +41,13 @@ public interface ICacheService {
     void deleteDeviceRegister(String deviceCode);
 
     //设置设备总数
-    void putDeviceTotal(Integer effectiveDeviceTotal, String farmId);
+    void putDeviceTotal_(Integer effectiveDeviceTotal, String farmId);
 
     //从集合set当中删除设备编号
     void deleteDeviceCodeSetCache(String deviceCode);
 
     //删除芯片ID缓存
     void deleteChipIdHashCache(String chipId);
+
+    void getDeviceCodeSetCache();
 }

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

@@ -9,7 +9,7 @@ public interface IDeviceRegisterService {
     Result addDevice(String chipId, String deviceCode, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, String farmId) throws ParseException;
 
     //编辑设备
-    Result editDevice(String chipId, String deviceCode, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, Integer id);
+    Result editDevice(String chipId, String deviceCode, Integer lastDeviceStatus, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, Integer id);
 
     //移除设备
     Result removeDevice(String ids);

+ 32 - 2
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/CacheServiceImpl.java

@@ -106,6 +106,9 @@ public class CacheServiceImpl implements ICacheService {
 
     @Override
     public void putChipIdToCache(String chipId, String deviceCode) {
+        System.out.println("## <putChipIdToCache> chipId>>"+chipId);
+        System.out.println("## <putChipIdToCache> deviceCode>>"+deviceCode);
+
         String key = BizConst.CHIP_DEVICE_PREFIX;
         String hashKey = chipId;
         //
@@ -124,16 +127,18 @@ public class CacheServiceImpl implements ICacheService {
     @Override
     public void deleteDeviceRegister(String deviceCode) {
         String key = BizConst.DEVICE_REGISTER_PREFIX+deviceCode;
+//        System.out.println(">> <deleteDeviceRegister> key>>"+key);
         Object obj = redisTemplate.opsForHash().entries(key);
         if(obj == null){
             log.error("##Error 该key["+key+"]的缓存不存在.");
         }else{
             redisTemplate.delete(key);
+//            System.out.println(">> end <deleteDeviceRegister> key>>"+key);
         }
     }
 
     @Override
-    public void putDeviceTotal(Integer effectiveDeviceTotal, String farmId) {
+    public void putDeviceTotal_(Integer effectiveDeviceTotal, String farmId) {
         String valueKey = BizConst.FARM_DEVICE_TOTAL_PREFIX+farmId;
         redisTemplate.opsForValue().set(valueKey,effectiveDeviceTotal);
         // TEST
@@ -144,14 +149,39 @@ public class CacheServiceImpl implements ICacheService {
     @Override
     public void deleteDeviceCodeSetCache(String deviceCode) {
         String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+//        System.out.println(">> <deleteDeviceCodeSetCache> setKey "+setKey);
 //        redisTemplate.opsForSet().add(setKey,deviceCode);
         redisTemplate.opsForSet().remove(setKey, deviceCode);
+//        System.out.println(">> end <deleteDeviceCodeSetCache> setKey "+setKey);
     }
 
     @Override
     public void deleteChipIdHashCache(String chipId) {
         String key = BizConst.CHIP_DEVICE_PREFIX;
         String hashKey = chipId;
-        redisTemplate.opsForHash().delete(key,hashKey);
+//        System.out.println(">> <deleteChipIdHashCache> key>>"+key+",hashKey>>"+hashKey);
+        Object obj = redisTemplate.opsForHash().get(key, hashKey);
+//        System.out.println(">> obj>>"+obj);
+        if(obj == null){
+            log.error("##Error 该key>>"+key+",hashKey>>"+hashKey+"的缓存不存在.");
+        }else{
+            redisTemplate.opsForHash().delete(key,hashKey);
+        }
+
+//        Object obj = redisTemplate.opsForHash().entries(key);
+//        System.out.println(">> obj>>"+obj);
+//        if(obj == null){
+//            log.error("##Error 该key["+key+"]的缓存不存在.");
+//        }else{
+//            redisTemplate.delete(key);
+//        }
+        System.out.println(">> end <deleteChipIdHashCache> key "+key);
+    }
+
+    @Override
+    public void getDeviceCodeSetCache() {
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        Set<String> resultSet = redisTemplate.opsForSet().members(setKey);
+        System.out.println("## resultSet>>"+resultSet);
     }
 }

+ 21 - 7
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceRegisterServiceImpl.java

@@ -7,7 +7,6 @@ import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.common.utils.DateUtil;
 import com.huimv.eartag2.common.utils.Result;
 import com.huimv.eartag2.common.utils.ResultCode;
-import com.huimv.eartag2.manage.producer.ManageProducer;
 import com.huimv.eartag2.manage.service.ICacheService;
 import com.huimv.eartag2.manage.service.IDeviceRegisterService;
 import lombok.extern.slf4j.Slf4j;
@@ -75,10 +74,10 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
     }
 
     @Override
-    public Result editDevice(String chipId, String deviceCode, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, Integer id) {
+    public Result editDevice(String chipId, String deviceCode, Integer lastDeviceStatus, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, Integer id) {
         //
-        EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getById(id);
-        Integer lastDeviceStatus = deviceRegisterEntity.getDeviceStatus();
+//        EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getById(id);
+        EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getDeviceRegister(deviceCode);
 //        deviceRegisterEntity.setChipId(chipId);
 //        deviceRegisterEntity.setDeviceCode(deviceCode);
         deviceRegisterEntity.setDeviceStatus(deviceStatus);
@@ -87,7 +86,6 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
         deviceRegisterEntity.setLocation(location);
         deviceRegisterEntity.setRemark(remark);
         deviceRegisterRepo.saveAndFlush(deviceRegisterEntity);
-
         //设置注销状态
         if((lastDeviceStatus == 0 || lastDeviceStatus == 1) && deviceStatus == 2){
             //{设置注销状态}
@@ -180,6 +178,8 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
 
     @Override
     public Result setDeviceStatus(Integer id, Integer deviceStatus) {
+        System.out.println("## <setDeviceStatus> id="+id);
+        System.out.println("## <setDeviceStatus> deviceStatus="+deviceStatus);
         //
         EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getById(id);
         if(deviceRegisterEntity == null){
@@ -211,10 +211,22 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
         //{将芯片ID和设备编码加入缓存}
         cacheService.putChipIdToCache(chipId,deviceCode);
 
+        //{将最新设备数量加入到缓存}--MQ异步处理
+//        Integer deviceStatus = 1;
+//        cacheService.putDeviceTotal_(getDeviceSum(deviceRegisterEntity.getFarmId(),deviceStatus),deviceRegisterEntity.getFarmId());
+
         //{异步处理-设备注册信息}
         producer.sendSyncDeviceRegister(JSONObject.toJSONString(deviceRegisterEntity));
     }
 
+    public Integer getDeviceSum(String farmId, Integer liveStatus){
+        //# 计算处于工作状态的设备总数(设备注册表)
+        List<Object[]> deviceRegList = deviceRegisterRepo.getDeviceCountByFarmIdAndLiveStatus(farmId,liveStatus);
+        Object[] deviceRegObj = (Object[]) deviceRegList.get(0);
+        //设备总数
+        return Integer.parseInt(deviceRegObj[0].toString());
+    }
+
     //设置注销状态
     private void setDeviceCancelStatus(EartagDeviceRegisterEntity deviceRegisterEntity) {
         String deviceCode = deviceRegisterEntity.getDeviceCode();
@@ -223,8 +235,10 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
         cacheService.deleteDeviceRegister(deviceCode);
         //{从集合Set当中删除设备编号}
         cacheService.deleteDeviceCodeSetCache(deviceCode);
-        //{删除芯片ID缓存}
-        cacheService.deleteChipIdHashCache(chipId);
+        if(chipId != null){
+            //{删除芯片ID缓存}
+            cacheService.deleteChipIdHashCache(chipId);
+        }
     }
 
     @Override

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

@@ -425,7 +425,7 @@ public class DeviceServiceImpl implements IDeviceService {
         Integer effectiveDeviceTotal = getEffectiveDeviceSum(farmId);
         System.out.println("## effectiveDeviceTotal>>"+effectiveDeviceTotal);
         //{设置设备总数}
-        cacheService.putDeviceTotal(effectiveDeviceTotal,farmId);
+        cacheService.putDeviceTotal_(effectiveDeviceTotal,farmId);
     }
 
     @Override

+ 71 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/test/java/com/huimv/eartag2/manage/utils/CacheTest.java

@@ -0,0 +1,71 @@
+package com.huimv.eartag2.manage.utils;
+
+import com.huimv.eartag2.common.utils.BizConst;
+import com.huimv.eartag2.manage.service.ICacheService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootTest
+public class CacheTest {
+    @Autowired
+    private ICacheService cacheService;
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Test
+    public void testGetDeviceCodeSetCache(){
+        cacheService.getDeviceCodeSetCache();
+    }
+
+    @Test
+    public void testPutDeviceCodeSetCache(){
+//        String chipId = "a848fad3fefb";
+        String deviceCode = "202007239999873";
+//        String deviceCode = "202007239999866";
+        cacheService.putAllDeviceSet(deviceCode);
+        cacheService.getDeviceCodeSetCache();
+    }
+
+    @Test
+    public void testDelDeviceCode(){
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        String deviceCode = "202007239999866";
+        redisTemplate.opsForSet().remove(setKey,deviceCode);
+        cacheService.getDeviceCodeSetCache();
+    }
+
+    @Test
+    public void testIsMember(){
+//        String chipId = "a848fad3fefb";
+        String deviceCode = "202007239999866";
+//        cacheService.putAllDeviceSet(deviceCode);
+//        cacheService.getDeviceCodeSetCache();
+        cacheService.getDeviceCodeSetCache();
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        boolean isMember = redisTemplate.opsForSet().isMember(setKey,deviceCode);
+        System.out.println("验证isMember="+isMember);
+    }
+
+    @Test
+    public void testGetChipIdCache(){
+        String key = BizConst.CHIP_DEVICE_PREFIX;
+        String hashKey = "a848fad3fefb";
+        //
+        Object obj = redisTemplate.opsForHash().get(key,hashKey);
+        if(obj == null){
+            System.out.println("验证 obj="+obj);
+        }else{
+            System.out.println("验证 obj="+obj.toString());
+        }
+    }
+}