Bladeren bron

修改单元查看耳标接口

zhuoning 2 jaren geleden
bovenliggende
commit
51654f0399

+ 50 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagOnlineStatusEntity.java

@@ -0,0 +1,50 @@
+package com.huimv.eartag2.common.dao.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "eartag_online_status")
+@Data
+@Accessors(chain = true)
+public class EartagOnlineStatusEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    @Column(name = "farm_id")
+    private String farmId;
+
+    @Column(name = "unit_id")
+    private String unitId;
+
+    @Column(name = "unit_name")
+    private String unitName;
+
+    @Column(name = "total")
+    private Integer total;
+
+    @Column(name = "online")
+    private Integer online;
+
+    @Column(name = "offline")
+    private Integer offline;
+
+    @Column(name = "online_earmark")
+    private String onlineEarmark;
+
+    @Column(name = "offline_earmark")
+    private String offlineEarmark;
+
+    @Column(name = "add_time")
+    private Timestamp addTime;
+
+}

+ 2 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagEartagRegister2EntityRepo.java

@@ -5,6 +5,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.Optional;
+
 public interface EartagEartagRegister2EntityRepo extends JpaRepository<EartagEartagRegister2Entity, Integer>, JpaSpecificationExecutor<EartagEartagRegister2Entity> {
 
     @Query(nativeQuery=true, value="SELECT * FROM eartag_eartag_register2 WHERE farm_id=?2 AND earmark=?1")

+ 14 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagOnlineStatusEntityRepo.java

@@ -0,0 +1,14 @@
+package com.huimv.eartag2.common.dao.repo;
+
+import com.huimv.eartag2.common.dao.entity.EartagOnlineStatusEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.Optional;
+
+public interface EartagOnlineStatusEntityRepo extends JpaRepository<EartagOnlineStatusEntity, Integer>, JpaSpecificationExecutor<EartagOnlineStatusEntity> {
+
+    @Query(nativeQuery = true,value = "SELECT * FROM eartag_online_status WHERE farm_id=?1 AND  unit_id=?2 ORDER BY add_time DESC limit 1")
+    Optional<EartagOnlineStatusEntity> findLastOne(String farmId,Integer unitId);
+}

+ 64 - 6
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -13,6 +13,7 @@ import com.huimv.eartag2.eartag.service.IEartagService;
 //import com.huimv.eartag2.manage2.service.IEartagData2Service;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
@@ -66,6 +67,8 @@ public class EartagServiceImpl implements IEartagService {
     private SysBaseConfigEntityRepo sysBaseConfigEntityRepo;
     @Autowired
     private EartagEartagRegister2EntityRepo eartagEartagRegister2EntityRepo;
+    @Autowired
+    private EartagOnlineStatusEntityRepo eartagOnlineStatusEntityRepo;
 
     @Override
     public void handleEartag(JSONObject dataJo) throws ParseException {
@@ -105,6 +108,9 @@ public class EartagServiceImpl implements IEartagService {
             //{更新耳标在线统计}
             updateEartagOnline(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
 
+            //{更新耳标连线状态}
+            updateEartagLiveStatus(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, dataJo, farmId);
+
             //{更新耳标设备在线关联统计}
             updateEartagDeviceOnlineCount(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, farmId);
 
@@ -121,6 +127,55 @@ public class EartagServiceImpl implements IEartagService {
         }
     }
 
+    // 更新耳标连线状态
+    private void updateEartagLiveStatus(String earmark, String deviceCode, String todayDateText, java.sql.Date todayDate, Timestamp nowTimestamp, JSONObject dataJo, String farmId) {
+        // 通过耳标注册表查找耳标所属单元
+        EartagEartagRegister2Entity eartagEartagRegister2Entity = eartagEartagRegister2EntityRepo.getOneByEarmark(earmark,farmId);
+        if(eartagEartagRegister2Entity == null){
+            log.info("该耳标不存在(earmark="+earmark+",farmId="+farmId+")");
+            return ;
+        }
+        Integer unitId = eartagEartagRegister2Entity.getUnitId();
+        Optional<EartagOnlineStatusEntity> optionEartagStatus = eartagOnlineStatusEntityRepo.findLastOne(farmId,unitId);
+        if (!optionEartagStatus.isPresent()) {
+            System.out.println("该记录不存在");
+            return ;
+        }
+        EartagOnlineStatusEntity eartagOnlineStatusEntity = optionEartagStatus.get();
+        System.out.println("onlineEarmark="+eartagOnlineStatusEntity.getOnlineEarmark());
+        System.out.println("offlineEarmark="+eartagOnlineStatusEntity.getOfflineEarmark());
+        if(eartagOnlineStatusEntity.getOnlineEarmark().indexOf(earmark) == -1 && eartagOnlineStatusEntity.getOfflineEarmark().indexOf(earmark) == -1){
+            //新耳标(在线,离线都不包含该耳标)
+            log.info("耳标连线状态统计:增加新耳标["+earmark+"]");
+            String onlineEarmark = eartagOnlineStatusEntity.getOnlineEarmark();
+            if(onlineEarmark.trim().length()>0){
+                onlineEarmark += ",";
+            }
+            onlineEarmark += earmark;
+            eartagOnlineStatusEntity.setTotal(eartagOnlineStatusEntity.getTotal()+1);
+            eartagOnlineStatusEntity.setOnline(eartagOnlineStatusEntity.getOnline()+1);
+            eartagOnlineStatusEntity.setOnlineEarmark(onlineEarmark);
+            eartagOnlineStatusEntityRepo.saveAndFlush(eartagOnlineStatusEntity);
+        }else if(eartagOnlineStatusEntity.getOfflineEarmark().indexOf(earmark) != -1){
+            log.info("耳标连线状态统计:耳标离线--在线["+earmark+"]");
+            //上一次处于离线状态
+            eartagOnlineStatusEntity.setOnline(eartagOnlineStatusEntity.getOnline()+1);
+            eartagOnlineStatusEntity.setOffline(eartagOnlineStatusEntity.getOffline()-1);
+            String onlineEarmark = eartagOnlineStatusEntity.getOnlineEarmark();
+            if(onlineEarmark.trim().length()>0){
+                onlineEarmark+=",";
+            }
+            onlineEarmark += earmark;
+            eartagOnlineStatusEntity.setOnlineEarmark(onlineEarmark);
+            String offlineEarmark = eartagOnlineStatusEntity.getOfflineEarmark();
+            offlineEarmark = offlineEarmark.replace(offlineEarmark,"");
+            eartagOnlineStatusEntity.setOfflineEarmark(offlineEarmark);
+            eartagOnlineStatusEntityRepo.saveAndFlush(eartagOnlineStatusEntity);
+        }else{
+            log.info("耳标连线状态统计:该耳标["+earmark+"]已经在线");
+        }
+    }
+
 
     /**
      * @Method      : countTimesByInTime
@@ -658,7 +713,10 @@ public class EartagServiceImpl implements IEartagService {
         Integer registerType = 1;
         Integer activeStatus = 1;
         Integer liveStatus = 1;        //
+        System.out.println("earmark="+earmark);
+        System.out.println("farmId="+farmId);
         EartagEartagRegister2Entity eartagRegisterEntity = eartagEartagRegister2EntityRepo.getOneByEarmark(earmark, farmId);
+        System.out.println("判断是否有耳标注册信息 eartagRegisterEntity="+eartagRegisterEntity.toString());
         if (eartagRegisterEntity == null) {
             //{新建耳标注册信息}
             newEartagRegister2(earmark, nowTimestamp, deviceCode, registerType, activeStatus, liveStatus, bat, todayDate, farmId, eartagJo, stageCode, stageName, pigpenId, pigpenName, unitId, unitName, deviceRegisterEntity);
@@ -676,7 +734,7 @@ public class EartagServiceImpl implements IEartagService {
             eartagRegisterEntity.setStageName(stageName);
             eartagRegisterEntity.setEarTemp1(eartagJo.getFloat("earTemp1"));
             eartagRegisterEntity.setEnvTemp1(eartagJo.getFloat("envTemp1"));
-            eartagRegisterEntity.setAct(Integer.parseInt(eartagJo.getString("act1")));
+//            eartagRegisterEntity.setAct(Integer.parseInt(eartagJo.getString("act1")));
             eartagRegisterEntity.setSignal1(Integer.parseInt(eartagJo.getString("signal")));
             eartagRegisterEntity.setAskTime(getAskTime(eartagJo.getString("askTime")));
             eartagRegisterEntity.setOther(eartagJo.getString("other"));
@@ -749,7 +807,7 @@ public class EartagServiceImpl implements IEartagService {
         newEartagRegisterEntity.setAskTime(getAskTime(eartagJo.getString("askTime")));
         newEartagRegisterEntity.setOther(eartagJo.getString("other"));
 
-        System.out.println("newEartagRegisterEntity>>" + newEartagRegisterEntity.toString());
+        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>> newEartagRegisterEntity>>" + newEartagRegisterEntity.toString());
 
         eartagEartagRegister2EntityRepo.saveAndFlush(newEartagRegisterEntity);
         //{更新耳标注册消息缓存}
@@ -875,8 +933,8 @@ public class EartagServiceImpl implements IEartagService {
     public void saveEartagFlow2(JSONObject eartagJo, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) throws ParseException {
         // 判断近五分钟内是否有耳标数据 先获取耳标号
         String earmark = eartagJo.getString("earmark");
-        System.out.println("earmark ====================================="+earmark);
-        //
+//        System.out.println("earmark ====================================="+earmark);
+        // {}
         Map countMap = countTimesByInTime(earmark, nowTimestamp);
         Boolean countTimes = Boolean.parseBoolean(countMap.get("countTimes").toString());
         //true:设定过滤时间内无耳标数据上传入库;false:有数据入库;
@@ -888,8 +946,8 @@ public class EartagServiceImpl implements IEartagService {
             if(act > 0){
                 act1 = act - lastAct;
             }
-            System.out.println("act ====================="+act);
-            System.out.println("lastAct ====================="+lastAct);
+//            System.out.println("act ====================="+act);
+//            System.out.println("lastAct ====================="+lastAct);
             DateUtil dateUtil = new DateUtil();
             EartagData2Entity dataEntity = new EartagData2Entity();
             dataEntity.setCmdHeader(eartagJo.getString("cmdHeader"));

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

@@ -72,7 +72,7 @@ public class EartagServiceImpl implements IEartagService {
             StringBuilder onlineSb = new StringBuilder();
             StringBuilder offlineSb = new StringBuilder();
             // 用330110002测试
-            if(farmId.trim().equalsIgnoreCase("330110002")){
+//            if(farmId.trim().equalsIgnoreCase("330110002")){
                 // {读取相关耳标注册记录}
                 List<EartagEartagRegister2> eartagEartagRegister2List = getEartagRegister(farmId,unitId);
                 if(eartagEartagRegister2List.size() == 0){
@@ -100,7 +100,7 @@ public class EartagServiceImpl implements IEartagService {
                     }
                     eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
                 }
-            }
+//            }
             countMap.put("farmId",farmId);
             countMap.put("unitId",unitId);
             countMap.put("unitName",unitName);