Ver código fonte

羊场接口

wwh 6 meses atrás
pai
commit
c6f32fb7a1
23 arquivos alterados com 615 adições e 15 exclusões
  1. 5 0
      huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/controller/EartagAbnormalAlarmController.java
  2. 1 0
      huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/mapper/EartagData2Mapper.java
  3. 6 0
      huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/mapper/xml/EartagData2Mapper.xml
  4. 1 0
      huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/service/EartagAbnormalAlarmService.java
  5. 10 1
      huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/service/impl/EartagAbnormalAlarmServiceImpl.java
  6. 6 6
      huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/config/InterceptorConfig.java
  7. 10 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagAbnormalAlarmController.java
  8. 41 1
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagData2Controller.java
  9. 6 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagData2Mapper.java
  10. 11 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagData2Mapper.xml
  11. 1 1
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagHourActMapper.xml
  12. 18 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/pojovo/AllHelthyDto.java
  13. 2 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/pojovo/SheepActVo.java
  14. 4 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagAbnormalAlarmService.java
  15. 6 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartagData2Service.java
  16. 29 1
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagAbnormalAlarmServiceImpl.java
  17. 82 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagData2ServiceImpl.java
  18. 5 5
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagHourActServiceImpl.java
  19. 181 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Action.java
  20. 10 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Data.java
  21. 82 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Filter.java
  22. 61 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Result.java
  23. 37 0
      huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/ResultUtil1.java

+ 5 - 0
huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/controller/EartagAbnormalAlarmController.java

@@ -47,6 +47,11 @@ public class EartagAbnormalAlarmController {
     public Result healthy(@RequestBody Map<String, String> paramsMap) throws ParseException {
         return eartagAbnormalAlarmService.allHealthy(paramsMap);
     }
+
+    @PostMapping("/allHealthy2")
+    public Result healthy1(@RequestBody Map<String, String> paramsMap) throws ParseException {
+        return eartagAbnormalAlarmService.allHealthy2(paramsMap);
+    }
     //美维首页羊只健康
     @PostMapping("/getSheepHealthy")
     public Result getSheepHealthy(@RequestBody Map<String, String> paramsMap) throws ParseException {

+ 1 - 0
huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/mapper/EartagData2Mapper.java

@@ -27,6 +27,7 @@ public interface EartagData2Mapper extends BaseMapper<EartagData2> {
     List<EartagDataDto> getAct(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
 
     List<AllHelthyDto> allHealthy(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
+    List<AllHelthyDto> allHealthy3(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
 
     List<AllHelthyDto> allHealthy2(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
 }

+ 6 - 0
huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/mapper/xml/EartagData2Mapper.xml

@@ -37,6 +37,12 @@
          ${ew.customSqlSegment}
          GROUP BY  DATE_FORMAT(ask_time,'%m-%d %H')
     </select>
+    <select id="allHealthy3" resultType="com.huimv.eartag2.api.pojo.pojovo.AllHelthyDto">
+        SELECT  IFNULL (ROUND(AVG(ear_temp1),2) ,"0.0")  earTemp, IFNULL (ROUND(AVG(env_temp1),2) ,"0.0") envTemp , DATE_FORMAT(ask_time,'%m-%d %H')  addTime
+         FROM `eartag_data2`
+         ${ew.customSqlSegment}
+         GROUP BY  DATE_FORMAT(ask_time,'%y-%m-%d')
+    </select>
     <select id="allHealthy2" resultType="com.huimv.eartag2.api.pojo.pojovo.AllHelthyDto">
          SELECT  IFNULL (ROUND(AVG(ear_temp1),2) ,"0.0")  earTemp, IFNULL (ROUND(AVG(env_temp1),2) ,"0.0") envTemp , DATE_FORMAT(ask_time,'%m-%d %H')  addTime
          FROM `eartag_data2`

+ 1 - 0
huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/service/EartagAbnormalAlarmService.java

@@ -32,6 +32,7 @@ public interface EartagAbnormalAlarmService extends IService<EartagAbnormalAlarm
     Result getWarning(Map<String, String> paramsMap);
 
     Result allHealthy(Map<String, String> paramsMap);
+    Result allHealthy2(Map<String, String> paramsMap);
 
     Result getHealthy(Map<String, String> paramsMap);
 

+ 10 - 1
huimv-eartag2-api/src/main/java/com/huimv/eartag2/api/service/impl/EartagAbnormalAlarmServiceImpl.java

@@ -73,7 +73,16 @@ public class EartagAbnormalAlarmServiceImpl extends ServiceImpl<EartagAbnormalAl
        List<AllHelthyDto> allHelthyDtos =   eartagData2Mapper.allHealthy(wrapper);
         return ResultUtil.isNull(allHelthyDtos);
     }
-
+    @Override
+    public Result allHealthy2(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        DateTime dateTime = cn.hutool.core.date.DateUtil.beginOfDay(new Date());
+        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_id",farmId);
+        wrapper.ge("ask_time",dateTime);
+        List<AllHelthyDto> allHelthyDtos =   eartagData2Mapper.allHealthy3(wrapper);
+        return ResultUtil.isNull(allHelthyDtos);
+    }
     @Override
     public Result getHealthy(Map<String, String> paramsMap) {
         String farmId = paramsMap.get("farmId");

+ 6 - 6
huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/config/InterceptorConfig.java

@@ -34,11 +34,11 @@ public class InterceptorConfig implements WebMvcConfigurer {
                         "/**/eartag-hour-act/getAct",
                         "/manage2/eartag-hour-act/getAct",
                         "/sendDirectMessage2",
-                        "/manage2/eartagRegister/listUserEartagData",
-                        "/manage/device/getNowAllStatus",
-                        "/manage2/eartagData/getByTimeFilter",
-                        "/manage2/config/updateWarning",
-                        "/manage2/eartag-hour-act/listActAvg",
-                        "/manage2/pig/listWarning");
+                        "/**/eartagRegister/listUserEartagData",
+                        "/**/device/getNowAllStatus",
+                        "/**/eartagData/getByTimeFilter",
+                        "/**/config/updateWarning",
+                        "/**/eartag-hour-act/listActAvg",
+                        "/**/pig/listWarning");
     }
 }

+ 10 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagAbnormalAlarmController.java

@@ -118,5 +118,15 @@ public class EartagAbnormalAlarmController {
     public Result ListWarning(@RequestBody Map<String,String> map){
         return eartagAbnormalAlarmService.ListWarning(map);
     }
+
+    @PostMapping("/listWarning2")
+    public Result ListWarning2(@RequestBody Map<String,String> map){
+        return eartagAbnormalAlarmService.ListWarning2(map);
+    }
+
+    @PostMapping("/allHealthy2")
+    public Result healthy1(@RequestBody Map<String, String> paramsMap) throws ParseException {
+        return eartagAbnormalAlarmService.allHealthy2(paramsMap);
+    }
 }
 

+ 41 - 1
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagData2Controller.java

@@ -1,17 +1,24 @@
 package com.huimv.eartag2.manage2.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.manage2.pojo.EartagData2;
 import com.huimv.eartag2.manage2.service.IEartagData2Service;
 import com.huimv.eartag2.common.common.token.TokenSign;
 import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.manage2.utils.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import com.huimv.eartag2.manage2.utils.Action;
 
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -28,13 +35,46 @@ public class EartagData2Controller {
     @Autowired
     private IEartagData2Service eartagDataService;
 
+    @PostMapping("/getActAndEemp")
+    public Result getActAndEemp(@RequestBody Map<String, String> maps){
+
+        String starTime = maps.get("starTime");
+        String endTime = maps.get("endTime");
+        String earmark = maps.get("earmark");
+//        String farmId = maps.get("farmId");
+
+        try {
+            QueryWrapper<EartagData2> eartagData2QueryWrapper = new QueryWrapper<EartagData2>().eq("earmark", earmark).between("add_time", starTime, endTime);
+
+            List<Data> data = eartagDataService.getActAndEemp(eartagData2QueryWrapper);
+
+
+            Action action = new Action(35.5, 5.5, 6.0, 8, 10);
+            action.analyze(data);
+            List<com.huimv.eartag2.manage2.utils.Result> filter = action.filter(5, 5);
+            Map map = new HashMap();
+            map.put("results",filter);
+
+            map.put("calc",action.calc());
+            return new Result(ResultCode.SUCCESS,map);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return new Result(ResultCode.FAIL,"");
+    }
+
+
     @PostMapping("/getEnvByTime")
     public Result getEnvByTime(@RequestBody Map<String,String> map, HttpServletRequest request){
         Integer userId = TokenSign.getMemberIdByJwtToken(request);
         map.put("userId",userId+"");
         return eartagDataService.getEnvByTime(map);
     }
-
+    @PostMapping("/getByTimeFilter")
+    public Result getByTimeFilter(@RequestBody Map<String,String> map, HttpServletRequest request){
+        return eartagDataService.getByTimeFilter(map);
+    }
     @PostMapping("/api/getEnvByTime")
     public Result getEnvByTime2(@RequestBody Map<String,String> map, HttpServletRequest request){
         return eartagDataService.getEnvByTime2(map);

+ 6 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/EartagData2Mapper.java

@@ -3,8 +3,10 @@ package com.huimv.eartag2.manage2.mapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.eartag2.manage2.pojo.EartagData2;
+import com.huimv.eartag2.manage2.pojo.pojovo.AllHelthyDto;
 import com.huimv.eartag2.manage2.pojo.pojovo.EartagDataDto;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.eartag2.manage2.utils.Data;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -22,4 +24,8 @@ public interface EartagData2Mapper extends BaseMapper<EartagData2> {
     List<EartagData2> getEartagDataByEarmark(@Param("earmark") String earmark, @Param("recordCount") String recordCount);
 
     List<EartagDataDto> getAct(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
+
+    List<AllHelthyDto> allHealthy3(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> wrapper);
+
+    List<Data> getActAndEemp(@Param(Constants.WRAPPER) QueryWrapper<EartagData2> eartagData2QueryWrapper);
 }

+ 11 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagData2Mapper.xml

@@ -32,5 +32,16 @@
 
     </select>
 
+    <select id="allHealthy3" resultType="com.huimv.eartag2.manage2.pojo.pojovo.AllHelthyDto">
+        SELECT  IFNULL (ROUND(AVG(ear_temp1),2) ,"0.0")  earTemp, IFNULL (ROUND(AVG(env_temp1),2) ,"0.0") envTemp , DATE_FORMAT(ask_time,'%y-%M-%d %H:%m:%s')  addTime
+         FROM `eartag_data2`
+         ${ew.customSqlSegment}
+         GROUP BY  DATE_FORMAT(ask_time,'%y-%m-%d')
+    </select>
+
+    <select id="getActAndEemp" resultType="com.huimv.eartag2.manage2.utils.Data">
 
+          SELECT  act1 , ear_temp1 ,ear_temp2  ,env_temp1 ,add_time ,env_temp1 as envTemp FROM `eartag_data2`
+     ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 1 - 1
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/EartagHourActMapper.xml

@@ -18,7 +18,7 @@
     </sql>
 
     <select id="listSheepActAvg" resultType="com.huimv.eartag2.manage2.pojo.pojovo.SheepActVo">
-        select avg(act) actAvg,add_date addDate from eartag_hour_act
+        select FLOOR(avg(act)) actAvg,add_date addDate from eartag_hour_act
         ${ew.customSqlSegment}
         group by add_date
     </select>

+ 18 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/pojovo/AllHelthyDto.java

@@ -0,0 +1,18 @@
+package com.huimv.eartag2.manage2.pojo.pojovo;
+
+import lombok.Data;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.eartag2.api.pojo.pojovo
+ * @Description : TODO
+ * @Author : yuxuexuan
+ * @Create : 2022/12/9 0009 9:47
+ **/
+@Data
+public class AllHelthyDto {
+
+    private  String earTemp;
+    private  String envTemp;
+    private  String addTime;
+}

+ 2 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/pojovo/SheepActVo.java

@@ -1,11 +1,13 @@
 package com.huimv.eartag2.manage2.pojo.pojovo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
 
 @Data
 public class SheepActVo {
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date addDate;
     private String actAvg;
 }

+ 4 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagAbnormalAlarmService.java

@@ -31,4 +31,8 @@ public interface EartagAbnormalAlarmService extends IService<EartagAbnormalAlarm
 
     //德清羊场预警信息
     Result ListWarning(Map<String, String> paramsMap);
+
+    Result ListWarning2(Map<String, String> paramsMap);
+
+    Result allHealthy2(Map<String, String> paramsMap);
 }

+ 6 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/IEartagData2Service.java

@@ -1,8 +1,10 @@
 package com.huimv.eartag2.manage2.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.eartag2.manage2.pojo.EartagData2;
 import com.huimv.eartag2.common.utils.Result;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.eartag2.manage2.utils.Data;
 
 import java.text.ParseException;
 import java.util.List;
@@ -35,4 +37,8 @@ public interface IEartagData2Service extends IService<EartagData2> {
     Result getEnvByTimePanan(Map<String, String> map);
 
     Result getEnvLast(Map<String, String> map);
+
+    List<Data> getActAndEemp(QueryWrapper<EartagData2> eartagData2QueryWrapper);
+
+    Result getByTimeFilter(Map<String, String> map);
 }

+ 29 - 1
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagAbnormalAlarmServiceImpl.java

@@ -5,13 +5,17 @@ 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.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.manage2.mapper.*;
 import com.huimv.eartag2.manage2.pojo.*;
+import com.huimv.eartag2.manage2.pojo.pojovo.AllHelthyDto;
 import com.huimv.eartag2.manage2.service.EartagAbnormalAlarmService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.manage2.utils.ResultUtil;
+import com.huimv.eartag2.manage2.utils.ResultUtil1;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -38,6 +42,8 @@ public class EartagAbnormalAlarmServiceImpl extends ServiceImpl<EartagAbnormalAl
     private BaseFarmerMapper baseFarmerMapper;
     @Autowired
     private BaseFarmMapper baseFarmMapper;
+    @Autowired
+    private EartagData2Mapper eartagData2Mapper;
 
     @Override
     public Result getEarTemWarning(Map<String, Object> paramsMap) throws ParseException {
@@ -186,8 +192,30 @@ public class EartagAbnormalAlarmServiceImpl extends ServiceImpl<EartagAbnormalAl
         String farmId = paramsMap.get("farmId");
         QueryWrapper<EartagAbnormalAlarm> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("farm_code", farmId).orderByDesc("add_time");
-        return new Result(ResultCode.SUCCESS, eartagAbnormalAlarmMapper.selectList(queryWrapper));
+        return new Result(ResultCode.SUCCESS, eartagAbnormalAlarmMapper.selectList( queryWrapper));
     }
 
+    @Override
+    public Result ListWarning2(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        QueryWrapper<EartagAbnormalAlarm> queryWrapper = new QueryWrapper<>();
+        Page page = new Page<EartagAbnormalAlarm>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        queryWrapper.eq("farm_code", farmId).orderByDesc("add_time");
+        return new Result(ResultCode.SUCCESS, eartagAbnormalAlarmMapper.selectPage(page, queryWrapper));
+    }
+    @Override
+    public Result allHealthy2(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+        Date dateTime = calendar.getTime();
+        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_id",farmId);
+        wrapper.ge("ask_time",dateTime);
+        List<AllHelthyDto> allHelthyDtos =   eartagData2Mapper.allHealthy3(wrapper);
+        return ResultUtil1.isNull(allHelthyDtos);
+    }
 
 }

+ 82 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagData2ServiceImpl.java

@@ -16,12 +16,15 @@ import com.huimv.eartag2.manage2.pojo.EartagEartagRegister2;
 import com.huimv.eartag2.manage2.pojo.SysAccountMultilevel;
 import com.huimv.eartag2.manage2.service.IEartagData2Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.manage2.utils.Data;
+import com.huimv.eartag2.manage2.utils.Filter;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -250,4 +253,83 @@ public class EartagData2ServiceImpl extends ServiceImpl<EartagData2Mapper, Earta
         List<EartagData2> eartagData2List = this.list(new QueryWrapper<EartagData2>().eq("earmark", earmark).orderByDesc("add_time").last(String.format("limit %s", quantity)));
         return new Result(ResultCode.SUCCESS,eartagData2List);
     }
+
+    @Override
+    public List<Data> getActAndEemp(QueryWrapper<EartagData2> eartagData2QueryWrapper) {
+        return eartagData2Mapper.getActAndEemp(eartagData2QueryWrapper);
+    }
+    @Override
+    public Result getByTimeFilter(Map<String, String> map) {
+
+        String earmark = map.get("earmark");
+        String startDate = map.get("startDate");
+        String endDate = map.get("endDate");
+        Date now = new Date();
+        if (StringUtils.isBlank(earmark)) {
+            return new Result(10001, "请选择耳标", false);
+        }
+        QueryWrapper<EartagData2> wrapper = new QueryWrapper<>();
+        wrapper.eq("earmark", earmark);
+        if (StringUtils.isBlank(startDate)) {
+            wrapper.ge("add_time", DateUtil.beginOfDay(now));
+        } else {
+            wrapper.between("add_time", startDate, endDate);
+        }
+        wrapper.orderByAsc("add_time");
+        List<Double> list1 = new ArrayList<>();
+        List<Float> list2 = new ArrayList<>();
+        List<Float> list3 = new ArrayList<>();
+        List<Date> list4 = new ArrayList<>();
+        List<Long> list5 = new ArrayList<>();
+        List<Integer> list6 = new ArrayList<>();
+        List<Float> list7 = new ArrayList<>();
+        List<EartagData2> list = this.list(wrapper);
+        for (EartagData2 eartagData2 : list) {
+            Float earTemp1 = eartagData2.getEarTemp1();
+            Float earTemp2 = eartagData2.getEarTemp2();
+            Float envTemp1 = eartagData2.getEnvTemp1();
+
+            list1.add(earTemp1 == null ? null:Double.valueOf(earTemp1));
+            list2.add(earTemp2);
+            list3.add(envTemp1);
+            list4.add( eartagData2.getAddTime());
+            list5.add( eartagData2.getAct1());
+            list6.add( eartagData2.getBat());
+            list7.add( eartagData2.getEarTemp1());
+        }
+        Map endMap = new HashMap();
+//        int size = list1.size();
+//        if (size > 10){
+//            List<Double> firstPart = list1.subList(0, size - 10);
+//            List<Double> lastTen = list1.subList(size - 10, size);
+//            Filter filter1 = new Filter(firstPart,0.2);
+//            List<Double> earTemp1 = filter1.max(20, 200, 30, 40);
+//            earTemp1.addAll(lastTen);
+//            endMap.put("earTemp1",earTemp1.stream().map(number -> String.format("%.2f", number)).collect(Collectors.toList()));
+//        }else {
+//            endMap.put("earTemp1",list1.stream().map(number -> String.format("%.2f", number)).collect(Collectors.toList()));
+//        }
+
+        Filter filter1 = new Filter(list1,0.2);
+        List<Double> earTemp1 = filter1.max(20, 200, 30, 40);
+
+//        Filter filter2 = new Filter(list2,0.2);
+//        List<Double> earTemp2 = filter2.max(20, 200, 30, 40);
+//
+//        Filter filter3 = new Filter(list3,0.2);
+//        List<Double> earTemp3 = filter3.max(20, 200, 10, 40);
+
+        endMap.put("earTemp1",earTemp1.stream().map(number -> String.format("%.2f", number)).collect(Collectors.toList()));
+        endMap.put("earTemp2",list2.stream().map(number -> String.format("%.2f", number)).collect(Collectors.toList()));
+        endMap.put("getEnvTemp1",list3.stream().map(number -> String.format("%.2f", number)).collect(Collectors.toList()));
+        endMap.put("earTemp",list7.stream().map(number -> String.format("%.2f", number)).collect(Collectors.toList()));
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        endMap.put("time",list4.stream()
+                .map(date -> formatter.format(date))
+                .collect(Collectors.toList()));
+        endMap.put("act",list5);
+        endMap.put("bat",list6);
+
+        return new Result(ResultCode.SUCCESS, endMap);
+    }
 }

+ 5 - 5
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/EartagHourActServiceImpl.java

@@ -13,10 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -64,8 +61,11 @@ public class EartagHourActServiceImpl extends ServiceImpl<EartagHourActMapper, E
     @Override
     public Result listActAvg(Map<String, String> paramsMap) {
         String farmId = paramsMap.get("farmId");
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+        Date dateTime = calendar.getTime();
         QueryWrapper<EartagHourAct> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("farm_code", farmId);
+        queryWrapper.eq("farm_code", farmId).ge("add_date", dateTime);
         return new Result(ResultCode.SUCCESS, eartagHourActMapper.listSheepActAvg(queryWrapper));
     }
 

+ 181 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Action.java

@@ -0,0 +1,181 @@
+package com.huimv.eartag2.manage2.utils;
+
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Action {
+    private final double body, tMin, tMax;
+    private final int aMin, aMax;
+    private final List<Result> result = new ArrayList<>();
+
+    private static int kind(int id) {
+        switch (id) {
+            case 1:
+                return 1;
+            case 3:
+                return 2;
+            case 8:
+            case 10:
+            case 12:
+                return 3;
+            default:
+                return 4;
+        }
+    }
+
+    private void handle(Data data, int id) throws Exception {
+        id = kind(id);
+        Result now = new Result(id, data.getAddTime(), data.getEnvTemp());
+        result.add(now);
+    }
+
+    private int nni(int idx, int id) {
+        for (; idx < this.result.size(); ++idx) {
+            if (this.result.get(idx).getId() != id) return idx;
+        }
+        return -1;
+    }
+
+    private int ln4(int idx) {
+        for (; idx > -1; --idx) {
+            if (this.result.get(idx).getId() != 4) return idx;
+        }
+        return -1;
+    }
+
+    private int ex(int idx, int cnt) throws Exception {
+        int s = Math.max(0, idx - cnt), e = Math.min(this.result.size(), idx + cnt), t = this.result.get(idx).getId();
+        for (idx = s; idx < e; ++idx) update(idx, t);
+        return e;
+    }
+
+    private void update(int idx, int id) throws Exception {
+        Result tmp = this.result.get(idx);
+        tmp.setId(id);
+        this.result.set(idx, tmp);
+    }
+
+    public Action(double body, double tMin, double tMax, int aMin, int aMax) {
+        this.body = body;
+        this.tMin = tMin;
+        this.tMax = tMax;
+        this.aMin = aMin;
+        this.aMax = aMax;
+    }
+
+    public List<Result> analyze(List<Data> data) throws Exception {
+        for (Data itr : data) {
+            if (Math.abs(itr.getEarTemp1() - itr.getEarTemp2()) < tMin) {
+                if (Math.abs(itr.getEarTemp1() - body) < tMin) {
+                    if (itr.getAct1() < aMax) handle(itr, 1);
+                    else handle(itr, 2);
+                } else if (Math.abs(itr.getEarTemp1() - itr.getEnvTemp1()) < tMin) {
+                    if (itr.getAct1() < aMax) handle(itr, 3);
+                    else handle(itr, 4);
+                } else {
+                    if (itr.getAct1() < aMax) handle(itr, 5);
+                    else handle(itr, 6);
+                }
+            } else {
+                if (Math.abs(itr.getEarTemp1() - body) < tMax) {
+                    if (itr.getAct1() < aMin) handle(itr, 7);
+                    else handle(itr, 8);
+                } else if (Math.abs(itr.getEarTemp1() - itr.getEnvTemp1()) < tMax) {
+                    if (itr.getAct1() < aMin) handle(itr, 9);
+                    else handle(itr, 10);
+                } else {
+                    if (itr.getAct1() < aMin) handle(itr, 11);
+                    else handle(itr, 12);
+                }
+            }
+        }
+
+        return result;
+    }
+
+    public List<Result> filter(int sub, int exp) throws Exception {
+        for (int idx = 0; idx < this.result.size(); ) {
+            int cid = this.result.get(idx).getId();
+            if (cid == 4) {
+                int nid = nni(idx, 4);
+                if (nid == -1) break;
+                if (nid - idx <= sub) {
+                    int pid = ln4(idx), tar;
+                    if (pid == -1 || (nid - idx) < (idx - pid)) tar = this.result.get(nid).getId();
+                    else tar = this.result.get(pid).getId();
+                    for (int i = idx; i < nid; ++i) update(i, tar);
+                }
+                idx = nid;
+            } else if (cid == 2 || cid == 3) {
+                idx = ex(idx, exp);
+            } else {
+                idx = nni(idx, 1);
+                if (idx == -1) break;
+            }
+        }
+        return this.result;
+    }
+
+    public Map<String, List<Double>> calc() {
+        Map<String, List<Double>> res = new HashMap<>();
+        if (result.size() == 0) return res;
+
+        Result result0 = this.result.get(0);
+        int last = result0.getTimestamp();
+        double temp0 = Double.parseDouble(result0.getEnvTemp());
+        Double  maxTemp=  temp0;
+        Double  minTemp=  temp0;
+        Double  avgTemp=  temp0;
+
+        for (int i = 1; i < this.result.size(); ++i) {
+            String key = this.result.get(i).getTime().substring(0, 10);
+            double temp = Double.parseDouble( this.result.get(i).getEnvTemp());
+
+            if (!res.containsKey(key)) {
+                ArrayList<Double> tmp = new ArrayList<>(7);
+                tmp.add(0.0);
+                tmp.add(0.0);
+                tmp.add(0.0);
+                tmp.add(0.0);
+
+                tmp.add(0.0);
+                tmp.add(0.0);
+                tmp.add(0.0);
+                res.put(key, tmp);
+            }
+            List<Double> list = res.get(key);
+            int idx = this.result.get(i).getId() - 1;
+            list.set(idx, list.get(idx) + (this.result.get(i).getTimestamp() - last));
+            avgTemp += temp;
+            maxTemp = maxTemp <temp ? temp :maxTemp;
+            minTemp = minTemp > temp ? temp :minTemp;
+            list.set(4,maxTemp);
+            list.set(5,minTemp );
+            list.set(6,avgTemp/(i+1));
+
+            res.replace(key, list);
+            last = this.result.get(i).getTimestamp();
+        }
+
+        for (String key : res.keySet()) {
+            List<Double> list = res.get(key);
+            double sum = list.get(0) + list.get(1) + list.get(2) + list.get(3);
+            list.set(0, new BigDecimal(list.get(0) * 100 / sum).setScale(2, RoundingMode.UP).doubleValue());
+            list.set(1, new BigDecimal(list.get(1) * 100 / sum).setScale(2, RoundingMode.UP).doubleValue());
+            list.set(2, new BigDecimal(list.get(2) * 100 / sum).setScale(2, RoundingMode.UP).doubleValue());
+            list.set(3, new BigDecimal(list.get(3) * 100 / sum).setScale(2, RoundingMode.UP).doubleValue());
+            list.set(4, BigDecimal.valueOf(list.get(4)).setScale(2, RoundingMode.UP).doubleValue());
+            list.set(5, BigDecimal.valueOf(list.get(5)).setScale(2, RoundingMode.UP).doubleValue());
+            list.set(6,  BigDecimal.valueOf(list.get(6)).setScale(2, RoundingMode.UP).doubleValue());
+            res.replace(key, list);
+        }
+
+        return res;
+    }
+
+}

+ 10 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Data.java

@@ -0,0 +1,10 @@
+package com.huimv.eartag2.manage2.utils;
+
+@lombok.Data
+public class Data {
+    private int act1;
+    private Double earTemp1, earTemp2, envTemp1;
+    private String addTime;
+    private String envTemp;
+
+}

+ 82 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Filter.java

@@ -0,0 +1,82 @@
+package com.huimv.eartag2.manage2.utils;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+public class Filter {
+    private final List<Double> data;
+    private final List<Double> deal;
+    private final Double rand;
+    private final Random random = new Random(0);
+
+    public Filter(List<Double> data, Double rand) {
+        this.data = data;
+        this.rand = rand;
+
+        Double[] zeros = new Double[data.size()];
+        Arrays.fill(zeros, .0);
+        deal = Arrays.asList(zeros);
+    }
+
+    private double wave(Double num) {
+        return num + (random.nextFloat() - 0.5) * rand;
+    }
+
+    private int loc(int start, int end) {
+        end = Math.min(end, data.size());
+        int ix = start;
+        Double mx = data.get(start);
+        for (int i = start + 1; i < end; ++i) {
+            if (data.get(i) > mx) {
+                ix = i;
+                mx = data.get(i);
+            }
+        }
+        return ix;
+    }
+
+    private int peak(int start) {
+        for (int i = start; i < data.size(); ++i) {
+            if (deal.get(i) > .0) return i;
+        }
+        return -1;
+    }
+
+    private void bridge(int left, int right) {
+        double gap = (deal.get(right) - deal.get(left)) / (right - left);
+        for (int i = left + 1; i < right; ++i) deal.set(i, wave(deal.get(left) + (i - left) * gap));
+    }
+
+    public List<Double> max(int step, int win, double min, double max) {
+        for (int pos = 0; pos < data.size(); pos += step) {
+            int idx = loc(pos, pos + win);
+            if (data.get(idx) < min) deal.set(idx, wave(min));
+            else if (data.get(idx) > max) deal.set(idx, wave(max));
+            else deal.set(idx, data.get(idx));
+        }
+
+        // left side
+        int pos = peak(0);
+        if (pos != -1 && pos != 0) for (int idx = pos; idx > 0; --idx) deal.set(idx - 1, wave(deal.get(idx)));
+        // center
+        while (pos != -1 && pos < data.size()) {
+            int idx = peak(pos + 1);
+            if (idx == -1) break;
+            bridge(pos, idx);
+            pos = idx;
+        }
+        // right side
+        if (pos != -1 && pos < data.size() - 1)
+            for (int idx = pos; idx < data.size() - 1; ++idx) {
+                deal.set(idx + 1, wave(deal.get(idx)));
+            }
+
+        return deal;
+    }
+
+    public void show() {
+        System.out.println("data = " + data);
+        System.out.println("deal = " + deal);
+    }
+}

+ 61 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/Result.java

@@ -0,0 +1,61 @@
+package com.huimv.eartag2.manage2.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class Result {
+    private int id, timestamp;
+    private String type, time;
+    private String envTemp;
+
+    private int str2stamp(String time) throws ParseException {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = simpleDateFormat.parse(time);
+        return (int)(date.getTime() / 1000);
+    }
+
+    public Result(int id, String time, String envTemp) throws Exception {
+        this.setId(id);
+        this.setTime(time);
+        this.setEnvTemp(envTemp);
+    }
+
+    public void setId(int id) throws Exception {
+        if (id == 1) this.type = "睡眠状态";
+        else if (id == 2) this.type = "侧躺状态";
+        else if (id == 3) this.type = "活跃状态";
+        else if (id == 4) this.type = "其它状态";
+        else throw new RuntimeException("unrecognized id: " + id);
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setTime(String time) throws ParseException {
+        this.timestamp = str2stamp(time);
+        this.time = time;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public int getTimestamp() {
+        return timestamp;
+    }
+
+    public String getEnvTemp() {
+        return envTemp;
+    }
+
+    public void setEnvTemp(String envTemp) {
+        this.envTemp = envTemp;
+    }
+}

+ 37 - 0
huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/ResultUtil1.java

@@ -0,0 +1,37 @@
+package com.huimv.eartag2.manage2.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class ResultUtil1 {
+
+    public Result result(int rows){
+        if(rows == 0){
+            return new Result(ResultCode.FAIL,"处理失败.");
+        }else{
+            return new Result(ResultCode.SUCCESS,"处理成功.");
+        }
+    }
+    public static Result isNull(List list){
+        if(ObjectUtil.isEmpty(list)){
+            return new Result(ResultCode.SUCCESS,new ArrayList<>());
+        }else{
+            return new Result(ResultCode.SUCCESS,list);
+        }
+    }
+
+}