浏览代码

饲料使用

Newspaper 1 年之前
父节点
当前提交
5086a7d414
共有 22 个文件被更改,包括 746 次插入15 次删除
  1. 二进制
      huimv-farm-datacenter-egg/huimv-farm-admin/target/classes/com/huimv/admin/device/utils/HttpTemplete.class
  2. 29 15
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/EggDataCotroller.java
  3. 42 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/FeedConsumeController.java
  4. 49 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/FeedUsageController.java
  5. 56 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/FeedConsume.java
  6. 75 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/FeedUsage.java
  7. 11 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedChartVo.java
  8. 12 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedConsumeChartVo.java
  9. 14 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedConsumeVo.java
  10. 12 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedFormVo.java
  11. 15 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedUsedVo.java
  12. 10 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/TodayFeedVo.java
  13. 28 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/FeedConsumeMapper.java
  14. 21 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/FeedUsageMapper.java
  15. 25 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/IFeedConsumeService.java
  16. 21 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/IFeedUsageService.java
  17. 107 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/FeedConsumeServiceImpl.java
  18. 47 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/FeedUsageServiceImpl.java
  19. 116 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/FeedConsumeTimer.java
  20. 7 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/resources/application-dev.yml
  21. 34 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/FeedConsumeMapper.xml
  22. 15 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/FeedUsageMapper.xml

二进制
huimv-farm-datacenter-egg/huimv-farm-admin/target/classes/com/huimv/admin/device/utils/HttpTemplete.class


+ 29 - 15
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/EggDataCotroller.java

@@ -1,24 +1,20 @@
 package com.huimv.environ.eco.controller;
 package com.huimv.environ.eco.controller;
 
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONObject;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.ResultCode;
 import com.huimv.common.utils.ResultCode;
-import com.huimv.environ.eco.entity.eggvo.BaseResultEntity;
-import com.huimv.environ.eco.entity.eggvo.HistoryEntity;
-import com.huimv.environ.eco.entity.eggvo.HousVo;
+import com.huimv.environ.eco.entity.eggvo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.client.RestTemplate;
 
 
+import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
@@ -71,10 +67,6 @@ public class EggDataCotroller {
 
 
 
 
         }
         }
-//        if(ObjectUtil.isEmpty(data)){
-//
-//        }
-
         return new Result(ResultCode.SUCCESS,data);
         return new Result(ResultCode.SUCCESS,data);
     }
     }
 
 
@@ -84,9 +76,31 @@ public class EggDataCotroller {
         headers.set("Authorization","Token "+TOKEN);
         headers.set("Authorization","Token "+TOKEN);
         HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
         HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
         RestTemplate restTemplate = new RestTemplate();
         RestTemplate restTemplate = new RestTemplate();
-        ResponseEntity<BaseResultEntity> forEntity = restTemplate.exchange(BASE_URL + CURRENT_LIST+FARM_CODE+"&position=all", HttpMethod.GET, httpEntity,BaseResultEntity.class );
-        System.out.println(forEntity);
-        List<HousVo> data = forEntity.getBody().getData();
+
+        Long start = DateUtil.beginOfDay(new Date()).getTime();
+        Long end = System.currentTimeMillis();
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)-1,0,0,0);
+        Long yesterdayStartTime = calendar.getTime().getTime();
+
+        Calendar calendar2 = Calendar.getInstance();
+        calendar2.set(calendar2.get(Calendar.YEAR),calendar2.get(Calendar.MONTH),calendar2.get(Calendar.DAY_OF_MONTH)-1,23,59,59);
+        Long yesterdayEndTime = calendar2.getTime().getTime();
+        for (int i = 1 ; i < 10; i++){
+            ResponseEntity<HistoryEntity> todayForEntity = restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+i+"&start="+start+"&end="+end, HttpMethod.GET, httpEntity,HistoryEntity.class );
+            List<HistroyOne> todayData = todayForEntity.getBody().getData();
+            HistroyOne today = todayData.get(todayData.size() - 1);
+
+            ResponseEntity<HistoryEntity> yesterdayForEntity = restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+i+"&start="+yesterdayStartTime+"&end="+yesterdayEndTime, HttpMethod.GET, httpEntity,HistoryEntity.class );
+            List<HistroyOne> yesterdayData = yesterdayForEntity.getBody().getData();
+            HistroyOne yesterday = yesterdayData.get(yesterdayData.size() - 1);
+
+            System.out.println("昨日"+i+"舍"+yesterday.getData().getFt_do_tal_tdy());
+            System.out.println("今日"+i+"舍"+today.getData().getFt_do_tal_tdy());
+        }
+
+
     }
     }
 
 
     @GetMapping("history/list")
     @GetMapping("history/list")

+ 42 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/FeedConsumeController.java

@@ -0,0 +1,42 @@
+package com.huimv.environ.eco.controller;
+
+
+import com.huimv.common.utils.Result;
+import com.huimv.environ.eco.service.IFeedConsumeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+import java.util.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+@RestController
+@RequestMapping("/feed-consume")
+public class FeedConsumeController {
+
+    @Autowired
+    private IFeedConsumeService feedConsumeService;
+
+    @GetMapping("/listTodayFeedConsume")
+    public Result listTodayFeedConsume(){
+        return feedConsumeService.listTodayFeedConsume();
+    }
+
+    @PostMapping("/listFeedConsume")
+    public Result listFeedConsume(@RequestBody Map<String,String> map) {
+        return feedConsumeService.listFeedConsume(map);
+    }
+
+    @PostMapping("/listFeed")
+    public Result listFeed(@RequestBody Map<String,String> map) {
+        return feedConsumeService.listFeed(map);
+    }
+
+}

+ 49 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/FeedUsageController.java

@@ -0,0 +1,49 @@
+package com.huimv.environ.eco.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.api.R;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.huimv.environ.eco.service.IFeedUsageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 饲料使用记录 前端控制器
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+@RestController
+@RequestMapping("/feed-usage")
+public class FeedUsageController {
+
+    @Autowired
+    private IFeedUsageService feedUsageService;
+
+    @PostMapping("/page")
+    public Result page(@RequestBody Map<String,String> map){
+        String pageNum = map.get("pageNum");
+        String pageSize = map.get("pageSize");
+        Page<FeedUsage> page = new Page<>(Integer.parseInt(pageNum),Integer.parseInt(pageSize));
+        Page<FeedUsage> feedUsagePage = feedUsageService.page(page,new QueryWrapper<FeedUsage>().lambda().orderByDesc(FeedUsage::getUsedDate));
+        return new Result(ResultCode.SUCCESS,feedUsagePage);
+    }
+
+    @PostMapping("/listUse")
+    public Result listUse(@RequestBody Map<String,String> map){
+        return feedUsageService.listUse(map);
+    }
+
+}

+ 56 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/FeedConsume.java

@@ -0,0 +1,56 @@
+package com.huimv.environ.eco.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("feed_consume")
+public class FeedConsume implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("date")
+    @JsonFormat(pattern = "yyyy/MM/dd" ,timezone = "GMT+8")
+    private String date;
+
+    @TableField("time")
+    private String time;
+
+    @TableField("num1")
+    private String num1;
+
+    @TableField("batch")
+    private String batch;
+
+    @TableField("type")
+    private String type;
+
+    @TableField("except")
+    private String except;
+
+    @TableField("reality")
+    private String reality;
+
+
+}

+ 75 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/FeedUsage.java

@@ -0,0 +1,75 @@
+package com.huimv.environ.eco.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 饲料使用记录
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("feed_usage")
+public class FeedUsage implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 使用日期
+     */
+    @TableField("used_date")
+    @JsonFormat(pattern = "yyyy-MM-dd" ,timezone = "GMT+8")
+    private String usedDate;
+
+    /**
+     * 使用栋舍
+     */
+    @TableField("unit_name")
+    private String unitName;
+
+    /**
+     * 存栏
+     */
+    @TableField("stock")
+    private String stock;
+
+    /**
+     * 日龄
+     */
+    @TableField("age")
+    private String age;
+
+    /**
+     * 总消耗
+     */
+    @TableField("total_consume")
+    private BigDecimal totalConsume;
+
+    /**
+     * 单只消耗
+     */
+    @TableField("single_consume")
+    private BigDecimal singleConsume;
+
+
+}

+ 11 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedChartVo.java

@@ -0,0 +1,11 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class FeedChartVo {
+    private String name;
+    private BigDecimal value;
+}

+ 12 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedConsumeChartVo.java

@@ -0,0 +1,12 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class FeedConsumeChartVo {
+    private BigDecimal totalConsume;
+    private List<FeedFormVo> list;
+}

+ 14 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedConsumeVo.java

@@ -0,0 +1,14 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class FeedConsumeVo {
+    private String date;
+    private String batchName;
+    private String material;
+    private BigDecimal consume;
+}

+ 12 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedFormVo.java

@@ -0,0 +1,12 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class FeedFormVo {
+    private String date;
+    private BigDecimal consume;
+}

+ 15 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/FeedUsedVo.java

@@ -0,0 +1,15 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import com.huimv.environ.eco.entity.FeedUsage;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class FeedUsedVo {
+    private String date;
+    private BigDecimal totalUsed;
+    private List<FeedUsage> list;
+}

+ 10 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/feedVo/TodayFeedVo.java

@@ -0,0 +1,10 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import lombok.Data;
+
+@Data
+public class TodayFeedVo {
+    private String unitName;
+    private Double yesterday;
+    private Double today;
+}

+ 28 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/FeedConsumeMapper.java

@@ -0,0 +1,28 @@
+package com.huimv.environ.eco.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.environ.eco.entity.FeedConsume;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.environ.eco.entity.feedVo.FeedConsumeChartVo;
+import com.huimv.environ.eco.entity.feedVo.FeedConsumeVo;
+import com.huimv.environ.eco.entity.feedVo.FeedFormVo;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+public interface FeedConsumeMapper extends BaseMapper<FeedConsume> {
+
+    FeedConsumeChartVo getTotal(String startDate, String endDate);
+
+    List<FeedFormVo> list(String startDate, String endDate);
+
+    Page<FeedConsumeVo> listFeed(Page<FeedConsume> page, String date);
+}

+ 21 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/FeedUsageMapper.java

@@ -0,0 +1,21 @@
+package com.huimv.environ.eco.mapper;
+
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.environ.eco.entity.feedVo.FeedUsedVo;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 饲料使用记录 Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+public interface FeedUsageMapper extends BaseMapper<FeedUsage> {
+
+    List<FeedUsedVo> listTotal(String startDate, String endDate);
+}

+ 25 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/IFeedConsumeService.java

@@ -0,0 +1,25 @@
+package com.huimv.environ.eco.service;
+
+import com.huimv.common.utils.Result;
+import com.huimv.environ.eco.entity.FeedConsume;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+public interface IFeedConsumeService extends IService<FeedConsume> {
+
+    Result listTodayFeedConsume();
+
+    Result listFeedConsume(Map<String, String> map) ;
+
+    Result listFeed(Map<String, String> map) ;
+}

+ 21 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/IFeedUsageService.java

@@ -0,0 +1,21 @@
+package com.huimv.environ.eco.service;
+
+import com.huimv.common.utils.Result;
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 饲料使用记录 服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+public interface IFeedUsageService extends IService<FeedUsage> {
+
+    Result listUse(Map<String, String> map);
+}

+ 107 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/FeedConsumeServiceImpl.java

@@ -0,0 +1,107 @@
+package com.huimv.environ.eco.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+import com.huimv.environ.eco.entity.FeedConsume;
+import com.huimv.environ.eco.entity.eggvo.HistoryEntity;
+import com.huimv.environ.eco.entity.eggvo.HistroyOne;
+import com.huimv.environ.eco.entity.feedVo.FeedConsumeChartVo;
+import com.huimv.environ.eco.entity.feedVo.FeedConsumeVo;
+import com.huimv.environ.eco.entity.feedVo.FeedFormVo;
+import com.huimv.environ.eco.entity.feedVo.TodayFeedVo;
+import com.huimv.environ.eco.mapper.FeedConsumeMapper;
+import com.huimv.environ.eco.service.IFeedConsumeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+@Service
+public class FeedConsumeServiceImpl extends ServiceImpl<FeedConsumeMapper, FeedConsume> implements IFeedConsumeService {
+
+    @Autowired
+    private FeedConsumeMapper feedConsumeMapper;
+
+    private static  final  String BASE_URL= "https://iot1.bigherdsman.com/api/v2/";
+    private static  final  String TOKEN= "72438b180e9168fe90db126e3310cd0b20a7196d";
+    private static  final  String HISTORY_LIST= "history/list/?code=";
+    private static final String FARM_CODE = "2022011710";
+
+    @Override
+    public Result listTodayFeedConsume() {
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Authorization","Token "+TOKEN);
+        HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = new RestTemplate();
+        List<TodayFeedVo> todayFeedVos = new ArrayList<>();
+
+        Long start = DateUtil.beginOfDay(new Date()).getTime();
+        Long end = System.currentTimeMillis();
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)-1,0,0,0);
+        Long yesterdayStartTime = calendar.getTime().getTime();
+
+        Calendar calendar2 = Calendar.getInstance();
+        calendar2.set(calendar2.get(Calendar.YEAR),calendar2.get(Calendar.MONTH),calendar2.get(Calendar.DAY_OF_MONTH)-1,23,59,59);
+        Long yesterdayEndTime = calendar2.getTime().getTime();
+        for (int i = 1 ; i < 10; i++){
+            TodayFeedVo todayFeedVo = new TodayFeedVo();
+            ResponseEntity<HistoryEntity> todayForEntity = restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+i+"&start="+start+"&end="+end, HttpMethod.GET, httpEntity,HistoryEntity.class );
+            List<HistroyOne> todayData = todayForEntity.getBody().getData();
+            HistroyOne today = todayData.get(todayData.size() - 1);
+
+            ResponseEntity<HistoryEntity> yesterdayForEntity = restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+i+"&start="+yesterdayStartTime+"&end="+yesterdayEndTime, HttpMethod.GET, httpEntity,HistoryEntity.class );
+            List<HistroyOne> yesterdayData = yesterdayForEntity.getBody().getData();
+            HistroyOne yesterday = yesterdayData.get(yesterdayData.size() - 1);
+
+            todayFeedVo.setUnitName(i+"舍");
+            todayFeedVo.setYesterday(yesterday.getData().getFt_do_tal_tdy());
+            todayFeedVo.setToday(today.getData().getFt_do_tal_tdy());
+            todayFeedVos.add(todayFeedVo);
+        }
+        return new Result(ResultCode.SUCCESS,todayFeedVos);
+    }
+
+    @Override
+    public Result listFeedConsume(Map<String, String> map){
+        String startDate = map.get("startDate");
+        String endDate = map.get("endDate");
+        FeedConsumeChartVo feedConsumeVo = feedConsumeMapper.getTotal(startDate,endDate);
+        List<FeedFormVo> feedFormVos = feedConsumeMapper.list(startDate,endDate);
+        feedConsumeVo.setList(feedFormVos);
+        return new Result(ResultCode.SUCCESS,feedConsumeVo);
+    }
+
+    @Override
+    public Result listFeed(Map<String, String> map) {
+        String date = map.get("date");
+        String pageNum = map.get("pageNum");
+        String pageSize = map.get("pageSize");
+        Page<FeedConsume> page = new Page<>(Integer.parseInt(pageNum),Integer.parseInt(pageSize));
+        Page<FeedConsumeVo> feedConsumeVoList = feedConsumeMapper.listFeed(page, date);
+        return new Result(ResultCode.SUCCESS,feedConsumeVoList);
+    }
+}

+ 47 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/FeedUsageServiceImpl.java

@@ -0,0 +1,47 @@
+package com.huimv.environ.eco.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.huimv.environ.eco.entity.feedVo.FeedUsedVo;
+import com.huimv.environ.eco.mapper.FeedUsageMapper;
+import com.huimv.environ.eco.service.IFeedUsageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 饲料使用记录 服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-15
+ */
+@Service
+public class FeedUsageServiceImpl extends ServiceImpl<FeedUsageMapper, FeedUsage> implements IFeedUsageService {
+
+    @Autowired
+    private FeedUsageMapper feedUsageMapper;
+
+    @Override
+    public Result listUse(Map<String, String> map){
+        String startDate = map.get("startDate");
+        String endDate = map.get("endDate");
+        List<FeedUsedVo> feedUsedVo = feedUsageMapper.listTotal(startDate,endDate);
+        for (FeedUsedVo usedVo : feedUsedVo) {
+            List<FeedUsage> feedUsages = feedUsageMapper.selectList(new QueryWrapper<FeedUsage>().lambda()
+                    .eq(FeedUsage::getUsedDate,usedVo.getDate())
+                    .orderByAsc(FeedUsage::getUsedDate)
+                    .orderByAsc(FeedUsage::getUnitName));
+            usedVo.setList(feedUsages);
+        }
+        return new Result(ResultCode.SUCCESS,feedUsedVo);
+    }
+}

+ 116 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/FeedConsumeTimer.java

@@ -0,0 +1,116 @@
+package com.huimv.environ.eco.timer;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.huimv.environ.eco.entity.eggvo.*;
+import com.huimv.environ.eco.service.IFeedUsageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class FeedConsumeTimer {
+    private static  final  String BASE_URL= "https://iot1.bigherdsman.com/api/v2/";
+    private static  final  String TOKEN= "72438b180e9168fe90db126e3310cd0b20a7196d";
+    private static  final  String CURRENT_LIST= "current/list/?code=";
+    private static  final  String HISTORY_LIST= "history/list/?code=";
+    private static final String FARM_CODE = "2022011710";
+
+    @Autowired
+    private IFeedUsageService feedUsageService;
+
+
+    @Scheduled(cron = "0 0 23 * * ?")
+//    @Scheduled(cron = "0 0/1 * * * ?")
+    public void saveFeedConsumeData(){
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Authorization","Token "+TOKEN);
+        HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = new RestTemplate();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+        Long start = DateUtil.beginOfDay(new Date()).getTime();
+        Long end = System.currentTimeMillis();
+        String stock = "0";
+
+        ResponseEntity<BaseResultEntity> forEntity = restTemplate.exchange(BASE_URL + CURRENT_LIST+FARM_CODE+"&position=all", HttpMethod.GET, httpEntity,BaseResultEntity.class );
+        List<HousVo> data = forEntity.getBody().getData();
+        for (HousVo datum : data) {
+            FeedUsage feedUsage = new FeedUsage();
+            ResponseEntity<HistoryEntity> todayForEntity = restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+datum.getI()+"&start="+start+"&end="+end, HttpMethod.GET, httpEntity,HistoryEntity.class );
+            List<HistroyOne> todayData = todayForEntity.getBody().getData();
+            HistroyOne today = todayData.get(todayData.size() - 1);
+
+            Double totalConsume = today.getData().getFt_do_tal_tdy();
+            if (ObjectUtil.isNotEmpty(datum.getData().getQty_re())){
+                stock = datum.getData().getQty_re();
+            }
+            feedUsage.setUnitName(datum.getI()+"舍");
+            feedUsage.setAge(datum.getData().getAge());
+            feedUsage.setStock(stock);
+            feedUsage.setUsedDate(sdf.format(new Date()));
+            feedUsage.setTotalConsume(BigDecimal.valueOf(totalConsume));
+            if ("0".equals(stock)){
+                feedUsage.setSingleConsume(BigDecimal.ZERO);
+            }else {
+                feedUsage.setSingleConsume(BigDecimal.valueOf(totalConsume).multiply(BigDecimal.valueOf(1000)).divide(BigDecimal.valueOf(Double.valueOf(stock)),2,RoundingMode.HALF_UP));
+            }
+            feedUsageService.save(feedUsage);
+        }
+    }
+
+
+    public static void main(String[] args) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Authorization","Token "+TOKEN);
+        HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = new RestTemplate();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+        Long start = DateUtil.beginOfDay(new Date()).getTime();
+        Long end = System.currentTimeMillis();
+        Double totalConsume = 0.0;
+        String stock = "0";
+
+        ResponseEntity<BaseResultEntity> forEntity = restTemplate.exchange(BASE_URL + CURRENT_LIST+FARM_CODE+"&position=all", HttpMethod.GET, httpEntity,BaseResultEntity.class );
+        List<HousVo> data = forEntity.getBody().getData();
+        for (HousVo datum : data) {
+            FeedUsage feedUsage = new FeedUsage();
+            ResponseEntity<HistoryEntity> todayForEntity = restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+datum.getI()+"&start="+start+"&end="+end, HttpMethod.GET, httpEntity,HistoryEntity.class );
+            List<HistroyOne> todayData = todayForEntity.getBody().getData();
+            HistroyOne today = todayData.get(todayData.size() - 1);
+
+            if (ObjectUtil.isNotEmpty(today.getData().getFt_do_tal_tdy())){
+                totalConsume = today.getData().getFt_do_tal_tdy();
+            }
+            if (ObjectUtil.isNotEmpty(datum.getData().getQty_re())){
+                stock = datum.getData().getQty_re();
+            }
+            feedUsage.setUnitName(datum.getI()+"舍");
+            feedUsage.setAge(datum.getData().getAge());
+            feedUsage.setStock(stock);
+            feedUsage.setUsedDate(sdf.format(new Date()));
+            feedUsage.setTotalConsume(BigDecimal.valueOf(totalConsume));
+            if ("0".equals(stock)){
+                feedUsage.setSingleConsume(BigDecimal.ZERO);
+            }else {
+                feedUsage.setSingleConsume(BigDecimal.valueOf(totalConsume).divide(BigDecimal.valueOf(Double.valueOf(stock)), 2, RoundingMode.HALF_UP));
+            }
+            System.out.println(feedUsage);
+        }
+    }
+}

+ 7 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/resources/application-dev.yml

@@ -19,3 +19,10 @@ spring:
     host: 122.112.224.199
     host: 122.112.224.199
     port: 6379
     port: 6379
     password: hm123456
     password: hm123456
+
+
+
+mybatis-plus:
+  configuration:
+    #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 34 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/FeedConsumeMapper.xml

@@ -0,0 +1,34 @@
+<?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.environ.eco.mapper.FeedConsumeMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, date, time, num1, batch, type, except, reality
+    </sql>
+    <select id="getTotal" resultType="com.huimv.environ.eco.entity.feedVo.FeedConsumeChartVo">
+        SELECT ROUND(SUM(reality) / 1000, 2) AS totalConsume FROM `feed_consume` WHERE DATE BETWEEN '${startDate}' AND '${endDate}'
+    </select>
+    <select id="list" resultType="com.huimv.environ.eco.entity.feedVo.FeedFormVo">
+        SELECT DATE AS 'date',ROUND(SUM(reality) / 1000, 2) AS consume FROM `feed_consume` WHERE DATE BETWEEN '${startDate}' AND '${endDate}'
+        GROUP BY DATE(DATE)
+        ORDER BY DATE
+    </select>
+    <select id="listFeed" resultType="com.huimv.environ.eco.entity.feedVo.FeedConsumeVo">
+        SELECT
+            TRIM(BOTH '"' FROM DATE) AS 'date',
+            TRIM(BOTH '"' FROM num1) AS batchName,
+            GROUP_CONCAT(DISTINCT TRIM(BOTH '"' FROM TYPE) SEPARATOR '、') AS material,
+            ROUND(SUM(reality), 2) AS consume
+        FROM
+            `feed_consume`
+        <if test="date != null and date != ''">
+            WHERE DATE = '${date}'
+        </if>
+        GROUP BY
+            DATE,batchName
+        ORDER BY
+            DATE DESC,num1 ASC
+    </select>
+
+</mapper>

+ 15 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/FeedUsageMapper.xml

@@ -0,0 +1,15 @@
+<?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.environ.eco.mapper.FeedUsageMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, used_date, unit_name, stock, age, single_consume
+    </sql>
+    <select id="listTotal" resultType="com.huimv.environ.eco.entity.feedVo.FeedUsedVo">
+        SELECT used_date AS 'date',ROUND(SUM(total_consume),2) AS 'totalUsed' FROM `feed_usage` WHERE used_date BETWEEN '${startDate}' AND '${endDate}'
+        GROUP BY DATE(used_date)
+        ORDER BY used_date ASC
+    </select>
+
+</mapper>