523096025 1 年間 前
コミット
7a54def00e
18 ファイル変更870 行追加415 行削除
  1. 5 3
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagAbnormalAlarmEntity.java
  2. 1 0
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDeviceRegisterRepo.java
  3. 6 6
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java
  4. 0 29
      huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java
  5. 2 3
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java
  6. 2 1
      huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/EartagServiceImpl.java
  7. 2 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/HuimvManageApplication.java
  8. 18 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/mapper/EartagDeviceRegisterMapper.java
  9. 17 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/mapper/EartagEartagRegister2Mapper.java
  10. 86 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagDeviceRegister.java
  11. 120 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/pojo/EartagEartagRegister2.java
  12. 17 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/EartagDeviceRegisterService.java
  13. 21 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IEartagEartagRegister2Service.java
  14. 116 64
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java
  15. 22 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagDeviceRegisterServiceImpl.java
  16. 22 0
      huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagEartagRegister2ServiceImpl.java
  17. 287 294
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/schedule/EartagTask.java
  18. 126 15
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagServiceImpl.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 - 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);
 

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

@@ -298,12 +298,12 @@ public class EartagListener {
     }
 
 //    @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);
-    }
+//    @RabbitListener(queues = "#{'direct.updateEartagPropertyOfAllStatus.queue' + ${rabbitmq.queues}}")
+//    @RabbitHandler
+//    public void updateEartagPropertyOfAllStatus(JSONObject dataJo) throws ParseException {
+//        log.info("判断该设备编号是否存在牧场缓存在线集合当中------>"+dataJo);
+//        eartagService.updateEartagPropertyOfAllStatus(dataJo);
+//    }
 
 
 

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

@@ -1207,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

+ 2 - 3
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java

@@ -292,7 +292,7 @@ public class DataServiceImpl implements IDataService {
     private Integer queues;
 
     @Override
-    public void sendEartagMQ(Map map,String eartag) throws IOException, ParseException {
+    public   void sendEartagMQ(Map map,String eartag) throws IOException, ParseException {
         int i = Math.abs(eartag.hashCode()) % queues;
 
 
@@ -328,8 +328,7 @@ public class DataServiceImpl implements IDataService {
             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);
-            return;
+//            rabbitTemplate.convertAndSend(Const.EXCHANGE_AllSTATUS, Const.ROUTING_KEY_AllSTATUS+i, dataJo);
         }
     }
 

+ 2 - 1
huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/EartagServiceImpl.java

@@ -95,6 +95,7 @@ public class EartagServiceImpl implements IEartagService {
             }
         }
         int lastAct = Integer.parseInt(redisTemplate.opsForHash().get(earmark, "act").toString());
+        redisTemplate.opsForHash().put(earmark, "act",nowAct);
 
         return  nowActInt < lastAct ?  nowActInt: nowActInt - lastAct;
 
@@ -105,7 +106,7 @@ public class EartagServiceImpl implements IEartagService {
      * 初始化redis最新记录
      */
     private void initRedisObj(String earmark,String farmId) {
-        EartagData lastEartagDataEntity = eartagData2Mapper.selectOne(new QueryWrapper<EartagData>().eq("farm_id", farmId).eq("earmark", earmark).orderByDesc("ask_time").last("limit 1"));
+        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

+ 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);

+ 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> {
+
+}

+ 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> {
+
+
+}

+ 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

+ 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 {
+
+
+
+}

+ 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 = "0 0/3 * * * ? ")
+//    @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);
+        }
+    }*/
+}
+

+ 126 - 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,119 @@ 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("live_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);
+            }
+            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(1);
+                newEartagAbnormalAlarmEntity.setAlarmFrom(2);
+                newEartagAbnormalAlarmEntity.setContent(alarmContent);
+                eartagAbnormalAlarmEntityRepo.saveAndFlush(newEartagAbnormalAlarmEntity);
+            }
+
+
+            EartarFarmAllStatus eartarFarmAllStatus = eartarFarmAllStatusMapper.selectOne(new QueryWrapper<EartarFarmAllStatus>().eq("create_date", 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.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 +262,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 +378,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 +413,7 @@ public class EartagServiceImpl implements IEartagService {
         }
         //保存耳标警报次数
         saveEartagOfflineCount(farmCode, offlineTimes, todayDate, nowTimestamp);
-    }
+    }*/
 
     //保存耳标警报次数
     private void saveEartagOfflineCount(String farmCode, int offlineTimes, java.sql.Date todayDate, Timestamp nowTimestamp) {