Browse Source

增加了根据耳标查详情

yang 3 years ago
parent
commit
40efaa9d01

+ 5 - 5
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/EartagDataController.java

@@ -48,17 +48,17 @@ public class EartagDataController {
     }
 
 
-
-
-
-
-
     @RequestMapping("/list_deatils")
     public R listDeatils(@RequestParam Map<String, Object> params) throws ParseException {
         Map queryDetailsMap = eartagDataService.queryDetails(params);
         return R.ok().put("page", queryDetailsMap);
     }
 
+    @RequestMapping("/list_deatils_byeartagno")
+    public R listDeatils01(@RequestParam Map<String, Object> params) throws ParseException {
+        Map queryDetailsMap = eartagDataService.queryDetailsByEarTag(params);
+        return R.ok().put("page", queryDetailsMap);
+    }
 
     /**
      * 信息

+ 6 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/service/EartagDataService.java

@@ -27,5 +27,11 @@ public interface EartagDataService extends IService<EartagDataEntity> {
 
     Map<String ,Object>    queryDetails( Map<String, Object> params) throws ParseException;
 
+
+    Map<String ,Object>    queryDetailsByEarTag( Map<String, Object> params) throws ParseException;
+
+
+
+
 }
 

+ 150 - 5
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/service/impl/EartagDataServiceImpl.java

@@ -109,7 +109,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
         if (StringUtilsWork.isNotBlank(highEnvTemp)&StringUtilsWork.isNotBlank(lowEnvTemp)){
             wrapper.between(EartagDataEntity::getEnvTemp, highEnvTemp, lowEnvTemp);
         }
-        wrapper.orderByDesc( EartagDataEntity::getId );
+
 
         List<EartagDataEntity> records;
         IPage<EartagDataEntity>  page;
@@ -120,7 +120,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
 
         }else{
             System.out.println("没有耳标号,展示最新");
-              wrapper.groupBy(EartagDataEntity::getEartagNo);
+            wrapper.groupBy(EartagDataEntity::getEartagNo).orderByDesc( EartagDataEntity::getId );
              page = baseMapper.page(new Query<EartagDataEntity>().getPage(params), wrapper);
             records = page.getRecords();  //获取信息
         }
@@ -169,6 +169,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
     }
 
 
+
        //想办法把平均温度计算到表里面去
     @Override
     public Map<String, Object> queryDetails(Map<String, Object> params) throws ParseException {
@@ -316,6 +317,153 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
         return map1;
     }
 
+
+    //想办法把平均温度计算到表里面去
+    @Override
+    public Map<String, Object> queryDetailsByEarTag(Map<String, Object> params) throws ParseException {
+        System.out.println("eartagno = "+params.get("eartagno"));
+        String  eartagno1 = String.valueOf(params.get("eartagno"));
+        String starttime = (String) params.get("startTime");
+        String endtime = (String) params.get("endTime");
+
+        //找出对应的ID
+        LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(EartagDataEntity::getEartagNo, eartagno1 ).orderByDesc( EartagDataEntity::getId ).last( "limit 1");
+        EartagDataEntity  earTagData = eartagDataDao.selectOne(wrapper);
+        if(earTagData==null){
+            Map map = new HashMap();
+            map.put("error" ,"当前数据不存在");
+            return  map;
+        }
+
+        //对数据进行包装
+        LambdaQueryWrapper<CollectorRegisterEntity> wrapper1 = Wrappers.lambdaQuery();
+        wrapper1.eq(CollectorRegisterEntity::getDeviceCode, earTagData.getDeviceCode() );
+        CollectorRegisterEntity collectorRegisterEntity = collectorRegisterDao.selectOne(wrapper1);
+        Map<String ,Object>    map1 = new HashMap<>();
+        map1.put("Registentity",collectorRegisterEntity);//耳标所在的机器信息
+
+        Map<String, Object>  pen = new HashMap<>();
+
+
+        //倒数yi条
+        LambdaQueryWrapper<MovePigpenEntity> wrapper2 = Wrappers.lambdaQuery();
+        wrapper2.eq(MovePigpenEntity::getEartagNo , earTagData.getEartagNo()).orderByDesc( MovePigpenEntity::getId ).last( "limit 1");
+        List<MovePigpenEntity> movePigpenEntities = movePigpenDao.selectList(wrapper2);
+        //时间最开始的一条
+        LambdaQueryWrapper<MovePigpenEntity> wrapper23 = Wrappers.lambdaQuery();
+        wrapper23.eq(MovePigpenEntity::getEartagNo , earTagData.getEartagNo()).orderByAsc( MovePigpenEntity::getId ).last( "limit 1");
+        MovePigpenEntity  movePigpen = movePigpenDao.selectOne(wrapper23);
+
+        movePigpenEntities.add(movePigpen);//加上去l
+
+        System.out.println(movePigpen+"ioioio");//最开始不为空
+
+
+        System.out.println(movePigpenEntities+"opop");
+        if ( movePigpen!=null ) {
+
+            List<Object> movePigpe111 = new ArrayList<>();
+
+            for (MovePigpenEntity movePigpenEntity : movePigpenEntities) {
+                Map<String, Object> c = new HashMap<>();
+
+
+                LambdaQueryWrapper<CollectorRegisterEntity> wrapper3 = Wrappers.lambdaQuery();
+                wrapper3.eq(CollectorRegisterEntity::getDeviceCode, movePigpenEntity.getDeviceCode());
+                CollectorRegisterEntity collectorRegisterEntit = collectorRegisterDao.selectOne(wrapper3);
+                System.out.println();
+
+                LambdaQueryWrapper<BasePigpenEntity> wrapper4 = Wrappers.lambdaQuery();
+                wrapper4.eq(BasePigpenEntity::getId, collectorRegisterEntit.getPigpenId());//栋舍
+                BasePigpenEntity basePigpenEnti = basePigpenDao.selectOne(wrapper4);
+
+                LambdaQueryWrapper<BasePigpenEntity> wrapper5 = Wrappers.lambdaQuery();
+                wrapper5.eq(BasePigpenEntity::getId, collectorRegisterEntit.getUnitId());//单元
+                BasePigpenEntity basePigpenEnt2 = basePigpenDao.selectOne(wrapper4);
+
+                TempMovePenEntity tempMovePenEntity = new TempMovePenEntity();
+                tempMovePenEntity.setDeviceCode(movePigpenEntity.getDeviceCode());
+                tempMovePenEntity.setEartagNo(movePigpenEntity.getEartagNo());
+                tempMovePenEntity.setPenName(basePigpenEnti.getPigpenName());
+                tempMovePenEntity.setUnitname(basePigpenEnt2.getPigpenName());
+                tempMovePenEntity.setMoveDate(movePigpenEntity.getMoveDate());
+                tempMovePenEntity.setId(movePigpenEntity.getId());
+                tempMovePenEntity.setStage(movePigpenEntity.getStage());
+
+                movePigpe111.add(tempMovePenEntity);
+            }
+
+            map1.put("movePigPenData",movePigpe111);
+        }else{
+            map1.put("movePigPenData",null);}
+
+
+        map1.put("eartagdeta",earTagData);  //点击的耳标信息
+
+        //获取运动等信息
+        String eartag = earTagData.getEartagNo();
+        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        //格式化传入的时间
+        Date startTime = fmt.parse(starttime);
+        Date   endTime = fmt.parse(endtime);
+        System.out.println("yangdi"+starttime+endtime);
+
+        LambdaQueryWrapper<EartagDataEntity> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(EartagDataEntity::getEartagNo,eartag);
+        //过滤时间
+        lambdaQuery.between(EartagDataEntity::getTime,startTime, endTime);
+        List<EartagDataEntity> eartagDateEntities = baseMapper.selectList(lambdaQuery);
+        //生成平均温度 -----如果刚刚转舍就没办法操作了---数据不会立马出来需要等
+
+        LambdaQueryWrapper<EartagDataEntity> lambdaQuery1 = Wrappers.lambdaQuery();
+        lambdaQuery1.eq(EartagDataEntity::getDeviceCode,earTagData.getDeviceCode());
+        //过滤时间
+        lambdaQuery1.between(EartagDataEntity::getTime,startTime, endTime);
+        List<EartagDataEntity> eartagDateEntities1 = baseMapper.selectList(lambdaQuery1);
+        Map averange = getAverange(starttime, endtime, eartagDateEntities1);
+
+        //这样,时间轴
+
+        List<String> timeList = new ArrayList<>();
+        List<Double>  tempList = new ArrayList<>();
+        List<Integer>  sportsList = new ArrayList<>();
+        List<Integer> electricList = new ArrayList<>();
+        List<Double> environmenttempList = new ArrayList<>();
+        List<Object> averangeTemp = new ArrayList<>();
+        for (EartagDataEntity data : eartagDateEntities) {
+            timeList.add(fmt.format(data.getTime()));
+            tempList.add(data.getEarTemp());
+            if (data.getDeviceCode() == null) {
+                sportsList.add(0);
+            } else {
+                sportsList.add(data.getSportGap());
+            }
+            electricList.add(data.getBat());
+            //sleeptime.add(data.getSleepStatus());    用来存睡眠状态了
+            environmenttempList.add(data.getEnvTemp());
+            averangeTemp.add(averange.get(getMonthDayHour(  data.getTime()  ) ) );
+        }
+
+        map1.put("time",timeList);
+        map1.put("temp",tempList);
+        map1.put("sports",sportsList);
+        map1.put("electric",electricList);
+        map1.put("environmenttemp",environmenttempList);
+        map1.put("averangeTemp",averangeTemp);
+
+        System.out.println("changdu"+timeList.size()+"**"+averangeTemp.size()
+        );
+        //对time循环--用contains来处理稍微快一点
+        //map1.put("averangeTemp",averange);
+
+        //关于耳标存在的位置的信息,这里需要做记录,如果发生位置迁移那么需要将位置迁移信息记录到一张表中
+        return map1;
+    }
+
+
+
     public  String getMonthDayHour(  Date date  ){
 
         String year=String.format("%tY", date);
@@ -330,9 +478,6 @@ return mon+day+h;
     }
 
 
-
-
-
        public   Map<String ,String>    getAverange( String  starttime , String endtime  , List<EartagDataEntity>   entityList     ) throws ParseException {
             DecimalFormat df = new DecimalFormat("####0.00");
          DateFormat fmt1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");