Forráskód Böngészése

Merge branch 'yxx'

523096025 1 éve
szülő
commit
677d07bd2c
80 módosított fájl, 2306 hozzáadás és 899 törlés
  1. 5 3
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagAbnormalAlarmEntity.java
  2. 1 1
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartarFarmAllStatusEntity.java
  3. 1 0
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDeviceRegisterRepo.java
  4. 2 1
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartarFarmAllStatusRepo.java
  5. 22 0
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/config/RestTemplateConfig.java
  6. 2 2
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/config/TopicRabbitMQConfig.java
  7. 85 82
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java
  8. 22 0
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/mapper/SysBaseConfigMapper.java
  9. 40 0
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/pojo/SysBaseConfig.java
  10. 17 0
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/SysBaseConfigService.java
  11. 5 11
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/CacheServiceImpl.java
  12. 2 2
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/DeviceServiceImpl.java
  13. 89 61
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java
  14. 21 0
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/SysBaseConfigServiceImpl.java
  15. 15 2
      huimv-eartag2-eartag/src/test/java/com/huimv/eartag2/eartag/service/ServiceTest.java
  16. 2 3
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/HuimvEartag2InputApplication.java
  17. 4 3
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/config/RabbitMQInitializer.java
  18. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/AbnormalCountAndAlarmRabbitMQInitializer.java
  19. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/CountActHourRabbitMQInitializer.java
  20. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/DeviceCountRabbitMQInitializer.java
  21. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/DeviceRegistMQInitializer.java
  22. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/EartagCountRabbitMQInitializer.java
  23. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/EartagLiveStatusRabbitMQInitializer.java
  24. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/EartagRegistRabbitMQInitializer.java
  25. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/UpdateEartagDeviceOnlineCountRabbitMQInitializer.java
  26. 36 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/UpdateEartagPropertyOfAllStatusRabbitMQInitializer.java
  27. 17 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/mapper/EartagData2Mapper.java
  28. 9 12
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartagData2.java
  29. 6 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/ICacheService.java
  30. 2 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IDeviceService.java
  31. 17 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IEartagData2Service.java
  32. 1 1
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IEartagService.java
  33. 38 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/CacheServiceImpl.java
  34. 132 21
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java
  35. 14 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DeviceServiceImpl.java
  36. 21 0
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/EartagData2ServiceImpl.java
  37. 30 15
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/EartagServiceImpl.java
  38. 29 0
      huimv-eartag2-input/src/main/resources/bootstrap.yml
  39. 2 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/HuimvManageApplication.java
  40. 4 4
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagDataMapper.java
  41. 18 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/mapper/EartagDeviceRegisterMapper.java
  42. 17 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/mapper/EartagEartagRegister2Mapper.java
  43. 145 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagData.java
  44. 86 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagDeviceRegister.java
  45. 120 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagEartagRegister2.java
  46. 17 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/EartagDeviceRegisterService.java
  47. 16 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IEartagDataService.java
  48. 21 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IEartagEartagRegister2Service.java
  49. 116 64
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java
  50. 20 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagDataServiceImpl.java
  51. 22 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagDeviceRegisterServiceImpl.java
  52. 22 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagEartagRegister2ServiceImpl.java
  53. 14 77
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagServiceImpl.java
  54. 5 0
      huimv-eartag2-manage/src/main/resources/mapper/EartagDataMapper.xml
  55. 1 1
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/HuimvManageApplication.java
  56. 2 2
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/BaseFarmController.java
  57. 2 2
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagDataController.java
  58. 20 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartarFarmAllStatusController.java
  59. 7 5
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagData2Mapper.java
  60. 16 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartarFarmAllStatusMapper.java
  61. 2 2
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagData2Mapper.xml
  62. 0 32
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagDataMapper.xml
  63. 17 13
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartagData.java
  64. 61 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartarFarmAllStatus.java
  65. 287 294
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/schedule/EartagTask.java
  66. 20 20
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagDataService.java
  67. 6 4
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartagData2Service.java
  68. 16 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartarFarmAllStatusService.java
  69. 25 53
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagData2ServiceImpl.java
  70. 0 56
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagDataServiceImpl.java
  71. 6 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagDeviceRegisterServiceImpl.java
  72. 2 27
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagEartagRegister2ServiceImpl.java
  73. 2 2
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagEartagRegisterServiceImpl.java
  74. 136 15
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagServiceImpl.java
  75. 20 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartarFarmAllStatusServiceImpl.java
  76. 10 2
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/SysBaseConfigServiceImpl.java
  77. 2 2
      huimv-eartag2-manage2/src/main/resources/application.properties
  78. 2 2
      huimv-eartag2-manage2/src/main/resources/bootstrap.yml
  79. 22 0
      huimv-eartag2-manage2/src/main/resources/mapper/EartarFarmAllStatusMapper.xml
  80. 2 0
      huimv-eartag2-manage2/src/test/java/com/huimv/eartag2/manange2/service/IEartagServiceTest.java

+ 5 - 3
huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagAbnormalAlarmEntity.java

@@ -3,15 +3,17 @@ package com.huimv.eartag2.common.dao.entity;
 import javax.persistence.Entity;
 import javax.persistence.Column;
 import javax.persistence.GenerationType;
+
+import cn.hutool.core.date.DateTime;
 import lombok.experimental.Accessors;
 import javax.persistence.Table;
 import javax.persistence.GeneratedValue;
 import java.sql.Timestamp;
 import lombok.Data;
 import java.io.Serializable;
+import java.util.Date;
 import javax.persistence.Id;
-import java.sql.Date;
- 
+
 @Entity
 @Data
 @Table(name = "eartag_abnormal_alarm")
@@ -31,7 +33,7 @@ private String farmCode;
 private Date addDate;
 
 @Column(name = "add_time")
-private Timestamp addTime;
+private Date addTime;
 
 @Column(name = "content")
 private String content;

+ 1 - 1
huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartarFarmAllStatusEntity.java

@@ -50,7 +50,7 @@ public class EartarFarmAllStatusEntity implements Serializable {
     private String farmId;
 
     @Column(name = "update_time")
-    private java.util.Date updateTime;
+    private Date updateTime;
 
     @Column(name = "create_date")
     private Date createDate;

+ 1 - 0
huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDeviceRegisterRepo.java

@@ -20,6 +20,7 @@ public interface EartagDeviceRegisterRepo extends JpaRepository<EartagDeviceRegi
     @Query(nativeQuery = true,value = "SELECT COUNT(*) total FROM eartag_device_register WHERE farm_id=?1 AND device_status IN(0,1,2)")
     List<Object[]> getDeviceCountByFarmId(String farmId);
 
+
     @Query(nativeQuery = true,value = "SELECT COUNT(*) total FROM eartag_device_register WHERE farm_id=?1 AND device_status=?2")
     List<Object[]> getDeviceCountByFarmIdAndLiveStatus(String farmId, Integer liveStatus);
 

+ 2 - 1
huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartarFarmAllStatusRepo.java

@@ -1,7 +1,8 @@
 package com.huimv.eartag2.common.dao.repo;
 
-import com.huimv.eartag2.common.dao.entity.EartagEartagRegisterEntity;
+
 import com.huimv.eartag2.common.dao.entity.EartarFarmAllStatusEntity;
+
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;

+ 22 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/config/RestTemplateConfig.java

@@ -11,6 +11,12 @@ import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
 import org.springframework.http.client.ClientHttpRequestFactory;
 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.web.client.RestTemplate;
@@ -31,6 +37,22 @@ public class RestTemplateConfig {
     }
 
     @Bean
+    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory lettuceConnectionFactory){
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        //设置String类型的key设置序列化器
+        redisTemplate.setKeySerializer(new StringRedisSerializer());
+
+        //设置Hash类型的key设置序列化器
+        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+        //设置redis链接Lettuce工厂
+        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
+        return redisTemplate;
+    }
+
+    @Bean
     public ClientHttpRequestFactory httpRequestFactory() {
         return new HttpComponentsClientHttpRequestFactory(httpClient());
     }

+ 2 - 2
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/config/TopicRabbitMQConfig.java

@@ -58,7 +58,7 @@ public class TopicRabbitMQConfig {
 //    }
 
 
-    // ============================= 计算小时运动量 ============================= //
+  /*  // ============================= 计算小时运动量 ============================= //
     @Bean
     public Queue syncCountActHourQueue() {
         return new Queue(Const.QUEUE_COUNT_ACT_HOUR);
@@ -201,7 +201,7 @@ public class TopicRabbitMQConfig {
     }
 
 
-
+*/
 
 
 }

+ 85 - 82
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java

@@ -3,7 +3,6 @@ package com.huimv.eartag2.eartag.listener;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.huimv.eartag2.common.mq.Const;
-import com.huimv.eartag2.common.utils.DateUtil;
 import com.huimv.eartag2.common.utils.MathUtil;
 import com.huimv.eartag2.eartag.service.IDeviceService;
 import com.huimv.eartag2.eartag.service.IEartagService;
@@ -157,87 +156,92 @@ public class EartagListener {
 //    @RabbitListener(queues = Const.QUEUE_ASK_EARTAG )
     @RabbitListener(queues = "#{'direct.askEartag.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
-    public void processRawdata(Map RawMap) throws ParseException, IOException {
-         log.info("开始处理原始耳标数据------>"+RawMap);
-        String askText = RawMap.get("askText").toString();
-
-        //{处理请求报文}
-        Map askMap = handleAskText(askText);
-        if (askMap == null){
-            return;
-        }
-        String type = askMap.get("type").toString();
-        JSONObject dataJo = (JSONObject) askMap.get("data");
-        if (type.trim().equalsIgnoreCase("eartag")) {
-            String deviceCode = dataJo.getString("device");
-            String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
-            System.out.println("####### farmId=" + farmId);
-            if (ObjectUtil.isEmpty(farmId)){
-                log.error("出错:该请求的FarmId为空.请检查该设备编码[" + deviceCode + "]是否存在FarmId.");
-                return;
-            }
-            dataJo.put("farmId",farmId);
-
-            //计算小时运动量
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_COUNT_ACT_HOUR,Const.ROUTING_KEY_COUNT_ACT_HOUR,dataJo);
-
-            //保存耳标流水数据
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_FLOW,Const.ROUTING_KEY_EARTAG_FLOW,dataJo);
-
-            //更新设备注册信息
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_REGIST,Const.ROUTING_KEY_DEVICE_REGIST,dataJo);
-
-            //更新耳标注册信息
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_REGIST,Const.ROUTING_KEY_EARTAG_REGIST,dataJo);
-
-            //更新设备在线统计
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_COUNT,Const.ROUTING_KEY_DEVICE_COUNT,dataJo);
-
-            //更新耳标在线统计
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_COUNT,Const.ROUTING_KEY_EARTAG_COUNT,dataJo);
-
-            //更新耳标在线状态
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_LIVE,Const.ROUTING_KEY_EARTAG_LIVE,dataJo);
-
-            //更新耳标设备在线关联统计
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_DEVICE_ONLINE,Const.ROUTING_KEY_EARTAG_DEVICE_ONLINE,dataJo);
-
-            //异常统计和异常报警
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_ABNORMAL,Const.ROUTING_KEY_ABNORMAL,dataJo);
-
-            //判断该设备编号是否存在牧场缓存在线集合当中
-            rabbitTemplate.convertAndSend(Const.EXCHANGE_AllSTATUS,Const.ROUTING_KEY_AllSTATUS,dataJo);
+    public void processRawdata(JSONObject dataJo) throws ParseException, IOException {
+         log.info("开始处理原始耳标数据------>"+dataJo);
+//        String askText = RawMap.get("askText").toString();
+//
+//        //{处理请求报文}
+//        Map askMap = handleAskText(askText);
+//        if (askMap == null){
+//            return;
+//        }
+//        String type = askMap.get("type").toString();
+//        JSONObject dataJo = (JSONObject) askMap.get("data");
+////        if (type.trim().equalsIgnoreCase("eartag")) {
+//            String deviceCode = dataJo.getString("device");
+//            String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
+//            System.out.println("####### farmId=" + farmId);
+//            if (ObjectUtil.isEmpty(farmId)){
+//                log.error("出错:该请求的FarmId为空.请检查该设备编码[" + deviceCode + "]是否存在FarmId.");
+//                return;
+//            }
+//            dataJo.put("farmId",farmId);
+
+//            //计算小时运动量
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_COUNT_ACT_HOUR,Const.ROUTING_KEY_COUNT_ACT_HOUR,dataJo);
+//
+//            //保存耳标流水数据
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_FLOW,Const.ROUTING_KEY_EARTAG_FLOW,dataJo);
+//
+//            //更新设备注册信息
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_REGIST,Const.ROUTING_KEY_DEVICE_REGIST,dataJo);
+//
+//            //更新耳标注册信息
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_REGIST,Const.ROUTING_KEY_EARTAG_REGIST,dataJo);
+//
+//            //更新设备在线统计
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_COUNT,Const.ROUTING_KEY_DEVICE_COUNT,dataJo);
+//
+//            //更新耳标在线统计
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_COUNT,Const.ROUTING_KEY_EARTAG_COUNT,dataJo);
+//
+//            //更新耳标在线状态
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_LIVE,Const.ROUTING_KEY_EARTAG_LIVE,dataJo);
+//
+//            //更新耳标设备在线关联统计
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_DEVICE_ONLINE,Const.ROUTING_KEY_EARTAG_DEVICE_ONLINE,dataJo);
+//
+//            //异常统计和异常报警
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_ABNORMAL,Const.ROUTING_KEY_ABNORMAL,dataJo);
+//
+//            //判断该设备编号是否存在牧场缓存在线集合当中
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_AllSTATUS,Const.ROUTING_KEY_AllSTATUS,dataJo);
 
 //            eartagService.handleEartag(dataJo);
-        }
+//        }
+        eartagService.handleEartag(dataJo);
 
     }
 
 
 
-    @RabbitListener(queues = Const.QUEUE_COUNT_ACT_HOUR)
+    @RabbitListener(queues = "#{'direct.countActHour.queue' + ${rabbitmq.queues}}")
+//    @RabbitListener(queues = Const.QUEUE_COUNT_ACT_HOUR)
     @RabbitHandler
     public void countActHour(JSONObject dataJo) {
         log.info("开始计算小时运动量------>"+dataJo);
         eartagService.countHourAct(dataJo);
     }
 
-    @RabbitListener(queues = Const.QUEUE_EARTAG_FLOW)
-    @RabbitHandler
-    public void saveEartagFlow(JSONObject dataJo) {
-        log.info("开始保存耳标流水数据------>"+dataJo);
-        eartagService.saveEartagFlow(dataJo);
-
-    }
-
-    @RabbitListener(queues = Const.QUEUE_DEVICE_REGIST)
+//    @RabbitListener(queues = Const.QUEUE_EARTAG_FLOW)
+//    @RabbitListener(queues = "#{'direct.eartagFlow.queue' + ${rabbitmq.queues}}")
+//    @RabbitHandler
+//    public void saveEartagFlow(JSONObject dataJo) {
+//        log.info("开始保存耳标流水数据------>"+dataJo);
+//        eartagService.saveEartagFlow(dataJo);
+//
+//    }
+
+//    @RabbitListener(queues = Const.QUEUE_DEVICE_REGIST)
+    @RabbitListener(queues = "#{'direct.deviceRegist.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
     public void updateDeviceRegister(JSONObject dataJo) {
         log.info("开始更新设备注册信息------>"+dataJo);
         eartagService.updateDeviceRegister(dataJo);
     }
 
-    @RabbitListener(queues = Const.QUEUE_EARTAG_REGIST)
+//    @RabbitListener(queues = Const.QUEUE_EARTAG_REGIST)
+    @RabbitListener(queues = "#{'direct.eartagRegist.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
     public void updateEartagRegister(JSONObject dataJo) {
         log.info("开始更新耳标注册信息------>"+dataJo);
@@ -245,7 +249,8 @@ public class EartagListener {
 
     }
 
-    @RabbitListener(queues = Const.QUEUE_DEVICE_COUNT)
+//    @RabbitListener(queues = Const.QUEUE_DEVICE_COUNT)
+    @RabbitListener(queues = "#{'direct.deviceCount.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
     public void updateDeviceOnline(JSONObject dataJo) throws ParseException {
         log.info("开始更新设备在线统计------>"+dataJo);
@@ -253,7 +258,8 @@ public class EartagListener {
 
     }
 
-    @RabbitListener(queues = Const.QUEUE_EARTAG_COUNT)
+//    @RabbitListener(queues = Const.QUEUE_EARTAG_COUNT)
+    @RabbitListener(queues = "#{'direct.eartagCount.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
     public void updateEartagOnline(JSONObject dataJo){
         log.info("开始更新耳标在线统计------>"+dataJo);
@@ -261,7 +267,8 @@ public class EartagListener {
 
     }
 
-    @RabbitListener(queues = Const.QUEUE_EARTAG_DEVICE_ONLINE)
+//    @RabbitListener(queues = Const.QUEUE_EARTAG_DEVICE_ONLINE)
+    @RabbitListener(queues = "#{'direct.updateEartagDeviceOnlineCount.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
     public void updateEartagDeviceOnlineCount(JSONObject dataJo)   {
         log.info("更新耳标设备在线关联统计------>"+dataJo);
@@ -270,7 +277,8 @@ public class EartagListener {
     }
 
 
-    @RabbitListener(queues = Const.QUEUE_EARTAG_LIVE)
+//    @RabbitListener(queues = Const.QUEUE_EARTAG_LIVE)
+    @RabbitListener(queues = "#{'direct.eartagLiveStatus.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
     public void updateEartagLiveStatus(JSONObject dataJo)   {
         log.info("更新耳标连线状态------>"+dataJo);
@@ -280,27 +288,22 @@ public class EartagListener {
 
 
 
-    @RabbitListener(queues = Const.QUEUE_ABNORMAL)
+//    @RabbitListener(queues = Const.QUEUE_ABNORMAL)
+    @RabbitListener(queues = "#{'direct.abnormalCountAndAlarm.queue' + ${rabbitmq.queues}}")
     @RabbitHandler
-    public void abnormalCountAndAlarm(JSONObject dataJo) throws ParseException {
+    public  void abnormalCountAndAlarm(JSONObject dataJo) throws ParseException {
         log.info("异常统计和异常报警------>"+dataJo);
         eartagService.abnormalCountAndAlarm(dataJo);
 
     }
 
-    @RabbitListener(queues = Const.QUEUE_AllSTATUS)
-    @RabbitHandler
-    public void updateEartagPropertyOfAllStatus(JSONObject dataJo) throws ParseException {
-        log.info("判断该设备编号是否存在牧场缓存在线集合当中------>"+dataJo);
-        eartagService.updateEartagPropertyOfAllStatus(dataJo);
-    }
-
-
-
-
-
-
-
+//    @RabbitListener(queues = Const.QUEUE_AllSTATUS)
+//    @RabbitListener(queues = "#{'direct.updateEartagPropertyOfAllStatus.queue' + ${rabbitmq.queues}}")
+//    @RabbitHandler
+//    public void updateEartagPropertyOfAllStatus(JSONObject dataJo) throws ParseException {
+//        log.info("判断该设备编号是否存在牧场缓存在线集合当中------>"+dataJo);
+//        eartagService.updateEartagPropertyOfAllStatus(dataJo);
+//    }
 
 
 

+ 22 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/mapper/SysBaseConfigMapper.java

@@ -0,0 +1,22 @@
+package com.huimv.eartag2.eartag.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.eartag2.eartag.pojo.SysBaseConfig;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-19
+ */
+
+@Component
+public interface SysBaseConfigMapper extends BaseMapper<SysBaseConfig> {
+
+}

+ 40 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/pojo/SysBaseConfig.java

@@ -0,0 +1,40 @@
+package com.huimv.eartag2.eartag.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysBaseConfig implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+     private Integer id;
+
+    @TableLogic
+    private  byte isDeleted;
+
+    private String configName;
+
+    private String configKey;
+
+    private String configValue;
+
+    private String rowId;
+
+
+}

+ 17 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/SysBaseConfigService.java

@@ -0,0 +1,17 @@
+package com.huimv.eartag2.eartag.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.eartag2.eartag.pojo.SysBaseConfig;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-19
+ */
+public interface SysBaseConfigService extends IService<SysBaseConfig> {
+
+}

+ 5 - 11
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/CacheServiceImpl.java

@@ -124,32 +124,31 @@ public class CacheServiceImpl implements ICacheService {
 
     @Override
     public Boolean isExistTodayFarmAllStatus(String deviceCode) throws ParseException {
-        System.out.println("isExistTodayFarmAllStatus 2.deviceCode>>"+deviceCode);
+//        System.out.println("isExistTodayFarmAllStatus 2.deviceCode>>"+deviceCode);
 
         //(1)从注册表缓存中(device_register_牧场id)取出牧场id,(2)如果缓存没有则从注册表(eartag_device_register)中查询00
         //(1)
         Object farmIdObj = redisTemplate.opsForHash().get(BizConst.DEVICE_REGISTER_PREFIX + deviceCode,"farmId");
-        System.out.println("2.farmIdObj>>"+farmIdObj);
+//        System.out.println("2.farmIdObj>>"+farmIdObj);
         String farmId = "";
         if(farmIdObj != null){
             farmId = farmIdObj.toString();
         }else{
             //(2)
             EartagDeviceRegisterEntity eartagDeviceRegisterEntity = eartagDeviceRegisterRepo.getDeviceRegister(deviceCode);
-            System.out.println("2.eartagDeviceRegisterEntity>>"+eartagDeviceRegisterEntity.toString());
+//            System.out.println("2.eartagDeviceRegisterEntity>>"+eartagDeviceRegisterEntity.toString());
             if(eartagDeviceRegisterEntity == null){
                 log.error("设备编号:"+deviceCode+",不存在.");
                 return null;
             }
             farmId = eartagDeviceRegisterEntity.getFarmId();
         }
-        System.out.println("2.farmId>>"+farmId);
+//        System.out.println("2.farmId>>"+farmId);
         //从牧场总状态缓存中获取最近一次日期
         Object createDateObj = redisTemplate.opsForHash().get(BizConst.FARM_ALL_STATUS_PREFIX + farmId,"createDate");
-        System.out.println("2.createDateObj>>"+createDateObj);
+//        System.out.println("2.createDateObj>>"+createDateObj);
         if(createDateObj == null){
             //--总状态记录记录不存在
-            System.out.println("A.");
             return false;
         }else{
             //
@@ -157,11 +156,9 @@ public class CacheServiceImpl implements ICacheService {
             System.out.println("缓存中上次操作日期 createDate>>"+createDate);
             if(new DateUtil().getTodayDateText().trim().equalsIgnoreCase(createDate)){
                 //--当天记录存在,就返回true;
-                System.out.println("B.");
                 return true;
             }else{
                 //--当天记录不存在,就返回false;
-                System.out.println("C.");
                 return false;
             }
         }
@@ -246,7 +243,6 @@ public class CacheServiceImpl implements ICacheService {
      */
     @Override
     public void putDeviceToOnline(String farmId, String deviceCode, String todayDateText) {
-        System.out.println("## 心跳 2.4");
         String setKey = BizConst.SET_FARM_DEVICE_ONLINE_PREFIX + farmId+":"+todayDateText;
         redisTemplate.opsForSet().add(setKey, deviceCode);
         redisTemplate.expire(setKey,eartagOnlineSetExpire , TimeUnit.HOURS);
@@ -306,9 +302,7 @@ public class CacheServiceImpl implements ICacheService {
      */
     @Override
     public boolean isExistEartagOnlineSet(String farmId, String earmark, String todayDateText) {
-//        redisTemplate.opsForSet().add(BizConst.SET_FARM_DEVICE_ONLINE_PREFIX + farmId+"_"+todayDateText, earmark);
         String setKey = BizConst.SET_FARM_EARMARK_ONLINE_PREFIX + farmId+":"+todayDateText;
-//        System.out.println("## eartag.setKey .isExistEartagOnlineSet >>"+setKey+",earmark>>"+earmark);
         return redisTemplate.opsForSet().isMember(setKey, earmark);
     }
 

+ 2 - 2
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/DeviceServiceImpl.java

@@ -102,12 +102,12 @@ public class DeviceServiceImpl implements IDeviceService {
     public String getFarmIdByDeviceCode(String deviceCode) {
         //
         String farmId = (String)cacheService.getFarmIdByDeviceCode(deviceCode);
-        System.out.println("####### farmId=" + farmId);
+//        System.out.println("####### farmId=" + farmId);
         if(farmId != null && farmId.trim().length()>0){
             return farmId;
         }else{
             EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getDeviceRegister(deviceCode);
-            System.out.println("####### deviceRegisterEntity=" + deviceRegisterEntity);
+//            System.out.println("####### deviceRegisterEntity=" + deviceRegisterEntity);
             //{将设备注册信息保存到缓存中}
             cacheService.putDeviceRegister(deviceCode,deviceRegisterEntity);
             return deviceRegisterEntity.getFarmId();

+ 89 - 61
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -2,13 +2,16 @@ package com.huimv.eartag2.eartag.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.eartag2.common.dao.entity.*;
 import com.huimv.eartag2.common.dao.repo.*;
 import com.huimv.eartag2.common.service.IBaseConfigService;
 import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.common.utils.DateUtil;
 import com.huimv.eartag2.eartag.mapper.EartagData2Mapper;
+import com.huimv.eartag2.eartag.mapper.SysBaseConfigMapper;
 import com.huimv.eartag2.eartag.pojo.EartagData;
+import com.huimv.eartag2.eartag.pojo.SysBaseConfig;
 import com.huimv.eartag2.eartag.service.ICacheService;
 import com.huimv.eartag2.eartag.service.IDeviceService;
 import com.huimv.eartag2.eartag.service.IEartagService;
@@ -100,6 +103,8 @@ public class EartagServiceImpl implements IEartagService {
     private BaseFarmRepo baseFarmRepo;
     @Autowired
     private RestTemplate restTemplate;
+    @Autowired
+    private SysBaseConfigMapper sysBaseConfigMapper;
 
     @Override
     public void handleEartag(JSONObject dataJo) throws ParseException {
@@ -119,7 +124,7 @@ public class EartagServiceImpl implements IEartagService {
         //--设备和耳标总状态表
         //获取牧场id
         String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
-        System.out.println("####### farmId=" + farmId);
+//        System.out.println("####### farmId=" + farmId);
         if (farmId != null) {
             //{计算小时运动量}
 //            countHourAct(dataJo);
@@ -416,20 +421,34 @@ public class EartagServiceImpl implements IEartagService {
     private void handleEartempAlarmAndCount(JSONObject dataJo, java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
         String earmark = dataJo.getString("earmark");
         System.out.println("farmCode================" + farmCode);
-        // {获取异常耳标阈值最大值或最小值}
-//        Map maxAndMinMap = getMaxAndMinEartemp(farmCode);
-        Map maxAndMinMap = getMaxAndMin2(farmCode, "eartagMaxTem", "eartagMinTem");
-        System.out.println("maxAndMinMap>>>>>>>>>>>>>>>>>>>>>>>>>>>" + maxAndMinMap.toString());
-        if (!(maxAndMinMap.get("eartagMaxTem") instanceof Integer)) {
-            return;
-        }
-        if (!(maxAndMinMap.get("eartagMinTem") instanceof Integer)) {
-            return;
+        String eartagMaxTem = null,eartagMinTem = null;
+
+        String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmCode;
+        Object maxTem = redisTemplate.opsForHash().get(hashKey, "eartagMaxTem");
+        Object minTem = redisTemplate.opsForHash().get(hashKey, "eartagMinTem");
+        
+        if (ObjectUtil.isEmpty(maxTem) || ObjectUtil.isEmpty(minTem)){
+            SysBaseConfig baseConfig = sysBaseConfigMapper.selectOne(new QueryWrapper<SysBaseConfig>().lambda()
+                    .eq(SysBaseConfig::getConfigKey, "farmCode")
+                    .eq(SysBaseConfig::getConfigValue, farmCode));
+            if (ObjectUtil.isNotEmpty(baseConfig)){
+                eartagMaxTem = sysBaseConfigMapper.selectOne(new QueryWrapper<SysBaseConfig>()
+                        .lambda().eq(SysBaseConfig::getRowId, baseConfig.getRowId())
+                        .eq(SysBaseConfig::getConfigKey, "eartagMaxTem")).getConfigValue();
+                eartagMinTem = sysBaseConfigMapper.selectOne(new QueryWrapper<SysBaseConfig>()
+                        .lambda().eq(SysBaseConfig::getRowId, baseConfig.getRowId())
+                        .eq(SysBaseConfig::getConfigKey, "eartagMinTem")).getConfigValue();
+                redisTemplate.opsForHash().put(hashKey,"eartagMaxTem",eartagMaxTem);
+                redisTemplate.opsForHash().put(hashKey,"eartagMinTem",eartagMinTem);
+            }
+        }else {
+            eartagMaxTem = maxTem.toString();
+            eartagMinTem = minTem.toString();
         }
-        System.out.println(ObjectUtil.isEmpty(maxAndMinMap.get("eartagMaxTem")));
-        System.out.println(ObjectUtil.isEmpty(maxAndMinMap.get("eartagMinTem")));
-        BigDecimal configMaxTempBd = new BigDecimal(maxAndMinMap.get("eartagMaxTem").toString());
-        BigDecimal configMinTempBd = new BigDecimal(maxAndMinMap.get("eartagMinTem").toString());
+        System.out.println(eartagMaxTem);
+        System.out.println(eartagMinTem);
+        BigDecimal configMaxTempBd = new BigDecimal(eartagMaxTem);
+        BigDecimal configMinTempBd = new BigDecimal(eartagMinTem);
         BigDecimal earTemp1Bd = new BigDecimal(dataJo.getString("earTemp1"));
         if (earTemp1Bd.compareTo(configMaxTempBd) >= 0) {
             // 保存耳标高温报警
@@ -466,6 +485,8 @@ public class EartagServiceImpl implements IEartagService {
             //低温次数记录
             saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
         }
+
+
     }
 
     // 保存异常耳标温度计数
@@ -597,10 +618,7 @@ public class EartagServiceImpl implements IEartagService {
 //        } else {
         // 从属性配置表取值
         String configMinTem = getConfigValue(farmCode, minKeyName);
-//        System.out.println("配置属性 configMinTem=" + configMinTem);
         if (configMinTem == null) {
-//            configMinTem = defaultMinTemp;
-//            System.out.println("默认属性 defaultMinTemp=" + defaultMinTemp);
             log.error("属性配置:" + minKeyName + "未配置,请联系管理员进行配置.");
         }
         configMap.put(minKeyName, configMinTem);
@@ -650,30 +668,29 @@ public class EartagServiceImpl implements IEartagService {
         }
         String earmark = eartagJo.getString("earmark");
         Long act = Long.parseLong(eartagJo.getString("act"));
-        System.out.println("本次运动量=" + act);
+        Long act1 = Long.parseLong(eartagJo.getString("act1"));
+//        System.out.println("本次运动量=" + act);
         System.out.println("earmark=" + earmark);
         System.out.println("farmId=" + farmId);
         //
 //        Optional<EartagData2Entity> optionEartagData = eartagData2Repo.getLastByEarmark(earmark, farmId);
         //TODO
-        Optional<EartagData2Entity> optionEartagData = eartagData2Repo.getLastByEarmark(earmark, farmId);
-        System.out.println("optionEartagData.isPresent=" + optionEartagData.isPresent());
-        if (optionEartagData.isPresent()) {
+        EartagData eartagData = eartagData2Mapper.selectOne(new QueryWrapper<EartagData>().lambda()
+                .eq(EartagData::getFarmId, farmId)
+                .eq(EartagData::getEarmark, earmark)
+                .orderByDesc(EartagData::getAddTime)
+                .last("LIMIT 1"));
+        if (ObjectUtil.isNotEmpty(eartagData)) {
             // 上一次耳标运动量
-            EartagData2Entity eartagData2Entity = optionEartagData.get();
-            int lastId = eartagData2Entity.getId();
-            Long lastAct = eartagData2Entity.getAct();
+            int lastId = eartagData.getId();
+            Long lastAct = Long.valueOf(eartagData.getAct());
             System.out.println("上次运动量=" + lastAct);
-            Timestamp lastAddTime = eartagData2Entity.getAddTime();
+            Timestamp lastAddTime = new Timestamp(eartagData.getAddTime().getTime());
             long timeDiff = nowTimestamp.getTime() - lastAddTime.getTime();
             if (timeDiff / (1000 * 60 * 60) < eartagOfflineTime) {
-                long act1 = 0;
                 boolean resetStatus = false;
                 if (act < lastAct) {
-                    act1 = act;
                     resetStatus = true;
-                } else {
-                    act1 = act - lastAct;
                 }
                 System.out.println("本次运动量增量=" + act1);
                 //{保存耳标小时运动量}
@@ -754,7 +771,8 @@ public class EartagServiceImpl implements IEartagService {
     private void saveEartagHourAct(String farmId, String earmark, long act1, int nowHour, java.sql.Date todayDate) {
         Optional<EartagHourActEntity> optionalHourAct = eartagHourActEntityRepo.findByFarmIdAndEarmarkAndHourAndDate(farmId, earmark, nowHour, todayDate);
         Optional<EartagHourActEntity> optionalHourAct2 = eartagHourActEntityRepo.findByEarmarkOrderById( earmark,todayDate);
-//        long act = 0;
+        System.out.println(optionalHourAct);
+        System.out.println(optionalHourAct2);
         if (!optionalHourAct.isPresent()) {
             EartagHourActEntity newEartagHourActEntity = new EartagHourActEntity();
             newEartagHourActEntity.setIsShow(0);
@@ -771,11 +789,13 @@ public class EartagServiceImpl implements IEartagService {
             newEartagHourActEntity.setAddDate(todayDate);
             newEartagHourActEntity.setHour(nowHour);
             newEartagHourActEntity.setAct(act1);
+            System.out.println("newEartagHourActEntity---->"+ newEartagHourActEntity);
             eartagHourActEntityRepo.save(newEartagHourActEntity);
 //            act = act1;
         } else {
             EartagHourActEntity eartagHourActEntity = optionalHourAct.get();
             eartagHourActEntity.setAct(eartagHourActEntity.getAct() + act1);
+            System.out.println("eartagHourActEntity---->"+ eartagHourActEntity);
             eartagHourActEntityRepo.save(eartagHourActEntity);
 //            act = eartagHourActEntity.getAct() + act1;
         }
@@ -1017,7 +1037,7 @@ public class EartagServiceImpl implements IEartagService {
 
         System.out.println("deviceCode>>" + deviceCode);
         EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getDeviceRegister(deviceCode);
-        System.out.println("deviceRegisterEntity>>" + deviceRegisterEntity);
+//        System.out.println("deviceRegisterEntity>>" + deviceRegisterEntity);
         if (deviceRegisterEntity == null) {
             log.error("(updateDeviceRegister).deviceRegisterEntity=null <-- deviceCode>>" + deviceCode);
             return;
@@ -1187,36 +1207,7 @@ public class EartagServiceImpl implements IEartagService {
         return Integer.parseInt(eartagRegObj[0].toString());
     }
 
-    //状态更新
-    public void updateEartagOfAllStatus(String earmark, String deviceCode, String todayDateText, String farmId) {
-        //# 判断设备和耳标总状态表是否存在
-        //      存在:更新在线耳标数量;
-        //      不存在:创建状态
-        EartarFarmAllStatusEntity farmAllStatusEntity = farmAllStatusRepo.getOneByFarmIdAndCreateDate(farmId, todayDateText);
-        if (farmAllStatusEntity == null) {
-            //#获取耳标注册数量#
-            int eartagTotal = getEartagRegTotalByFarmId_1(farmId);
-            //#总状态记录不存在;
-            EartarFarmAllStatusEntity newFarmAllStatusEntity = new EartarFarmAllStatusEntity();
-            newFarmAllStatusEntity.setEartagTotal(eartagTotal);
-            newFarmAllStatusEntity.setEartagOnline(1);
-            farmAllStatusRepo.saveAndFlush(newFarmAllStatusEntity);
-        } else {
-            //#存在;
-            int total = farmAllStatusEntity.getEartagOnline();
-            farmAllStatusEntity.setEartagOnline(++total);
-            farmAllStatusRepo.saveAndFlush(farmAllStatusEntity);
-        }
-    }
 
-    //获取耳标注册数量
-    public Integer getEartagRegTotalByFarmId_1(String farmId) {
-        int eartagTotal = 0;
-        List<Object[]> eartagRegList = eartagRegisterRepo.getEartagCountByFarmId(farmId);
-        Object[] eartagRegObj = (Object[]) eartagRegList.get(0);
-        //处于工作状态的耳标总数
-        return Integer.parseInt(eartagRegObj[0].toString());
-    }
 
     //更新耳标在线数据
     @Override
@@ -1321,7 +1312,6 @@ public class EartagServiceImpl implements IEartagService {
         EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getByDeviceCode(deviceCode);
         Integer unitId = deviceRegisterEntity.getUnitId();
         Integer pigpenId = deviceRegisterEntity.getPigpenId();
-        Map pigpenMap = new HashMap();
         List<BasePigpenEntity> basePigpenEntityList = basePigpenRepo.getPigpenByPigpenIdAndUnitId(pigpenId, unitId);
         if (basePigpenEntityList.size() == 0) {
             log.error("栋舍不存在[" + pigpenId + "," + unitId + "].");
@@ -1376,8 +1366,45 @@ public class EartagServiceImpl implements IEartagService {
             eartagRegisterEntity.setPigpenName(pigpenName);
             eartagRegisterRepo.saveAndFlush(eartagRegisterEntity);
             //更新耳标注册消息缓存
+        }
+
+        EartagEartagRegister2Entity eartagRegister2Entity = eartagEartagRegister2EntityRepo.getOneByEarmark2(earmark);
+
+        System.out.println("earmark--> " + earmark);
+        if (eartagRegister2Entity == null) {
+            //{新建耳标注册信息}
+            newEartagRegister2(earmark, nowTimestamp, deviceCode, registerType, activeStatus, liveStatus, bat, todayDate, farmId, dataJo, stageCode, stageName, pigpenId, pigpenName, unitId, unitName, deviceRegisterEntity);
+        } else {
+            eartagRegister2Entity.setLastTime(nowTimestamp);
+            eartagRegister2Entity.setLastDevice(deviceCode);
+            eartagRegister2Entity.setActiveStatus(activeStatus);
+            eartagRegister2Entity.setActiveTime(nowTimestamp);
+            eartagRegister2Entity.setBat(Integer.parseInt(bat));
+            eartagRegister2Entity.setUnitId(deviceRegisterEntity.getUnitId());
+            eartagRegister2Entity.setUnitName(unitName);
+            eartagRegister2Entity.setPigpenId(deviceRegisterEntity.getPigpenId());
+            eartagRegister2Entity.setPigpenName(pigpenName);
+            eartagRegister2Entity.setStageCode(stageCode);
+            eartagRegister2Entity.setStageName(stageName);
+            eartagRegister2Entity.setEarTemp2(dataJo.getFloat("earTemp2"));
+            eartagRegister2Entity.setEarTemp1(dataJo.getFloat("earTemp1"));
+            eartagRegister2Entity.setEnvTemp1(dataJo.getFloat("envTemp1"));
+            //相对运动量
+            eartagRegister2Entity.setAct(Long.parseLong(dataJo.getString("act1")));
+            eartagRegister2Entity.setSignal1(Integer.parseInt(dataJo.getString("signal")));
+            eartagRegister2Entity.setAskTime(getAskTime(dataJo.getString("askTime")));
+            eartagRegister2Entity.setOther(dataJo.getString("other"));
+            eartagRegister2Entity.setFarmId(farmId);
+            eartagRegister2Entity.setLiveStatus(1);
+            //绝对运动量
+            eartagRegister2Entity.setActRange(new Long(Long.parseLong(dataJo.getString("act"))).intValue());
+            System.out.println("开始更新--> " + eartagRegisterEntity);
+            eartagEartagRegister2EntityRepo.saveAndFlush(eartagRegister2Entity);
+            //更新耳标注册消息缓存
             cacheService.putEartagRegister(earmark, eartagRegisterEntity);
+
         }
+
     }
 
     /**
@@ -1542,6 +1569,7 @@ public class EartagServiceImpl implements IEartagService {
         //{更新耳标注册消息缓存}
         cacheService.putEartagRegister(earmark, newEartagRegisterEntity);
         //{更新耳标数量}
+
         cacheService.putEartagTotal(getEartagSum(farmId, liveStatus), farmId);
     }
 

+ 21 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/SysBaseConfigServiceImpl.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.eartag.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.eartag.mapper.SysBaseConfigMapper;
+import com.huimv.eartag2.eartag.pojo.SysBaseConfig;
+import com.huimv.eartag2.eartag.service.SysBaseConfigService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-19
+ */
+@Service
+public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, SysBaseConfig> implements SysBaseConfigService {
+
+}

+ 15 - 2
huimv-eartag2-eartag/src/test/java/com/huimv/eartag2/eartag/service/ServiceTest.java

@@ -3,7 +3,7 @@ package com.huimv.eartag2.eartag.service;
 import com.huimv.eartag2.common.service.IBaseConfigService;
 import com.huimv.eartag2.common.service.impl.BaseConfigServiceImpl;
 import com.huimv.eartag2.common.utils.BizConst;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -29,7 +29,20 @@ public class ServiceTest {
     @Autowired
     private IBaseConfigService iBaseConfigService;
     @Autowired
-    private RedisTemplate redisTemplate;
+    public RedisTemplate redisTemplate;
+
+
+    @Test
+    public  void test4 (){
+        String hashKey = "hash:tempAlarm:farmCode:110101002";
+//        redisTemplate.opsForHash().delete(hashKey);
+        redisTemplate.opsForHash().put(hashKey,"eartagMaxTem","30");
+        redisTemplate.opsForHash().put(hashKey,"eartagMinTem","20");
+
+        System.out.println(  redisTemplate.opsForHash().get(hashKey,"eartagMaxTem"));
+        System.out.println(  redisTemplate.opsForHash().get(hashKey,"eartagMinTem"));
+
+    }
 
     @Test
     public void test_1(){

+ 2 - 3
huimv-eartag2-input/src/main/java/com/huimv/eartag2/HuimvEartag2InputApplication.java

@@ -2,6 +2,7 @@ package com.huimv.eartag2;
 
 import com.huimv.eartag2.server.EartagServer;
 import com.huimv.eartag2.server.EartagServer2;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.amqp.rabbit.annotation.EnableRabbit;
 import org.springframework.amqp.rabbit.connection.ConnectionFactory;
 import org.springframework.amqp.rabbit.core.RabbitAdmin;
@@ -20,12 +21,10 @@ import org.springframework.context.annotation.Bean;
  **/
 @SpringBootApplication
 @EnableRabbit
+@MapperScan(basePackages = "com.huimv.eartag2.mapper")
 public class HuimvEartag2InputApplication {
     public static void main(String[] args) throws InterruptedException {
-//        SpringApplication.run(HuimvEartagApplication.class, args);
         ApplicationContext applicationContext = SpringApplication.run(HuimvEartag2InputApplication.class, args);
-        //EartagServer
-//        applicationContext.getBean(EartagServer.class).start();
         //EartagServer2
         applicationContext.getBean(EartagServer2.class).run();
     }

+ 4 - 3
huimv-eartag2-input/src/main/java/com/huimv/eartag2/config/RabbitMQInitializer.java

@@ -27,7 +27,7 @@ public class RabbitMQInitializer implements ApplicationRunner {
     private Integer queues;
 
     @Override  
-    public void run(ApplicationArguments args) throws Exception {
+    public void run(ApplicationArguments args)   {
         // 声明交换机
         // 创建交换机
         rabbitMQService.createExchange(Const.EXCHANGE_ASK_EARTAG);
@@ -37,8 +37,9 @@ public class RabbitMQInitializer implements ApplicationRunner {
             rabbitMQService.createQueue(Const.QUEUE_ASK_EARTAG+integer);
             // 创建绑定
             rabbitMQService.createBinding(Const.QUEUE_ASK_EARTAG+integer, Const.EXCHANGE_ASK_EARTAG,Const.ROUTING_KEY_ASK_EARTAG+integer  );
-
         }
+    }
+
+
 
-    }  
 }

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/AbnormalCountAndAlarmRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class AbnormalCountAndAlarmRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_ABNORMAL);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_ABNORMAL+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_ABNORMAL+integer, Const.EXCHANGE_ABNORMAL,Const.ROUTING_KEY_ABNORMAL+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/CountActHourRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class CountActHourRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_COUNT_ACT_HOUR);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_COUNT_ACT_HOUR+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_COUNT_ACT_HOUR+integer, Const.EXCHANGE_COUNT_ACT_HOUR,Const.ROUTING_KEY_COUNT_ACT_HOUR+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/DeviceCountRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class DeviceCountRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_DEVICE_COUNT);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_DEVICE_COUNT+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_DEVICE_COUNT+integer, Const.EXCHANGE_DEVICE_COUNT,Const.ROUTING_KEY_DEVICE_COUNT+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/DeviceRegistMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class DeviceRegistMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_DEVICE_REGIST);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_DEVICE_REGIST+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_DEVICE_REGIST+integer, Const.EXCHANGE_DEVICE_REGIST,Const.ROUTING_KEY_DEVICE_REGIST+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/EartagCountRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class EartagCountRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_EARTAG_COUNT);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_EARTAG_COUNT+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_EARTAG_COUNT+integer, Const.EXCHANGE_EARTAG_COUNT,Const.ROUTING_KEY_EARTAG_COUNT+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/EartagLiveStatusRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class EartagLiveStatusRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_EARTAG_LIVE);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_EARTAG_LIVE+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_EARTAG_LIVE+integer, Const.EXCHANGE_EARTAG_LIVE,Const.ROUTING_KEY_EARTAG_LIVE+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/EartagRegistRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class EartagRegistRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_EARTAG_REGIST);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_EARTAG_REGIST+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_EARTAG_REGIST+integer, Const.EXCHANGE_EARTAG_REGIST,Const.ROUTING_KEY_EARTAG_REGIST+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/UpdateEartagDeviceOnlineCountRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class UpdateEartagDeviceOnlineCountRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_EARTAG_DEVICE_ONLINE);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_EARTAG_DEVICE_ONLINE+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_EARTAG_DEVICE_ONLINE+integer, Const.EXCHANGE_EARTAG_DEVICE_ONLINE,Const.ROUTING_KEY_EARTAG_DEVICE_ONLINE+integer  );
+        }
+    }
+
+
+
+}

+ 36 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/controller/UpdateEartagPropertyOfAllStatusRabbitMQInitializer.java

@@ -0,0 +1,36 @@
+package com.huimv.eartag2.controller;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.service.RabbitMQService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component  
+public class UpdateEartagPropertyOfAllStatusRabbitMQInitializer implements ApplicationRunner {
+
+    @Autowired
+    private RabbitMQService rabbitMQService;
+
+    @Value("${rabbitmq.queues}")
+    private Integer queues;
+
+    @Override  
+    public void run(ApplicationArguments args)   {
+        // 声明交换机
+        // 创建交换机
+        rabbitMQService.createExchange(Const.EXCHANGE_AllSTATUS);
+        //
+        for (Integer integer = 0; integer < queues; integer++) {
+            // 声明队列
+            rabbitMQService.createQueue(Const.QUEUE_AllSTATUS+integer);
+            // 创建绑定
+            rabbitMQService.createBinding(Const.QUEUE_AllSTATUS+integer, Const.EXCHANGE_AllSTATUS,Const.ROUTING_KEY_AllSTATUS+integer  );
+        }
+    }
+
+
+
+}

+ 17 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/mapper/EartagData2Mapper.java

@@ -0,0 +1,17 @@
+package com.huimv.eartag2.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.eartag2.pojo.EartagData;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-07-29
+ */
+public interface EartagData2Mapper extends BaseMapper<EartagData> {
+
+}

+ 9 - 12
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartagData2.java

@@ -1,19 +1,16 @@
-package com.huimv.eartag2.manage2.pojo;
+package com.huimv.eartag2.pojo;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
-
 import com.baomidou.mybatisplus.annotation.TableId;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 
@@ -25,8 +22,8 @@ import lombok.experimental.Accessors;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@TableName("eartag_data2")
-public class EartagData2 implements Serializable {
+//@TableName("eartag_data")
+public class EartagData implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -53,9 +50,9 @@ public class EartagData2 implements Serializable {
 
     private Float envTemp1;
 
-    private Long act;
+    private Integer act;
 
-    private Long act1;
+    private Integer act1;
 
     private Integer signal1;
 

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

@@ -1,5 +1,7 @@
 package com.huimv.eartag2.service;
 
+import com.huimv.eartag2.common.dao.entity.EartagDeviceRegisterEntity;
+
 public interface ICacheService {
     //{}
     Object getDeviceCodeByChipId(String chipId);
@@ -10,4 +12,8 @@ public interface ICacheService {
     boolean checkEffectiveDeviceSet(String idCode);
 
     long putEffectiveDeviceSet(String idCode);
+
+    Object getFarmIdByDeviceCode(String deviceCode);
+
+    void putDeviceRegister(String deviceCode, EartagDeviceRegisterEntity deviceRegisterEntity);
 }

+ 2 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IDeviceService.java

@@ -19,4 +19,6 @@ public interface IDeviceService {
 
     //{根据芯片id读取设备编码}
     String getDeviceCodeByChipId(String chipId);
+
+    String getFarmIdByDeviceCode(String deviceCode);
 }

+ 17 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IEartagData2Service.java

@@ -0,0 +1,17 @@
+package com.huimv.eartag2.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.eartag2.pojo.EartagData;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2022-07-29
+ */
+public interface IEartagData2Service extends IService<EartagData> {
+
+}

+ 1 - 1
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/IEartagService.java

@@ -4,5 +4,5 @@ public interface IEartagService {
     //处理耳标信息
     void handleEartagInfo();
 
-    Integer countAct(String deviceCode, String nowAct);
+    Integer countAct(String deviceCode, String nowAct,String farmId);
 }

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

@@ -1,11 +1,14 @@
 package com.huimv.eartag2.service.impl;
 
+import com.huimv.eartag2.common.dao.entity.EartagDeviceRegisterEntity;
 import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.service.ICacheService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -44,4 +47,39 @@ public class CacheServiceImpl implements ICacheService {
         String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
         return redisTemplate.opsForSet().add(setKey,idCode);
     }
+
+    @Override
+    public Object getFarmIdByDeviceCode(String deviceCode) {
+        Object farmIdObj = redisTemplate.opsForHash().get(BizConst.DEVICE_REGISTER_PREFIX + deviceCode,"farmId");
+        return farmIdObj;
+    }
+    @Override
+    public void putDeviceRegister(String deviceCode, EartagDeviceRegisterEntity deviceRegisterEntity) {
+        //--更新redis中注册表数据
+        String deviceRegHashKey = BizConst.DEVICE_REGISTER_PREFIX + deviceCode;
+        //将Entity转为Map
+        Map registerMap = RegisterEntityToMap(deviceRegisterEntity);
+        redisTemplate.opsForHash().putAll(deviceRegHashKey, registerMap);
+    }
+    private Map RegisterEntityToMap(EartagDeviceRegisterEntity deviceRegisterEntity) {
+        Map map = new HashMap();
+        map.put("Id", deviceRegisterEntity.getId());
+        map.put("deviceCode", deviceRegisterEntity.getDeviceCode());
+        map.put("farmId", deviceRegisterEntity.getFarmId());
+        map.put("farmName", deviceRegisterEntity.getFarmName());
+        map.put("typeF", deviceRegisterEntity.getTypeF());
+        map.put("stage", deviceRegisterEntity.getStage());
+        map.put("pigpenId", deviceRegisterEntity.getPigpenId());
+        map.put("unitId", deviceRegisterEntity.getUnitId());
+        map.put("registerTime", deviceRegisterEntity.getRegisterTime());
+        map.put("lastTime", deviceRegisterEntity.getLastTime());
+        map.put("activeStatus", deviceRegisterEntity.getActiveStatus());
+        map.put("activeTime", deviceRegisterEntity.getActiveTime());
+        map.put("deviceStatus", deviceRegisterEntity.getDeviceStatus());
+        map.put("deviceAlias", deviceRegisterEntity.getDeviceAlias());
+        map.put("location", deviceRegisterEntity.getLocation());
+        map.put("remark", deviceRegisterEntity.getRemark());
+        return map;
+    }
+
 }

+ 132 - 21
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java

@@ -1,5 +1,6 @@
 package com.huimv.eartag2.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 
 import com.huimv.eartag2.common.dao.entity.*;
@@ -7,6 +8,7 @@ import com.huimv.eartag2.common.dao.repo.*;
 import com.huimv.eartag2.common.mq.Const;
 import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.common.utils.FileUtil;
+import com.huimv.eartag2.common.utils.MathUtil;
 import com.huimv.eartag2.producer.Producer;
 //import com.huimv.eartag2.server.MsgSendConfirmCallBack;
 import com.huimv.eartag2.service.ICacheService;
@@ -66,12 +68,6 @@ public class DataServiceImpl implements IDataService {
     private IEartagService eartagService;
     @Autowired
     private Producer producer;
-    @Autowired
-    private RegexUtil regexUtil;
-    @Autowired
-    private ICacheService cacheService;
-    @Autowired
-    private EartagDeviceRegisterRepo eartagDeviceRegisterRepo;
 
 
     //处理接收数据
@@ -296,23 +292,138 @@ public class DataServiceImpl implements IDataService {
     private Integer queues;
 
     @Override
-    public void sendEartagMQ(Map map,String eartag) throws IOException, ParseException {
-//        try {
-//            rabbitTemplate.setConfirmCallback(new MsgSendConfirmCallBack());
-//
-//            CorrelationData correlationData = new CorrelationData();
-//            log.info("开始发送消息");
-//            correlationData.setId("100");
-            //发送到耳标处理消息队列
-            //zj+330102002000003+13320241020004+87+0+10+154894+80+20240126174333+1.2#3.0#65535#10794+0+end
-        int i = Math.abs(eartag.hashCode()) % queues;
-        log.info("routinKey-->"+Const.ROUTING_KEY_ASK_EARTAG+i);
-        rabbitTemplate.convertAndSend(Const.EXCHANGE_ASK_EARTAG, Const.ROUTING_KEY_ASK_EARTAG+i, map);
-//        } catch (AmqpTimeoutException e) {
-//            log.error("met timeout exception: ", e);
-//        }
+    public   void sendEartagMQ(Map map,String eartag) throws IOException, ParseException {
+
+
+
+        String askText = map.get("askText").toString();
+
+        //{处理请求报文}
+        Map askMap = handleAskText(askText);
+        if (askMap == null){
+            return;
+        }
+        String type = askMap.get("type").toString();
+        JSONObject dataJo = (JSONObject) askMap.get("data");
+        if (type.trim().equalsIgnoreCase("eartag")) {
+            String deviceCode = dataJo.getString("device");
+            String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
+            System.out.println("####### farmId=" + farmId);
+
+            Integer act1Int = eartagService.countAct(dataJo.getString("earmark"), dataJo.getString("act"),farmId);
+            dataJo.put("act1", act1Int);
+
+            if (ObjectUtil.isEmpty(farmId)) {
+                log.error("出错:该请求的FarmId为空.请检查该设备编码[" + deviceCode + "]是否存在FarmId.");
+                return;
+            }
+            dataJo.put("farmId", farmId);
+
+            int i = Math.abs(eartag.hashCode()) % queues;
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_ASK_EARTAG, Const.ROUTING_KEY_ASK_EARTAG+i, dataJo);
+
+
+
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_COUNT_ACT_HOUR, Const.ROUTING_KEY_COUNT_ACT_HOUR+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_REGIST, Const.ROUTING_KEY_DEVICE_REGIST+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_REGIST, Const.ROUTING_KEY_EARTAG_REGIST+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_COUNT, Const.ROUTING_KEY_DEVICE_COUNT+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_COUNT, Const.ROUTING_KEY_EARTAG_COUNT+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_LIVE, Const.ROUTING_KEY_EARTAG_LIVE+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_EARTAG_DEVICE_ONLINE, Const.ROUTING_KEY_EARTAG_DEVICE_ONLINE+i, dataJo);
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_ABNORMAL, Const.ROUTING_KEY_ABNORMAL+i, dataJo);
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_AllSTATUS, Const.ROUTING_KEY_AllSTATUS+i, dataJo);
+        }
     }
 
+        private Map handleAskText(String askText) {
+            Map outMap = new HashMap();
+            JSONObject dataJo = new JSONObject();
+            String type = "";
+            String[] dataArray = askText.split("\\+");
+            String cmdHeader = dataArray[0];
+            if (cmdHeader.trim().equalsIgnoreCase("hm")) {
+                //采集器原始数据
+                String device = dataArray[1];
+                String cmd = dataArray[2];
+                if (cmd.trim().equalsIgnoreCase("0")) {
+                    //不需要处理
+                } else if (cmd.trim().equalsIgnoreCase("1")) {
+                    //获取设备编码
+                } else if (cmd.trim().equalsIgnoreCase("2")) {
+                    //获取服务器时间命令
+                } else if (cmd.trim().equalsIgnoreCase("3")) {
+                    //心跳包命令
+                    dataJo.put("device", device);
+                    type = "device-heartbeat";
+                } else if (cmd.trim().equalsIgnoreCase("4")) {
+                    //环境温度-设备、数值、上传时间
+                    dataJo.put("device", dataArray[1]);
+                    dataJo.put("temp", dataArray[4]);
+                    dataJo.put("askTime", dataArray[5]);
+                    type = "device-temp";
+                } else {
+                    log.error("##当前数据为非法数据>>" + askText);
+                }
+            } else if (cmdHeader.trim().equalsIgnoreCase("zj")) {
+//            String device = dataArray[1];
+                //-- 耳标数据 --//
+                //计算耳标温度
+                Double earTemp = 0D;
+                Double earTemp2 = 0D;
+                String other = dataArray[9];
+                if (other != null && other.trim().length() > 0) {
+                    String[] otherArray = other.split("#");
+                    String resi = otherArray[2];
+                    if (otherArray.length>3){
+                        String resi2 = otherArray[3];
+                        if (null != resi2 && !"0".equals(resi2)){
+                            //耳面温度
+                            Double temp2 = MathUtil.ln( Integer.parseInt(resi2));
+                            earTemp2 = new BigDecimal(temp2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+                        }
+                    }
+
+                    int resiInt = Integer.parseInt(resi);
+                    if (resiInt != 0) {
+                        Double temp = MathUtil.ln(resiInt);
+                        earTemp = new BigDecimal(temp).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+                    }
+
+                }
+                //计算运动量//
+
+                //命令头
+                dataJo.put("cmdHeader", dataArray[0]);
+                //采集器id
+                dataJo.put("device", dataArray[1]);
+                //耳标号
+                dataJo.put("earmark", dataArray[2]);
+                //电池电量
+                dataJo.put("bat", dataArray[3]);
+                //耳标温度
+                dataJo.put("earTemp", dataArray[4]);
+                dataJo.put("earTemp1", earTemp);
+                dataJo.put("earTemp2", earTemp2);
+                //环境温度
+                dataJo.put("envTemp", dataArray[5]);
+                dataJo.put("envTemp1", MathUtil.countEnvtemp(dataArray[5], 2));
+                //运动量
+                dataJo.put("act", dataArray[6]);
+
+                //信号强度
+                dataJo.put("signal", dataArray[7]);
+                //采集时间
+                dataJo.put("askTime", dataArray[8]);
+                //预留字段
+                dataJo.put("other", dataArray[9]);
+                type = "eartag";
+            }
+            outMap.put("type", type);
+            outMap.put("data", dataJo);
+            return outMap;
+        }
+
     public static void main(String[] args) {
         String eartag = "13320241020005";
         int i = eartag.hashCode();

+ 14 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DeviceServiceImpl.java

@@ -84,6 +84,20 @@ public class DeviceServiceImpl implements IDeviceService {
         }
     }
 
+    @Override
+    public String getFarmIdByDeviceCode(String deviceCode) {
+        //
+        String farmId = (String)cacheService.getFarmIdByDeviceCode(deviceCode);
+        if(farmId != null && farmId.trim().length()>0){
+            return farmId;
+        }else{
+            EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getDeviceRegister(deviceCode);
+            System.out.println("####### deviceRegisterEntity=" + deviceRegisterEntity);
+            //{将设备注册信息保存到缓存中}
+            cacheService.putDeviceRegister(deviceCode,deviceRegisterEntity);
+            return deviceRegisterEntity.getFarmId();
+        }
+    }
     //--处理状态数据
     private void handleEartagAllState() {
 

+ 21 - 0
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/EartagData2ServiceImpl.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.mapper.EartagData2Mapper;
+import com.huimv.eartag2.pojo.EartagData;
+import com.huimv.eartag2.service.IEartagData2Service;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2022-07-29
+ */
+@Service
+public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, EartagData> implements IEartagData2Service {
+
+
+}

+ 30 - 15
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/EartagServiceImpl.java

@@ -1,7 +1,11 @@
 package com.huimv.eartag2.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.eartag2.common.dao.entity.EartagDataEntity;
 import com.huimv.eartag2.common.dao.repo.EartagDataRepo;
+import com.huimv.eartag2.mapper.EartagData2Mapper;
+import com.huimv.eartag2.pojo.EartagData;
 import com.huimv.eartag2.service.IEartagService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -29,6 +33,8 @@ public class EartagServiceImpl implements IEartagService {
     private RedisTemplate redisTemplate;
     @Autowired
     private EartagDataRepo eartagDataRepo;
+    @Autowired
+    private EartagData2Mapper eartagData2Mapper;
 
     //处理耳标信息
     @Override
@@ -66,32 +72,41 @@ public class EartagServiceImpl implements IEartagService {
      * @Time : 15:25
      */
     @Override
-    public Integer countAct(String deviceCode, String nowAct) {
+    public Integer countAct(String earmark, String nowAct,String farmId) {
+
+//        EartagData eartagData = eartagData2Mapper.selectOne(new QueryWrapper<EartagData>().eq("farm_id", farmId).eq("earmark", earmark).orderByDesc("ask_time").last("limit 1"));
+//        Integer lastAct = 0;
+//        if (ObjectUtil.isNotEmpty(eartagData)){
+//            lastAct = eartagData.getAct();
+//        }
+//        int nowActInt = Integer.parseInt(nowAct);
+//        return  nowActInt < lastAct ?  nowActInt: nowActInt - lastAct;
+
+        int nowActInt = Integer.parseInt(nowAct);
         //读取hash
-        Object actObj = redisTemplate.opsForHash().get(deviceCode, "act");
+        Object actObj = redisTemplate.opsForHash().get(earmark, "act");
         if (actObj == null) {
             //--初始化最新的redis记录
-            initRedisObj(deviceCode);
-            Object lastAct = redisTemplate.opsForHash().get(deviceCode, "act");
+            initRedisObj(earmark, farmId);
+            Object lastAct = redisTemplate.opsForHash().get(earmark, "act");
             if (lastAct == null) {
                 log.error("#--- redis数据库有问题,请检查redis是否能正常连接 ---# ");
-                return 0;
+                return nowActInt;
             }
         }
-        Object lastAct = redisTemplate.opsForHash().get(deviceCode, "act");
-        Integer act1 = Integer.parseInt(nowAct) - Integer.parseInt(lastAct.toString());
-//        redisTemplate.opsForHash().put(deviceCode, "act1", act1);
-        if(act1<0){
-            return Integer.parseInt(nowAct);
-        }
-        return act1;
+        int lastAct = Integer.parseInt(redisTemplate.opsForHash().get(earmark, "act").toString());
+        redisTemplate.opsForHash().put(earmark, "act",nowAct);
+
+        return  nowActInt < lastAct ?  nowActInt: nowActInt - lastAct;
+
+
     }
 
     /**
      * 初始化redis最新记录
      */
-    private void initRedisObj(String deviceCode) {
-        EartagDataEntity lastEartagDataEntity = eartagDataRepo.getLastEartagData(deviceCode);
+    private void initRedisObj(String earmark,String farmId) {
+        EartagData lastEartagDataEntity = eartagData2Mapper.selectOne(new QueryWrapper<EartagData>().eq("farm_id", farmId).eq("earmark", earmark).orderByDesc("ask_time").orderByDesc("id").last("limit 1"));
         if (lastEartagDataEntity != null) {
             System.out.println("## lastEartagDataEntity.toString>>" + lastEartagDataEntity.toString());
             //--从数据库读取最新记录并覆盖redis
@@ -111,7 +126,7 @@ public class EartagServiceImpl implements IEartagService {
             map.put("other", lastEartagDataEntity.getOther());
             map.put("addTime", lastEartagDataEntity.getAddTime().toString());
             //为hash结构设置多个键值对(hmset)
-            redisTemplate.opsForHash().putAll(deviceCode, map);
+            redisTemplate.opsForHash().putAll(earmark, map);
         }
     }
 }

+ 29 - 0
huimv-eartag2-input/src/main/resources/bootstrap.yml

@@ -0,0 +1,29 @@
+spring:
+  application:
+    name: huimv-eartag2-input
+  profiles:
+    active: dev
+  cloud:
+    nacos:
+      config:
+        # 配置中心的地址
+        server-addr: 47.98.40.154:8848
+        #server-addr: 127.0.0.1:8848
+        # 配置文件prefix
+        prefix: ${spring.application.name}
+        # 配置文件的格式
+        file-extension: yaml
+        # 配置文件的环境
+        group: DEFAULT_GROUP
+        # 命名空间
+        namespace: public
+        username: nacos
+        password: nacos
+server:
+  port: 8090
+
+data:
+  input:
+    flow: 2
+  test:
+    input: 0

+ 2 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/HuimvManageApplication.java

@@ -1,5 +1,6 @@
 package com.huimv.eartag2.manage;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
@@ -19,6 +20,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 @EnableJpaRepositories(basePackages = "com.huimv.eartag2.common.dao.repo")
 //@ComponentScan(value = "com.huimv.eartag2.common.service")
 //@ComponentScan(basePackages = "com.huimv.eartag2.common.service.impl")
+@MapperScan(basePackages = "com.huimv.eartag2.manage.mapper")
 public class HuimvManageApplication {
     public static void main(String[] args) {
         SpringApplication.run(HuimvManageApplication.class, args);

+ 4 - 4
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagDataMapper.java

@@ -1,6 +1,6 @@
-package com.huimv.eartag2.manage2.mapper;
+package com.huimv.eartag2.manage.mapper;
 
-import com.huimv.eartag2.manage2.pojo.EartagData;
+import com.huimv.eartag2.manage.pojo.EartagData;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
@@ -8,8 +8,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  *  Mapper 接口
  * </p>
  *
- * @author zn
- * @since 2022-07-18
+ * @author newspaper
+ * @since 2024-03-28
  */
 public interface EartagDataMapper extends BaseMapper<EartagData> {
 

+ 18 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/mapper/EartagDeviceRegisterMapper.java

@@ -0,0 +1,18 @@
+package com.huimv.eartag2.manage.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.eartag2.manage.pojo.EartagDeviceRegister;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-07-20
+ */
+public interface EartagDeviceRegisterMapper extends BaseMapper<EartagDeviceRegister> {
+
+
+}

+ 17 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/mapper/EartagEartagRegister2Mapper.java

@@ -0,0 +1,17 @@
+package com.huimv.eartag2.manage.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.eartag2.manage.pojo.EartagEartagRegister2;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-08-04
+ */
+public interface EartagEartagRegister2Mapper extends BaseMapper<EartagEartagRegister2> {
+
+}

+ 145 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagData.java

@@ -0,0 +1,145 @@
+package com.huimv.eartag2.manage.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eartag_data")
+public class EartagData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 命令头
+     */
+    @TableField("cmd_header")
+    private String cmdHeader;
+
+    /**
+     * 采集器ID
+     */
+    @TableField("device")
+    private String device;
+
+    /**
+     * 耳标号
+     */
+    @TableField("earmark")
+    private String earmark;
+
+    /**
+     * 电池电量
+     */
+    @TableField("bat")
+    private Integer bat;
+
+    /**
+     * 耳标温度
+     */
+    @TableField("ear_temp")
+    private Integer earTemp;
+
+    /**
+     * 耳标温度
+     */
+    @TableField("ear_temp1")
+    private Float earTemp1;
+
+    /**
+     * 环境温度
+     */
+    @TableField("env_temp")
+    private Integer envTemp;
+
+    /**
+     * 环境温度
+     */
+    @TableField("env_temp1")
+    private Float envTemp1;
+
+    /**
+     * 运动量
+     */
+    @TableField("act")
+    private Integer act;
+
+    /**
+     * 运动量
+     */
+    @TableField("act1")
+    private Integer act1;
+
+    /**
+     * 信号强度
+     */
+    @TableField("signal1")
+    private Integer signal1;
+
+    /**
+     * 采集时间
+     */
+    @TableField("ask_time")
+    private String askTime;
+
+    /**
+     * 预留字段
+     */
+    @TableField("other")
+    private String other;
+
+    /**
+     * 入库时间
+     */
+    @TableField("add_time")
+    private String addTime;
+
+    /**
+     * 牧场ID
+     */
+    @TableField("create_date")
+    private Date createDate;
+
+    /**
+     * 创建日期
+     */
+    @TableField("farm_id")
+    private String farmId;
+
+    /**
+     * 采集日期
+     */
+    @TableField("ask_date")
+    private Date askDate;
+
+    /**
+     * 耳面温度
+     */
+    @TableField("ear_temp2")
+    private Float earTemp2;
+
+
+}

+ 86 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagDeviceRegister.java

@@ -0,0 +1,86 @@
+package com.huimv.eartag2.manage.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eartag_device_register")
+public class EartagDeviceRegister implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+     private Integer id;
+
+    @TableLogic
+    private  byte isDeleted;
+
+    private String deviceCode;
+
+    private String chipId;
+
+    private String countyCode;
+
+    private String countyName;
+
+    private String farmId;
+
+    private String farmName;
+
+    private Integer typeF;
+
+    private Integer stage;
+
+    private Integer pigpenId;
+
+    private Integer unitId;
+
+    private Date registerTime;
+
+    private Date lastTime;
+
+    private Integer activeStatus;
+
+    private Date activeTime;
+
+    private Integer deviceStatus;
+
+    private String deviceAlias;
+
+    private String location;
+
+    private String remark;
+
+    private Date createDate;
+
+    private String updateType;
+
+    private Date syncTime;
+
+    private Integer deviceType;
+
+    private String imei;
+    private Integer upgrade;
+    private Integer farmerId;
+    private String farmerName;
+//    private String iphone;
+
+}

+ 120 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagEartagRegister2.java

@@ -0,0 +1,120 @@
+package com.huimv.eartag2.manage.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-08-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eartag_eartag_register2")
+public class EartagEartagRegister2 implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+     private Integer id;
+
+    @TableLogic
+    private  byte isDeleted;
+
+    private String earmark;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date firstTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date lastTime;
+
+    private String firstDevice;
+
+    private String belongDevice;
+
+    private String lastDevice;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date registerTime;
+
+    private Integer registerType;
+
+    private String remark;
+
+    private String farmId;
+
+    private Integer activeStatus;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date activeTime;
+
+    private Integer liveStatus;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createDate;
+
+    private Integer bat;
+
+    private Integer rebootTimes;
+
+    private Integer onDayAge;
+
+    private Integer dayAge;
+
+    private String stageCode;
+
+    private String stageName;
+
+    private Integer pigpenId;
+
+    private String pigpenName;
+
+    private Integer unitId;
+
+    private String unitName;
+
+    private Long actRange;
+
+    private Float earTemp1;
+    private Float earTemp2;
+
+    private Float envTemp1;
+
+    private Long act;
+
+    private Integer signal1;
+
+    private String other;
+
+    private String askTime;
+
+    private Integer envAbnormal;
+
+    private Integer earAbnormal;
+
+    /**
+     * 可视码
+     */
+    private String viewCode;
+
+    /**
+     * RFID id号
+     */
+    private String rfidId;
+
+
+}

+ 17 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/EartagDeviceRegisterService.java

@@ -0,0 +1,17 @@
+package com.huimv.eartag2.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.eartag2.manage.pojo.EartagDeviceRegister;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+public interface EartagDeviceRegisterService extends IService<EartagDeviceRegister> {
+
+
+}

+ 16 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IEartagDataService.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage.service;
+
+import com.huimv.eartag2.manage.pojo.EartagData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-28
+ */
+public interface IEartagDataService extends IService<EartagData> {
+
+}

+ 21 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IEartagEartagRegister2Service.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.manage.pojo.EartagEartagRegister2;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2022-08-04
+ */
+public interface IEartagEartagRegister2Service extends IService<EartagEartagRegister2> {
+
+
+}

+ 116 - 64
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java

@@ -3,11 +3,17 @@ package com.huimv.eartag2.manage.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.eartag2.common.dao.entity.*;
 import com.huimv.eartag2.common.dao.repo.*;
 //import com.huimv.eartag2.common.service.IDevice;
 import com.huimv.eartag2.common.utils.*;
 import com.huimv.eartag2.common.vo.FarmAllStatusVo;
+import com.huimv.eartag2.manage.mapper.EartagDeviceRegisterMapper;
+import com.huimv.eartag2.manage.mapper.EartagEartagRegister2Mapper;
+import com.huimv.eartag2.manage.pojo.EartagDeviceRegister;
+import com.huimv.eartag2.manage.pojo.EartagEartagRegister2;
+import com.huimv.eartag2.manage.service.EartagDeviceRegisterService;
 import com.huimv.eartag2.manage.service.ICacheService;
 import com.huimv.eartag2.manage.service.IDeviceService;
 import lombok.extern.slf4j.Slf4j;
@@ -26,6 +32,7 @@ import java.math.BigDecimal;
 import java.sql.Date;
 import java.sql.Timestamp;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -61,8 +68,6 @@ public class DeviceServiceImpl implements IDeviceService {
     @Autowired
     private EartagDeviceOnlineRepo deviceOnlineRepo;
     @Autowired
-    private EartagEartagOnlineRepo eartagOnlineRepo;
-    @Autowired
     private EartagDeviceEartagCountRepo deviceEartagCountRepo;
     @Autowired
     private EartagEnvRepo eartagEnvRepo;
@@ -848,9 +853,46 @@ public class DeviceServiceImpl implements IDeviceService {
 //        resultJo.put("eartagTotal",resultJo.getString("eartagTotal")+"枚");
 //        resultJo.put("eartagOnline",resultJo.getString("eartagOnline")+"枚");
     }
+    @Autowired
+    private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
+
+    @Autowired
+    private EartagEartagRegister2Mapper eartagEartagRegister2Mapper;
 
     @Override
-    public Result getNowAllStatus(String farmId) throws ParseException {
+    public Result getNowAllStatus(String farmId)   {
+        java.util.Date date = new java.util.Date();
+
+        // 创建一个SimpleDateFormat对象,并指定日期格式
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 使用SimpleDateFormat对象的format方法将日期格式化为你想要的格式
+        String formattedDate = sdf.format(date);
+        QueryWrapper<EartagDeviceRegister> deviceWapper = new QueryWrapper<>();
+        QueryWrapper<EartagEartagRegister2> eartagWapper = new QueryWrapper<>();
+
+        deviceWapper.eq("farm_id",farmId);
+        eartagWapper.eq("farm_id",farmId);
+        Integer allDevice = eartagDeviceRegisterMapper.selectCount(deviceWapper);
+        Integer allEartag = eartagEartagRegister2Mapper.selectCount(eartagWapper);
+        deviceWapper.eq("active_status",1);
+        eartagWapper.eq("live_status",1);
+        Integer onDevice = eartagDeviceRegisterMapper.selectCount(deviceWapper);
+        Integer onEartag = eartagEartagRegister2Mapper.selectCount(eartagWapper);
+
+        HashMap<String, Object> envMap = new HashMap<>();
+        envMap.put("deviceOffline",allDevice-onDevice);
+        envMap.put("deviceOnline",onDevice);
+        envMap.put("deviceRate", calculatePercentage(onDevice,allDevice));
+        envMap.put("deviceTotal",allDevice);
+        envMap.put("eartagOnline",onEartag);
+        envMap.put("eartagRate", calculatePercentage(onEartag,allEartag));
+        envMap.put("eartagTotal",allEartag);
+        envMap.put("updateTime",formattedDate);
+        envMap.put("farmId",farmId);
+
+        return new Result(ResultCode.SUCCESS,envMap);
+
         //#读取设备和耳标总状态缓存;
         //      总状态缓存存在:从缓存读取数据返回;
         //      总状态缓存不存在:从数据库读取记录:
@@ -859,71 +901,81 @@ public class DeviceServiceImpl implements IDeviceService {
         //              数据库记录不存在:则构建数据库记录,并初始化缓存,返回结果;
         //              }
 
-        //{从总状态缓存钟读取缓存数据}
-        DateUtil dateUtil = new DateUtil();
-        Map farmAllStatusMap = cacheService.getFarmAllStatusByFarmId(farmId);
-        if (farmAllStatusMap.size() > 0) {
-            log.info("返回缓存数据.");
-            JSONObject resultJo = (JSONObject) JSON.toJSON(farmAllStatusMap);
-            //{处理返回结果}
-            processReturnResult(resultJo);
-//            return new Result(ResultCode.SUCCESS, JSON.toJSON(farmAllStatusMap));
-            return new Result(ResultCode.SUCCESS, resultJo);
-        } else {
-            //#从数据库读取总状态表
-            String todayDateText = dateUtil.getTodayDateText();
-            Date todayDate = dateUtil.getTodayMySQLDate();
-            Timestamp timestamp = dateUtil.getTimestamp();
-            EartarFarmAllStatusEntity farmAllStatusEntity = farmAllStatusRepo.getOneByFarmIdAndCreateDate(farmId, todayDateText);
-            if (farmAllStatusEntity != null) {
-                //#初始化总状态缓存
-                cacheService.putFarmAllStatusCache(farmId, farmAllStatusEntity);
-                JSONObject resultJo = (JSONObject) JSON.toJSON(farmAllStatusEntity);
-                //{处理返回结果}
-                processReturnResult(resultJo);
-//                return new Result(ResultCode.SUCCESS, JSON.toJSON(farmAllStatusEntity));
-                return new Result(ResultCode.SUCCESS, resultJo);
-            } else {
-                //*构建总状态数据 */
-                int deviceTotal = getDeviceCancelTotalFromDeviceRegister(farmId);
-                int eartagTotal = getEartagRegTotalByFarmId(farmId);
-                int deviceOnlineTotal = cacheService.getDeviceOnlineTotal(farmId, todayDateText);
-                int eartagOnlineTotal = cacheService.getEartagOnlineTotal(farmId, todayDateText);
-                int deviceOffline = deviceTotal - deviceOnlineTotal;
-                BigDecimal deviceRateBd = new BigDecimal(0);
-                BigDecimal eartagRateBd = new BigDecimal(0);
-                if (deviceTotal != 0){
-                    new BigDecimal(deviceOnlineTotal).divide(new BigDecimal(deviceTotal), 1, BigDecimal.ROUND_HALF_UP);
-
-                }
-                if (eartagTotal != 0){
-                    new BigDecimal(eartagOnlineTotal).divide(new BigDecimal(eartagTotal), 1, BigDecimal.ROUND_HALF_UP);
-                }
 
+        //{从总状态缓存钟读取缓存数据}
+//        DateUtil dateUtil = new DateUtil();
+//        Map farmAllStatusMap = cacheService.getFarmAllStatusByFarmId(farmId);
+//        if (farmAllStatusMap.size() > 0) {
+//            log.info("返回缓存数据.");
+//            JSONObject resultJo = (JSONObject) JSON.toJSON(farmAllStatusMap);
+//            //{处理返回结果}
+//            processReturnResult(resultJo);
+////            return new Result(ResultCode.SUCCESS, JSON.toJSON(farmAllStatusMap));
+//            return new Result(ResultCode.SUCCESS, resultJo);
+//        } else {
+//            //#从数据库读取总状态表
+//            String todayDateText = dateUtil.getTodayDateText();
+//            Date todayDate = dateUtil.getTodayMySQLDate();
+//            Timestamp timestamp = dateUtil.getTimestamp();
+//            EartarFarmAllStatusEntity farmAllStatusEntity = farmAllStatusRepo.getOneByFarmIdAndCreateDate(farmId, todayDateText);
+//            if (farmAllStatusEntity != null) {
+//                //#初始化总状态缓存
+//                cacheService.putFarmAllStatusCache(farmId, farmAllStatusEntity);
+//                JSONObject resultJo = (JSONObject) JSON.toJSON(farmAllStatusEntity);
+//                //{处理返回结果}
+//                processReturnResult(resultJo);
+////                return new Result(ResultCode.SUCCESS, JSON.toJSON(farmAllStatusEntity));
+//                return new Result(ResultCode.SUCCESS, resultJo);
+//            } else {
+//                //*构建总状态数据 */
+//                int deviceTotal = getDeviceCancelTotalFromDeviceRegister(farmId);
+//                int eartagTotal = getEartagRegTotalByFarmId(farmId);
+//                int deviceOnlineTotal = cacheService.getDeviceOnlineTotal(farmId, todayDateText);
+//                int eartagOnlineTotal = cacheService.getEartagOnlineTotal(farmId, todayDateText);
+//                int deviceOffline = deviceTotal - deviceOnlineTotal;
+//                BigDecimal deviceRateBd = new BigDecimal(0);
+//                BigDecimal eartagRateBd = new BigDecimal(0);
+//                if (deviceTotal != 0){
+//                    new BigDecimal(deviceOnlineTotal).divide(new BigDecimal(deviceTotal), 1, BigDecimal.ROUND_HALF_UP);
+//
+//                }
+//                if (eartagTotal != 0){
+//                    new BigDecimal(eartagOnlineTotal).divide(new BigDecimal(eartagTotal), 1, BigDecimal.ROUND_HALF_UP);
+//                }
+//
+//
+//
+//                EartarFarmAllStatusEntity newFarmAllStatusEntity = new EartarFarmAllStatusEntity();
+//                newFarmAllStatusEntity.setDeviceTotal(deviceTotal);
+//                newFarmAllStatusEntity.setDeviceOnline(deviceOnlineTotal);
+//                newFarmAllStatusEntity.setDeviceOffline(deviceOffline);
+//                newFarmAllStatusEntity.setDeviceRate(Float.parseFloat(deviceRateBd.toString()));
+//                newFarmAllStatusEntity.setEartagTotal(eartagTotal);
+//                newFarmAllStatusEntity.setEartagOnline(eartagOnlineTotal);
+//                newFarmAllStatusEntity.setEartagRate(Float.parseFloat(eartagRateBd.toString()));
+//                newFarmAllStatusEntity.setFarmId(farmId);
+//                newFarmAllStatusEntity.setUpdateTime(timestamp);
+//                newFarmAllStatusEntity.setCreateDate(todayDate);
+//                farmAllStatusRepo.saveAndFlush(newFarmAllStatusEntity);
+//                //*初始化总状态缓存*/
+//                cacheService.putFarmAllStatusCache(farmId, newFarmAllStatusEntity);
+////                return new Result(ResultCode.SUCCESS, JSON.toJSON(newFarmAllStatusEntity));
+//                JSONObject resultJo = (JSONObject) JSON.toJSON(newFarmAllStatusEntity);
+//                //{处理返回结果}
+//                processReturnResult(resultJo);
+//                return new Result(ResultCode.SUCCESS, resultJo);
+//            }
+//        }
 
+    }
 
-                EartarFarmAllStatusEntity newFarmAllStatusEntity = new EartarFarmAllStatusEntity();
-                newFarmAllStatusEntity.setDeviceTotal(deviceTotal);
-                newFarmAllStatusEntity.setDeviceOnline(deviceOnlineTotal);
-                newFarmAllStatusEntity.setDeviceOffline(deviceOffline);
-                newFarmAllStatusEntity.setDeviceRate(Float.parseFloat(deviceRateBd.toString()));
-                newFarmAllStatusEntity.setEartagTotal(eartagTotal);
-                newFarmAllStatusEntity.setEartagOnline(eartagOnlineTotal);
-                newFarmAllStatusEntity.setEartagRate(Float.parseFloat(eartagRateBd.toString()));
-                newFarmAllStatusEntity.setFarmId(farmId);
-                newFarmAllStatusEntity.setUpdateTime(timestamp);
-                newFarmAllStatusEntity.setCreateDate(todayDate);
-                farmAllStatusRepo.saveAndFlush(newFarmAllStatusEntity);
-                //*初始化总状态缓存*/
-                cacheService.putFarmAllStatusCache(farmId, newFarmAllStatusEntity);
-//                return new Result(ResultCode.SUCCESS, JSON.toJSON(newFarmAllStatusEntity));
-                JSONObject resultJo = (JSONObject) JSON.toJSON(newFarmAllStatusEntity);
-                //{处理返回结果}
-                processReturnResult(resultJo);
-                return new Result(ResultCode.SUCCESS, resultJo);
-            }
+    public static String calculatePercentage(double value1, double value2) {
+        if (value2 == 0) {
+            return "0%";
+        } else {
+            double percentage = (value1 / value2) * 100;
+            return String.format("%.2f%%", percentage);
         }
-
     }
 
     @Override

+ 20 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagDataServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.manage.service.impl;
+
+import com.huimv.eartag2.manage.pojo.EartagData;
+import com.huimv.eartag2.manage.mapper.EartagDataMapper;
+import com.huimv.eartag2.manage.service.IEartagDataService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-28
+ */
+@Service
+public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagData> implements IEartagDataService {
+
+}

+ 22 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagDeviceRegisterServiceImpl.java

@@ -0,0 +1,22 @@
+package com.huimv.eartag2.manage.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.manage.mapper.EartagDeviceRegisterMapper;
+import com.huimv.eartag2.manage.pojo.EartagDeviceRegister;
+import com.huimv.eartag2.manage.service.EartagDeviceRegisterService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2022-07-20
+ */
+@Service
+public class EartagDeviceRegisterServiceImpl extends ServiceImpl<EartagDeviceRegisterMapper, EartagDeviceRegister> implements EartagDeviceRegisterService {
+
+
+}

+ 22 - 0
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagEartagRegister2ServiceImpl.java

@@ -0,0 +1,22 @@
+package com.huimv.eartag2.manage.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.manage.mapper.EartagEartagRegister2Mapper;
+import com.huimv.eartag2.manage.pojo.EartagEartagRegister2;
+import com.huimv.eartag2.manage.service.IEartagEartagRegister2Service;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2022-08-04
+ */
+@Service
+public class EartagEartagRegister2ServiceImpl extends ServiceImpl<EartagEartagRegister2Mapper, EartagEartagRegister2> implements IEartagEartagRegister2Service {
+
+
+
+}

+ 14 - 77
huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagServiceImpl.java

@@ -3,9 +3,13 @@ package com.huimv.eartag2.manage.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.huimv.eartag2.common.dao.entity.*;
 import com.huimv.eartag2.common.dao.repo.*;
 import com.huimv.eartag2.common.utils.*;
+import com.huimv.eartag2.manage.mapper.EartagDataMapper;
+import com.huimv.eartag2.manage.pojo.EartagData;
 import com.huimv.eartag2.manage.service.IEartagService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +48,8 @@ public class EartagServiceImpl implements IEartagService {
     private EartarFarmAllStatusRepo farmAllStatusRepo;
     @Autowired
     private EartagDeviceEartagCountRepo deviceEartagCountRepo;
+    @Autowired
+    private EartagDataMapper eartagDataMapper;
 
     /**
      * @Method : listAllEartagFlow
@@ -580,83 +586,14 @@ public class EartagServiceImpl implements IEartagService {
      */
     @Override
     public Result listEartagFlowByEarmarkAndTodayInPager(String earmark, Integer pageNo, Integer pageSize, String createDate, String deviceCode) throws ParseException {
-        System.out.println("earmark>>" + earmark);
-        System.out.println("pageNo>>" + pageNo);
-        System.out.println("pageSize>>" + pageSize);
-        System.out.println("createDate>>" + createDate);
-        System.out.println("deviceCode>>" + deviceCode);
-        //
-        Specification<EartagDataEntity> sf = (Specification<EartagDataEntity>) (root, criteriaQuery, criteriaBuilder) -> {
-            //
-            List<Predicate> predList = new ArrayList<>();
-            //earmark
-            if (null != earmark && earmark.trim().length() > 0) {
-                predList.add(criteriaBuilder.equal(root.get("earmark").as(String.class), earmark));
-            }
-            //createDate
-            if (null != createDate && createDate.trim().length() > 0) {
-                try {
-                    predList.add(criteriaBuilder.equal(root.get("createDate").as(Date.class), new Date(new DateUtil().parseDateTextToLong(createDate))));
-                } catch (ParseException e) {
-                    e.printStackTrace();
-                }
-            }
-            //deviceCode
-            if (null != deviceCode && deviceCode.trim().length() > 0) {
-                predList.add(criteriaBuilder.equal(root.get("device").as(String.class), deviceCode));
-            }
-            Predicate[] pred = new Predicate[predList.size()];
-            Predicate and = criteriaBuilder.and(predList.toArray(pred));
-            criteriaQuery.where(and);
-            List<Order> orders = new ArrayList<>();
-            orders.add(criteriaBuilder.desc(root.get("id")));
-            return criteriaQuery.orderBy(orders).getRestriction();
-        };
-        Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
-        Page<EartagDataEntity> pageEartagData = eartagDataRepo.findAll(sf, pageable);
-        JSONObject outDataJo = new JSONObject();
-        outDataJo.put("pageable", pageEartagData.getPageable());
-        outDataJo.put("last", pageEartagData.isLast());
-        outDataJo.put("totalElements", pageEartagData.getTotalElements());
-        outDataJo.put("totalPages", pageEartagData.getTotalPages());
-        outDataJo.put("number", pageEartagData.getNumber());
-        outDataJo.put("size", pageEartagData.getSize());
-        outDataJo.put("sort", pageEartagData.getSort());
-        outDataJo.put("numberOfElements", pageEartagData.getNumberOfElements());
-        outDataJo.put("first", pageEartagData.isFirst());
-        outDataJo.put("empty", pageEartagData.isEmpty());
-        List<EartagDataEntity> dataEntityList = pageEartagData.getContent();
-        System.out.println("## dataEntityList.size>>" + dataEntityList.size());
-        JSONArray outJa = new JSONArray();
-        outDataJo.put("content", outJa);
-        DateUtil dateUtil = new DateUtil();
-        for (EartagDataEntity eartagDataEntity : dataEntityList) {
-//            System.out.println(">>"+deviceRegisterEntity.toString());
-//            Map map = JSON.parseObject(JSONObject.toJSONString(deviceRegisterEntity),Map.class);
-//            System.out.println("map>>"+map.toString());
-            JSONObject outJo = new JSONObject();
-            outJa.add(outJo);
-            outJo.put("id", eartagDataEntity.getId());
-            outJo.put("cmdHeader", eartagDataEntity.getCmdHeader());
-            outJo.put("device", eartagDataEntity.getDevice());
-            outJo.put("earmark", eartagDataEntity.getEarmark());
-            outJo.put("bat", eartagDataEntity.getBat());
-            outJo.put("earTemp", eartagDataEntity.getEarTemp());
-            outJo.put("earTemp1", eartagDataEntity.getEarTemp1());
-            outJo.put("envTemp", eartagDataEntity.getEnvTemp());
-            outJo.put("envTemp1", eartagDataEntity.getEnvTemp1());
-            outJo.put("act", eartagDataEntity.getAct());
-            outJo.put("act1", eartagDataEntity.getAct1());
-            outJo.put("signal1", eartagDataEntity.getSignal1());
-            outJo.put("askTime", eartagDataEntity.getAskTime());
-            outJo.put("other", eartagDataEntity.getOther());
-            outJo.put("addTime", dateUtil.formatDatetimeText(eartagDataEntity.getAddTime()));
-            outJo.put("createDate", eartagDataEntity.getCreateDate());
-            outJo.put("farmId", eartagDataEntity.getFarmId());
-        }
-
-        return new Result(ResultCode.SUCCESS, outDataJo);
-//        return new Result(ResultCode.SUCCESS, pageEartagData);
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<EartagData> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNo,pageSize);
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<EartagData> eartagDataPage = eartagDataMapper.selectPage(page,
+                new QueryWrapper<EartagData>().lambda()
+                        .eq(EartagData::getEarmark, earmark)
+                        .eq(EartagData::getCreateDate, createDate)
+                        .eq(StringUtils.isNotBlank(deviceCode), EartagData::getDevice, deviceCode)
+                        .orderByDesc(EartagData::getAskTime));
+        return new Result(ResultCode.SUCCESS, eartagDataPage);
     }
 
     /**

+ 5 - 0
huimv-eartag2-manage/src/main/resources/mapper/EartagDataMapper.xml

@@ -0,0 +1,5 @@
+<?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.huimv.eartag2.manage.mapper.EartagDataMapper">
+
+</mapper>

+ 1 - 1
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/HuimvManageApplication.java

@@ -27,7 +27,7 @@ import org.springframework.web.client.RestTemplate;
 @MapperScan("com.huimv.eartag2.manage2.mapper")
 @EntityScan(value = "com.huimv.eartag2.common.dao.entity")
 @EnableJpaRepositories(basePackages = "com.huimv.eartag2.common.dao.repo")
-@Import(InterceptorConfig.class)
+//@Import(InterceptorConfig.class)
 public class HuimvManageApplication {
     public static void main(String[] args) throws InterruptedException {
 

+ 2 - 2
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/BaseFarmController.java

@@ -6,7 +6,7 @@ import com.huimv.eartag2.common.utils.Result;
 import com.huimv.eartag2.manage2.pojo.BaseFarm;
 import com.huimv.eartag2.manage2.pojo.EartagData;
 import com.huimv.eartag2.manage2.service.BaseFarmService;
-import com.huimv.eartag2.manage2.service.EartagDataService;
+import com.huimv.eartag2.manage2.service.IEartagData2Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -69,7 +69,7 @@ public class BaseFarmController {
         return baseFarmService.list(httpServletRequest,paramsMap);
     }
     @Autowired
-    EartagDataService eartagData;
+    IEartagData2Service eartagData;
 
     @PostMapping("/listAll")
     public List<EartagData> listAll(HttpServletRequest httpServletRequest, @RequestBody Map<String,Integer> paramsMap){

+ 2 - 2
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagDataController.java

@@ -2,7 +2,7 @@ package com.huimv.eartag2.manage2.controller;
 
 
 import com.huimv.eartag2.common.utils.Result;
-import com.huimv.eartag2.manage2.service.EartagDataService;
+import com.huimv.eartag2.manage2.service.IEartagData2Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -24,7 +24,7 @@ import java.util.Map;
 @RequestMapping("/eartagData2")
 public class EartagDataController {
     @Autowired
-    private EartagDataService eartagDataService;
+    private IEartagData2Service eartagDataService;
 
     @PostMapping("getEnvByTime")
     public Result getEnvByTime(@RequestBody Map<String,String> map){

+ 20 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartarFarmAllStatusController.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.manage2.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-31
+ */
+@RestController
+@RequestMapping("/eartar-farm-all-status")
+public class EartarFarmAllStatusController {
+
+}

+ 7 - 5
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagData2Mapper.java

@@ -1,14 +1,16 @@
 package com.huimv.eartag2.manage2.mapper;
 
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.huimv.eartag2.manage2.pojo.EartagData2;
+import com.huimv.eartag2.manage2.pojo.EartagData;
 import com.huimv.eartag2.manage2.pojo.pojovo.EartagDataDto;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
+
 /**
  * <p>
  *  Mapper 接口
@@ -17,9 +19,9 @@ import java.util.List;
  * @author author
  * @since 2022-07-29
  */
-public interface EartagData2Mapper extends BaseMapper<EartagData2> {
-    //
-    List<EartagData2> getEartagDataByEarmark(@Param("earmark") String earmark, @Param("recordCount") String recordCount);
+public interface EartagData2Mapper extends BaseMapper<EartagData> {
+    List<EartagData> getEartagDataByEarmark(@Param("earmark") String earmark, @Param("recordCount") String recordCount);
+
+    List<EartagDataDto> getAct(@Param(Constants.WRAPPER) QueryWrapper<EartagData> wrapper);
 
-    List<EartagDataDto> getAct(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
 }

+ 16 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartarFarmAllStatusMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.mapper;
+
+import com.huimv.eartag2.manage2.pojo.EartarFarmAllStatus;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-31
+ */
+public interface EartarFarmAllStatusMapper extends BaseMapper<EartarFarmAllStatus> {
+
+}

+ 2 - 2
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagData2Mapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.huimv.eartag2.manage2.mapper.EartagData2Mapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.EartagData2">
+    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.EartagData">
         <id column="id" property="id" />
         <result column="cmd_header" property="cmdHeader" />
         <result column="device" property="device" />
@@ -23,7 +23,7 @@
         <result column="farm_id" property="farmId" />
         <result column="ask_date" property="askDate" />
     </resultMap>
-    <select id="getEartagDataByEarmark" resultType="com.huimv.eartag2.manage2.pojo.EartagData2">
+    <select id="getEartagDataByEarmark" resultType="com.huimv.eartag2.manage2.pojo.EartagData">
         SELECT * FROM eartag_data2 WHERE earmark=${earmark} ORDER BY add_time DESC LIMIT ${recordCount}
     </select>
     <select id="getAct" resultType="com.huimv.eartag2.manage2.pojo.pojovo.EartagDataDto">

+ 0 - 32
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagDataMapper.xml

@@ -1,32 +0,0 @@
-<?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.huimv.eartag2.manage2.mapper.EartagDataMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.EartagData">
-        <id column="id" property="id" />
-        <result column="cmd_header" property="cmdHeader" />
-        <result column="device" property="device" />
-        <result column="earmark" property="earmark" />
-        <result column="bat" property="bat" />
-        <result column="ear_temp" property="earTemp" />
-        <result column="ear_temp1" property="earTemp1" />
-        <result column="env_temp" property="envTemp" />
-        <result column="env_temp1" property="envTemp1" />
-        <result column="act" property="act" />
-        <result column="act1" property="act1" />
-        <result column="signal1" property="signal1" />
-        <result column="ask_time" property="askTime" />
-        <result column="other" property="other" />
-        <result column="add_time" property="addTime" />
-        <result column="create_date" property="createDate" />
-        <result column="farm_id" property="farmId" />
-        <result column="ask_date" property="askDate" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id, cmd_header, device, earmark, bat, ear_temp, ear_temp1, env_temp, env_temp1, act, act1, signal1, ask_time, other, add_time, create_date, farm_id, ask_date
-    </sql>
-
-</mapper>

+ 17 - 13
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartagData.java

@@ -1,31 +1,33 @@
 package com.huimv.eartag2.manage2.pojo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
  * 
  * </p>
  *
- * @author zn
- * @since 2022-07-18
+ * @author author
+ * @since 2022-07-29
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+//@TableName("eartag_data")
 public class EartagData implements Serializable {
 
-    private static final long serialVersionUID=1L;
+    private static final long serialVersionUID = 1L;
 
-      @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
      private Integer id;
 
     @TableLogic
@@ -42,6 +44,7 @@ public class EartagData implements Serializable {
     private Integer earTemp;
 
     private Float earTemp1;
+    private Float earTemp2;
 
     private Integer envTemp;
 
@@ -53,19 +56,20 @@ public class EartagData implements Serializable {
 
     private Integer signal1;
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
-    private Date askTime;
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private String  askTime;
 
     private String other;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date addTime;
 
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createDate;
 
     private String farmId;
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date askDate;
 
 

+ 61 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartarFarmAllStatus.java

@@ -0,0 +1,61 @@
+package com.huimv.eartag2.manage2.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eartar_farm_all_status")
+public class EartarFarmAllStatus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer deviceTotal;
+
+    private Integer deviceOnline;
+
+    private Integer deviceOffline;
+
+    private Double deviceRate;
+
+    private Integer deviceCancel;
+
+    private Integer eartagTotal;
+
+    private Integer eartagOnline;
+
+    private Double eartagRate;
+
+    private String farmId;
+
+    private Date updateTime;
+
+    private Date createDate;
+
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 287 - 294
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/schedule/EartagTask.java

@@ -1,298 +1,291 @@
-//
-//package com.huimv.eartag2.manage2.schedule;
-//
-//import cn.hutool.core.date.DateTime;
-//import cn.hutool.core.date.DateUtil;
-//import cn.hutool.core.util.ObjectUtil;
-//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-//import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-//import com.huimv.eartag2.common.utils.MathUtil;
-//import com.huimv.eartag2.manage2.mapper.*;
-//import com.huimv.eartag2.manage2.pojo.*;
-//import com.huimv.eartag2.manage2.service.EartagDeviceRegisterService;
-//import com.huimv.eartag2.manage2.service.IEartagService;
-//import com.huimv.eartag2.manage2.service.SysBaseConfigService;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.scheduling.annotation.EnableScheduling;
-//import org.springframework.scheduling.annotation.Scheduled;
-//
-//import java.io.IOException;
-//import java.math.BigDecimal;
-//import java.sql.Timestamp;
-//import java.text.ParseException;
-//import java.util.Date;
-//import java.util.List;
-//
-//
-///**
-// * @Project : huimv.shiwan
-// * @Package : com.huimv.biosafety.uface.controller
-// * @Description : TODO
-// * @Version : 1.0
-// * @Author : ZhuoNing
-// * @Create : 2020-12-25
-// **/
-//
-//@Configuration      //1.主要用于标记配置类,兼备Component的效果。
-//@EnableScheduling   // 2.开启定时任务
-//public class EartagTask {
-//    @Autowired
-//    private IEartagService eartagService;
-//    @Autowired
-//    private SysBaseConfigService baseConfigService;
-//    @Autowired
-//    private EartagDeviceRegisterService deviceRegisterService;
-//    @Autowired
-//    private EartagResetMapper eartagResetMapper;
-//    @Autowired
-//    private EartagEartagRegister2Mapper eartagEartagRegister2Mapper;
-//    @Autowired
-//    private BaseFarmerMapper baseFarmerMapper;
-//    @Autowired
-//    private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
-//    @Autowired
-//    private FarmerAssetMapper farmerAssetMapper;
-//    @Value("${farmer.pig.price}")
-//    private String pigPrice;
-//    @Autowired
-//    private FarmerDayageWeightMapper farmerDayageWeightMapper;
-//    @Autowired
-//    private EartagData2Mapper eartagData2Mapper;
-//
-//    @Autowired
-//    private EartagAbnormalAlarmMapper eartagAbnormalAlarmMapper;
-//
-//    @Autowired
-//    private BasePigpenMapper pigpenMapper;
-//
-///**
-//     * @Method : countEartagOnlineTimes
-//     * @Description : 判断耳标离线状态
-//     * @Params : []
-//     * @Return : void
-//     * @Author : ZhuoNing
-//     * @Date : 2022/8/20
-//     * @Time : 19:35
-//     */
-//
-//    // 10分钟
-//    @Scheduled(cron = "0 0/10 * * * ? ")
-////    @Scheduled(cron = "0 * * * * ? ")
-//    private void countEartagOnlineTimes() throws IOException, ParseException {
-//        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
-////        System.out.println("时间戳="+nowTimestamp);
-//
-////        ExecutorService service = Executors.newFixedThreadPool(5);
-////        ExecutorService service = Executors.newSingleThreadExecutor();
-////        RunnableTaskEartagOnlineStatus task1 = new RunnableTaskEartagOnlineStatus();
-////        service.execute(task1);
-//        //更新耳标在线状态
-//        eartagService.updateEartagLiveStatusAndCount();
-//    }
-//
-//
-///**
-//     * @Method : updateDevice
-//     * @Description : 判断设备离线状态
-//     * @Params : []
-//     * @Return : void
-//     * @Author : ZhuoNing
-//     * @Date : 2022/8/20
-//     * @Time : 19:36
-//     */
-//
-//    // 5分钟
-////    @Scheduled(cron = "0 * * * * ? ")
-//    @Scheduled(cron = "0 5 * * * ? ")
-//    private void updateDevice() {
-//        List<EartagDeviceRegister> list = deviceRegisterService.list();
-//        for (EartagDeviceRegister eartagDeviceRegister : list) {
-//            Integer farmerId = eartagDeviceRegister.getFarmerId();
-//            SysBaseConfig config_value = baseConfigService.getOne(new QueryWrapper<SysBaseConfig>().eq("config_value", farmerId));
-//            String configValueStr ="60";
-//            if(ObjectUtil.isNotEmpty(config_value) ){
-//                SysBaseConfig one = baseConfigService.getOne(new QueryWrapper<SysBaseConfig>().eq("row_id", config_value.getRowId()).eq("config_key", "deviceOfflineTime"));
-//                configValueStr =    one.getConfigValue();
-//            }
-//
-//            int configValueInt = Integer.parseInt(configValueStr);
-//            Date date = new Date();
-//            DateTime dateTime = DateUtil.offsetMinute(date, -configValueInt);
-//            //未离线
-//            if (eartagDeviceRegister.getLastTime() !=null &&  dateTime.before(eartagDeviceRegister.getLastTime())){
-//                if (eartagDeviceRegister.getActiveStatus() != 1){
-//                    eartagDeviceRegister.setActiveStatus(1);
-//                    eartagDeviceRegister.setDeviceStatus(1);
-//                    deviceRegisterService.updateById(eartagDeviceRegister);
-//                }
-//            }else {  //离线
-//                if ( eartagDeviceRegister.getActiveStatus() != 2){
-//                    eartagDeviceRegister.setActiveStatus(2);
-//                    eartagDeviceRegister.setDeviceStatus(0);
-//                    deviceRegisterService.updateById(eartagDeviceRegister);
-//
-//                    String deviceCode = eartagDeviceRegister.getDeviceCode();
-//                    String farmId = eartagDeviceRegister.getFarmId();
-//                    Integer unitId = eartagDeviceRegister.getUnitId();
-//                    Integer pigpenId = eartagDeviceRegister.getPigpenId();
-//                    BasePigpen basePigpen = pigpenMapper.selectById(unitId);
-//                    BasePigpen basePigpen1 = pigpenMapper.selectById(pigpenId);
-//                    String pigpen = "";
-//                    if (ObjectUtil.isNotEmpty(basePigpen)){
-//                        pigpen += basePigpen.getPigpenName();
-//                    }
-//                    if (ObjectUtil.isNotEmpty(basePigpen1)){
-//                        pigpen += basePigpen1.getPigpenName();
-//                    }
-//                    //耳标离线:6
-//                    int alarmSort = 2;
-//                    //耳标:2
-//                    int alarmFrom = 1;
-//                    //状态:1
-//                    int alarmType = 1;
-//
-//                    //报警
-//                    String alarmContent = "离线警报:"+pigpen+"设备号["+deviceCode+"]已离线";
-//                    EartagAbnormalAlarm newEartagAbnormalAlarmEntity = new EartagAbnormalAlarm();
-//                    newEartagAbnormalAlarmEntity.setFarmCode(farmId);
-//                    newEartagAbnormalAlarmEntity.setAddTime(date);
-//                    newEartagAbnormalAlarmEntity.setAddDate(date);
-//                    newEartagAbnormalAlarmEntity.setAlarmSort(alarmSort);
-//                    newEartagAbnormalAlarmEntity.setAlarmType(alarmType);
-//                    newEartagAbnormalAlarmEntity.setAlarmFrom(alarmFrom);
-//                    newEartagAbnormalAlarmEntity.setContent(alarmContent);
-//                    eartagAbnormalAlarmMapper.insert(newEartagAbnormalAlarmEntity);
-//                }
-//
-//            }
+
+package com.huimv.eartag2.manage2.schedule;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.eartag2.common.utils.MathUtil;
+import com.huimv.eartag2.manage2.mapper.*;
+import com.huimv.eartag2.manage2.pojo.*;
+import com.huimv.eartag2.manage2.service.EartagDeviceRegisterService;
+import com.huimv.eartag2.manage2.service.IEartagService;
+import com.huimv.eartag2.manage2.service.SysBaseConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class EartagTask {
+    @Autowired
+    private IEartagService eartagService;
+    @Autowired
+    private SysBaseConfigService baseConfigService;
+    @Autowired
+    private EartagDeviceRegisterService deviceRegisterService;
+    @Autowired
+    private EartagResetMapper eartagResetMapper;
+    @Autowired
+    private EartagEartagRegister2Mapper eartagEartagRegister2Mapper;
+    @Autowired
+    private BaseFarmerMapper baseFarmerMapper;
+    @Autowired
+    private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
+    @Autowired
+    private FarmerAssetMapper farmerAssetMapper;
+    @Value("${farmer.pig.price}")
+    private String pigPrice;
+    @Autowired
+    private FarmerDayageWeightMapper farmerDayageWeightMapper;
+    @Autowired
+    private EartagData2Mapper eartagData2Mapper;
+
+    @Autowired
+    private EartagAbnormalAlarmMapper eartagAbnormalAlarmMapper;
+
+    @Autowired
+    private BasePigpenMapper pigpenMapper;
+
+/**
+     * @Method : countEartagOnlineTimes
+     * @Description : 判断耳标离线状态
+     * @Params : []
+     * @Return : void
+     * @Author : ZhuoNing
+     * @Date : 2022/8/20
+     * @Time : 19:35
+     */
+
+    // 10分钟
+    @Scheduled(cron = "1 0/5 * * * ? ")
+//    @Scheduled(cron = "0 * * * * ? ")
+    private void countEartagOnlineTimes() throws IOException, ParseException {
+        //更新耳标在线状态
+        eartagService.updateEartagLiveStatusAndCount();
+    }
+
+/*
+*//**
+     * @Method : updateDevice
+     * @Description : 判断设备离线状态
+     * @Params : []
+     * @Return : void
+     * @Author : ZhuoNing
+     * @Date : 2022/8/20
+     * @Time : 19:36
+     *//*
+
+    // 5分钟
+//    @Scheduled(cron = "0 * * * * ? ")
+    @Scheduled(cron = "0 5 * * * ? ")
+    private void updateDevice() {
+        List<EartagDeviceRegister> list = deviceRegisterService.list();
+        for (EartagDeviceRegister eartagDeviceRegister : list) {
+            Integer farmerId = eartagDeviceRegister.getFarmerId();
+            SysBaseConfig config_value = baseConfigService.getOne(new QueryWrapper<SysBaseConfig>().eq("config_value", farmerId));
+            String configValueStr ="60";
+            if(ObjectUtil.isNotEmpty(config_value) ){
+                SysBaseConfig one = baseConfigService.getOne(new QueryWrapper<SysBaseConfig>().eq("row_id", config_value.getRowId()).eq("config_key", "deviceOfflineTime"));
+                configValueStr =    one.getConfigValue();
+            }
+
+            int configValueInt = Integer.parseInt(configValueStr);
+            Date date = new Date();
+            DateTime dateTime = DateUtil.offsetMinute(date, -configValueInt);
+            //未离线
+            if (eartagDeviceRegister.getLastTime() !=null &&  dateTime.before(eartagDeviceRegister.getLastTime())){
+                if (eartagDeviceRegister.getActiveStatus() != 1){
+                    eartagDeviceRegister.setActiveStatus(1);
+                    eartagDeviceRegister.setDeviceStatus(1);
+                    deviceRegisterService.updateById(eartagDeviceRegister);
+                }
+            }else {  //离线
+                if ( eartagDeviceRegister.getActiveStatus() != 2){
+                    eartagDeviceRegister.setActiveStatus(2);
+                    eartagDeviceRegister.setDeviceStatus(0);
+                    deviceRegisterService.updateById(eartagDeviceRegister);
+
+                    String deviceCode = eartagDeviceRegister.getDeviceCode();
+                    String farmId = eartagDeviceRegister.getFarmId();
+                    Integer unitId = eartagDeviceRegister.getUnitId();
+                    Integer pigpenId = eartagDeviceRegister.getPigpenId();
+                    BasePigpen basePigpen = pigpenMapper.selectById(unitId);
+                    BasePigpen basePigpen1 = pigpenMapper.selectById(pigpenId);
+                    String pigpen = "";
+                    if (ObjectUtil.isNotEmpty(basePigpen)){
+                        pigpen += basePigpen.getPigpenName();
+                    }
+                    if (ObjectUtil.isNotEmpty(basePigpen1)){
+                        pigpen += basePigpen1.getPigpenName();
+                    }
+                    //耳标离线:6
+                    int alarmSort = 2;
+                    //耳标:2
+                    int alarmFrom = 1;
+                    //状态:1
+                    int alarmType = 1;
+
+                    //报警
+                    String alarmContent = "离线警报:"+pigpen+"设备号["+deviceCode+"]已离线";
+                    EartagAbnormalAlarm newEartagAbnormalAlarmEntity = new EartagAbnormalAlarm();
+                    newEartagAbnormalAlarmEntity.setFarmCode(farmId);
+                    newEartagAbnormalAlarmEntity.setAddTime(date);
+                    newEartagAbnormalAlarmEntity.setAddDate(date);
+                    newEartagAbnormalAlarmEntity.setAlarmSort(alarmSort);
+                    newEartagAbnormalAlarmEntity.setAlarmType(alarmType);
+                    newEartagAbnormalAlarmEntity.setAlarmFrom(alarmFrom);
+                    newEartagAbnormalAlarmEntity.setContent(alarmContent);
+                    eartagAbnormalAlarmMapper.insert(newEartagAbnormalAlarmEntity);
+                }
+
+            }
+        }
+    }
+
+//    @Scheduled(cron = "59 0/11 * * * ? ")
+//    private void updateEartag() {
+//        String farmId ="330784001";
+//        List<EartagEartagRegister2> eartagEartagRegister2s = eartagEartagRegister2Mapper.selectList(new QueryWrapper<EartagEartagRegister2>().eq("farm_id", farmId).ne("earmark", "311111122220006"));
+//        EartagEartagRegister2 earmark = eartagEartagRegister2Mapper.selectOne(new QueryWrapper<EartagEartagRegister2>().eq("earmark", "311111122220006"));
+//        System.out.println("----start----");
+//        int i = 3;
+//        int x = 7;
+//        Date lastTime = earmark.getLastTime();
+//        for (EartagEartagRegister2 eartagEartagRegister2 : eartagEartagRegister2s) {
+//            DateTime dateTime = DateUtil.offsetMinute(lastTime, -i);
+//            DateTime dateTime1 = DateUtil.offsetSecond(dateTime, -x);
+//            eartagEartagRegister2.setLastTime(dateTime1);
+//            eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
+//           i= i+3;
+//           x = x +5;
+//            EartagData2 eartagData2 = new EartagData2();
+//            eartagData2.setEarTemp1(eartagEartagRegister2.getEarTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
+//            eartagData2.setAct(eartagEartagRegister2.getAct());
+//            eartagData2.setAct1(eartagEartagRegister2.getAct());
+//            eartagData2.setAskDate(eartagEartagRegister2.getLastTime());
+//            eartagData2.setAddTime(eartagEartagRegister2.getLastTime());
+//            eartagData2.setBat(eartagEartagRegister2.getBat());
+//            eartagData2.setEarmark(eartagEartagRegister2.getEarmark());
+//            eartagData2.setDevice(eartagEartagRegister2.getLastDevice());
+//            eartagData2.setEnvTemp1(eartagEartagRegister2.getEnvTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
+//            eartagData2Mapper.insert(eartagData2);
 //        }
-//    }
-//
-////    @Scheduled(cron = "59 0/11 * * * ? ")
-////    private void updateEartag() {
-////        String farmId ="330784001";
-////        List<EartagEartagRegister2> eartagEartagRegister2s = eartagEartagRegister2Mapper.selectList(new QueryWrapper<EartagEartagRegister2>().eq("farm_id", farmId).ne("earmark", "311111122220006"));
-////        EartagEartagRegister2 earmark = eartagEartagRegister2Mapper.selectOne(new QueryWrapper<EartagEartagRegister2>().eq("earmark", "311111122220006"));
-////        System.out.println("----start----");
-////        int i = 3;
-////        int x = 7;
-////        Date lastTime = earmark.getLastTime();
-////        for (EartagEartagRegister2 eartagEartagRegister2 : eartagEartagRegister2s) {
-////            DateTime dateTime = DateUtil.offsetMinute(lastTime, -i);
-////            DateTime dateTime1 = DateUtil.offsetSecond(dateTime, -x);
-////            eartagEartagRegister2.setLastTime(dateTime1);
-////            eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
-////           i= i+3;
-////           x = x +5;
-////            EartagData2 eartagData2 = new EartagData2();
-////            eartagData2.setEarTemp1(eartagEartagRegister2.getEarTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
-////            eartagData2.setAct(eartagEartagRegister2.getAct());
-////            eartagData2.setAct1(eartagEartagRegister2.getAct());
-////            eartagData2.setAskDate(eartagEartagRegister2.getLastTime());
-////            eartagData2.setAddTime(eartagEartagRegister2.getLastTime());
-////            eartagData2.setBat(eartagEartagRegister2.getBat());
-////            eartagData2.setEarmark(eartagEartagRegister2.getEarmark());
-////            eartagData2.setDevice(eartagEartagRegister2.getLastDevice());
-////            eartagData2.setEnvTemp1(eartagEartagRegister2.getEnvTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
-////            eartagData2Mapper.insert(eartagData2);
-////        }
-////
-////        earmark.setLastTime(DateUtil.offsetSecond(new Date(),11));
-////
-////        eartagEartagRegister2Mapper.updateById(earmark);
-////        EartagData2 eartagData2 = new EartagData2();
-////        eartagData2.setEarTemp1(earmark.getEarTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
-////        eartagData2.setAct(earmark.getAct());
-////        eartagData2.setAct1(earmark.getAct());
-////        eartagData2.setAskDate(earmark.getLastTime());
-////        eartagData2.setAddTime(earmark.getLastTime());
-////        eartagData2.setBat(earmark.getBat());
-////        eartagData2.setEarmark(earmark.getEarmark());
-////        eartagData2.setDevice(earmark.getLastDevice());
-////        eartagData2.setEnvTemp1(earmark.getEnvTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
-////        eartagData2Mapper.insert(eartagData2);
 //
-////    }
+//        earmark.setLastTime(DateUtil.offsetSecond(new Date(),11));
 //
-////    @Scheduled(cron = "0 0 0/6 * * ? ")
-//    private void countAssetInEveryMonth() throws ParseException {
-//        //--读取所有农户和采集器
-//        List<BaseFarmer> baseFarmerList = baseFarmerMapper.getFarmer();
-//        //--用采集器读取所有数据计算可售和不可售资源
-//        for (BaseFarmer baseFarmer : baseFarmerList) {
-//            //--计算每个农户的生物资产
-//            _countAssetByFarmer(baseFarmer);
-//        }
+//        eartagEartagRegister2Mapper.updateById(earmark);
+//        EartagData2 eartagData2 = new EartagData2();
+//        eartagData2.setEarTemp1(earmark.getEarTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
+//        eartagData2.setAct(earmark.getAct());
+//        eartagData2.setAct1(earmark.getAct());
+//        eartagData2.setAskDate(earmark.getLastTime());
+//        eartagData2.setAddTime(earmark.getLastTime());
+//        eartagData2.setBat(earmark.getBat());
+//        eartagData2.setEarmark(earmark.getEarmark());
+//        eartagData2.setDevice(earmark.getLastDevice());
+//        eartagData2.setEnvTemp1(earmark.getEnvTemp1()+Float.parseFloat(NumberUtils.getNum(-1,1,1)));
+//        eartagData2Mapper.insert(eartagData2);
+
 //    }
-//
-//    //--
-//    private void _countAssetByFarmer(BaseFarmer baseFarmer) throws ParseException {
-//        //------------------------------------------------------------------------
-//        // 读取采集器.
-//        // 根据采集器读取所有耳标.
-//        // 对读取耳标进行计算可售和非可售,并归到当月.
-//        //------------------------------------------------------------------------
-//
-//        com.huimv.eartag2.common.utils.DateUtil dateUtil = new com.huimv.eartag2.common.utils.DateUtil();
-//        Integer farmerId = baseFarmer.getId();
-//        //--读取采集器
-//        String deviceCode = eartagDeviceRegisterMapper.getDeviceIdByFarmerId(String.valueOf(farmerId));
-//        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
-//        //--读取注册耳标
-//        List<EartagEartagRegister2> eartagEartagRegister2List = eartagEartagRegister2Mapper.getEartagByDeviceCode(deviceCode);
-//        String year = dateUtil.getThisYear();
-//        String month = dateUtil.getThisMonth();
-//        if(eartagEartagRegister2List.size()>0){
-//            //--
-//            List<FarmerDayageWeight> farmerDayageWeightList = farmerDayageWeightMapper.getAllDayageWeight();
-//            BigDecimal availTotalBd = new BigDecimal(0);
-//            BigDecimal unavailTotalBd = new BigDecimal(0);
-//            for (EartagEartagRegister2 eartagEartagRegister2 : eartagEartagRegister2List) {
-//                long diff = todayDate.getTime() - eartagEartagRegister2.getCreateDate().getTime();
-//                long days = diff / (1000 * 60 * 60 * 24);
-//                if (days < 180) {
-//                    for (FarmerDayageWeight farmerDayageWeight : farmerDayageWeightList) {
-//                        if (farmerDayageWeight.getStartDayage() <= days && days <= farmerDayageWeight.getEndDayage()) {
-//                            availTotalBd = availTotalBd.add(farmerDayageWeight.getWeight().multiply(new BigDecimal(pigPrice)).setScale(2, BigDecimal.ROUND_HALF_UP));
-//                            break;
-//                        }
-//                    }
-//                } else if (180 <= days && days < 210) {
-//                    for (FarmerDayageWeight farmerDayageWeight : farmerDayageWeightList) {
-//                        if (farmerDayageWeight.getStartDayage() <= days && days <= farmerDayageWeight.getEndDayage()) {
-//                            unavailTotalBd = unavailTotalBd.add(farmerDayageWeight.getWeight().multiply(new BigDecimal(pigPrice)).setScale(2, BigDecimal.ROUND_HALF_UP));
-//                            break;
-//                        }
-//                    }
-//                }
-//            }
-//            //--保存生物资产
-//            saveFarmerAsset(farmerId, year, month, availTotalBd, unavailTotalBd);
-//        }else{
-//            saveFarmerAsset(farmerId, year, month, new BigDecimal(0), new BigDecimal(0));
-//        }
-//    }
-//
-//    //--保存生物资产
-//    private void saveFarmerAsset(Integer farmerId, String year, String month, BigDecimal availTotalBd, BigDecimal unavailTotalBd) {
-//        //--
-//        FarmerAsset farmerAsset = farmerAssetMapper.getAssetByFarmerIdAndYearAndMonth(farmerId, year, month);
-//        if (farmerAsset == null) {
-//            FarmerAsset farmerAssetEntity = new FarmerAsset();
-//            farmerAssetEntity.setFarmCode(String.valueOf(farmerId));
-//            farmerAssetEntity.setYear(Integer.parseInt(year));
-//            farmerAssetEntity.setMonth(Integer.parseInt(month));
-//            farmerAssetEntity.setAvailAsset(availTotalBd);
-//            farmerAssetEntity.setUnavailAsset(unavailTotalBd);
-//            farmerAssetMapper.insert(farmerAssetEntity);
-//        } else {
-//            farmerAsset.setAvailAsset(availTotalBd);
-//            farmerAsset.setUnavailAsset(unavailTotalBd);
-//            farmerAssetMapper.updateById(farmerAsset);
-//        }
-//    }
-//}
-//
+
+//    @Scheduled(cron = "0 0 0/6 * * ? ")
+    private void countAssetInEveryMonth() throws ParseException {
+        //--读取所有农户和采集器
+        List<BaseFarmer> baseFarmerList = baseFarmerMapper.getFarmer();
+        //--用采集器读取所有数据计算可售和不可售资源
+        for (BaseFarmer baseFarmer : baseFarmerList) {
+            //--计算每个农户的生物资产
+            _countAssetByFarmer(baseFarmer);
+        }
+    }
+
+    //--
+    private void _countAssetByFarmer(BaseFarmer baseFarmer) throws ParseException {
+        //------------------------------------------------------------------------
+        // 读取采集器.
+        // 根据采集器读取所有耳标.
+        // 对读取耳标进行计算可售和非可售,并归到当月.
+        //------------------------------------------------------------------------
+
+        com.huimv.eartag2.common.utils.DateUtil dateUtil = new com.huimv.eartag2.common.utils.DateUtil();
+        Integer farmerId = baseFarmer.getId();
+        //--读取采集器
+        String deviceCode = eartagDeviceRegisterMapper.getDeviceIdByFarmerId(String.valueOf(farmerId));
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        //--读取注册耳标
+        List<EartagEartagRegister2> eartagEartagRegister2List = eartagEartagRegister2Mapper.getEartagByDeviceCode(deviceCode);
+        String year = dateUtil.getThisYear();
+        String month = dateUtil.getThisMonth();
+        if(eartagEartagRegister2List.size()>0){
+            //--
+            List<FarmerDayageWeight> farmerDayageWeightList = farmerDayageWeightMapper.getAllDayageWeight();
+            BigDecimal availTotalBd = new BigDecimal(0);
+            BigDecimal unavailTotalBd = new BigDecimal(0);
+            for (EartagEartagRegister2 eartagEartagRegister2 : eartagEartagRegister2List) {
+                long diff = todayDate.getTime() - eartagEartagRegister2.getCreateDate().getTime();
+                long days = diff / (1000 * 60 * 60 * 24);
+                if (days < 180) {
+                    for (FarmerDayageWeight farmerDayageWeight : farmerDayageWeightList) {
+                        if (farmerDayageWeight.getStartDayage() <= days && days <= farmerDayageWeight.getEndDayage()) {
+                            availTotalBd = availTotalBd.add(farmerDayageWeight.getWeight().multiply(new BigDecimal(pigPrice)).setScale(2, BigDecimal.ROUND_HALF_UP));
+                            break;
+                        }
+                    }
+                } else if (180 <= days && days < 210) {
+                    for (FarmerDayageWeight farmerDayageWeight : farmerDayageWeightList) {
+                        if (farmerDayageWeight.getStartDayage() <= days && days <= farmerDayageWeight.getEndDayage()) {
+                            unavailTotalBd = unavailTotalBd.add(farmerDayageWeight.getWeight().multiply(new BigDecimal(pigPrice)).setScale(2, BigDecimal.ROUND_HALF_UP));
+                            break;
+                        }
+                    }
+                }
+            }
+            //--保存生物资产
+            saveFarmerAsset(farmerId, year, month, availTotalBd, unavailTotalBd);
+        }else{
+            saveFarmerAsset(farmerId, year, month, new BigDecimal(0), new BigDecimal(0));
+        }
+    }
+
+    //--保存生物资产
+    private void saveFarmerAsset(Integer farmerId, String year, String month, BigDecimal availTotalBd, BigDecimal unavailTotalBd) {
+        //--
+        FarmerAsset farmerAsset = farmerAssetMapper.getAssetByFarmerIdAndYearAndMonth(farmerId, year, month);
+        if (farmerAsset == null) {
+            FarmerAsset farmerAssetEntity = new FarmerAsset();
+            farmerAssetEntity.setFarmCode(String.valueOf(farmerId));
+            farmerAssetEntity.setYear(Integer.parseInt(year));
+            farmerAssetEntity.setMonth(Integer.parseInt(month));
+            farmerAssetEntity.setAvailAsset(availTotalBd);
+            farmerAssetEntity.setUnavailAsset(unavailTotalBd);
+            farmerAssetMapper.insert(farmerAssetEntity);
+        } else {
+            farmerAsset.setAvailAsset(availTotalBd);
+            farmerAsset.setUnavailAsset(unavailTotalBd);
+            farmerAssetMapper.updateById(farmerAsset);
+        }
+    }*/
+}
+

+ 20 - 20
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagDataService.java

@@ -1,20 +1,20 @@
-package com.huimv.eartag2.manage2.service;
-
-import com.huimv.eartag2.manage2.pojo.EartagData;
-import com.huimv.eartag2.common.utils.Result;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.Map;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author zn
- * @since 2022-07-18
- */
-public interface EartagDataService extends IService<EartagData> {
-
-    Result getEnvByTime(Map<String, String> map);
-}
+//package com.huimv.eartag2.manage2.service;
+//
+//import com.huimv.eartag2.manage2.pojo.EartagData;
+//import com.huimv.eartag2.common.utils.Result;
+//import com.baomidou.mybatisplus.extension.service.IService;
+//
+//import java.util.Map;
+//
+///**
+// * <p>
+// *  服务类
+// * </p>
+// *
+// * @author zn
+// * @since 2022-07-18
+// */
+//public interface EartagDataService extends IService<EartagData> {
+//
+//    Result getEnvByTime(Map<String, String> map);
+//}

+ 6 - 4
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartagData2Service.java

@@ -1,6 +1,7 @@
 package com.huimv.eartag2.manage2.service;
 
-import com.huimv.eartag2.manage2.pojo.EartagData2;
+
+import com.huimv.eartag2.manage2.pojo.EartagData;
 import com.huimv.eartag2.common.utils.Result;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -8,6 +9,7 @@ import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
+
 /**
  * <p>
  *  服务类
@@ -16,9 +18,8 @@ import java.util.Map;
  * @author author
  * @since 2022-07-29
  */
-public interface IEartagData2Service extends IService<EartagData2> {
-
-    List<EartagData2> getEartagData(String earmark) throws ParseException;
+public interface IEartagData2Service extends IService<EartagData> {
+    List<EartagData> getEartagData(String earmark) throws ParseException;
 
     Result getEnvByTime(Map<String, String> map);
 
@@ -35,4 +36,5 @@ public interface IEartagData2Service extends IService<EartagData2> {
     Result getEnvByTimePanan(Map<String, String> map);
 
     Result getEnvLast(Map<String, String> map);
+
 }

+ 16 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartarFarmAllStatusService.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.service;
+
+import com.huimv.eartag2.manage2.pojo.EartarFarmAllStatus;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-31
+ */
+public interface IEartarFarmAllStatusService extends IService<EartarFarmAllStatus> {
+
+}

+ 25 - 53
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagData2ServiceImpl.java

@@ -4,7 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.huimv.eartag2.manage2.pojo.EartagData2;
+import com.huimv.eartag2.manage2.pojo.EartagData;
 import com.huimv.eartag2.manage2.pojo.pojovo.EartagDataDto;
 import com.huimv.eartag2.manage2.pojo.pojovo.QingShanData;
 import com.huimv.eartag2.common.utils.Result;
@@ -32,7 +32,7 @@ import java.util.*;
  * @since 2022-07-29
  */
 @Service
-public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, EartagData2> implements IEartagData2Service {
+public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, EartagData> implements IEartagData2Service {
 
     @Resource
     private EartagData2Mapper eartagData2Mapper;
@@ -44,18 +44,18 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
     private SysAccountMultilevelMapper sysAccountMultilevelMapper;
 
     @Override
-    public List<EartagData2> getEartagData(String earmark) throws ParseException {
-        QueryWrapper<EartagData2> queryWrapper = new QueryWrapper<>();
+    public List<EartagData> getEartagData(String earmark) throws ParseException {
+        QueryWrapper<EartagData> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("earmark", earmark);
-        List<EartagData2> eartagData2s = eartagData2Mapper.selectList(queryWrapper);
+        List<EartagData> eartagData2s = eartagData2Mapper.selectList(queryWrapper);
         //查询出来五分钟之内的数据;
         Calendar calendar = Calendar.getInstance();
         //1-当前时间
         Long currentTimestamps = System.currentTimeMillis();
         //存五秒内的数据
-        ArrayList<EartagData2> eartagData2s1 = new ArrayList<>();
+        ArrayList<EartagData> eartagData2s1 = new ArrayList<>();
         if (null != eartagData2s && eartagData2s.size() > 0) {
-            for (EartagData2 eartagData2 : eartagData2s) {
+            for (EartagData eartagData2 : eartagData2s) {
                 String addTime = eartagData2.getAddTime() + "";
                 calendar.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(addTime));
                 long timeInMillis = calendar.getTimeInMillis();
@@ -72,33 +72,22 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
         String earmark = map.get("earmark");
         String startDate = map.get("startDate");
         String endDate = map.get("endDate");
-        String userId = map.get("userId");
+        String farmId = map.get("farmId");
         Date now = new Date();
-        SysAccountMultilevel user = sysAccountMultilevelMapper.selectById(userId);
         if (StringUtils.isBlank(earmark)) {
             return new Result(10001, "请选择耳标", false);
         }
-        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        QueryWrapper<EartagData> wrapper = new QueryWrapper<>();
         wrapper.eq("earmark", earmark);
+        wrapper.eq("farm_id", farmId);
         if (StringUtils.isBlank(startDate)) {
             wrapper.ge("add_time", DateUtil.beginOfDay(now));
         } else {
             wrapper.between("add_time", startDate, endDate);
         }
         wrapper.orderByAsc("add_time");
-        List<EartagData2> list = this.list(wrapper);
-        //用户数据
-//        if (user.getIsUser() == 0) {
-//            for (EartagData2 eartagData2 : list) {
-//                Float earTemp1 = eartagData2.getEarTemp1();
-//                if (earTemp1 > 40) {
-//                    eartagData2.setEarTemp1(40F);
-//                }
-//                if (earTemp1 < 30) {
-//                    eartagData2.setEarTemp1(30F);
-//                }
-//            }
-//        }
+
+        List<EartagData> list = eartagData2Mapper.selectList(wrapper);
         return new Result(ResultCode.SUCCESS, list);
     }
 
@@ -113,7 +102,7 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
         if (StringUtils.isBlank(earmark)) {
             return new Result(10001, "请选择耳标", false);
         }
-        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        QueryWrapper<EartagData> wrapper = new QueryWrapper<>();
         wrapper.eq("earmark", earmark);
         if (StringUtils.isBlank(startDate)) {
             wrapper.ge("add_time", DateUtil.beginOfDay(now));
@@ -121,21 +110,7 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
             wrapper.between("add_time", startDate, endDate);
         }
         wrapper.orderByAsc("add_time");
-        List<EartagData2> list = this.list(wrapper);
-        //用户数据
-//        if (user.getIsUser() == 0) {
-//            for (EartagData2 eartagData2 : list) {
-//                Float earTemp1 = eartagData2.getEarTemp1();
-//                if (earTemp1 > 40) {
-//                    eartagData2.setEarTemp1(40F);
-//                }
-//
-//                if (earTemp1 < 30) {
-//                    eartagData2.setEarTemp1(30F);
-//                }
-//
-//            }
-//        }
+        List<EartagData> list = this.list(wrapper);
         return new Result(ResultCode.SUCCESS, list);
     }
 
@@ -146,20 +121,15 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
         String startDate = map.get("startDate");
         String endDate = map.get("endDate");
 //        List<EartagData2> eartagData2List = eartagData2Mapper.getEartagDataByEarmark(earmark, recordCount);
-        QueryWrapper<EartagData2> queryWrapper = new QueryWrapper<>();
+        QueryWrapper<EartagData> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("earmark",earmark);
-        queryWrapper.between("add_time",startDate +" 00:00:00",endDate+" 23:59:59");
+        queryWrapper.between("add_time",startDate,endDate);
         queryWrapper.orderByDesc("add_time");
-        List<EartagData2> eartagData2List = eartagData2Mapper.selectList(queryWrapper);
-
+        List<EartagData> eartagData2List = eartagData2Mapper.selectList(queryWrapper);
         if (eartagData2List.size() == 0) {
-            boolean earmark1 = eartagEartagRegister2Mapper.exists(new QueryWrapper<EartagEartagRegister2>().eq("earmark", earmark));
-            if (earmark1){
-                return new Result(ResultCode.SUCCESS, new ArrayList());
-            }
             return new Result(10009, "数据为空", false);
         } else {
-            List<EartagData2> newList = new ArrayList();
+            List<EartagData> newList = new ArrayList();
             for (int a = eartagData2List.size() - 1; a >= 0; a--) {
                 newList.add(eartagData2List.get(a));
             }
@@ -170,7 +140,7 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
     @Override
     public Result getTemp(Map<String, String> map) {
         String earmark = map.get("earmark");
-        return  new Result(ResultCode.SUCCESS,this.list(new QueryWrapper<EartagData2>().eq("earmark",  earmark).ge("ask_time", DateUtil.beginOfDay(new Date()))));
+        return  new Result(ResultCode.SUCCESS,this.list(new QueryWrapper<EartagData>().eq("earmark",  earmark).ge("ask_time", DateUtil.beginOfDay(new Date()))));
 
     }
 
@@ -178,7 +148,7 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
     public Result getAct(Map<String, String> map) {
         Date date = new Date();
         String earmark = map.get("earmark");
-        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        QueryWrapper<EartagData> wrapper = new QueryWrapper<>();
         wrapper.eq("earmark",earmark);
         wrapper.between("ask_time",DateUtil.beginOfDay(DateUtil.offsetDay(date,-7)),date);
         wrapper.groupBy("`time`");
@@ -224,7 +194,7 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
         if (StringUtils.isBlank(earmark)) {
             return new Result(10001, "请选择耳标", false);
         }
-        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        QueryWrapper<EartagData> wrapper = new QueryWrapper<>();
         wrapper.eq("earmark", earmark);
         if (StringUtils.isBlank(startDate)) {
             wrapper.ge("add_time", DateUtil.beginOfDay(now));
@@ -232,7 +202,7 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
             wrapper.between("add_time", startDate, endDate);
         }
         wrapper.orderByAsc("add_time");
-        List<EartagData2> list = this.list(wrapper);
+        List<EartagData> list = this.list(wrapper);
 
         return new Result(ResultCode.SUCCESS, list);
     }
@@ -247,7 +217,9 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
         if (StringUtils.isBlank(quantity)){
             quantity = "50";
         }
-        List<EartagData2> eartagData2List = this.list(new QueryWrapper<EartagData2>().eq("earmark", earmark).orderByDesc("add_time").last(String.format("limit %s", quantity)));
+        List<EartagData> eartagData2List = this.list(new QueryWrapper<EartagData>().eq("earmark", earmark).orderByDesc("add_time").last(String.format("limit %s", quantity)));
         return new Result(ResultCode.SUCCESS,eartagData2List);
     }
+
+
 }

+ 0 - 56
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagDataServiceImpl.java

@@ -1,56 +0,0 @@
-package com.huimv.eartag2.manage2.service.impl;
-
-import cn.hutool.core.date.DateUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.huimv.eartag2.manage2.pojo.EartagData;
-import com.huimv.eartag2.common.utils.Result;
-import com.huimv.eartag2.common.utils.ResultCode;
-import com.huimv.eartag2.manage2.mapper.EartagDataMapper;
-import com.huimv.eartag2.manage2.service.EartagDataService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author zn
- * @since 2022-07-18
- */
-@Service
-public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagData> implements EartagDataService {
-
-    @Override
-    public Result getEnvByTime(Map<String, String> map) {
-        String earmark = map.get("earmark");
-        String startDate = map.get("startDate");
-        String endDate = map.get("endDate");
-        Date now = new Date();
-
-        if (StringUtils.isBlank(earmark)){
-            return new Result(10001,"请选择耳标",false);
-        }
-        QueryWrapper<EartagData> wrapper = new QueryWrapper<>();
-        wrapper.eq("earmark",earmark);
-        if (StringUtils.isBlank(startDate)){
-//            wrapper.ge("ask_time", DateUtil.beginOfDay(now));
-            wrapper.ge("add_time", DateUtil.beginOfDay(now));
-        }else {
-//            wrapper.between("ask_time",startDate,endDate);
-            wrapper.between("add_time",startDate,endDate);
-        }
-
-        wrapper.orderByAsc("add_time");
-        List<EartagData> list = this.list(wrapper);
-
-        return new Result(ResultCode.SUCCESS,list);
-    }
-
-
-}

+ 6 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagDeviceRegisterServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.eartag2.manage2.mapper.BaseFarmMapper;
 import com.huimv.eartag2.manage2.pojo.BaseFarmer;
 import com.huimv.eartag2.manage2.pojo.EartagDeviceRegister;
 import com.huimv.eartag2.manage2.utils.IDUtil;
@@ -45,6 +46,8 @@ public class EartagDeviceRegisterServiceImpl extends ServiceImpl<EartagDeviceReg
     @Resource
     private BaseFarmerMapper baseFarmerMapper;
     @Resource
+    private BaseFarmMapper baseFarmMapper;
+    @Resource
     private BasePigpenMapper basePigpenMapper;
     @Autowired
     private ResultUtil resultUtil;
@@ -224,6 +227,7 @@ public class EartagDeviceRegisterServiceImpl extends ServiceImpl<EartagDeviceReg
     @Override
     public Result add(Map<String, String> mapList) {
         String deviceType = mapList.get("deviceType");
+//        String farmName = baseFarmMapper.selectById(mapList.get("farmId")).getFarmName();
         if ("1".equals(deviceType)){
             //采集器
             String farmId = mapList.get("farmId");
@@ -237,6 +241,7 @@ public class EartagDeviceRegisterServiceImpl extends ServiceImpl<EartagDeviceReg
             System.out.println(deviceCode);
             EartagDeviceRegister eartagDeviceRegister = new EartagDeviceRegister();
             eartagDeviceRegister.setChipId(chipId);
+//            eartagDeviceRegister.setFarmerName(farmName);
             eartagDeviceRegister.setDeviceAlias(deviceAlias);
             eartagDeviceRegister.setDeviceCode(deviceCode);
             eartagDeviceRegister.setActiveStatus(Integer.valueOf(activeStatus));
@@ -278,6 +283,7 @@ public class EartagDeviceRegisterServiceImpl extends ServiceImpl<EartagDeviceReg
             String deviceCode = (String)getDeviceCode(farmId).getData();
             EartagDeviceRegister eartagDeviceRegister = new EartagDeviceRegister();
             eartagDeviceRegister.setFarmId(farmId);
+//            eartagDeviceRegister.setFarmName(farmName);
             eartagDeviceRegister.setDeviceCode(deviceCode);
             eartagDeviceRegister.setDeviceType(Integer.parseInt(deviceType));
             eartagDeviceRegister.setRemark(remark);

+ 2 - 27
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagEartagRegister2ServiceImpl.java

@@ -54,7 +54,6 @@ public class EartagEartagRegister2ServiceImpl extends ServiceImpl<EartagEartagRe
         String farmId = params.get("farmId");
         String earmark = params.get("earmark");
         String liveStatus = params.get("liveStatus");
-        String userId = params.get("userId");
         if (StringUtils.isBlank(pageNo)){
             pageNo="1";
         }
@@ -373,31 +372,7 @@ public class EartagEartagRegister2ServiceImpl extends ServiceImpl<EartagEartagRe
         //大堰河牧场过滤
         Page<EartagEartagRegister2> page = this.page(new Page<>(Long.parseLong(pageNo), Long.parseLong(pageSize)), wrapper);
 
-            for (EartagEartagRegister2 record : page.getRecords()) {
-                String earmark1 = record.getEarmark();
-                EartagData2 eartagData2 = eartagData2Mapper.selectOne(new QueryWrapper<EartagData2>().eq("earmark",earmark1).orderByDesc("id").last("limit 1"));
-//                EartagData2 eartagData2Temp = eartagData2Mapper.selectOne(new QueryWrapper<EartagData2>().eq("earmark",earmark1).ge("ask_time",DateUtil.beginOfDay(new Date())).orderByDesc("ear_temp1").last("limit 1"));
-//                if (ObjectUtil.isNotEmpty(eartagData2Temp)){
-//                    record.setEarTemp1(eartagData2Temp.getEarTemp1());
-//                }
-                if (ObjectUtil.isNotEmpty(eartagData2)){
-                    record.setAct(eartagData2.getAct1());
-                }
-                Float earTemp1 = record.getEarTemp1();
-                Long act = record.getAct();
-                if (earTemp1 >40){
-                    record.setEarTemp1(40F);
-                }
-                if (earTemp1 <30){
-                    record.setEarTemp1(30F);
-                }
-                if (act >300){
-                    record.setAct(300L);
-                }
-                if (act<0){
-                    record.setAct(0L);
-                }
-            }
+
 
         Map map = new HashMap();
         long allCount = this.count(wrapper);
@@ -433,7 +408,7 @@ public class EartagEartagRegister2ServiceImpl extends ServiceImpl<EartagEartagRe
             return new Result(10001,"该角色未授权",false);
         }
         eartagEartagRegister2Mapper.delete(new QueryWrapper<EartagEartagRegister2>().eq("earmark",earmark));
-        eartagData2Mapper.delete(new QueryWrapper<EartagData2>().eq("earmark",earmark));
+        eartagData2Mapper.delete(new QueryWrapper<EartagData>().eq("earmark",earmark));
         return new Result(10000,"删除成功",true);
     }
 

+ 2 - 2
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagEartagRegisterServiceImpl.java

@@ -5,13 +5,13 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.eartag2.manage2.mapper.EartagData2Mapper;
 import com.huimv.eartag2.manage2.pojo.EartagData;
 import com.huimv.eartag2.manage2.pojo.EartagDeviceRegister;
 import com.huimv.eartag2.manage2.pojo.EartagEartagRegister;
 import com.huimv.eartag2.manage2.pojo.pojovo.EartagEartagRegisterVo;
 import com.huimv.eartag2.common.utils.Result;
 import com.huimv.eartag2.common.utils.ResultCode;
-import com.huimv.eartag2.manage2.mapper.EartagDataMapper;
 import com.huimv.eartag2.manage2.mapper.EartagDeviceRegisterMapper;
 import com.huimv.eartag2.manage2.mapper.EartagEartagRegisterMapper;
 import com.huimv.eartag2.manage2.service.IEartagEartagRegisterService;
@@ -39,7 +39,7 @@ public class EartagEartagRegisterServiceImpl extends ServiceImpl<EartagEartagReg
     private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
 
     @Autowired
-    private EartagDataMapper eartagDataMapper;
+    private EartagData2Mapper eartagDataMapper;
 
 
     @Override

+ 136 - 15
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagServiceImpl.java

@@ -1,23 +1,20 @@
 package com.huimv.eartag2.manage2.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.huimv.eartag2.manage2.pojo.BasePigpen;
-import com.huimv.eartag2.manage2.pojo.EartagOnlineStatus;
-import com.huimv.eartag2.manage2.pojo.SysBaseConfig;
+import com.huimv.eartag2.manage2.mapper.*;
+import com.huimv.eartag2.manage2.pojo.*;
 import com.huimv.eartag2.common.dao.entity.EartagAbnormalAlarmEntity;
 import com.huimv.eartag2.common.dao.entity.EartagAbnormalCountEntity;
 import com.huimv.eartag2.common.dao.repo.EartagAbnormalAlarmEntityRepo;
 import com.huimv.eartag2.common.dao.repo.EartagAbnormalCountEntityRepo;
-import com.huimv.eartag2.common.utils.DateUtil;
-import com.huimv.eartag2.manage2.mapper.BasePigpenMapper;
-import com.huimv.eartag2.manage2.mapper.EartagEartagRegister2Mapper;
-import com.huimv.eartag2.manage2.mapper.EartagOnlineStatusMapper;
-import com.huimv.eartag2.manage2.pojo.EartagEartagRegister2;
 import com.huimv.eartag2.manage2.service.IEartagService;
 import lombok.extern.slf4j.Slf4j;
+import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.stereotype.Service;
@@ -42,13 +39,129 @@ public class EartagServiceImpl implements IEartagService {
     @Autowired
     private EartagEartagRegister2Mapper eartagEartagRegister2Mapper;
     @Autowired
-    private com.huimv.eartag2.manage2.mapper.SysBaseConfigMapper SysBaseConfigMapper;
+    private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
     @Autowired
-    private EartagOnlineStatusMapper eartagOnlineStatusMapper;
+    private BaseFarmMapper baseFarmMapper;
+    @Autowired
+    private SysBaseConfigMapper sysBaseConfigMapper;
+
+    @Autowired
+    private EartarFarmAllStatusMapper eartarFarmAllStatusMapper;
 
     @Override
-    public void updateEartagLiveStatusAndCount() throws ParseException {
-        // {}
+    public void updateEartagLiveStatusAndCount()   {
+        List<BaseFarm> baseFarms = baseFarmMapper.selectList(null);
+        Integer eartagOff = 120;
+        Integer deviceOff = 1440;
+        Date now = new Date();
+        for (BaseFarm baseFarm : baseFarms) {
+            String farmCode = baseFarm.getFarmCode();
+            SysBaseConfig baseConfig = sysBaseConfigMapper.selectOne(new QueryWrapper<SysBaseConfig>().eq("config_key", "farmCode").eq("config_value", farmCode));
+            if (ObjectUtil.isNotEmpty(baseConfig)){
+                SysBaseConfig eartagOffConfig = sysBaseConfigMapper.selectOne(new QueryWrapper<SysBaseConfig>().eq("config_key", "eartagOfflineTime").eq("row_id", baseConfig.getRowId()));
+                SysBaseConfig deviceOffConfig = sysBaseConfigMapper.selectOne(new QueryWrapper<SysBaseConfig>().eq("config_key", "deviceOfflineTime").eq("row_id", baseConfig.getRowId()));
+                if (ObjectUtil.isNotEmpty(eartagOffConfig)){
+                    eartagOff = Integer.parseInt(eartagOffConfig.getConfigValue());;
+                }
+                if (ObjectUtil.isNotEmpty(deviceOffConfig)){
+                    deviceOff = Integer.parseInt(deviceOffConfig.getConfigValue());;
+                }
+            }
+            DateTime eartagOffTime = DateUtil.offsetMinute(now, -eartagOff);
+            DateTime deviceOffTime = DateUtil.offsetMinute(now, -deviceOff);
+            List<EartagEartagRegister2> eartagEartagRegister2s = eartagEartagRegister2Mapper.selectList(new QueryWrapper<EartagEartagRegister2>().eq("farm_id", farmCode).eq("live_status", 1).le("active_time", eartagOffTime));
+            List<EartagDeviceRegister> eartagDeviceRegisters = eartagDeviceRegisterMapper.selectList(new QueryWrapper<EartagDeviceRegister>().eq("farm_id", farmCode).eq("active_status", 1).le("active_time", deviceOffTime));
+            for (EartagEartagRegister2 eartagEartagRegister2 : eartagEartagRegister2s) {
+                //生成报警,并且设置为离线状态
+
+                String alarmContent = "离线警报:" + eartagEartagRegister2.getPigpenName() + "耳标号[" + eartagEartagRegister2.getEarmark() + "]已离线";
+                EartagAbnormalAlarmEntity newEartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+                newEartagAbnormalAlarmEntity.setFarmCode(farmCode);
+
+                newEartagAbnormalAlarmEntity.setAddTime(now);
+                newEartagAbnormalAlarmEntity.setAddDate(now);
+                newEartagAbnormalAlarmEntity.setAlarmSort(6);
+                newEartagAbnormalAlarmEntity.setAlarmType(1);
+                newEartagAbnormalAlarmEntity.setAlarmFrom(2);
+                newEartagAbnormalAlarmEntity.setContent(alarmContent);
+                eartagAbnormalAlarmEntityRepo.saveAndFlush(newEartagAbnormalAlarmEntity);
+
+                eartagEartagRegister2.setActiveStatus(0);
+                eartagEartagRegister2.setLiveStatus(0);
+                eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
+            }
+            for (EartagDeviceRegister eartagDeviceRegister : eartagDeviceRegisters) {
+                //生成报警,并且设置为离线状态
+                String alarmContent = "离线警报:采集器[" + eartagDeviceRegister.getDeviceCode() + "]已离线";
+                EartagAbnormalAlarmEntity newEartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+                newEartagAbnormalAlarmEntity.setFarmCode(farmCode);
+
+                newEartagAbnormalAlarmEntity.setAddTime(now);
+                newEartagAbnormalAlarmEntity.setAddDate(now);
+                newEartagAbnormalAlarmEntity.setAlarmSort(6);
+                newEartagAbnormalAlarmEntity.setAlarmType(2);
+                newEartagAbnormalAlarmEntity.setAlarmFrom(1);
+                newEartagAbnormalAlarmEntity.setContent(alarmContent);
+
+                eartagDeviceRegister.setActiveStatus(0);
+                eartagDeviceRegister.setDeviceStatus(0);
+                eartagDeviceRegisterMapper.updateById(eartagDeviceRegister);
+                eartagAbnormalAlarmEntityRepo.saveAndFlush(newEartagAbnormalAlarmEntity);
+            }
+
+
+            EartarFarmAllStatus eartarFarmAllStatus = eartarFarmAllStatusMapper.selectOne(new QueryWrapper<EartarFarmAllStatus>().ge("update_time", DateUtil.beginOfDay(now)).eq("farm_id", farmCode));
+            QueryWrapper<EartagDeviceRegister> deviceWapper = new QueryWrapper<>();
+            QueryWrapper<EartagEartagRegister2> eartagWapper = new QueryWrapper<>();
+
+            deviceWapper.eq("farm_id",farmCode);
+            eartagWapper.eq("farm_id",farmCode);
+            Long allDevice = eartagDeviceRegisterMapper.selectCount(deviceWapper);
+            Long allEartag = eartagEartagRegister2Mapper.selectCount(eartagWapper);
+            deviceWapper.eq("active_status",1);
+            eartagWapper.eq("live_status",1);
+            Long onDevice = eartagDeviceRegisterMapper.selectCount(deviceWapper);
+            Long onEartag = eartagEartagRegister2Mapper.selectCount(eartagWapper);
+
+            if (ObjectUtil.isEmpty(eartarFarmAllStatus)){
+                eartarFarmAllStatus =  new EartarFarmAllStatus();
+                //计算设备状态并更新缓存cache(在线数+1,离线数-1,计算设备在线率)
+                eartarFarmAllStatus.setDeviceTotal(allDevice.intValue());
+                eartarFarmAllStatus.setDeviceOnline(onDevice.intValue());
+                eartarFarmAllStatus.setDeviceOffline((allDevice.intValue()-onDevice.intValue()));
+                eartarFarmAllStatus.setDeviceRate(calculatePercentage(onDevice,allDevice));
+                eartarFarmAllStatus.setDeviceCancel(0);
+                eartarFarmAllStatus.setEartagTotal(allEartag.intValue());
+                eartarFarmAllStatus.setFarmId(farmCode);
+                eartarFarmAllStatus.setCreateDate(now);
+                eartarFarmAllStatus.setEartagOnline(onEartag.intValue());
+                eartarFarmAllStatus.setEartagRate(calculatePercentage(onDevice,allDevice));
+                eartarFarmAllStatus.setUpdateTime(now);
+                //{同步更新牧场总状态缓存相关字段}
+                eartarFarmAllStatusMapper.insert(eartarFarmAllStatus);
+            }else {
+                //计算设备状态并更新缓存cache(在线数+1,离线数-1,计算设备在线率)
+                eartarFarmAllStatus.setDeviceTotal(allDevice.intValue());
+                eartarFarmAllStatus.setDeviceOnline(onDevice.intValue());
+                eartarFarmAllStatus.setDeviceOffline((allDevice.intValue()-onDevice.intValue()));
+                eartarFarmAllStatus.setDeviceRate(calculatePercentage(onDevice,allDevice));
+                eartarFarmAllStatus.setDeviceCancel(0);
+                eartarFarmAllStatus.setEartagTotal(allEartag.intValue());
+                eartarFarmAllStatus.setEartagOnline(onEartag.intValue());
+                eartarFarmAllStatus.setEartagRate(calculatePercentage(onDevice,allDevice));
+                eartarFarmAllStatus.setUpdateTime(now);
+                //{同步更新牧场总状态缓存相关字段}
+                eartarFarmAllStatusMapper.updateById(eartarFarmAllStatus);
+
+            }
+        }
+
+
+
+
+
+
+      /*  // {}
         List<BasePigpen> basePigpenList = getUnitByPigpen();
         System.out.println("basePigpenList.size=" + basePigpenList.size());
         if (basePigpenList.size() == 0) {
@@ -159,10 +272,18 @@ public class EartagServiceImpl implements IEartagService {
                 //添加异常报警信息
                 saveEartagOfflineAlarm(offlineJa);
             }
-            }
+            }*/
 
 
     }
+    public static double calculatePercentage(double value1, double value2) {
+        if (value2 == 0) {
+            return 0.0F;
+        } else {
+            return  (value1 / value2) * 100 ;
+//            return String.format("%.2f%%", percentage);
+        }
+    }
     /*@Override
     public void updateEartagLiveStatusAndCount() throws ParseException {
         // {}
@@ -267,7 +388,7 @@ public class EartagServiceImpl implements IEartagService {
     private EartagAbnormalCountEntityRepo eartagAbnormalCountEntityRepo;
 
     //添加异常报警信息
-    public void saveEartagOfflineAlarm(JSONArray offlineJa) throws ParseException {
+  /*  public void saveEartagOfflineAlarm(JSONArray offlineJa) throws ParseException {
         String todayDateText = new DateUtil().getTodayDateText();
         java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
         Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
@@ -302,7 +423,7 @@ public class EartagServiceImpl implements IEartagService {
         }
         //保存耳标警报次数
         saveEartagOfflineCount(farmCode, offlineTimes, todayDate, nowTimestamp);
-    }
+    }*/
 
     //保存耳标警报次数
     private void saveEartagOfflineCount(String farmCode, int offlineTimes, java.sql.Date todayDate, Timestamp nowTimestamp) {

+ 20 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartarFarmAllStatusServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.manage2.service.impl;
+
+import com.huimv.eartag2.manage2.pojo.EartarFarmAllStatus;
+import com.huimv.eartag2.manage2.mapper.EartarFarmAllStatusMapper;
+import com.huimv.eartag2.manage2.service.IEartarFarmAllStatusService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-31
+ */
+@Service
+public class EartarFarmAllStatusServiceImpl extends ServiceImpl<EartarFarmAllStatusMapper, EartarFarmAllStatus> implements IEartarFarmAllStatusService {
+
+}

+ 10 - 2
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/SysBaseConfigServiceImpl.java

@@ -1,8 +1,10 @@
 package com.huimv.eartag2.manage2.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.manage2.pojo.BaseFarm;
 import com.huimv.eartag2.manage2.pojo.EartagDeviceRegister;
 import com.huimv.eartag2.manage2.pojo.SysBaseConfig;
@@ -18,6 +20,7 @@ import com.huimv.eartag2.manage2.vo.SysBaseConfigVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -48,6 +51,8 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
     private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
     @Autowired
     private RestTemplate restTemplate;
+    @Autowired
+    private RedisTemplate redisTemplate;
 
     @Override
     public Result add(List<Map<String, String>> mapList) {
@@ -327,10 +332,11 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
         wrapper.eq("config_key","eartagMaxTem");
         wrapper.eq("row_id",rowId);
         SysBaseConfig eartagMaxTemSys = sysBaseConfigMapper.selectOne(wrapper);
-
+        String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmId;
         if (ObjectUtil.isNotEmpty(eartagMaxTemSys)){
             eartagMaxTemSys.setConfigValue(eartagMaxTem);
             sysBaseConfigMapper.updateById(eartagMaxTemSys);
+
         }else {
             SysBaseConfig newBaseConfig = new SysBaseConfig();
             newBaseConfig.setConfigKey("eartagMaxTem");
@@ -392,13 +398,15 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
             newBaseConfig.setRowId(rowId);
             sysBaseConfigMapper.insert(newBaseConfig);
         }
+//        redisTemplate.delete(hashKey);
+        redisTemplate.opsForHash().put(hashKey,"eartagMaxTem",eartagMaxTem);
+        redisTemplate.opsForHash().put(hashKey,"eartagMinTem",eartagMinTem);
 
         return new Result(10000,"修改成功",true);
 
     }
 
 
-
     private SysBaseConfigVo convertSysBaseConfigVo(List<SysBaseConfig> list){
         Map<String, String> map = list.stream().collect(Collectors.toMap(SysBaseConfig::getConfigKey, SysBaseConfig::getConfigValue,(item1,item2) ->item1));
         SysBaseConfigVo sysBaseConfigVo = new SysBaseConfigVo();

+ 2 - 2
huimv-eartag2-manage2/src/main/resources/application.properties

@@ -1,7 +1,7 @@
 #spring.profiles.active=dev2
 #spring.profiles.active=prod3
-spring.profiles.active=prod
-#spring.profiles.active=prod2
+#spring.profiles.active=prod
+spring.profiles.active=prod2
 
 # mysql:/cache:
 device.online.access_mode=mysql

+ 2 - 2
huimv-eartag2-manage2/src/main/resources/bootstrap.yml

@@ -7,8 +7,8 @@ spring:
     nacos:
       config:
         # 配置中心的地址
-       # server-addr: 47.98.40.154:8848
-        server-addr: 127.0.0.1:8848
+        server-addr: 47.98.40.154:8848
+#        server-addr: 127.0.0.1:8848
         # 配置文件prefix
         prefix: ${spring.application.name}
         # 配置文件的格式

+ 22 - 0
huimv-eartag2-manage2/src/main/resources/mapper/EartarFarmAllStatusMapper.xml

@@ -0,0 +1,22 @@
+<?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.huimv.eartag2.manage2.mapper.EartarFarmAllStatusMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.EartarFarmAllStatus">
+        <id column="id" property="id" />
+        <result column="device_total" property="deviceTotal" />
+        <result column="device_online" property="deviceOnline" />
+        <result column="device_offline" property="deviceOffline" />
+        <result column="device_rate" property="deviceRate" />
+        <result column="device_cancel" property="deviceCancel" />
+        <result column="eartag_total" property="eartagTotal" />
+        <result column="eartag_online" property="eartagOnline" />
+        <result column="eartag_rate" property="eartagRate" />
+        <result column="farm_id" property="farmId" />
+        <result column="update_time" property="updateTime" />
+        <result column="create_date" property="createDate" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+</mapper>

+ 2 - 0
huimv-eartag2-manage2/src/test/java/com/huimv/eartag2/manange2/service/IEartagServiceTest.java

@@ -1,5 +1,6 @@
 package com.huimv.eartag2.manange2.service;
 
+import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.manage2.service.FarmerAssetService;
 import com.huimv.eartag2.manage2.service.IEartagService;
 import com.huimv.eartag2.common.utils.DateUtil;
@@ -7,6 +8,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.text.ParseException;