Newspaper 1 年之前
父節點
當前提交
3d3deb569a

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

@@ -71,6 +71,12 @@ public class Const {
     public final static String EXCHANGE_COUNT_ACT_HOUR = "direct.countActHour.exchange";
     public final static String ROUTING_KEY_COUNT_ACT_HOUR = "direct.countActHour.routeKey";
 
+    // -------------------------- 保存耳标流水数据 -------------------------- //
+    public final static String QUEUE_EARTAG_FLOW = "direct.eartagFlow.queue";
+    public final static String EXCHANGE_EARTAG_FLOW = "direct.eartagFlow.exchange";
+    public final static String ROUTING_KEY_EARTAG_FLOW = "direct.eartagFlow.routeKey";
+
+
     // -------------------------- 更新设备注册信息 -------------------------- //
     public final static String QUEUE_DEVICE_REGIST = "direct.deviceRegist.queue";
     public final static String EXCHANGE_DEVICE_REGIST = "direct.deviceRegist.exchange";

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

@@ -72,6 +72,20 @@ public class TopicRabbitMQConfig {
         return BindingBuilder.bind(syncCountActHourQueue()).to(syncCountActHourExchange()).with(Const.ROUTING_KEY_COUNT_ACT_HOUR);
     }
 
+    @Bean
+    public Queue eartagFlowQueue() {
+        return new Queue(Const.QUEUE_EARTAG_FLOW);
+    }
+    @Bean
+    public  DirectExchange eartagFlowExchange() {
+        return new DirectExchange(Const.EXCHANGE_EARTAG_FLOW);
+    }
+    @Bean
+    public Binding bindingeartagFlowExchangeMessage() {
+        return BindingBuilder.bind(syncCountActHourQueue()).to(syncCountActHourExchange()).with(Const.ROUTING_KEY_EARTAG_FLOW);
+    }
+
+
     // ============================= 更新设备注册信息 ============================= //
     @Bean
     public Queue syncDeviceRegistQueue() {

+ 48 - 2
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java

@@ -180,6 +180,9 @@ public class EartagListener {
             //计算小时运动量
             rabbitTemplate.convertAndSend(Const.EXCHANGE_COUNT_ACT_HOUR,Const.ROUTING_KEY_COUNT_ACT_HOUR,dataJo);
 
+            //保存耳标流水数据
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_COUNT_ACT_HOUR,Const.ROUTING_KEY_COUNT_ACT_HOUR,dataJo);
+
             //更新设备注册信息
             rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_REGIST,Const.ROUTING_KEY_DEVICE_REGIST,dataJo);
 
@@ -206,15 +209,55 @@ public class EartagListener {
 
 
         }
-        eartagService.handleEartag(dataJo);
+//        eartagService.handleEartag(dataJo);
     }
 
 
 
     @RabbitListener(queues = Const.QUEUE_COUNT_ACT_HOUR)
     @RabbitHandler
-    public void countActHour(JSONObject dataJo) throws ParseException, IOException {
+    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)
+    @RabbitHandler
+    public void updateDeviceRegister(JSONObject dataJo) {
+        log.info("开始更新设备注册信息------>"+dataJo);
+        eartagService.updateDeviceRegister(dataJo);
+    }
+
+    @RabbitListener(queues = Const.QUEUE_EARTAG_REGIST)
+    @RabbitHandler
+    public void updateEartagRegister(JSONObject dataJo) {
+        log.info("开始更新耳标注册信息------>"+dataJo);
+        eartagService.updateEartagRegister(dataJo);
+
+    }
+
+    @RabbitListener(queues = Const.QUEUE_DEVICE_COUNT)
+    @RabbitHandler
+    public void updateDeviceOnline(JSONObject dataJo) throws ParseException {
+        log.info("开始更新设备在线统计------>"+dataJo);
+        eartagService.updateDeviceOnline(dataJo);
+
+    }
+
+    @RabbitListener(queues = Const.QUEUE_EARTAG_COUNT)
+    @RabbitHandler
+    public void updateEartagOnline(JSONObject dataJo){
+        log.info("开始更新耳标在线统计------>"+dataJo);
+        eartagService.updateEartagOnline(dataJo);
+
     }
 
     @RabbitListener(queues = Const.QUEUE_EARTAG_DEVICE_ONLINE)
@@ -257,6 +300,9 @@ public class EartagListener {
 
 
 
+
+
+
     public boolean getAskTime(String askTime)   {
         String newAskTime = askTime.substring(0, 4) + "-" + askTime.substring(4, 6) + "-" + askTime.substring(6, 8) + " " + askTime.substring(8, 10) + ":" + askTime.substring(10, 12) + ":" + askTime.substring(12, 14);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

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

@@ -8,11 +8,20 @@ public interface IEartagService {
     //计算运动量
     Integer countAct(String earmark, String nowAct);
 
-    //
     void handleEartag(JSONObject dataJo) throws ParseException;
 
     void sendSowProvincePlatform(JSONObject dataJo, String askText);
 
+    void countHourAct(JSONObject dataJo);
+
+    void updateDeviceRegister(JSONObject dataJo);
+
+    void updateEartagRegister(JSONObject dataJo);
+
+    void saveEartagFlow(JSONObject dataJo);
+
+    void updateDeviceOnline(JSONObject dataJo) throws ParseException;
+
     // 统计指定是时间内的耳标上传次数
 //    Boolean countTimesByInTime(String earmark, Timestamp nowTimestamp);
 
@@ -23,4 +32,6 @@ public interface IEartagService {
     void abnormalCountAndAlarm(JSONObject dataJo);
 
     void updateEartagLiveStatus(JSONObject dataJo);
+
+    void updateEartagOnline(JSONObject dataJo);
 }

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

@@ -122,19 +122,19 @@ public class EartagServiceImpl implements IEartagService {
         System.out.println("####### farmId=" + farmId);
         if (farmId != null) {
             //{计算小时运动量}
-            countHourAct(dataJo);
+//            countHourAct(dataJo);
 
             //{保存耳标流水(所有耳标数据,可能重复上传)}
-            saveEartagFlow(dataJo, nowTimestamp, todayDate, farmId);
+//            saveEartagFlow(dataJo, nowTimestamp, todayDate, farmId);
 
             //{保存耳标流水,过滤设定时间范围重复耳标上传数据}
 //            saveEartagFlow2(dataJo, nowTimestamp, todayDate, farmId);
 
             //{更新设备注册信息}
-            updateDeviceRegister(deviceCode, nowTimestamp, todayDate, farmId);
+//            updateDeviceRegister(deviceCode, nowTimestamp, todayDate, farmId);
 
             //{更新耳标注册信息}
-            updateEartagRegister(earmark, deviceCode, bat, nowTimestamp, todayDate, farmId);
+//            updateEartagRegister(earmark, deviceCode, bat, nowTimestamp, todayDate, farmId);
 
             //{更新耳标注册信息}
 //            updateEartagRegister2(earmark, deviceCode, bat, nowTimestamp, todayDate, farmId, dataJo);
@@ -143,10 +143,10 @@ public class EartagServiceImpl implements IEartagService {
 //            updateEartagRegisterForFarmer(earmark, deviceCode, bat, nowTimestamp, todayDate, farmId, dataJo);
 
             //{更新设备在线统计}
-            updateDeviceOnline(earmark, deviceCode, todayDateText, nowTimestamp, todayDate, dataJo, farmId);
+//            updateDeviceOnline(earmark, deviceCode, todayDateText, nowTimestamp, todayDate, dataJo, farmId);
 
             //{更新耳标在线统计}
-            updateEartagOnline(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
+//            updateEartagOnline(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
 
             //{更新耳标连线状态}
 //            updateEartagLiveStatus(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
@@ -632,7 +632,8 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     // 计算小时运动量
-    private void countHourAct(JSONObject eartagJo) {
+    @Override
+    public void countHourAct(JSONObject eartagJo) {
         java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
         Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
         String farmId = eartagJo.getString("farmId");
@@ -640,13 +641,6 @@ public class EartagServiceImpl implements IEartagService {
         int nowHour = du.getNowHour();
         // 小时
         int eartagOfflineTime = 24;
-//        Optional<SysBaseConfigEntity> optionalConfig = sysBaseConfigEntityRepo.getConfigValue("dropDataEartagOffLineTime");
-//        if (optionalConfig.isPresent()) {
-//            eartagOfflineTime = Integer.parseInt(optionalConfig.get().getConfigValue());
-//            log.info("耳标离线过程丢弃数据时长=" + eartagOfflineTime);
-//        } else {
-//            log.error("耳标离线过程丢弃数据时长属性未配置.");
-//        }
         Map configMap = iBaseConfigService.getConfigValue("dropDataEartagOffLineTime", farmId, "0");
         if (ObjectUtil.isEmpty(configMap)) {
             log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 eartagOfflineTime=" + eartagOfflineTime);
@@ -917,7 +911,14 @@ public class EartagServiceImpl implements IEartagService {
      * @Date : 2022/3/29
      * @Time : 9:13
      */
-    private void updateDeviceOnline(String earmark, String deviceCode, String todayDateText, Timestamp nowTimestamp, java.sql.Date todayDate, JSONObject dataJo, String farmId) {
+    @Override
+    public void updateDeviceOnline(JSONObject dataJo) throws ParseException {
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        String deviceCode = dataJo.getString("device");
+        String farmId = dataJo.getString("farmId");
+        String todayDateText = new DateUtil().getTodayDateText();
+
         // 查询在线统计;
         // 不存在,则新建设备在线统计
         //存在,则直接更新耳标数量;
@@ -1008,7 +1009,12 @@ public class EartagServiceImpl implements IEartagService {
      * @Date : 2022/3/22
      * @Time : 14:06
      */
-    private void updateDeviceRegister(String deviceCode, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) {
+    @Override
+    public void updateDeviceRegister(JSONObject dataJo) {
+        String deviceCode = dataJo.getString("device");
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+
         System.out.println("deviceCode>>" + deviceCode);
         EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getDeviceRegister(deviceCode);
         System.out.println("deviceRegisterEntity>>" + deviceRegisterEntity);
@@ -1213,7 +1219,14 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     //更新耳标在线数据
-    public void updateEartagOnline(String earmark, String deviceCode, String todayDateText, java.sql.Date todayDate, Timestamp nowTimestamp, JSONObject eartagJo, String farmId) {
+    @Override
+    public void updateEartagOnline(JSONObject eartagJo) {
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        String farmId = eartagJo.getString("farmId");
+        String todayDateText = new DateUtil().getTodayDateText();
+        String earmark = eartagJo.getString("earmark");
+
         //# 判断耳标在线统计数据是否存在
         //      存在,则更新上传记录数、最后上传时间、环境温度,耳根温度,并将上面数据更新到缓存数据中;
         //      不存在,则创建耳标在线记录,并更新到缓存数据中;
@@ -1296,7 +1309,15 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     //更新耳标注册数据
-    public void updateEartagRegister(String earmark, String deviceCode, String bat, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) {
+    @Override
+    public void updateEartagRegister(JSONObject dataJo) {
+        String deviceCode = dataJo.getString("device");
+        String earmark = dataJo.getString("earmark");
+        String bat = dataJo.getString("bat");
+        String farmId = dataJo.getString("farmId");
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+
         EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getByDeviceCode(deviceCode);
         Integer unitId = deviceRegisterEntity.getUnitId();
         Integer pigpenId = deviceRegisterEntity.getPigpenId();
@@ -1598,15 +1619,15 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     /**
-     * @param eartagJo
-     * @param nowTimestamp
-     * @param todayDate
-     * @param farmId
      * @Author : ZhuoNing
      * @Date : 2022/2/9
      * @Time : 14:33
      */
-    public void saveEartagFlow(JSONObject eartagJo, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) throws ParseException {
+    @Override
+    public void saveEartagFlow(JSONObject eartagJo) {
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        String farmId = eartagJo.getString("farmId");
         DateUtil dateUtil = new DateUtil();
 //        EartagDataEntity dataEntity = new EartagDataEntity();
         EartagData dataEntity = new EartagData();