Ver Fonte

新增总状态查询;

zhuoning há 3 anos atrás
pai
commit
270aa30078
19 ficheiros alterados com 487 adições e 10 exclusões
  1. 5 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartarFarmAllStatusRepo.java
  2. 6 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/IDevice.java
  3. 32 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/impl/DeviceImpl.java
  4. 21 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/DateUtil.java
  5. 25 0
      huimv-eartag2-platform/huimv-eartag2-manage/pom.xml
  6. 26 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/HuimvManageApplication.java
  7. 75 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceController.java
  8. 20 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/ICacheService.java
  9. 13 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceService.java
  10. 65 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/CacheServiceImpl.java
  11. 139 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java
  12. 12 2
      huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application-dev.yml
  13. 23 0
      huimv-eartag2-platform/huimv-eartag2-manage/src/test/java/com/huimv/eartag2/manage/utils/DateUtilTest.java
  14. 2 3
      huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/HuimvEartag2Process2Application.java
  15. 11 0
      huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/controller/RedisContrller.java
  16. 2 2
      huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/listener/DeviceListener.java
  17. 1 1
      huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/listener/EartagListener.java
  18. 2 2
      huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/service/impl/DeviceServiceImpl.java
  19. 7 0
      huimv-eartag2-platform/pom.xml

+ 5 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartarFarmAllStatusRepo.java

@@ -5,8 +5,13 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.List;
+
 public interface EartarFarmAllStatusRepo extends JpaRepository<EartarFarmAllStatusEntity, Integer>, JpaSpecificationExecutor<EartarFarmAllStatusEntity> {
 
     @Query(nativeQuery = true,value = "SELECT * FROM eartar_farm_all_status WHERE farm_id=?1 AND DATE_FORMAT(create_date,'%Y-%m-%d')=DATE_FORMAT(?2,'%Y-%m-%d')")
     EartarFarmAllStatusEntity getOneByFarmIdAndCreateDate(String farmId,String todayDateText);
+
+    @Query(nativeQuery = true,value = "SELECT * FROM eartar_farm_all_status WHERE farm_id=?1 AND create_date BETWEEN DATE_FORMAT(?2,'%Y-%m-%d') AND DATE_FORMAT(?3,'%Y-%m-%d') ORDER BY create_date ASC")
+    List<EartarFarmAllStatusEntity> getOneByFarmIdAndCreateDateAndPastDate(String farmId, String pastDate, String todayDate);
 }

+ 6 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/IDevice.java

@@ -0,0 +1,6 @@
+package com.huimv.eartag2.common.service;
+
+public interface IDevice {
+    //计算注销设备数量
+    int getDeviceCancelTotalFromDeviceRegister(String farmId);
+}

+ 32 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/impl/DeviceImpl.java

@@ -0,0 +1,32 @@
+package com.huimv.eartag2.common.service.impl;
+
+import com.huimv.eartag2.common.dao.repo.EartagDeviceRegisterRepo;
+import com.huimv.eartag2.common.service.IDevice;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class DeviceImpl  {
+    @Autowired
+    private EartagDeviceRegisterRepo deviceRegisterRepo;
+
+    //计算注销设备数量
+//    @Override
+    public int getDeviceCancelTotalFromDeviceRegister(String farmId) {
+        List<Object[]> deviceRegList = deviceRegisterRepo.getDeviceCountByFarmId(farmId);
+        Object[] deviceRegObj = (Object[]) deviceRegList.get(0);
+        //设备总数
+        return Integer.parseInt(deviceRegObj[0].toString());
+    }
+}

+ 21 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/DateUtil.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -91,11 +92,31 @@ public class DateUtil {
         return sdf.format(new Date());
     }
 
+    public java.sql.Date getTodayMySQLDate(){
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        return todayDate;
+    }
+
+    public Timestamp getTimestamp(){
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        return nowTimestamp;
+    }
+
     public String getTodayText() throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         return sdf.format(new Date());
     }
 
+    public String formatDateText(Date date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(date);
+    }
+
+    public String formatDatetimeText(Date date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return sdf.format(date);
+    }
+
     public String getNowText() throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
         return sdf.format(new Date());

+ 25 - 0
huimv-eartag2-platform/huimv-eartag2-manage/pom.xml

@@ -11,5 +11,30 @@
 
     <artifactId>huimv-eartag2-manage</artifactId>
 
+    <dependencies>
+        <!-- eartag2-common -->
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-eartag2-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <!--rabbitmq-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
 
+        <!--rabbitmq.client-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.rabbitmq</groupId>-->
+        <!--            <artifactId>amqp-client</artifactId>-->
+        <!--            <version>3.4.1</version>-->
+        <!--        </dependency>-->
+
+        <!-- actuator -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+    </dependencies>
 </project>

+ 26 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/HuimvManageApplication.java

@@ -0,0 +1,26 @@
+package com.huimv.eartag2.manage;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootApplication
+@EntityScan(value = "com.huimv.eartag2.common.dao.entity")
+@EnableJpaRepositories(basePackages = "com.huimv.eartag2.common.dao.repo")
+//@ComponentScan(value = "com.huimv.eartag2.common.service")
+//@ComponentScan(basePackages = "com.huimv.eartag2.common.service.impl")
+public class HuimvManageApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(HuimvManageApplication.class, args);
+    }
+}

+ 75 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceController.java

@@ -0,0 +1,75 @@
+package com.huimv.eartag2.manage.controller;
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.manage.service.ICacheService;
+import com.huimv.eartag2.manage.service.IDeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.ParseException;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@RestController
+@RequestMapping(value = "/device")
+@Slf4j
+public class DeviceController {
+    @Autowired
+    private ICacheService cacheService;
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+    @Autowired
+    private IDeviceService deviceService;
+
+    /**
+     * @Method      : getNowAllStatus
+     * @Description : 读取最新设备和耳标总状态
+     * @Params      : []
+     * @Return      : void
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/5       
+     * @Time        : 17:03
+     */
+    @RequestMapping(value = "/getNowAllStatus",method = RequestMethod.GET)
+    public Result getNowAllStatus(@RequestParam(value = "farmId",required = true) String farmId) throws ParseException {
+        log.info("<getNowAllStatus>输入参数 farmId>>"+farmId);
+        //
+        return deviceService.getNowAllStatus(farmId);
+    }
+
+    /**
+     * @Method      : listManyDaysAllStatus
+     * @Description : 显示N天的总状态记录
+     * @Params      : [farmId, days]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/6
+     * @Time        : 22:18
+     */
+    @RequestMapping(value = "/listManyDaysAllStatus",method = RequestMethod.GET)
+    public Result listManyDaysAllStatus(@RequestParam(value = "farmId",required = true) String farmId,@RequestParam(value = "days",required = true) Integer days) throws ParseException {
+        log.info("<listManyDaysAllStatus>输入参数 farmId>>"+farmId);
+        log.info("<listManyDaysAllStatus>输入参数 days>>"+days);
+        if(days == null){
+            //默认7天数据
+            days = 7;
+        }
+        //
+        return deviceService.listManyDaysAllStatus(farmId,days);
+    }
+
+}

+ 20 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/ICacheService.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.manage.service;
+
+import com.huimv.eartag2.common.dao.entity.EartarFarmAllStatusEntity;
+import com.huimv.eartag2.common.utils.Result;
+
+import java.util.Map;
+
+public interface ICacheService {
+
+    Map getFarmAllStatusByFarmId(String farmId);
+
+    //读取设备在线数量
+    int getDeviceOnlineTotal(String farmId, String todayDateText);
+
+    //读取耳标在线数量
+    int getEartagOnlineTotal(String farmId, String todayDateText);
+
+    //
+    void putFarmAllStatusCache(String farmId, EartarFarmAllStatusEntity newFarmAllStatusEntity);
+}

+ 13 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceService.java

@@ -0,0 +1,13 @@
+package com.huimv.eartag2.manage.service;
+
+import com.huimv.eartag2.common.utils.Result;
+
+import java.text.ParseException;
+
+public interface IDeviceService {
+    //
+    Result getNowAllStatus(String farmId) throws ParseException;
+
+    //显示前N天记录
+    Result listManyDaysAllStatus(String farmId, Integer days) throws ParseException;
+}

+ 65 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/CacheServiceImpl.java

@@ -0,0 +1,65 @@
+package com.huimv.eartag2.manage.service.impl;
+
+import com.huimv.eartag2.common.dao.entity.EartarFarmAllStatusEntity;
+import com.huimv.eartag2.common.utils.BizConst;
+import com.huimv.eartag2.manage.service.ICacheService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class CacheServiceImpl implements ICacheService {
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Override
+    public Map getFarmAllStatusByFarmId(String farmId) {
+        String hashKey = BizConst.FARM_ALL_STATUS_PREFIX+farmId;
+        return redisTemplate.opsForHash().entries(hashKey);
+    }
+
+    @Override
+    public int getDeviceOnlineTotal(String farmId, String todayDateText) {
+        String setKey = BizConst.SET_FARM_DEVICE_ONLINE_PREFIX+farmId+"_"+todayDateText;
+        Set<String> resultSet = redisTemplate.opsForSet().members(setKey);
+        return resultSet.size();
+    }
+
+    @Override
+    public int getEartagOnlineTotal(String farmId, String todayDateText) {
+        String setKey = BizConst.SET_FARM_EARMARK_ONLINE_PREFIX+farmId+"_"+todayDateText;
+        Set<String> resultSet = redisTemplate.opsForSet().members(setKey);
+        return resultSet.size();
+    }
+
+    @Override
+    public void putFarmAllStatusCache(String farmId, EartarFarmAllStatusEntity farmAllStatusEntity) {
+        Map allStatusMap = new HashMap();
+//        allStatusMap.put("id",farmAllStatusEntity.getId());
+        allStatusMap.put("deviceTotal",farmAllStatusEntity.getDeviceTotal());
+        allStatusMap.put("deviceOnline",farmAllStatusEntity.getDeviceOnline());
+        allStatusMap.put("deviceOffline",farmAllStatusEntity.getDeviceOffline());
+        allStatusMap.put("deviceRate",farmAllStatusEntity.getDeviceRate());
+        allStatusMap.put("deviceCancel",farmAllStatusEntity.getDeviceCancel());
+        allStatusMap.put("eartagTotal",farmAllStatusEntity.getEartagTotal());
+        allStatusMap.put("eartagOnline",farmAllStatusEntity.getEartagOnline());
+        allStatusMap.put("farmId",farmId);
+//        allStatusMap.put("updateTime",duObj.formatDateTime(duObj.getTodayText()));
+//        allStatusMap.put("createDate",duObj.getTodayDate());
+        allStatusMap.put("updateTime",farmAllStatusEntity.getUpdateTime());
+        allStatusMap.put("createDate",farmAllStatusEntity.getCreateDate());
+        redisTemplate.opsForHash().putAll(BizConst.FARM_ALL_STATUS_PREFIX+farmId, allStatusMap);
+    }
+}

+ 139 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java

@@ -0,0 +1,139 @@
+package com.huimv.eartag2.manage.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.eartag2.common.dao.entity.EartarFarmAllStatusEntity;
+import com.huimv.eartag2.common.dao.repo.EartagDeviceRegisterRepo;
+import com.huimv.eartag2.common.dao.repo.EartagEartagRegisterRepo;
+import com.huimv.eartag2.common.dao.repo.EartarFarmAllStatusRepo;
+//import com.huimv.eartag2.common.service.IDevice;
+import com.huimv.eartag2.common.service.impl.DeviceImpl;
+import com.huimv.eartag2.common.utils.BizConst;
+import com.huimv.eartag2.common.utils.DateUtil;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.manage.service.ICacheService;
+import com.huimv.eartag2.manage.service.IDeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+@Slf4j
+public class DeviceServiceImpl implements IDeviceService {
+    @Autowired
+    private ICacheService cacheService;
+    @Autowired
+    private EartarFarmAllStatusRepo farmAllStatusRepo;
+    @Autowired
+    private EartagDeviceRegisterRepo deviceRegisterRepo;
+    @Autowired
+    private EartagEartagRegisterRepo eartagRegisterRepo;
+
+    @Override
+    public Result getNowAllStatus(String farmId) throws ParseException {
+        //#读取设备和耳标总状态缓存;
+        //      总状态缓存存在:从缓存读取数据返回;
+        //      总状态缓存不存在:从数据库读取记录:
+        //              {
+        //              数据库记录存在:读取记录返回,并初始化缓存;
+        //              数据库记录不存在:则构建数据库记录,并初始化缓存,返回结果;
+        //              }
+
+        //{从总状态缓存钟读取缓存数据}
+        DateUtil dateUtil = new DateUtil();
+        Map farmAllStatusMap = cacheService.getFarmAllStatusByFarmId(farmId);
+        if(farmAllStatusMap.size()>0){
+            log.info("返回缓存数据.");
+            return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(farmAllStatusMap));
+        }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);
+                return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(farmAllStatusEntity));
+            }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 rateBd= new BigDecimal(deviceOnlineTotal).divide(new BigDecimal(deviceTotal),1,BigDecimal.ROUND_HALF_UP);
+                EartarFarmAllStatusEntity newFarmAllStatusEntity = new EartarFarmAllStatusEntity();
+                newFarmAllStatusEntity.setDeviceTotal(deviceTotal);
+                newFarmAllStatusEntity.setDeviceOnline(deviceOnlineTotal);
+                newFarmAllStatusEntity.setDeviceOffline(deviceOffline);
+                newFarmAllStatusEntity.setDeviceRate(Float.parseFloat(rateBd.toString()));
+                newFarmAllStatusEntity.setEartagTotal(eartagTotal);
+                newFarmAllStatusEntity.setEartagOnline(eartagOnlineTotal);
+                newFarmAllStatusEntity.setFarmId(farmId);
+                newFarmAllStatusEntity.setUpdateTime(timestamp);
+                newFarmAllStatusEntity.setCreateDate(todayDate);
+                farmAllStatusRepo.saveAndFlush(newFarmAllStatusEntity);
+                //*初始化总状态缓存*/
+                cacheService.putFarmAllStatusCache(farmId,newFarmAllStatusEntity);
+                return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(newFarmAllStatusEntity));
+            }
+        }
+
+    }
+
+    @Override
+    public Result listManyDaysAllStatus(String farmId, Integer days) throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        String pastDate = dateUtil.getPastDate(days);
+        String todayDate = dateUtil.getTodayDateText();
+        List<EartarFarmAllStatusEntity> FarmAllStatusEntityList = farmAllStatusRepo.getOneByFarmIdAndCreateDateAndPastDate(farmId,pastDate,todayDate);
+        JSONArray dataJa = new JSONArray();
+        for(EartarFarmAllStatusEntity farmAllStatusEntity:FarmAllStatusEntityList)
+        {
+            JSONObject newJo = new JSONObject();
+            dataJa.add(newJo);
+            newJo.put("time",dateUtil.formatDateText(farmAllStatusEntity.getCreateDate()));
+            newJo.put("value",farmAllStatusEntity.getDeviceOnline());
+            newJo.put("total", farmAllStatusEntity.getDeviceTotal());
+            newJo.put("rate", farmAllStatusEntity.getDeviceRate());
+            newJo.put("offline", farmAllStatusEntity.getDeviceOffline());
+        }
+        return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(dataJa));
+    }
+
+    //计算注册设备数量
+    private int getDeviceCancelTotalFromDeviceRegister(String farmId) {
+        List<Object[]> deviceRegList = deviceRegisterRepo.getDeviceCountByFarmId(farmId);
+        Object[] deviceRegObj = (Object[]) deviceRegList.get(0);
+        //设备总数
+        return Integer.parseInt(deviceRegObj[0].toString());
+    }
+
+    //计算注册耳标数量
+    public Integer getEartagRegTotalByFarmId(String farmId){
+        int eartagTotal = 0;
+        List<Object[]> eartagRegList = eartagRegisterRepo.getEartagCountByFarmId(farmId);
+        Object[] eartagRegObj = (Object[]) eartagRegList.get(0);
+        //处于工作状态的耳标总数
+        return Integer.parseInt(eartagRegObj[0].toString());
+    }
+}

+ 12 - 2
huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application-dev.yml

@@ -1,5 +1,5 @@
 server:
-  port: 8094
+  port: 8096
 spring:
   application:
     name: huimv-eartag2-manage
@@ -79,6 +79,17 @@ spring:
 #    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
 #    open-in-view: true
 
+  rabbitmq:
+    host: 192.168.1.170
+    port: 5672
+    username: admin
+    password: admin
+    #虚拟host 可以不设置,使用server默认host
+    virtual-host: /
+    listener:
+      simple:
+        acknowledge-mode: none
+
   #redis
   redis:
     database: 0
@@ -92,4 +103,3 @@ spring:
         max-wait: -1
         max-idle: 10
         min-idle: 0
-

+ 23 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/test/java/com/huimv/eartag2/manage/utils/DateUtilTest.java

@@ -0,0 +1,23 @@
+package com.huimv.eartag2.manage.utils;
+
+import com.huimv.eartag2.common.utils.DateUtil;
+import org.junit.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootTest
+public class DateUtilTest {
+    @Test
+    public void testDate(){
+        DateUtil dateUtil = new DateUtil();
+        String date = dateUtil.getPastDate(1);
+        System.out.println("date>>"+date);
+    }
+}

+ 2 - 3
huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/HuimvEartag2Process2Application.java

@@ -3,7 +3,6 @@ package com.huimv.eartag2.process2;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.context.annotation.ComponentScan;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
 /**
@@ -18,9 +17,9 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 //@ComponentScan(basePackages = {"com.huimv.eartag2.common.utils"})
 @EntityScan(value = "com.huimv.eartag2.common.dao.entity")
 @EnableJpaRepositories(basePackages = "com.huimv.eartag2.common.dao.repo")
-public class HuimvEartag2Process2Application {
+public class HuimvProcess2Application {
     public static void main(String[] args) {
-        SpringApplication.run(HuimvEartag2Process2Application.class, args);
+        SpringApplication.run(HuimvProcess2Application.class, args);
     }
 
 }

+ 11 - 0
huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/controller/RedisContrller.java

@@ -5,6 +5,7 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
@@ -47,5 +48,15 @@ public class RedisContrller {
         boolean memberStatus2 = redisTemplate.opsForSet().isMember(setKey,company);
         System.out.println(setKey+" isMember >>"+memberStatus2);
 
+        String hashKey = BizConst.FARM_ALL_STATUS_PREFIX+"101";
+        System.out.println("hashKey>>>>>>>>>>>>>>>>>>>>>>>>"+hashKey);
+        Map allMap = redisTemplate.opsForHash().entries(hashKey);
+        System.out.println("allMap>>>>>>>>>>>>>>>>>>>>>>>>>"+allMap.toString());
+        if(allMap.size()==0){
+            System.out.println("==0");
+        }else{
+            System.out.println("!=0");
+        }
+
     }
 }

+ 2 - 2
huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/listener/DeviceListener.java

@@ -45,7 +45,7 @@ public class DeviceListener {
      * @Date : 2022/2/15
      * @Time : 8:56
      */
-    @RabbitListener(queues = Const.QUEUE_DEVICE_HEARTBEAT)
+//    @RabbitListener(queues = Const.QUEUE_DEVICE_HEARTBEAT)
     @RabbitHandler
     public void processDeviceHeartbeat(Map DeviceMap) throws ParseException {
         System.out.println("222 <<<<<<<<<<<<<<< 处理设备心跳数据>>" + DeviceMap.toString());
@@ -150,7 +150,7 @@ public class DeviceListener {
      * @Date : 2022/2/15
      * @Time : 9:05
      */
-    @RabbitListener(queues = Const.QUEUE_DEVICE_TEMP)
+//    @RabbitListener(queues = Const.QUEUE_DEVICE_TEMP)
     @RabbitHandler
     public void processDeviceTemp(Map DeviceTempMap) throws ParseException {
         System.out.println("333 <<<<<<<<<<<<<<< 处理设备温度数据>>" + DeviceTempMap.toString());

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/listener/EartagListener.java

@@ -55,7 +55,7 @@ public class EartagListener {
      * @Date : 2022/2/15
      * @Time : 8:55
      */
-    @RabbitListener(queues = Const.QUEUE_EARTAG)
+//    @RabbitListener(queues = Const.QUEUE_EARTAG)
     @RabbitHandler
     public void processRawdata(Map RawMap) throws ParseException {
         System.out.println("444 <<<<<<<<<<<<<<< 处理耳标数据>>" + RawMap.toString());

+ 2 - 2
huimv-eartag2-platform/huimv-eartag2-process2/src/main/java/com/huimv/eartag2/process2/service/impl/DeviceServiceImpl.java

@@ -534,10 +534,10 @@ public class DeviceServiceImpl implements IDeviceService {
             int total = farmAllStatusEntity.getDeviceTotal();
             onlineNum++;
             offlineNum--;
-            BigDecimal reateBd= new BigDecimal(onlineNum).divide(new BigDecimal(total),1,BigDecimal.ROUND_HALF_UP);
+            BigDecimal rateBd= new BigDecimal(onlineNum).divide(new BigDecimal(total),1,BigDecimal.ROUND_HALF_UP);
             farmAllStatusEntity.setDeviceOnline(onlineNum);
             farmAllStatusEntity.setDeviceOffline(offlineNum);
-            farmAllStatusEntity.setDeviceRate(Float.parseFloat(reateBd.toString()));
+            farmAllStatusEntity.setDeviceRate(Float.parseFloat(rateBd.toString()));
             farmAllStatusEntity.setUpdateTime(new Timestamp(new Date().getTime()));
             eartagFarmAllStatusRepo.saveAndFlush(farmAllStatusEntity);
             //# 同步更新牧场总状态缓存相关字段 #

+ 7 - 0
huimv-eartag2-platform/pom.xml

@@ -88,6 +88,13 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <!-- lombok -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.18</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>