Browse Source

新建查看注册信息功能,新建查询设备在线记录功能

zhuoning 3 years ago
parent
commit
5446bbc0de

+ 4 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDeviceOnlineRepo.java

@@ -5,10 +5,14 @@ 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;
 import java.util.Queue;
 
 public interface EartagDeviceOnlineRepo extends JpaRepository<EartagDeviceOnlineEntity, Integer>, JpaSpecificationExecutor<EartagDeviceOnlineEntity> {
 
     @Query(nativeQuery = true,value = "SELECT * FROM eartag_device_online WHERE device_code=?1 AND DATE_FORMAT(add_date,'%Y-%m-%d')=DATE_FORMAT(?2,'%Y-%m-%d') limit 1")
     EartagDeviceOnlineEntity getDeviceOnline(String deviceCode,String todayText);
+
+    @Query(nativeQuery = true,value = "SELECT * FROM eartag_device_online WHERE farm_id=?1 AND DATE_FORMAT(add_date,'%Y-%m-%d')=DATE_FORMAT(?2,'%Y-%m-%d') ORDER BY add_date DESC")
+    List<EartagDeviceOnlineEntity> getDeviceOnlineByFarmIdAndCreateDate(String farmId, String todayDate);
 }

+ 4 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/BizConst.java

@@ -36,6 +36,10 @@ public class BizConst {
     //牧场总状态表+牧场id
     public final static String FARM_ALL_STATUS_PREFIX = "farm_all_status_";
 
+    public final static Integer CODE_ONLINE_NO_EXIST = 10001;
+    public final static String MSG_ONLINE_NO_EXIST = "今天无在线设备.";
 
+    public final static Integer CODE_REGISTER_NO_EXIST = 10002;
+    public final static String MSG_REGISTER_NO_EXIST = "该设备不存在.";
 
 }

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

@@ -108,11 +108,17 @@ public class DateUtil {
     }
 
     public String formatDateText(Date date) throws ParseException {
+        if(date == null){
+            return "";
+        }
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         return sdf.format(date);
     }
 
     public String formatDatetimeText(Date date) throws ParseException {
+        if(date == null){
+            return "";
+        }
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         return sdf.format(date);
     }

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

@@ -72,4 +72,38 @@ public class DeviceController {
         return deviceService.listManyDaysAllStatus(farmId,days);
     }
 
+    /**
+     * @Method      : listOnlineDevice
+     * @Description : 显示当天在线设备记录
+     * @Params      : [farmId]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/7
+     * @Time        : 11:09
+     */
+    @RequestMapping(value = "/listOnlineDevice",method = RequestMethod.GET)
+    public Result listOnlineDevice(@RequestParam(value = "farmId",required = true) String farmId) throws ParseException {
+        log.info("<listOnlineDevice>输入参数 farmId>>"+farmId);
+        //
+        return deviceService.listOnlineDevice(farmId);
+    }
+
+    /**
+     * @Method      : getDeviceRegisterByDeviceCode
+     * @Description : 通过设备编码查询设备注册信息
+     * @Params      : [deviceCode]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/7       
+     * @Time        : 14:01
+     */
+    @RequestMapping(value = "/getDeviceRegisterByDeviceCode",method = RequestMethod.GET)
+    public Result getDeviceRegisterByDeviceCode(@RequestParam(value = "deviceCode",required = true) String deviceCode){
+        log.info("<getDeviceRegisterByDeviceCode>输入参数 deviceCode>>"+deviceCode);
+        //
+        return deviceService.getDeviceRegisterByDeviceCode(deviceCode);
+    }
+
 }

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

@@ -10,4 +10,10 @@ public interface IDeviceService {
 
     //显示前N天记录
     Result listManyDaysAllStatus(String farmId, Integer days) throws ParseException;
+
+    //显示在线设备
+    Result listOnlineDevice(String farmId) throws ParseException;
+
+    //
+    Result getDeviceRegisterByDeviceCode(String deviceCode);
 }

+ 80 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java

@@ -2,7 +2,10 @@ package com.huimv.eartag2.manage.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.huimv.eartag2.common.dao.entity.EartagDeviceOnlineEntity;
+import com.huimv.eartag2.common.dao.entity.EartagDeviceRegisterEntity;
 import com.huimv.eartag2.common.dao.entity.EartarFarmAllStatusEntity;
+import com.huimv.eartag2.common.dao.repo.EartagDeviceOnlineRepo;
 import com.huimv.eartag2.common.dao.repo.EartagDeviceRegisterRepo;
 import com.huimv.eartag2.common.dao.repo.EartagEartagRegisterRepo;
 import com.huimv.eartag2.common.dao.repo.EartarFarmAllStatusRepo;
@@ -16,6 +19,7 @@ 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.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
@@ -46,6 +50,81 @@ public class DeviceServiceImpl implements IDeviceService {
     private EartagDeviceRegisterRepo deviceRegisterRepo;
     @Autowired
     private EartagEartagRegisterRepo eartagRegisterRepo;
+    @Value("${device.online.access_mode}")
+    private String deviceOnlineAccessMode;
+    @Autowired
+    private EartagDeviceOnlineRepo deviceOnlineRepo;
+
+
+    /**
+     * @Method      : getDeviceRegisterByDeviceCode
+     * @Description : 通过设备编号显示设备注册信息
+     * @Params      : [deviceCode]
+     * @Return      : void
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/7       
+     * @Time        : 13:55
+     */
+    @Override
+    public Result getDeviceRegisterByDeviceCode(String deviceCode) {
+        //
+        EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getDeviceRegister(deviceCode);
+        if(deviceRegisterEntity == null){
+            log.error(BizConst.MSG_REGISTER_NO_EXIST);
+            return new Result(BizConst.CODE_REGISTER_NO_EXIST,BizConst.MSG_REGISTER_NO_EXIST,false);
+        }else{
+            return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(deviceRegisterEntity));
+        }
+    }
+
+    /**
+     * @Method      : listOnlineDevice
+     * @Description : 显示在线设备记录
+     * @Params      : [farmId]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/7
+     * @Time        : 13:21
+     */
+    @Override
+    public Result listOnlineDevice(String farmId) throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        String todayDate = dateUtil.getTodayDateText();
+        //* 这里提供2种方式:1、从数据库读取 2、从缓存中取数(后期优化),但是同时提供2种方式都可用,防止缓存方式失效 */
+        System.out.println("deviceOnlineAccessMode>>"+deviceOnlineAccessMode);
+        if(deviceOnlineAccessMode.trim().equalsIgnoreCase("mysql")){
+            //
+            return listDeviceOnlineFromMySQL(farmId,todayDate);
+        }else{
+            //
+            return listDeviceOnlineFromCache(farmId,todayDate);
+        }
+    }
+
+
+    //从缓存读取在线记录(后期优化)
+    private Result listDeviceOnlineFromCache(String farmId, String todayDate) {
+
+
+        return null;
+    }
+
+    //从数据库读取在线记录
+    private Result listDeviceOnlineFromMySQL(String farmId, String todayDate) throws ParseException {
+        DateUtil du = new DateUtil();
+        //
+        List<EartagDeviceOnlineEntity> deviceOnlineEntityList = deviceOnlineRepo.getDeviceOnlineByFarmIdAndCreateDate(farmId,todayDate);
+        if(deviceOnlineEntityList.size()==0){
+            return new Result(BizConst.CODE_ONLINE_NO_EXIST,BizConst.MSG_ONLINE_NO_EXIST,false);
+        }else{
+//            for(EartagDeviceOnlineEntity deviceOnlineEntity:deviceOnlineEntityList){
+//                deviceOnlineEntity.setHeartbeatFirstTime(du.formatDatetimeText());
+//            }
+            return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(deviceOnlineEntityList));
+        }
+    }
 
     @Override
     public Result getNowAllStatus(String farmId) throws ParseException {
@@ -117,7 +196,7 @@ public class DeviceServiceImpl implements IDeviceService {
             newJo.put("rate", farmAllStatusEntity.getDeviceRate());
             newJo.put("offline", farmAllStatusEntity.getDeviceOffline());
         }
-        return new Result(ResultCode.SUCCESS,JSONObject.toJSONString(dataJa));
+        return new Result(ResultCode.SUCCESS,dataJa.toJSONString());
     }
 
     //计算注册设备数量

+ 18 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application.properties

@@ -1,2 +1,19 @@
 spring.profiles.active=dev
-        
+
+# mysql:/cache:
+device.online.access_mode=mysql
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 4 - 3
huimv-eartag2-platform/huimv-eartag2-process/src/main/java/com/huimv/eartag2/process/HuimvEartag2ProcessApplication.java

@@ -3,8 +3,8 @@ package com.huimv.eartag2.process;
 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;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * @Project : huimv.shiwan
@@ -19,8 +19,9 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 @EntityScan(value = "com.huimv.eartag2.common.dao.entity")
 @EnableJpaRepositories(basePackages = "com.huimv.eartag2.common.dao.repo")
 @SpringBootApplication
-public class HuimvEartag2ProcessApplication {
+@EnableScheduling
+public class HuimvProcessApplication {
     public static void main(String[] args) {
-        SpringApplication.run(HuimvEartag2ProcessApplication.class, args);
+        SpringApplication.run(HuimvProcessApplication.class, args);
     }
 }

+ 2 - 3
huimv-eartag2-platform/huimv-eartag2-process/src/main/java/com/huimv/eartag2/process/listener/FlowListener.java

@@ -48,14 +48,13 @@ public class FlowListener {
 //        System.out.println("TopicDevice消费者收到消息  : " + deviceMap.toString());
 //    }
 
-    @RabbitListener(queues = "topic.device.register")
+//    @RabbitListener(queues = "topic.device.register")
     @RabbitHandler
     public void processDeviceStatus(Map registerMap) {
         System.out.println("TopicDevice消费者收到消息  : " + registerMap);
     }
 
-//    @RabbitListener(queues = "topic.askText.queue")
-    @RabbitListener(queues = Const.QUEUE_ASK)
+//    @RabbitListener(queues = Const.QUEUE_ASK)
     @RabbitHandler
     public void processRawdata(Map RawMap) throws ParseException {
         System.out.println("<<<<<<<<<<<<<<< RawMap>>"+RawMap.toString());

+ 21 - 0
huimv-eartag2-platform/huimv-eartag2-process/src/main/java/com/huimv/eartag2/process/task/TestTask.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.process.task;
+
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class TestTask {
+
+//    @Scheduled(cron="0/5 * * * * ?")
+    public void test1(){
+        System.out.println("定时任务开启.");
+    }
+}