Przeglądaj źródła

添加异常数据和状态统计接口

zhuoning 2 lat temu
rodzic
commit
7ef8a53f94
13 zmienionych plików z 319 dodań i 12 usunięć
  1. 0 2
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/impl/BaseConfigServiceImpl.java
  2. 12 0
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java
  3. 4 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/HuimvManageApplication.java
  4. 35 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagAbnormalCountController.java
  5. 16 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagAbnormalCountMapper.java
  6. 25 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagAbnormalCountMapper.xml
  7. 49 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartagAbnormalCount.java
  8. 22 1
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/schedule/EartagTask.java
  9. 20 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagAbnormalCountService.java
  10. 3 1
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartagService.java
  11. 39 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagAbnormalCountServiceImpl.java
  12. 91 7
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagServiceImpl.java
  13. 3 1
      huimv-eartag2-platform/huimv-eartag2-manage2/src/test/java/com/huimv/eartag2/manage2/service/IEartagServiceTest.java

+ 0 - 2
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/impl/BaseConfigServiceImpl.java

@@ -1,10 +1,8 @@
 package com.huimv.eartag2.common.service.impl;
 
-import com.huimv.eartag2.common.dao.entity.SysBaseConfigEntity;
 import com.huimv.eartag2.common.dao.repo.SysBaseConfigEntityRepo;
 import com.huimv.eartag2.common.service.IBaseConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
 import java.util.*;

+ 12 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -182,10 +182,13 @@ public class EartagServiceImpl implements IEartagService {
             EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
             eartagAbnormalAlarmEntity.setFarmCode(farmCode);
             eartagAbnormalAlarmEntity.setContent("高温警报:["+pigpenName+"]的环境温度为" + envTemp1Bd.toString() + "°,高于高温阈值" + configMaxTempBd.toString() + "°");
+            //数据:2
             eartagAbnormalAlarmEntity.setAlarmType(2);
+            //耳标:2
             eartagAbnormalAlarmEntity.setAlarmFrom(2);
             eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
             eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            //环境高温:3
             eartagAbnormalAlarmEntity.setAlarmSort(3);
             eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
             // 高温次数记录
@@ -195,10 +198,13 @@ public class EartagServiceImpl implements IEartagService {
             EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
             eartagAbnormalAlarmEntity.setFarmCode(farmCode);
             eartagAbnormalAlarmEntity.setContent("低温警报:["+pigpenName+"]的环境温度为" + envTemp1Bd.toString() + "°,低于低温阈值" + configMinTempBd.toString() + "°");
+            //数据:2
             eartagAbnormalAlarmEntity.setAlarmType(2);
+            //耳标:2
             eartagAbnormalAlarmEntity.setAlarmFrom(2);
             eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
             eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            //环境低温:4
             eartagAbnormalAlarmEntity.setAlarmSort(4);
             eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
             //低温次数记录
@@ -278,10 +284,13 @@ public class EartagServiceImpl implements IEartagService {
             EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
             eartagAbnormalAlarmEntity.setFarmCode(farmCode);
             eartagAbnormalAlarmEntity.setContent("高温警报:耳标号[" + earmark + "]的动物当前耳根温度为" + earTemp1Bd.toString() + "°,高于高温阈值" + configMaxTempBd.toString() + "°");
+            //数据:2
             eartagAbnormalAlarmEntity.setAlarmType(2);
+            //耳标:2
             eartagAbnormalAlarmEntity.setAlarmFrom(2);
             eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
             eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            //耳标高温:1
             eartagAbnormalAlarmEntity.setAlarmSort(1);
             eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
             // 高温次数记录
@@ -291,10 +300,13 @@ public class EartagServiceImpl implements IEartagService {
             EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
             eartagAbnormalAlarmEntity.setFarmCode(farmCode);
             eartagAbnormalAlarmEntity.setContent("低温警报:耳标号[" + earmark + "]的动物当前耳根温度为" + earTemp1Bd.toString() + "°,低于低温阈值" + configMinTempBd.toString() + "°");
+            //数据:2
             eartagAbnormalAlarmEntity.setAlarmType(2);
+            //耳标:2
             eartagAbnormalAlarmEntity.setAlarmFrom(2);
             eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
             eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            //耳标低温:2
             eartagAbnormalAlarmEntity.setAlarmSort(2);
             eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
             //低温次数记录

+ 4 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/HuimvManageApplication.java

@@ -5,9 +5,11 @@ import com.huimv.eartag2.manage2.netty.EartagServer;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.client.RestTemplate;
 
@@ -22,6 +24,8 @@ import org.springframework.web.client.RestTemplate;
 @SpringBootApplication
 @EnableScheduling
 @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)
 public class HuimvManageApplication {
     public static void main(String[] args) throws InterruptedException {

+ 35 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagAbnormalCountController.java

@@ -0,0 +1,35 @@
+package com.huimv.eartag2.manage2.controller;
+
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.manage2.service.EartagAbnormalCountService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zn
+ * @since 2022-08-20
+ */
+@RestController
+@RequestMapping("/eartag-abnormal-count")
+public class EartagAbnormalCountController {
+    @Autowired
+    private EartagAbnormalCountService eartagAbnormalCountService;
+
+    @PostMapping("/listAbnormalCount")
+    public Result listAbnormalCount(@RequestBody Map<String,String> map){
+        return eartagAbnormalCountService.listAbnormalCount(map);
+    }
+
+}
+

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

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.mapper;
+
+import com.huimv.eartag2.manage2.pojo.EartagAbnormalCount;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zn
+ * @since 2022-08-20
+ */
+public interface EartagAbnormalCountMapper extends BaseMapper<EartagAbnormalCount> {
+
+}

+ 25 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagAbnormalCountMapper.xml

@@ -0,0 +1,25 @@
+<?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.EartagAbnormalCountMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.EartagAbnormalCount">
+        <id column="id" property="id" />
+        <result column="farm_code" property="farmCode" />
+        <result column="station_data_count" property="stationDataCount" />
+        <result column="station_data_upate_time" property="stationDataUpateTime" />
+        <result column="station_status_count" property="stationStatusCount" />
+        <result column="station_status_upate_time" property="stationStatusUpateTime" />
+        <result column="eartag_data_count" property="eartagDataCount" />
+        <result column="eartag_data_upate_time" property="eartagDataUpateTime" />
+        <result column="eartag_status_count" property="eartagStatusCount" />
+        <result column="eartag_status_upate_time" property="eartagStatusUpateTime" />
+        <result column="add_date" property="addDate" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, farm_code, station_data_count, station_data_upate_time, station_status_count, station_status_upate_time, eartag_data_count, eartag_data_upate_time, eartag_status_count, eartag_status_upate_time, add_date
+    </sql>
+
+</mapper>

+ 49 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/EartagAbnormalCount.java

@@ -0,0 +1,49 @@
+package com.huimv.eartag2.manage2.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zn
+ * @since 2022-08-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EartagAbnormalCount implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String farmCode;
+
+    private Integer stationDataCount;
+
+    private Date stationDataUpateTime;
+
+    private Integer stationStatusCount;
+
+    private Date stationStatusUpateTime;
+
+    private Integer eartagDataCount;
+
+    private Date eartagDataUpateTime;
+
+    private Integer eartagStatusCount;
+
+    private Date eartagStatusUpateTime;
+
+    private Date addDate;
+
+
+}

+ 22 - 1
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/schedule/EartagTask.java

@@ -17,6 +17,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 
 import java.io.IOException;
 import java.sql.Timestamp;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -42,9 +43,19 @@ public class EartagTask {
     @Autowired
     private EartagDeviceRegisterService deviceRegisterService;
 
+    /**
+     * @Method      : countEartagOnlineTimes
+     * @Description : 判断耳标离线状态
+     * @Params      : []
+     * @Return      : void
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/8/20
+     * @Time        : 19:35
+     */
     // 10分钟
     @Scheduled(cron = "0 0/10 * * * ? ")
-    private void countEartagOnlineTimes() throws IOException {
+    private void countEartagOnlineTimes() throws IOException, ParseException {
         Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
         System.out.println("时间戳="+nowTimestamp);
 
@@ -57,6 +68,16 @@ public class EartagTask {
     }
 
 
+    /**
+     * @Method      : updateDevice
+     * @Description : 判断设备离线状态
+     * @Params      : []
+     * @Return      : void
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/8/20
+     * @Time        : 19:36
+     */
     // 5分钟
     @Scheduled(cron = "0 0/5 * * * ? ")
     private void updateDevice()  {

+ 20 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagAbnormalCountService.java

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

+ 3 - 1
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartagService.java

@@ -1,8 +1,10 @@
 package com.huimv.eartag2.manage2.service;
 
+import java.text.ParseException;
+
 public interface IEartagService {
 //    void getUnitByPigpen();
 
-    void updateEartagLiveStatusAndCount();
+    void updateEartagLiveStatusAndCount() throws ParseException;
 
 }

+ 39 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagAbnormalCountServiceImpl.java

@@ -0,0 +1,39 @@
+package com.huimv.eartag2.manage2.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.manage2.pojo.EartagAbnormalCount;
+import com.huimv.eartag2.manage2.mapper.EartagAbnormalCountMapper;
+import com.huimv.eartag2.manage2.service.EartagAbnormalCountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.sql.Wrapper;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-08-20
+ */
+@Service
+public class EartagAbnormalCountServiceImpl extends ServiceImpl<EartagAbnormalCountMapper, EartagAbnormalCount> implements EartagAbnormalCountService {
+    @Autowired
+    private EartagAbnormalCountMapper eartagAbnormalCountMapper;
+
+    @Override
+    public Result listAbnormalCount(Map<String, String> map) {
+        String farmCode = map.get("farmCode")+"";
+        String addDate = map.get("addDate")+"";
+        QueryWrapper<EartagAbnormalCount> wrapper = new QueryWrapper();
+        wrapper.eq("farm_code",farmCode).eq("add_date",addDate);
+        EartagAbnormalCount eartagAbnormalCount = eartagAbnormalCountMapper.selectOne(wrapper);
+        return new Result(ResultCode.SUCCESS,eartagAbnormalCount);
+    }
+}

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

@@ -1,6 +1,13 @@
 package com.huimv.eartag2.manage2.service.impl;
 
+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.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;
@@ -11,9 +18,13 @@ import com.huimv.eartag2.manage2.pojo.SysBaseConfig;
 import com.huimv.eartag2.manage2.service.IEartagService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
 import org.springframework.stereotype.Service;
 
+import javax.swing.text.html.Option;
+import javax.transaction.Transactional;
 import java.sql.Timestamp;
+import java.text.ParseException;
 import java.util.*;
 
 /**
@@ -37,7 +48,7 @@ public class EartagServiceImpl implements IEartagService {
     private EartagOnlineStatusMapper eartagOnlineStatusMapper;
 
     @Override
-    public void updateEartagLiveStatusAndCount() {
+    public void updateEartagLiveStatusAndCount() throws ParseException {
         // {}
         List<BasePigpen> basePigpenList =  getUnitByPigpen();
         System.out.println("basePigpenList.size="+basePigpenList.size());
@@ -55,12 +66,14 @@ public class EartagServiceImpl implements IEartagService {
         }else{
             log.error("耳标离线时间属性未配置.");
         }
+        JSONArray offlineJa = new JSONArray();
         List countList = new ArrayList();
         for(BasePigpen basePigpen:basePigpenList){
 //            System.out.println("basePigpen="+basePigpen);
-            String farmId = basePigpen.getFarmCode();
+            String farmCode = basePigpen.getFarmCode();
             Integer unitId = basePigpen.getId();
             String unitName = basePigpen.getPigpenName();
+            String pigpenName = basePigpen.getPigpenName();
             Map countMap = new HashMap<String,Object>();
             countList.add(countMap);
             int onlineTimes = 0;
@@ -70,14 +83,13 @@ public class EartagServiceImpl implements IEartagService {
             // 用330110002测试
 //            if(farmId.trim().equalsIgnoreCase("330110002")){
                 // {读取相关耳标注册记录}
-                List<EartagEartagRegister2> eartagEartagRegister2List = getEartagRegister(farmId,unitId);
+                List<EartagEartagRegister2> eartagEartagRegister2List = getEartagRegister(farmCode,unitId);
                 if(eartagEartagRegister2List.size() == 0){
                     System.out.println("该单元没有耳标。");
                 }
                 System.out.println("该单元没有耳标 eartagEartagRegister2List.size="+eartagEartagRegister2List.size());
                 for(EartagEartagRegister2 eartagEartagRegister2:eartagEartagRegister2List){
                     Date lastTime = eartagEartagRegister2.getLastTime();
-                    System.out.println("lastTime.getTime()="+lastTime.getTime());
                     long offlineTimeDiff = nowTimestamp.getTime()-lastTime.getTime();
                     if(offlineTimeDiff/(1000*60) >= offlineTimeDef){
                         eartagEartagRegister2.setLiveStatus(0);
@@ -97,7 +109,7 @@ public class EartagServiceImpl implements IEartagService {
                     eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
                 }
 //            }
-            countMap.put("farmId",farmId);
+            countMap.put("farmCode",farmCode);
             countMap.put("unitId",unitId);
             countMap.put("unitName",unitName);
             countMap.put("total",onlineTimes+offlineTimes);
@@ -105,12 +117,20 @@ public class EartagServiceImpl implements IEartagService {
             countMap.put("offline",offlineTimes);
             countMap.put("onlineEarmark",onlineSb.toString());
             countMap.put("offlineEarmark",offlineSb.toString());
-        }
 
+            //耳标离线报警
+            if(offlineSb.length()>0){
+                JSONObject offlineJo = new JSONObject();
+                offlineJa.add(offlineJo);
+                offlineJo.put("pigpen",pigpenName+unitName);
+                offlineJo.put("earmark",offlineSb.toString());
+                offlineJo.put("farmCode",farmCode);
+            }
+        }
         for(int a=0;a<countList.size();a++){
             Map countMap = (Map) countList.get(a);
             EartagOnlineStatus eartagOnlineStatus = new EartagOnlineStatus();
-            eartagOnlineStatus.setFarmId(countMap.get("farmId").toString());
+            eartagOnlineStatus.setFarmId(countMap.get("farmCode").toString());
             eartagOnlineStatus.setUnitId(countMap.get("unitId").toString());
             eartagOnlineStatus.setUnitName(countMap.get("unitName").toString());
             eartagOnlineStatus.setTotal(Integer.parseInt(countMap.get("total").toString()));
@@ -121,6 +141,70 @@ public class EartagServiceImpl implements IEartagService {
             eartagOnlineStatus.setAddTime(nowTimestamp);
             eartagOnlineStatusMapper.insert(eartagOnlineStatus);
         }
+        //添加异常报警信息
+        saveEartagOfflineAlarm(offlineJa);
+    }
+
+    @Autowired
+    private EartagAbnormalAlarmEntityRepo eartagAbnormalAlarmEntityRepo;
+    @Autowired
+    private EartagAbnormalCountEntityRepo eartagAbnormalCountEntityRepo;
+
+    //添加异常报警信息
+    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());
+        //耳标离线:6
+        int alarmSort = 6;
+        //耳标:2
+        int alarmFrom = 2;
+        //状态:1
+        int alarmType = 1;
+        int offlineTimes = 0;
+        String farmCode = "";
+        //保存警报信息
+        for(int a=0;a<offlineJa.size();a++){
+            JSONObject offlineJo = offlineJa.getJSONObject(a);
+            String pigpen = offlineJo.getString("pigpen");
+            String earmark = offlineJo.getString("earmark");
+            farmCode = offlineJo.getString("farmCode");
+            String[] earmarkArray = earmark.split(",");
+            offlineTimes += earmarkArray.length;
+            for(int b=0;b<earmarkArray.length;b++){
+                String alarmContent = "离线警报:"+pigpen+"耳标号["+earmarkArray[b]+"]已离线";
+                EartagAbnormalAlarmEntity newEartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+                newEartagAbnormalAlarmEntity.setFarmCode(farmCode);
+                newEartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
+                newEartagAbnormalAlarmEntity.setAddDate(todayDate);
+                newEartagAbnormalAlarmEntity.setAlarmSort(alarmSort);
+                newEartagAbnormalAlarmEntity.setAlarmType(alarmType);
+                newEartagAbnormalAlarmEntity.setAlarmFrom(alarmFrom);
+                newEartagAbnormalAlarmEntity.setContent(alarmContent);
+                eartagAbnormalAlarmEntityRepo.saveAndFlush(newEartagAbnormalAlarmEntity);
+            }
+        }
+        //保存耳标警报次数
+        saveEartagOfflineCount(farmCode,offlineTimes,todayDate,nowTimestamp);
+    }
+
+    //保存耳标警报次数
+    private void saveEartagOfflineCount(String farmCode, int offlineTimes, java.sql.Date todayDate, Timestamp nowTimestamp) {
+        EartagAbnormalCountEntity eartagAbnormalCountEntity = new EartagAbnormalCountEntity();
+        eartagAbnormalCountEntity.setFarmCode(farmCode);
+        eartagAbnormalCountEntity.setAddDate(todayDate);
+        Example<EartagAbnormalCountEntity> example = Example.of(eartagAbnormalCountEntity);
+        Optional<EartagAbnormalCountEntity> optional = eartagAbnormalCountEntityRepo.findOne(example);
+        if(!optional.isPresent()){
+            eartagAbnormalCountEntity.setEartagStatusCount(offlineTimes);
+            eartagAbnormalCountEntity.setEartagStatusUpateTime(nowTimestamp);
+            eartagAbnormalCountEntityRepo.saveAndFlush(eartagAbnormalCountEntity);
+        }else{
+            EartagAbnormalCountEntity queryEartagAbnormalCountEntity = optional.get();
+            queryEartagAbnormalCountEntity.setEartagStatusCount(offlineTimes);
+            queryEartagAbnormalCountEntity.setEartagStatusUpateTime(nowTimestamp);
+            eartagAbnormalCountEntityRepo.saveAndFlush(queryEartagAbnormalCountEntity);
+        }
     }
 
     private List<EartagEartagRegister2> getEartagRegister(String farmId, Integer unitId) {

+ 3 - 1
huimv-eartag2-platform/huimv-eartag2-manage2/src/test/java/com/huimv/eartag2/manage2/service/IEartagServiceTest.java

@@ -7,6 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.text.ParseException;
+
 /**
  * @Project : huimv.shiwan
  * @Package : com.huimv.biosafety.uface.controller
@@ -22,7 +24,7 @@ public class IEartagServiceTest {
     private IEartagService eartagService;
 
     @Test
-    public void test1(){
+    public void test1() throws ParseException {
         eartagService.updateEartagLiveStatusAndCount();
 
     }