소스 검색

耳标平台

523096025 1 년 전
부모
커밋
98ec96f2d0

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

@@ -1,14 +1,15 @@
 package com.huimv.eartag2.common.dao.entity;
 
 import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
 
 import javax.persistence.*;
 import java.io.Serializable;
-import java.sql.Date;
-import java.sql.Timestamp;
+import java.util.Date;
 
 @Entity
 @Table(name = "eartar_farm_all_status")
+@Data
 public class EartarFarmAllStatusEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -49,122 +50,9 @@ public class EartarFarmAllStatusEntity implements Serializable {
     private String farmId;
 
     @Column(name = "update_time")
-    private Timestamp updateTime;
+    private java.util.Date updateTime;
 
     @Column(name = "create_date")
     private Date createDate;
 
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setDeviceTotal(Integer deviceTotal) {
-        this.deviceTotal = deviceTotal;
-    }
-
-    public Integer getDeviceTotal() {
-        return deviceTotal;
-    }
-
-    public void setDeviceOnline(Integer deviceOnline) {
-        this.deviceOnline = deviceOnline;
-    }
-
-    public Integer getDeviceOnline() {
-        return deviceOnline;
-    }
-
-    public void setDeviceOffline(Integer deviceOffline) {
-        this.deviceOffline = deviceOffline;
-    }
-
-    public Integer getDeviceOffline() {
-        return deviceOffline;
-    }
-
-    public void setDeviceRate(Float deviceRate) {
-        this.deviceRate = deviceRate;
-    }
-
-    public Float getDeviceRate() {
-        return deviceRate;
-    }
-
-    public void setDeviceCancel(Integer deviceCancel) {
-        this.deviceCancel = deviceCancel;
-    }
-
-    public Integer getDeviceCancel() {
-        return deviceCancel;
-    }
-
-    public void setEartagTotal(Integer eartagTotal) {
-        this.eartagTotal = eartagTotal;
-    }
-
-    public Integer getEartagTotal() {
-        return eartagTotal;
-    }
-
-    public void setEartagOnline(Integer eartagOnline) {
-        this.eartagOnline = eartagOnline;
-    }
-
-    public Integer getEartagOnline() {
-        return eartagOnline;
-    }
-
-    public void setEartagRate(Float eartagRate) {
-        this.eartagRate = eartagRate;
-    }
-
-    public Float getEartagRate() {
-        return eartagRate;
-    }
-
-    public void setFarmId(String farmId) {
-        this.farmId = farmId;
-    }
-
-    public String getFarmId() {
-        return farmId;
-    }
-
-    public void setUpdateTime(Timestamp updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public Timestamp getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setCreateDate(Date createDate) {
-        this.createDate = createDate;
-    }
-
-    public Date getCreateDate() {
-        return createDate;
-    }
-
-    @Override
-    public String toString() {
-        return "EartarFarmAllStatusEntity{" +
-                "id=" + id + '\'' +
-                "deviceTotal=" + deviceTotal + '\'' +
-                "deviceOnline=" + deviceOnline + '\'' +
-                "deviceOffline=" + deviceOffline + '\'' +
-                "deviceRate=" + deviceRate + '\'' +
-                "deviceCancel=" + deviceCancel + '\'' +
-                "eartagTotal=" + eartagTotal + '\'' +
-                "eartagOnline=" + eartagOnline + '\'' +
-                "eartagRate=" + eartagRate + '\'' +
-                "farmId=" + farmId + '\'' +
-                "updateTime=" + updateTime + '\'' +
-                "createDate=" + createDate + '\'' +
-                '}';
-    }
 }

+ 1 - 1
huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/DateUtil.java

@@ -137,7 +137,7 @@ public class DateUtil {
         return sdf.parse(sdf.format(new Date()));
     }
 
-    public String getTodayDateText() throws ParseException {
+    public String getTodayDateText()   {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         return sdf.format(new Date());
     }

+ 15 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java

@@ -218,6 +218,21 @@ public class EartagListener {
 
     }
 
+    @RabbitListener(queues = Const.QUEUE_AllSTATUS)
+    @RabbitHandler
+    public void updateEartagPropertyOfAllStatus(JSONObject dataJo) throws ParseException {
+        log.info("判断该设备编号是否存在牧场缓存在线集合当中------>"+dataJo);
+        eartagService.updateEartagPropertyOfAllStatus(dataJo);
+    }
+
+
+    @RabbitListener(queues = Const.QUEUE_ABNORMAL)
+    @RabbitHandler
+    public void abnormalCountAndAlarm(JSONObject dataJo) throws ParseException {
+        log.info("异常统计和异常报警------>"+dataJo);
+        eartagService.updateEartagDeviceOnlineCount(dataJo);
+
+    }
 
 
 

+ 4 - 0
huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/IEartagService.java

@@ -15,4 +15,8 @@ public interface IEartagService {
 
     // 统计指定是时间内的耳标上传次数
 //    Boolean countTimesByInTime(String earmark, Timestamp nowTimestamp);
+
+    void updateEartagPropertyOfAllStatus(JSONObject dataJo) throws ParseException;
+
+    void updateEartagDeviceOnlineCount(JSONObject dataJo);
 }

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

@@ -152,18 +152,18 @@ public class EartagServiceImpl implements IEartagService {
             updateEartagLiveStatus(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
 
             //{更新耳标设备在线关联统计}
-            updateEartagDeviceOnlineCount(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, farmId);
+//            updateEartagDeviceOnlineCount(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, farmId);
 
             //{异常统计和异常报警}
 //            abnormalCountAndAlarm(dataJo, todayDate, nowTimestamp, farmId);
 
-            //判断该设备编号是否存在牧场缓存在线集合当中;
-            if (!cacheService.isExistEartagOnlineSet(farmId, earmark, todayDateText)) {
-                //更新总状态数据
-                updateEartagPropertyOfAllStatus(farmId, todayDateText, todayDate, nowTimestamp);
-                //将耳标号加入到耳标在线集合当中
-                cacheService.putEartagToOnlineInSet(farmId, earmark, todayDateText);
-            }
+            //判断该设备编号是否存在牧场缓存在线集合当中; 修改结束
+//            if (!cacheService.isExistEartagOnlineSet(farmId, earmark, todayDateText)) {
+//                //更新总状态数据
+//                updateEartagPropertyOfAllStatus(farmId, todayDateText, todayDate, nowTimestamp);
+//                //将耳标号加入到耳标在线集合当中
+//                cacheService.putEartagToOnlineInSet(farmId, earmark, todayDateText);
+//            }
             System.out.println("## END 耳标数据。 " + new DateUtil().getTodayMissionText());
         } else {
             log.error("出错:该请求的FarmId为空.请检查该设备编码[" + deviceCode + "]是否存在FarmId.");
@@ -171,6 +171,25 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     @Override
+    public void updateEartagPropertyOfAllStatus(JSONObject dataJo) throws ParseException {
+        String farmId = dataJo.getString("farmId");
+        String earmark = dataJo.getString("earmark");
+
+        String todayDateText = new DateUtil().getTodayDateText();
+        Date now = new Date();
+
+        if (!cacheService.isExistEartagOnlineSet(farmId, earmark, todayDateText)) {
+            //更新总状态数据
+            updateEartagPropertyOfAllStatus(farmId, todayDateText, now);
+            //将耳标号加入到耳标在线集合当中
+            cacheService.putEartagToOnlineInSet(farmId, earmark, todayDateText);
+        }
+        log.info("判断该设备编号是否存在牧场缓存在线集合当中 end");
+    }
+
+
+
+    @Override
     public void sendSowProvincePlatform(JSONObject dataJo, String askText) {
         // =====================================================================
         // 判断耳标-->采集器(基站)-->判断该牧场是否被允许发送耳标数据到省平台;
@@ -996,15 +1015,18 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     //更新耳标设备在线次数
-    private void updateEartagDeviceOnlineCount(String earmark, String deviceCode, String todayDateText, java.sql.Date todayDate, Timestamp nowTimestamp, String farmId) {
-        //从缓存读取耳标关联数据
-//        Map timesMap = cacheService.getEartagDeviceOnlineCountEntries(earmark,deviceCode,todayDateText);
-//        System.out.println("###################### timesMap>>"+timesMap);
-//        if(timesMap.size()==0){
-//            System.out.println("==0");
-//        }else{
-//            System.out.println("!=0");
-//        }
+    @Override
+    public void updateEartagDeviceOnlineCount(JSONObject dataJo) {
+        //设备编码
+        String deviceCode = dataJo.getString("device");
+        //耳标号
+        String earmark = dataJo.getString("earmark");
+
+        String farmId = dataJo.getString("farmId");
+        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());
+
         //{读取耳标设备关联统计}
         List<EartagDeviceEartagCountEntity> deviceEartagCountEntityList = deviceEartagCountRepo.getEartagDeviceCount(earmark, deviceCode, todayDateText);
         if (deviceEartagCountEntityList.size() == 0) {
@@ -1039,7 +1061,8 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     //更新设备环境信息
-    public void updateEartagPropertyOfAllStatus(String farmId, String todayDateText, java.sql.Date todayDate, Timestamp nowTimestamp) throws ParseException {
+    public void updateEartagPropertyOfAllStatus(String farmId, String todayDateText, Date todayDate )   {
+
         //{获取处于工作状态的设备数量}
         Integer deviceTotal = deviceService.getDeviceTotalByFarmIdFromDeviceRegister(farmId);
         //设备在线数量
@@ -1056,7 +1079,7 @@ public class EartagServiceImpl implements IEartagService {
         Integer deviceCancelSum = deviceService.getDeviceCancelTotalFromDeviceRegister(farmId);
         //耳标总数量 eartagService.
         Integer eartagTotal = getEartagRegTotalByFarmId(farmId);
-        System.out.println("## eartagTotal>>" + eartagTotal);
+       log.info("## eartagTotal>>" + eartagTotal);
         Integer eartagOnlineSum = 0;
         Float eartagOnlineRate = 0F;
         if (eartagTotal != 0) {
@@ -1071,7 +1094,7 @@ public class EartagServiceImpl implements IEartagService {
         EartarFarmAllStatusEntity farmAllStatusEntity = eartagFarmAllStatusRepo.getOneByFarmIdAndCreateDate(farmId, todayDateText);
         if (farmAllStatusEntity == null) {
             //{新建设备状态记录并更新缓存cache}
-            newFarmAllStatus(farmId, todayDate, nowTimestamp, deviceTotal, deviceOnlineSum, deviceOfflineSum, deviceCancelSum, deviceOnlineRate, eartagTotal, eartagOnlineSum, eartagOnlineRate);
+            newFarmAllStatus(farmId, todayDate, deviceTotal, deviceOnlineSum, deviceOfflineSum, deviceCancelSum, deviceOnlineRate, eartagTotal, eartagOnlineSum, eartagOnlineRate);
         } else {
             //计算设备状态并更新缓存cache(在线数+1,离线数-1,计算设备在线率)
             farmAllStatusEntity.setDeviceTotal(deviceTotal);
@@ -1082,7 +1105,7 @@ public class EartagServiceImpl implements IEartagService {
             farmAllStatusEntity.setEartagTotal(eartagTotal);
             farmAllStatusEntity.setEartagOnline(eartagOnlineSum);
             farmAllStatusEntity.setEartagRate(eartagOnlineRate);
-            farmAllStatusEntity.setUpdateTime(nowTimestamp);
+            farmAllStatusEntity.setUpdateTime(todayDate);
             eartagFarmAllStatusRepo.saveAndFlush(farmAllStatusEntity);
             //{同步更新牧场总状态缓存相关字段}
             cacheService.flashAllStatusCache(farmId, farmAllStatusEntity);
@@ -1090,7 +1113,7 @@ public class EartagServiceImpl implements IEartagService {
     }
 
     //# 新建总状态记录 #
-    private void newFarmAllStatus(String farmId, java.sql.Date todayDate, Timestamp nowTimestamp, Integer deviceTotal, Integer deviceOnlineSum, Integer deviceOfflineSum, Integer deviceCancelSum, Float deviceOnlineRate, Integer eartagTotal, Integer eartagOnlineSum, Float eartagOnlineRate) {
+    private void newFarmAllStatus(String farmId, Date todayDate , Integer deviceTotal, Integer deviceOnlineSum, Integer deviceOfflineSum, Integer deviceCancelSum, Float deviceOnlineRate, Integer eartagTotal, Integer eartagOnlineSum, Float eartagOnlineRate) {
         Integer liveStatus = 1;
         if (deviceService.getDeviceSum(farmId, liveStatus) == 0) {
             log.error("该牧场没有任何处于工作状态的采集器设备.");
@@ -1106,7 +1129,7 @@ public class EartagServiceImpl implements IEartagService {
             farmAllStatusEntity.setEartagOnline(eartagOnlineSum);
             farmAllStatusEntity.setEartagRate(eartagOnlineRate);
             farmAllStatusEntity.setFarmId(farmId);
-            farmAllStatusEntity.setUpdateTime(nowTimestamp);
+            farmAllStatusEntity.setUpdateTime(todayDate);
             farmAllStatusEntity.setCreateDate(todayDate);
             eartagFarmAllStatusRepo.saveAndFlush(farmAllStatusEntity);
             //设置总状态缓存

+ 128 - 4
huimv-eartag2-input/src/main/java/com/huimv/eartag2/config/TopicRabbitMQConfig.java

@@ -1,10 +1,7 @@
 package com.huimv.eartag2.config;
 
 import com.huimv.eartag2.common.mq.Const;
-import org.springframework.amqp.core.Binding;
-import org.springframework.amqp.core.BindingBuilder;
-import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.core.TopicExchange;
+import org.springframework.amqp.core.*;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -125,5 +122,132 @@ public class TopicRabbitMQConfig {
 
     // 耳标 -------------------------------------------------------------------------------------
 
+   /* // ============================= 同步设备总数-绑定队列 ============================= //
+    @Bean
+    public Queue syncCountActHourQueue() {
+        return new Queue(Const.QUEUE_COUNT_ACT_HOUR);
+    }
+    @Bean
+    public  DirectExchange syncCountActHourExchange() {
+        return new DirectExchange(Const.EXCHANGE_COUNT_ACT_HOUR);
+    }
+    @Bean
+    public Binding bindingCountActHourExchangeMessage() {
+        return BindingBuilder.bind(syncCountActHourQueue()).to(syncCountActHourExchange()).with(Const.ROUTING_KEY_COUNT_ACT_HOUR);
+    }
+
+    // ============================= 更新设备注册信息 ============================= //
+    @Bean
+    public Queue syncDeviceRegistQueue() {
+        return new Queue(Const.QUEUE_DEVICE_REGIST);
+    }
+    @Bean
+    public  DirectExchange syncDeviceRegistExchange() {
+        return new DirectExchange(Const.EXCHANGE_DEVICE_REGIST);
+    }
+    @Bean
+    public Binding bindingDeviceRegistExchangeMessage() {
+        return BindingBuilder.bind(syncDeviceRegistQueue()).to(syncDeviceRegistExchange()).with(Const.ROUTING_KEY_DEVICE_REGIST);
+    }
+
+    // ============================= 更新耳标注册信息 ============================= //
+    @Bean
+    public Queue syncDartagRegistQueue() {
+        return new Queue(Const.QUEUE_EARTAG_REGIST);
+    }
+    @Bean
+    public  DirectExchange synceartagRegistExchange() {
+        return new DirectExchange(Const.EXCHANGE_EARTAG_REGIST);
+    }
+    @Bean
+    public Binding bindineartagRegistExchangeMessage() {
+        return BindingBuilder.bind(syncDartagRegistQueue()).to(synceartagRegistExchange()).with(Const.ROUTING_KEY_EARTAG_REGIST);
+    }
+
+
+    // ============================= 更新耳标注册信息 ============================= //
+    @Bean
+    public Queue syncdeviceCountQueue() {
+        return new Queue(Const.QUEUE_DEVICE_COUNT);
+    }
+    @Bean
+    public  DirectExchange deviceCountExchange() {
+        return new DirectExchange(Const.EXCHANGE_DEVICE_COUNT);
+    }
+    @Bean
+    public Binding deviceCountExchangeMessage() {
+        return BindingBuilder.bind(syncdeviceCountQueue()).to(deviceCountExchange()).with(Const.ROUTING_KEY_DEVICE_COUNT);
+    }
 
+    // ============================= 更新耳标在线统计 ============================= //
+    @Bean
+    public Queue eartagCountQueue() {
+        return new Queue(Const.QUEUE_EARTAG_COUNT);
+    }
+    @Bean
+    public  DirectExchange eartagCountExchange() {
+        return new DirectExchange(Const.EXCHANGE_EARTAG_COUNT);
+    }
+    @Bean
+    public Binding eartagCountMessage() {
+        return BindingBuilder.bind(eartagCountQueue()).to(eartagCountExchange()).with(Const.ROUTING_KEY_EARTAG_COUNT);
+    }
+
+
+    // ============================= 更新耳标连线状态 ============================= //
+    @Bean
+    public Queue eartagLiveStatusQueue() {
+        return new Queue(Const.QUEUE_EARTAG_LIVE);
+    }
+    @Bean
+    public  DirectExchange eartagLiveStatusExchange() {
+        return new DirectExchange(Const.EXCHANGE_EARTAG_LIVE);
+    }
+    @Bean
+    public Binding eartagLiveStatusMessage() {
+        return BindingBuilder.bind(eartagLiveStatusQueue()).to(eartagLiveStatusExchange()).with(Const.ROUTING_KEY_EARTAG_LIVE);
+    }
+
+    // ============================= 更新耳标设备在线关联统计 ============================= //
+    @Bean
+    public Queue updateEartagDeviceOnlineCountQueue() {
+        return new Queue(Const.QUEUE_EARTAG_DEVICE_ONLINE);
+    }
+    @Bean
+    public  DirectExchange updateEartagDeviceOnlineCountExchange() {
+        return new DirectExchange(Const.EXCHANGE_EARTAG_DEVICE_ONLINE);
+    }
+    @Bean
+    public Binding updateEartagDeviceOnlineCountMessage() {
+        return BindingBuilder.bind(updateEartagDeviceOnlineCountQueue()).to(updateEartagDeviceOnlineCountExchange()).with(Const.ROUTING_KEY_EARTAG_DEVICE_ONLINE);
+    }
+
+    // ============================= 异常统计和异常报警 ============================= //
+    @Bean
+    public Queue abnormalCountAndAlarmQueue() {
+        return new Queue(Const.QUEUE_ABNORMAL);
+    }
+    @Bean
+    public  DirectExchange abnormalCountAndAlarmExchange() {
+        return new DirectExchange(Const.EXCHANGE_ABNORMAL);
+    }
+    @Bean
+    public Binding abnormalCountAndAlarmMessage() {
+        return BindingBuilder.bind(abnormalCountAndAlarmQueue()).to(abnormalCountAndAlarmExchange()).with(Const.ROUTING_KEY_ABNORMAL);
+    }
+
+    // ============================= 判断该设备编号是否存在牧场缓存在线集合当中 ============================= //
+    @Bean
+    public Queue updateEartagPropertyOfAllStatusQueue() {
+        return new Queue(Const.QUEUE_AllSTATUS);
+    }
+    @Bean
+    public  DirectExchange updateEartagPropertyOfAllStatusExchange() {
+        return new DirectExchange(Const.EXCHANGE_AllSTATUS);
+    }
+    @Bean
+    public Binding updateEartagPropertyOfAllStatusMessage() {
+        return BindingBuilder.bind(updateEartagPropertyOfAllStatusQueue()).to(updateEartagPropertyOfAllStatusExchange()).with(Const.ROUTING_KEY_AllSTATUS);
+    }
+*/
 }