Kaynağa Gözat

【feat】 添加对外服务 api

523096025 1 yıl önce
ebeveyn
işleme
dfce682fa8

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-device/src/main/java/com/huimv/eartag2/device/service/impl/EartagServiceImpl.java

@@ -107,7 +107,7 @@ public class EartagServiceImpl implements IEartagService {
             act1 = nowAct1;
         }
 
-        redisTemplate.opsForHash().put(deviceCode, "act1", act1);
+        redisTemplate.opsForHash().put(deviceCode, "act", act1);
         return act1;
     }
 

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

@@ -1378,14 +1378,14 @@ public class EartagServiceImpl implements IEartagService {
             eartagRegisterEntity.setEarTemp1(eartagJo.getFloat("earTemp1"));
 //            eartagRegisterEntity.setEnvTemp1(eartagJo.getFloat("envTemp1"));
             //相对运动量
-            eartagRegisterEntity.setAct(Long.parseLong(eartagJo.getString("act1")));
+            eartagRegisterEntity.setAct( Long.parseLong(eartagJo.getString("act")));
             eartagRegisterEntity.setSignal1(Integer.parseInt(eartagJo.getString("signal")));
             eartagRegisterEntity.setAskTime(getAskTime(eartagJo.getString("askTime")));
             eartagRegisterEntity.setOther(eartagJo.getString("other"));
             eartagRegisterEntity.setFarmId(farmId);
             eartagRegisterEntity.setLiveStatus(1);
             //绝对运动量
-            eartagRegisterEntity.setActRange(new Long(Long.parseLong(eartagJo.getString("act"))).intValue());
+            eartagRegisterEntity.setActRange(Integer.parseInt(eartagJo.getString("act")));
             System.out.println("开始更新--> " + eartagRegisterEntity);
             eartagEartagRegister2EntityRepo.saveAndFlush(eartagRegisterEntity);
             //更新耳标注册消息缓存

+ 8 - 2
huimv-eartag2-platform/huimv-eartag2-input/src/test/java/com/huimv/eartag2/DataTest.java

@@ -1,10 +1,12 @@
 package com.huimv.eartag2;
 
 import com.alibaba.fastjson.JSONArray;
+import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.service.IDataService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -22,10 +24,14 @@ public class DataTest {
     @Autowired
     private IDataService dataService;
 
+    @Autowired
+    private RedisTemplate redisTemplate;
+
     @Test
     public void test2(){
-        boolean result = dataService.isWorkStatusDevice("2020072399998661");
-        System.out.println("result>>"+result);
+        String  hashKey = BizConst.CHIP_DEVICE_PREFIX;
+        System.out.println(redisTemplate.opsForHash().get(hashKey, "867699060003556"));
+        System.out.println("sss");
     }
 
     @Test

+ 64 - 26
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/schedule/EartagTask.java

@@ -3,6 +3,7 @@ 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;
@@ -61,6 +62,11 @@ public class EartagTask {
     @Autowired
     private EartagData2Mapper eartagData2Mapper;
 
+    @Autowired
+    private EartagAbnormalAlarmMapper eartagAbnormalAlarmMapper;
+
+    @Autowired
+    private BasePigpenMapper pigpenMapper;
 
 /**
      * @Method : countEartagOnlineTimes
@@ -73,7 +79,8 @@ public class EartagTask {
      */
 
     // 10分钟
-    @Scheduled(cron = "0 0/1 * * * ? ")
+    @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);
@@ -99,37 +106,68 @@ public class EartagTask {
 
     // 5分钟
 //    @Scheduled(cron = "0 * * * * ? ")
-    @Scheduled(cron = "0 0 * * * ? ")
+    @Scheduled(cron = "0 5 * * * ? ")
     private void updateDevice() {
-        List<SysBaseConfig> baseConfig = baseConfigService.list(new QueryWrapper<SysBaseConfig>().groupBy("row_id"));
-
-        for (SysBaseConfig sysBaseConfig : baseConfig) {
-            String rowId = sysBaseConfig.getRowId();
-//            SysBaseConfig one = baseConfigService.getOne(new QueryWrapper<SysBaseConfig>().eq("row_id", rowId).eq("config_key", "eartagOfflineTime"));
-            SysBaseConfig one = baseConfigService.getOne(new QueryWrapper<SysBaseConfig>().eq("row_id", rowId).eq("config_key", "deviceOfflineTime"));
-
-            String configValueStr = one.getConfigValue();
-            if (StringUtils.isBlank(configValueStr)) {
-                configValueStr ="1440";
+        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);
-            DateTime dateTime = DateUtil.offsetMinute(new Date(), -configValueInt);
-
-            UpdateWrapper<EartagDeviceRegister> wrapper = new UpdateWrapper<>();
-            wrapper.ge("last_time", dateTime);
-            EartagDeviceRegister deviceRegister = new EartagDeviceRegister();
+            Date date = new Date();
+            DateTime dateTime = DateUtil.offsetMinute(date, -configValueInt);
             //未离线
-            deviceRegister.setActiveStatus(1);
-            deviceRegister.setDeviceStatus(1);
-            deviceRegisterService.update(deviceRegister, wrapper);
+            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;
 
-            //离线
-            deviceRegister.setActiveStatus(2);
-            deviceRegister.setDeviceStatus(0);
-            wrapper.clear();
-            wrapper.le("last_time", dateTime).or().isNull("last_time");
-            deviceRegisterService.update(deviceRegister, wrapper);
+                    //报警
+                    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);
+                }
+
+            }
         }
     }
 

+ 1 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/BaseFarmService.java

@@ -25,4 +25,5 @@ public interface BaseFarmService extends IService<BaseFarm> {
     Result list(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
 
 
+//    Result list(Map<String, String> paramsMap);
 }

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

@@ -208,6 +208,7 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
         queryWrapper1.eq("chip_id",chipId);
         List<EartagDeviceRegister> eartagDeviceRegisters = eartagDeviceRegisterMapper.selectList(queryWrapper1);
         Integer deviceType = eartagDeviceRegisters.get(0).getDeviceType();
+        String deviceCode = eartagDeviceRegisters.get(0).getDeviceCode();
 
         //查询牧场信息
         QueryWrapper<BaseFarm> queryWrapper = new QueryWrapper<>();
@@ -225,7 +226,7 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
         rabbitTemplate.convertAndSend(EXCHANGE_SYNC_SYS_CONFIG,ROUTING_KEY_SYNC_SYS_CONFIG,paramsMap);
         System.out.println("--------------------------------------- 发送设备请求原始数据 >>"+paramsMap);
         //同步注册中心的基站注册
-        syncDeviceRegisterToCenter(chipId,baseFarm.getIp(),baseFarm.getPort(),baseFarm.getFarmCode(),baseFarm.getFarmName(),baseFarm.getAreaCode());
+        syncDeviceRegisterToCenter(chipId,baseFarm.getIp(),baseFarm.getPort(),baseFarm.getFarmCode(),baseFarm.getFarmName(),baseFarm.getAreaCode(),deviceCode);
 
         //更新同步时间
 //        String chipId = paramsMap.get("chipId");
@@ -238,7 +239,7 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
     }
 
     //同步注册中心的基站注册
-    private void syncDeviceRegisterToCenter(String chipId,String serverIp,String serverPort,String farmCode,String farmName,String areaCode) {
+    private void syncDeviceRegisterToCenter(String chipId,String serverIp,String serverPort,String farmCode,String farmName,String areaCode,String deviceCode) {
         //        设置请求头,请求类型为json
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_JSON);
@@ -247,6 +248,7 @@ public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, S
         map.put("chipId", chipId);
         map.put("serverIp", serverIp);
         map.put("serverPort", serverPort);
+        map.put("deviceCode", deviceCode);
         map.put("farmCode", farmCode);
         map.put("farmName", farmName);
         map.put("areaCode", areaCode);