Переглянути джерело

2021/5/26 创建定时任务&接口优化

yinhao 4 роки тому
батько
коміт
875fbd50fc
31 змінених файлів з 621 додано та 101 видалено
  1. 2 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/HuimvSmartApiserviceApplication.java
  2. 2 2
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/config/DataSourceConfig.java
  3. 2 3
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/controller/PigController.java
  4. 10 1
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/AnimalHeatDao.java
  5. 8 1
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/EatTimeDao.java
  6. 8 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/IndoorEnvironmentDao.java
  7. 3 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/PigDao.java
  8. 8 1
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/SleepStatusDao.java
  9. 24 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/SowChildbirthDao.java
  10. 8 1
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/SportTimeDao.java
  11. 1 1
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/AnimalHeatEntity.java
  12. 62 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/SowChildbirthEntity.java
  13. 29 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/AnimalHeatVo.java
  14. 29 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/EatTimeVo.java
  15. 46 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/PigHealthStatusVo.java
  16. 30 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/SleepStatusVo.java
  17. 29 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/SportTimeVo.java
  18. 1 3
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/service/PigService.java
  19. 31 79
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/service/impl/PigServiceImpl.java
  20. 141 0
      huimv-smart-apiservice/src/main/java/com/huimv/apiservice/task/CreateEverydayDataTask.java
  21. 7 0
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/AnimalHeatDao.xml
  22. 6 0
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/EatTimeDao.xml
  23. 0 2
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/IndoorEnvironmentDao.xml
  24. 6 0
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/SleepStatusDao.xml
  25. 16 0
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/SowChildbirthDao.xml
  26. 7 0
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/SportTimeDao.xml
  27. 20 1
      huimv-smart-apiservice/src/main/resources/mapper/apiservice/YearPigBaseDao.xml
  28. 79 0
      huimv-smart-apiservice/src/test/java/com/huimv/apiservice/HuimvSmartApiserviceApplicationTests.java
  29. 1 1
      huimv-smart-common/pom.xml
  30. 4 4
      huimv-smart-common/src/main/java/com/huimv/common/autoconfigure/MybatisPlusConfiguration.java
  31. 1 1
      renren-fast/pom.xml

+ 2 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/HuimvSmartApiserviceApplication.java

@@ -3,12 +3,14 @@ package com.huimv.apiservice;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * @author huimv
  * @since 2021/4/26
  */
 @MapperScan("com.huimv.apiservice.dao")
+@EnableScheduling
 @SpringBootApplication
 public class HuimvSmartApiserviceApplication {
 

+ 2 - 2
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/config/DataSourceConfig.java

@@ -34,8 +34,8 @@ public class DataSourceConfig {
         // 设置servlet的参数
         HashMap<String, String> statViewServletParams = CollectionUtil.newHashMap();
         statViewServletParams.put("resetEnable", "true");
-        //statViewServletParams.put("loginUsername", "admin");
-        //statViewServletParams.put("loginPassword", "admin");
+        statViewServletParams.put("loginUsername", "admin");
+        statViewServletParams.put("loginPassword", "admin");
 
         ServletRegistrationBean<StatViewServlet> registration = new ServletRegistrationBean<>(new StatViewServlet());
         registration.addUrlMappings("/druid/*");

+ 2 - 3
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/controller/PigController.java

@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
-import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -40,8 +39,8 @@ public class PigController {
     @GetMapping("/getPigInfo")
     public R getPigInfo(@RequestParam(value = "accessToken") String accessToken,
                         @NotBlank(message = "耳标号不能为空!") @RequestParam("pigEarTagNo") String pigEarTagNo) {
-        Map<String, Object> map = pigService.getPigInfoByEarTagNo(pigEarTagNo);
-        return Objects.requireNonNull(R.ok().put("code", 1000)).put("data", map);
+        PigHealthStatusVo pigHealthStatusVo = pigService.getPigInfoByEarTagNo(pigEarTagNo);
+        return Objects.requireNonNull(R.ok().put("code", 1000)).put("data", pigHealthStatusVo);
     }
 
 

+ 10 - 1
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/AnimalHeatDao.java

@@ -1,10 +1,18 @@
 package com.huimv.apiservice.dao;
 
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.apiservice.entity.AnimalHeatEntity;
+import com.huimv.apiservice.entity.vo.AnimalHeatVo;
 import org.apache.ibatis.annotations.Mapper;
+
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 体温信息表
  * 
@@ -15,5 +23,6 @@ import org.springframework.stereotype.Repository;
 @Mapper
 @Repository
 public interface AnimalHeatDao extends BaseMapper<AnimalHeatEntity> {
-	
+
+    List<AnimalHeatVo> selectAnimalHeatVoList(@Param(Constants.WRAPPER) LambdaQueryWrapper wrapper);
 }

+ 8 - 1
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/EatTimeDao.java

@@ -1,10 +1,16 @@
 package com.huimv.apiservice.dao;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.apiservice.entity.EatTimeEntity;
+import com.huimv.apiservice.entity.vo.EatTimeVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 采食频次表
  * 
@@ -15,5 +21,6 @@ import org.springframework.stereotype.Repository;
 @Mapper
 @Repository
 public interface EatTimeDao extends BaseMapper<EatTimeEntity> {
-	
+
+    List<EatTimeVo> selectEatTimeVoList(@Param(Constants.WRAPPER) LambdaQueryWrapper wrapper);
 }

+ 8 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/IndoorEnvironmentDao.java

@@ -3,6 +3,9 @@ package com.huimv.apiservice.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huimv.apiservice.entity.IndoorEnvironmentEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Options;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.mapping.StatementType;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -19,4 +22,9 @@ import java.util.List;
 public interface IndoorEnvironmentDao extends BaseMapper<IndoorEnvironmentEntity> {
 
     void batchInsertData(List<IndoorEnvironmentEntity> list);
+
+    @Select("call create_data()")
+    @Options(statementType = StatementType.CALLABLE)
+    void callPigHealthData();
+
 }

+ 3 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/PigDao.java

@@ -9,6 +9,8 @@ import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 数据访问层
  *
@@ -27,4 +29,5 @@ public interface PigDao extends BaseMapper<YearPigBaseEntity> {
 
     boolean selectHealthStatus(String pigEarTagNo);
 
+    void batchInsertData(List<YearPigBaseEntity> list);
 }

+ 8 - 1
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/SleepStatusDao.java

@@ -1,10 +1,16 @@
 package com.huimv.apiservice.dao;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.apiservice.entity.SleepStatusEntity;
+import com.huimv.apiservice.entity.vo.SleepStatusVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 睡眠状态表
  * 
@@ -15,5 +21,6 @@ import org.springframework.stereotype.Repository;
 @Mapper
 @Repository
 public interface SleepStatusDao extends BaseMapper<SleepStatusEntity> {
-	
+
+    List<SleepStatusVo> selectSleepStatusVoList(@Param(Constants.WRAPPER) LambdaQueryWrapper wrapper);
 }

+ 24 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/SowChildbirthDao.java

@@ -0,0 +1,24 @@
+package com.huimv.apiservice.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.apiservice.entity.SowChildbirthEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 13:39
+ */
+@Mapper
+@Repository
+public interface SowChildbirthDao extends BaseMapper<SowChildbirthEntity> {
+
+    void batchInsertData(List<SowChildbirthEntity> list);
+
+}

+ 8 - 1
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/dao/SportTimeDao.java

@@ -1,10 +1,16 @@
 package com.huimv.apiservice.dao;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.apiservice.entity.SportTimeEntity;
+import com.huimv.apiservice.entity.vo.SportTimeVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 运动频次表
  * 
@@ -15,5 +21,6 @@ import org.springframework.stereotype.Repository;
 @Mapper
 @Repository
 public interface SportTimeDao extends BaseMapper<SportTimeEntity> {
-	
+
+    List<SportTimeVo> selectSportTimeVoList(@Param(Constants.WRAPPER) LambdaQueryWrapper wrapper);
 }

+ 1 - 1
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/AnimalHeatEntity.java

@@ -20,7 +20,7 @@ public class AnimalHeatEntity implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     *
+     * id
      */
     @TableId
     private Integer id;

+ 62 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/SowChildbirthEntity.java

@@ -0,0 +1,62 @@
+package com.huimv.apiservice.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 13:24
+ */
+@Data
+@TableName("mgt_sow_childbirth")
+public class SowChildbirthEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId
+    private Integer id;
+
+    /**
+     * 耳标号
+     */
+    private String eartag;
+
+    /**
+     * 产子时体重
+     */
+    private Double childbirthWeight;
+
+    /**
+     * 怀孕日期
+     */
+    private Date pregnancyDate;
+
+    /**
+     * 产子个数
+     */
+    private Integer childbirthCount;
+
+    @TableLogic
+    private Integer deleted;
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date gmtCreate;
+    /**
+     * 修改时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date gmtModified;
+
+}

+ 29 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/AnimalHeatVo.java

@@ -0,0 +1,29 @@
+package com.huimv.apiservice.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 19:32
+ */
+@Data
+public class AnimalHeatVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 采集时间
+     */
+    private Date collectTime;
+
+    /**
+     * 温度
+     */
+    private Double temperature;
+}

+ 29 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/EatTimeVo.java

@@ -0,0 +1,29 @@
+package com.huimv.apiservice.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 19:51
+ */
+@Data
+public class EatTimeVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 采集时间
+     */
+    private Date collectTime;
+
+    /**
+     * 进食量
+     */
+    private Double feedCount;
+}

+ 46 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/PigHealthStatusVo.java

@@ -0,0 +1,46 @@
+package com.huimv.apiservice.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 20:00
+ */
+@Data
+public class PigHealthStatusVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 体温
+     */
+    private List<AnimalHeatVo> temperature;
+
+    /**
+     * 进食量
+     */
+    private List<EatTimeVo> feedingStatus;
+
+    /**
+     * 健康状态
+     */
+    private String healthStatus;
+
+    /**
+     * 睡眠状态
+     */
+    private List<SleepStatusVo> sleepStatus;
+
+    /**
+     * 运动状态
+     */
+    private List<SportTimeVo> sportStatus;
+
+}

+ 30 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/SleepStatusVo.java

@@ -0,0 +1,30 @@
+package com.huimv.apiservice.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 19:55
+ */
+@Data
+public class SleepStatusVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 睡眠开始时间
+     */
+    private Date sleepStartTime;
+
+    /**
+     * 时长
+     */
+    private Double duration;
+}

+ 29 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/vo/SportTimeVo.java

@@ -0,0 +1,29 @@
+package com.huimv.apiservice.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 19:58
+ */
+@Data
+public class SportTimeVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 采集时间
+     */
+    private Date collectTime;
+
+    /**
+     * 运动量
+     */
+    private Integer sportCount;
+}

+ 1 - 3
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/service/PigService.java

@@ -7,8 +7,6 @@ import com.huimv.apiservice.entity.vo.PigImageVo;
 
 import com.huimv.common.utils.PageUtils;
 
-import java.util.Map;
-
 /**
  * @author yinhao
  * @date 2021/5/8 17:13
@@ -21,7 +19,7 @@ public interface PigService extends IService<YearPigBaseEntity> {
      * @param pigEarTagNo 耳标号
      * @return
      */
-    Map<String, Object> getPigInfoByEarTagNo(String pigEarTagNo);
+    PigHealthStatusVo getPigInfoByEarTagNo(String pigEarTagNo);
 
     /**
      * 获取多媒体接口(照片/视频)

+ 31 - 79
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/service/impl/PigServiceImpl.java

@@ -2,6 +2,7 @@ package com.huimv.apiservice.service.impl;
 
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -20,6 +21,7 @@ import com.huimv.common.exception.RRException;
 import com.huimv.common.utils.PageUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -36,6 +38,9 @@ import java.util.*;
 public class PigServiceImpl extends ServiceImpl<PigDao, YearPigBaseEntity> implements PigService {
 
     @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Autowired
     private AnimalHeatDao animalHeatDao;
 
     @Autowired
@@ -60,110 +65,61 @@ public class PigServiceImpl extends ServiceImpl<PigDao, YearPigBaseEntity> imple
     private SportTimeDao sportTimeDao;
 
     @Override
-    public Map<String, Object> getPigInfoByEarTagNo(String pigEarTagNo) {
+    public PigHealthStatusVo getPigInfoByEarTagNo(String pigEarTagNo) {
 
+        //耳标检查
         checkPigEarTagNo(pigEarTagNo);
 
-        Map<String, Object> result = new LinkedHashMap<>(16);
-        List<Map<String, Object>> temperature = new ArrayList<>();
-        List<Map<String, Object>> feedingStatus = new ArrayList<>();
-        List<Map<String, Object>> sleepStatus = new ArrayList<>();
-        List<Map<String, Object>> sportStatus = new ArrayList<>();
-        result.put("temperature", temperature);
-        result.put("feedingStatus", feedingStatus);
+        //当前时间节点
+        DateTime currentTime = DateUtil.date();
 
-        boolean health = baseMapper.selectHealthStatus(pigEarTagNo);
-        result.put("healthStatus", health ? "健康" : "不健康");
-        result.put("sleepStatus", sleepStatus);
-        result.put("sportStatus", sportStatus);
+//        String lastGetDataTime = (String) redisTemplate.opsForHash().get("offset_record", "getPigInfo");
+//        redisTemplate.opsForHash().put("offset_record", "getPigInfo",currentTime.toString());
 
+        PigHealthStatusVo pigHealthStatusVo = new PigHealthStatusVo();
+        boolean health = baseMapper.selectHealthStatus(pigEarTagNo);
+        pigHealthStatusVo.setHealthStatus(health ? "健康" : "不健康");
 
         //公用时间 -> 当前日期
-        String today = DateUtil.format(DateUtil.date(), "yyyy-MM-dd");
-
-
-        //java代码对集合排序
-        //CollectionUtil.sort(animalHeatEntityList,(o1, o2) -> o2.getCollectTime().compareTo(o1.getCollectTime()));
+        String today = DateUtil.format(currentTime, "yyyy-MM-dd");
 
         //体温数据sql构建和查询
         LambdaQueryWrapper<AnimalHeatEntity> temperatureLambdaQuery = Wrappers.lambdaQuery();
         temperatureLambdaQuery.eq(AnimalHeatEntity::getEartag, pigEarTagNo)
                 .eq(AnimalHeatEntity::getNowDate, today)
+                .eq(AnimalHeatEntity::getDeleted, 0)
                 .orderByDesc(AnimalHeatEntity::getId);
-        List<AnimalHeatEntity> animalHeatEntityList = animalHeatDao.selectList(temperatureLambdaQuery);
-
-        //体温数据
-        if (CollectionUtil.isNotEmpty(animalHeatEntityList)) {
-            for (AnimalHeatEntity animalHeatEntity : animalHeatEntityList) {
-                Map<String, Object> dataMap = new LinkedHashMap<>(16);
-                dataMap.put("collectTime", DateUtil.format(animalHeatEntity.getCollectTime(), "yyyy-MM-dd HH:mm:ss"));
-                dataMap.put("temperature", animalHeatEntity.getTemperature());
-                temperature.add(dataMap);
-            }
-        }
-
-        //健康状态数据sql构建及查询
-        //TODO 健康状态数据库查询
-        //模拟数据
-        //Map<String, Object> healthData1 = new HashMap<>();
-        //healthData1.put(DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"), "健康");
-        //Map<String, Object> healthData2 = new HashMap<>();
-        //healthData2.put(DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"), "亚健康");
-        //healthStatus.add(healthData1);
-        //healthStatus.add(healthData2);
+        List<AnimalHeatVo> animalHeatVoList = animalHeatDao.selectAnimalHeatVoList(temperatureLambdaQuery);
+        pigHealthStatusVo.setTemperature(animalHeatVoList);
 
         //采食状态数据sql构建及查询
         LambdaQueryWrapper<EatTimeEntity> eatTimeLambdaQuery = Wrappers.lambdaQuery();
         eatTimeLambdaQuery.eq(EatTimeEntity::getEartag, pigEarTagNo)
                 .eq(EatTimeEntity::getNowDate, today)
+                .eq(EatTimeEntity::getDeleted, 0)
                 .orderByDesc(EatTimeEntity::getId);
-        List<EatTimeEntity> eatTimeEntityList = eatTimeDao.selectList(eatTimeLambdaQuery);
-
-        //采食状态数据
-        if (CollectionUtil.isNotEmpty(eatTimeEntityList)) {
-            for (EatTimeEntity eatTimeEntity : eatTimeEntityList) {
-                Map<String, Object> dataMap = new LinkedHashMap<>(16);
-                dataMap.put("collectTime", DateUtil.format(eatTimeEntity.getCollectTime(), "yyyy-MM-dd HH:mm:ss"));
-                dataMap.put("feedCount", eatTimeEntity.getEatCount());
-                feedingStatus.add(dataMap);
-            }
-        }
+        List<EatTimeVo> eatTimeVoList = eatTimeDao.selectEatTimeVoList(eatTimeLambdaQuery);
+        pigHealthStatusVo.setFeedingStatus(eatTimeVoList);
 
         //睡眠状态数据sql构建及查询
         LambdaQueryWrapper<SleepStatusEntity> sleepStatusLambdaQuery = Wrappers.lambdaQuery();
         sleepStatusLambdaQuery.eq(SleepStatusEntity::getEartag, pigEarTagNo)
                 .eq(SleepStatusEntity::getNowDate, today)
+                .eq(SleepStatusEntity::getDeleted, 0)
                 .orderByDesc(SleepStatusEntity::getId);
-        List<SleepStatusEntity> sleepStatusEntityList = sleepStatusDao.selectList(sleepStatusLambdaQuery);
-
-        //睡眠状态数据
-        if (CollectionUtil.isNotEmpty(sleepStatusEntityList)) {
-            for (SleepStatusEntity sleepStatusEntity : sleepStatusEntityList) {
-                Map<String, Object> dataMap = new LinkedHashMap<>(16);
-                dataMap.put("sleepStartTime", sleepStatusEntity.getSleepTime());
-                dataMap.put("duration", sleepStatusEntity.getSleepCount());
-                sleepStatus.add(dataMap);
-            }
-        }
+        List<SleepStatusVo> sleepStatusVoList = sleepStatusDao.selectSleepStatusVoList(sleepStatusLambdaQuery);
+        pigHealthStatusVo.setSleepStatus(sleepStatusVoList);
 
         //运动状态数据sql构建及查询
         LambdaQueryWrapper<SportTimeEntity> sportStatusLambdaQuery = Wrappers.lambdaQuery();
         sportStatusLambdaQuery.eq(SportTimeEntity::getEartag, pigEarTagNo)
                 .eq(SportTimeEntity::getNowDate, today)
+                .eq(SportTimeEntity::getDeleted, 0)
                 .orderByDesc(SportTimeEntity::getId);
-        List<SportTimeEntity> sportTimeEntityList = sportTimeDao.selectList(sportStatusLambdaQuery);
-
-        //运动状态数据
-        if (CollectionUtil.isNotEmpty(sportTimeEntityList)) {
-            for (SportTimeEntity sportTimeEntity : sportTimeEntityList) {
-                Map<String, Object> dataMap = new LinkedHashMap<>(16);
-                dataMap.put("collectTime", sportTimeEntity.getCollectTime());
-                dataMap.put("sportCount", sportTimeEntity.getSportCount());
-                sportStatus.add(dataMap);
-            }
-        }
+        List<SportTimeVo> sportTimeVoList = sportTimeDao.selectSportTimeVoList(sportStatusLambdaQuery);
+        pigHealthStatusVo.setSportStatus(sportTimeVoList);
 
-        return result;
+        return pigHealthStatusVo;
     }
 
 
@@ -187,10 +143,6 @@ public class PigServiceImpl extends ServiceImpl<PigDao, YearPigBaseEntity> imple
     @Override
     public PageUtils getPageByBreedAndFence(String breedName, Integer currentPage, Integer pageSize, String period) {
 
-//        if (StringUtils.isEmpty(breedName)) {
-//            throw new RRException("品种名称不能为空!", 1001);
-//        }
-
         Integer count = baseMapper.selectCount(Wrappers.<YearPigBaseEntity>lambdaQuery().eq(YearPigBaseEntity::getBreed, breedName));
         if (count <= 0) {
             throw new RRException("品种名称不存在,请检查!", 1001);
@@ -236,7 +188,7 @@ public class PigServiceImpl extends ServiceImpl<PigDao, YearPigBaseEntity> imple
             LambdaQueryWrapper<IndoorEnvironmentEntity> indoorEnvLambdaQuery = Wrappers.lambdaQuery();
             indoorEnvLambdaQuery.eq(IndoorEnvironmentEntity::getPigstyId, pigstyId)
                     .eq(IndoorEnvironmentEntity::getDate, today)
-                    .le(IndoorEnvironmentEntity::getCollectTime,new Date())
+                    .le(IndoorEnvironmentEntity::getCollectTime, new Date())
                     .orderByDesc(IndoorEnvironmentEntity::getId);
             List<IndoorEnvironmentEntity> indoorEnvironmentEntityList = indoorEnvironmentDao.selectList(indoorEnvLambdaQuery);
 
@@ -254,7 +206,7 @@ public class PigServiceImpl extends ServiceImpl<PigDao, YearPigBaseEntity> imple
 
         LambdaQueryWrapper<OutdoorEnvironmentEntity> outdoorEnvLambdaQuery = Wrappers.lambdaQuery();
         outdoorEnvLambdaQuery.eq(OutdoorEnvironmentEntity::getDate, today)
-                .le(OutdoorEnvironmentEntity::getCollectTime,new Date())
+                .le(OutdoorEnvironmentEntity::getCollectTime, new Date())
                 .orderByDesc(OutdoorEnvironmentEntity::getId);
         List<OutdoorEnvironmentEntity> outdoorEnvironmentEntityList = outdoorEnvironmentDao.selectList(outdoorEnvLambdaQuery);
         if (CollectionUtil.isNotEmpty(outdoorEnvironmentEntityList)) {
@@ -310,7 +262,7 @@ public class PigServiceImpl extends ServiceImpl<PigDao, YearPigBaseEntity> imple
         pigBaseLambdaUpdate.eq(YearPigBaseEntity::getEartag, pigEarTagNo)
                 .set(YearPigBaseEntity::getDeleted, System.currentTimeMillis())
                 .set(YearPigBaseEntity::getFosterStatus, false)
-                .set(YearPigBaseEntity::getOutFenceTime,new Date())
+                .set(YearPigBaseEntity::getOutFenceTime, new Date())
                 .set(YearPigBaseEntity::getOutFenceStatus, status);
 
         update(pigBaseLambdaUpdate);

+ 141 - 0
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/task/CreateEverydayDataTask.java

@@ -0,0 +1,141 @@
+package com.huimv.apiservice.task;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.huimv.apiservice.dao.IndoorEnvironmentDao;
+import com.huimv.apiservice.dao.OutdoorEnvironmentDao;
+import com.huimv.apiservice.entity.IndoorEnvironmentEntity;
+import com.huimv.apiservice.entity.OutdoorEnvironmentEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.transaction.support.TransactionTemplate;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * <p>
+ * 定时任务
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/5/26 15:16
+ */
+@Configuration
+@EnableScheduling
+@EnableAsync
+public class CreateEverydayDataTask {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    @Autowired
+    private TransactionTemplate transactionTemplate;
+
+    @Autowired
+    private IndoorEnvironmentDao indoorEnvironmentDao;
+
+    @Autowired
+    private OutdoorEnvironmentDao outdoorEnvironmentDao;
+
+    @Async
+    //@Scheduled(cron = "1 0 0 * * ?")
+    @Scheduled(cron = "0 52 18 * * ?")
+    void createTodayIndoorEnvData() {
+
+        System.out.println("createTodayIndoorEnvData begin------->");
+        DateTime today = DateUtil.beginOfDay(new Date());
+        Date collectTime = today;
+
+        List<String> gas = new ArrayList<>();
+        gas.add("优");
+        gas.add("良");
+        gas.add("轻度");
+        gas.add("中度");
+        gas.add("重度");
+        gas.add("严重");
+
+        Random random = new Random();
+        List<IndoorEnvironmentEntity> list = new ArrayList<>();
+        for (int i = 0; i < 288; i++) {
+            IndoorEnvironmentEntity entity = new IndoorEnvironmentEntity();
+            entity.setDate(today);
+            entity.setPigstyId(1);
+            BigDecimal bigDecimal = new BigDecimal(Math.random() * 3 + 23).setScale(1, BigDecimal.ROUND_HALF_UP);
+            double temperature = bigDecimal.doubleValue();
+            entity.setTemperature(temperature);
+            BigDecimal bigDecimal2 = new BigDecimal(Math.random() * 0.3 + 0.3).setScale(2, BigDecimal.ROUND_HALF_UP);
+            double humidity = bigDecimal2.doubleValue();
+            entity.setHumidity(humidity);
+            entity.setGas(gas.get(random.nextInt(5)));
+            entity.setCollectTime(collectTime);
+            collectTime = DateUtil.offsetMinute(collectTime,5);
+//            System.out.println(entity);
+            list.add(entity);
+        }
+
+        indoorEnvironmentDao.batchInsertData(list);
+        System.out.println("createTodayIndoorEnvData end------->");
+    }
+
+    @Async
+    //@Scheduled(cron = "1 0 0 * * ?")
+    @Scheduled(cron = "1 52 18 * * ?")
+    void createTodayOutdoorEnvData() {
+
+        System.out.println("createTodayOutdoorEnvData begin------->");
+        DateTime today = DateUtil.beginOfDay(new Date());
+        Date collectTime = today;
+
+        List<String> gas = new ArrayList<>();
+        gas.add("优");
+        gas.add("良");
+        gas.add("轻度");
+        gas.add("中度");
+        gas.add("重度");
+        gas.add("严重");
+
+        Random random = new Random();
+        List<OutdoorEnvironmentEntity> list = new ArrayList<>();
+        for (int i = 0; i < 288; i++) {
+            OutdoorEnvironmentEntity entity = new OutdoorEnvironmentEntity();
+            entity.setDate(today);
+            BigDecimal bigDecimal = new BigDecimal(Math.random() * 3 + 23).setScale(1, BigDecimal.ROUND_HALF_UP);
+            double temperature = bigDecimal.doubleValue();
+            entity.setTemperature(temperature);
+            BigDecimal bigDecimal2 = new BigDecimal(Math.random() * 0.3 + 0.3).setScale(2, BigDecimal.ROUND_HALF_UP);
+            double humidity = bigDecimal2.doubleValue();
+            entity.setHumidity(humidity);
+            entity.setGas(gas.get(random.nextInt(4)));
+            entity.setCollectTime(collectTime);
+            collectTime = DateUtil.offsetMinute(collectTime,5);
+            list.add(entity);
+        }
+
+        outdoorEnvironmentDao.batchInsertData(list);
+        System.out.println("createTodayOutdoorEnvData end------->");
+
+    }
+
+    @Async
+    //@Scheduled(cron = "1 0 0 * * ?")
+    @Scheduled(cron = "1 52 18 * * ?")
+    void callPigHealthData() {
+        System.out.println("callPigHealthData begin------->");
+        indoorEnvironmentDao.callPigHealthData();
+        System.out.println("callPigHealthData end------->");
+
+    }
+
+
+
+
+}

+ 7 - 0
huimv-smart-apiservice/src/main/resources/mapper/apiservice/AnimalHeatDao.xml

@@ -16,4 +16,11 @@
     </resultMap>
 
 
+    <select id="selectAnimalHeatVoList" resultType="com.huimv.apiservice.entity.vo.AnimalHeatVo">
+        SELECT collect_time,temperature
+        FROM mgt_animal_heat
+        ${ew.customSqlSegment}
+    </select>
+
+
 </mapper>

+ 6 - 0
huimv-smart-apiservice/src/main/resources/mapper/apiservice/EatTimeDao.xml

@@ -16,5 +16,11 @@
         <result property="gmtModified" column="gmt_modified"/>
     </resultMap>
 
+    <select id="selectEatTimeVoList" resultType="com.huimv.apiservice.entity.vo.EatTimeVo">
+        SELECT collect_time,eat_count as feed_count
+        FROM mgt_eat_time
+        ${ew.customSqlSegment}
+    </select>
+
 
 </mapper>

+ 0 - 2
huimv-smart-apiservice/src/main/resources/mapper/apiservice/IndoorEnvironmentDao.xml

@@ -29,6 +29,4 @@
             #{item.collectTime})
         </foreach>
     </insert>
-
-
 </mapper>

+ 6 - 0
huimv-smart-apiservice/src/main/resources/mapper/apiservice/SleepStatusDao.xml

@@ -16,5 +16,11 @@
         <result property="gmtModified" column="gmt_modified"/>
     </resultMap>
 
+    <select id="selectSleepStatusVoList" resultType="com.huimv.apiservice.entity.vo.SleepStatusVo">
+        SELECT sleep_time as sleep_start_time,sleep_count as duration
+        FROM mgt_sleep_status
+        ${ew.customSqlSegment}
+    </select>
+
 
 </mapper>

+ 16 - 0
huimv-smart-apiservice/src/main/resources/mapper/apiservice/SowChildbirthDao.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.huimv.apiservice.dao.SowChildbirthDao">
+
+
+    <insert id="batchInsertData">
+        insert into mgt_sow_childbirth(eartag, childbirth_weight, pregnancy_date, childbirth_count) VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.eartag},
+             #{item.childbirthWeight},
+             #{item.pregnancyDate},
+             #{item.childbirthCount})
+        </foreach>
+    </insert>
+</mapper>

+ 7 - 0
huimv-smart-apiservice/src/main/resources/mapper/apiservice/SportTimeDao.xml

@@ -16,4 +16,11 @@
     </resultMap>
 
 
+    <select id="selectSportTimeVoList" resultType="com.huimv.apiservice.entity.vo.SportTimeVo">
+        SELECT collect_time,sport_count
+        FROM mgt_sport_time
+        ${ew.customSqlSegment}
+    </select>
+
+
 </mapper>

+ 20 - 1
huimv-smart-apiservice/src/main/resources/mapper/apiservice/YearPigBaseDao.xml

@@ -52,7 +52,6 @@
         </association>
     </resultMap>
 
-
     <select id="selectFeederInfoByPigEarTagNo" parameterType="string" resultType="com.huimv.apiservice.entity.EmployeeEntity">
         SELECT me.*
         FROM mgt_employee me
@@ -93,4 +92,24 @@
         </if>
     </select>
 
+
+    <insert id="batchInsertData">
+        insert into mgt_year_pig_base(eartag,day_age,unit_id,weight,breed,sex,birthday,origin_place,pigsty_id,period_id,in_fence_time,mother_eartag,father_eartag) values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.eartag},
+            #{item.dayAge},
+            #{item.unitId},
+            #{item.weight},
+            #{item.breed},
+            #{item.sex},
+            #{item.birthday},
+            #{item.originPlace},
+            #{item.pigstyId},
+            #{item.periodId},
+            #{item.inFenceTime},
+            #{item.motherEartag},
+            #{item.fatherEartag})
+        </foreach>
+    </insert>
+
 </mapper>

+ 79 - 0
huimv-smart-apiservice/src/test/java/com/huimv/apiservice/HuimvSmartApiserviceApplicationTests.java

@@ -4,11 +4,16 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.huimv.apiservice.dao.IndoorEnvironmentDao;
 import com.huimv.apiservice.dao.OutdoorEnvironmentDao;
+import com.huimv.apiservice.dao.PigDao;
+import com.huimv.apiservice.dao.SowChildbirthDao;
 import com.huimv.apiservice.entity.IndoorEnvironmentEntity;
 import com.huimv.apiservice.entity.OutdoorEnvironmentEntity;
+import com.huimv.apiservice.entity.SowChildbirthEntity;
+import com.huimv.apiservice.entity.YearPigBaseEntity;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -23,6 +28,12 @@ class HuimvSmartApiserviceApplicationTests {
     @Autowired
     private OutdoorEnvironmentDao outdoorEnvironmentDao;
 
+    @Autowired
+    private PigDao pigDao;
+
+    @Autowired
+    private SowChildbirthDao sowChildbirthDao;
+
     @Test
     void contextLoads() {
 
@@ -116,6 +127,74 @@ class HuimvSmartApiserviceApplicationTests {
     }
 
 
+    @Test
+    void createPigData() {
+
+        String[] breeds = {"黑猪","金华两头乌","杜巴嘉","巴嘉","杜洛克","嘉兴黑猪","大白猪"};
+        String[] originPlace = {"金华","杭州"};
+
+        List<YearPigBaseEntity> all = new ArrayList<>();
+        List<YearPigBaseEntity> mothers = new ArrayList<>();
+        List<YearPigBaseEntity> fathers = new ArrayList<>();
+
+        Random random = new Random();
+        for (int i = 5; i < 2001; i++) {
+            YearPigBaseEntity entity = new YearPigBaseEntity();
+            String number = String.valueOf(i);
+            String earTag = "N00000".substring(0, 6 - number.length()) + number;
+            entity.setEartag(earTag);
+            int dayAge = random.nextInt(200) + 50;
+            entity.setDayAge(dayAge);
+            entity.setUnitId(random.nextInt(4) + 1);
+            BigDecimal bigDecimal = new BigDecimal(dayAge);
+            BigDecimal weight = bigDecimal.multiply(new BigDecimal(0.8)).setScale(2, BigDecimal.ROUND_HALF_UP);
+            entity.setWeight(weight.doubleValue());
+            entity.setBreed(breeds[random.nextInt(breeds.length)]);
+            String sex = i % 2 == 0 ? "公" : "母";
+            entity.setSex(sex);
+            if (dayAge >= 150 && "母".equals(sex)) {
+                mothers.add(entity);
+            }
+            if (dayAge >= 150 && "公".equals(sex)) {
+                fathers.add(entity);
+            }
+            entity.setBirthday(DateUtil.offsetDay(DateUtil.date(),i % 200));
+            entity.setOriginPlace(originPlace[random.nextInt(2)]);
+            //System.out.println(entity.getDayAge() + " " + " " + entity.getUnitId() + " " +  entity.getWeight());
+            entity.setPigstyId(random.nextInt(4) + 1);
+            entity.setPeriodId(1);
+            entity.setInFenceTime(DateUtil.offsetDay(DateUtil.parseDate("2021-01-01"),random.nextInt(91) - 30));
+            all.add(entity);
+        }
+
+        for (YearPigBaseEntity yearPigBaseEntity : all) {
+            if (yearPigBaseEntity.getDayAge() < 150) {
+                yearPigBaseEntity.setMotherEartag(mothers.get(random.nextInt(mothers.size())).getEartag());
+                yearPigBaseEntity.setFatherEartag(fathers.get(random.nextInt(fathers.size())).getEartag());
+            }
+        }
+        pigDao.batchInsertData(all);
+
+        List<SowChildbirthEntity> sowChildbirthEntityList = new ArrayList<>();
+        for (YearPigBaseEntity mother : mothers) {
+            SowChildbirthEntity entity = new SowChildbirthEntity();
+            entity.setEartag(mother.getEartag());
+            entity.setChildbirthWeight(mother.getWeight());
+            entity.setPregnancyDate(DateUtil.offsetMonth(mother.getInFenceTime(),3));
+            entity.setChildbirthCount(random.nextInt(10) + 5);
+            sowChildbirthEntityList.add(entity);
+        }
+        sowChildbirthDao.batchInsertData(sowChildbirthEntityList);
+
+
+
+
+    }
+
+
+
+
+
 
 
 

+ 1 - 1
huimv-smart-common/pom.xml

@@ -18,7 +18,7 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>LATEST</version>
+            <version>3.4.2</version>
         </dependency>
 
         <!--lombok-->

+ 4 - 4
huimv-smart-common/src/main/java/com/huimv/common/autoconfigure/MybatisPlusConfiguration.java

@@ -22,8 +22,8 @@ public class MybatisPlusConfiguration {
         return interceptor;
     }
 
-    @Bean
-    public ConfigurationCustomizer configurationCustomizer() {
-        return configuration -> configuration.setUseDeprecatedExecutor(false);
-    }
+//    @Bean
+//    public ConfigurationCustomizer configurationCustomizer() {
+//        return configuration -> configuration.setUseDeprecatedExecutor(false);
+//    }
 }

+ 1 - 1
renren-fast/pom.xml

@@ -96,7 +96,7 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>LATEST</version>
+            <version>3.3.1</version>
             <exclusions>
                 <exclusion>
                     <groupId>com.baomidou</groupId>