Newspaper 1 rok temu
rodzic
commit
7f2655e0ec
34 zmienionych plików z 1063 dodań i 478 usunięć
  1. 60 2
      huimv-farm-datacenter-egg/huimv-farm-admin/pom.xml
  2. 17 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/controller/LoginController.java
  3. 88 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/FeedEggDetail.java
  4. 67 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/FeedEggPrintVo.java
  5. 15 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/FeedEggVo.java
  6. 2 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/SysAccountMultilevel.java
  7. 23 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/mapper/FeedEggDetailMapper.java
  8. 21 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/IFeedEggDetailService.java
  9. 1 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/AppSysMenuServiceImpl.java
  10. 1 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/AuthorizeServiceImpl.java
  11. 49 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/FeedEggDetailServiceImpl.java
  12. 1 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/MenuServiceImpl.java
  13. 1 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/ProdFarmNameServiceImpl.java
  14. 1 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/SysAccountMultilevelServiceImpl.java
  15. 1 1
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/UserServiceImpl.java
  16. 87 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/util/Print.java
  17. 2 2
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/resources/application.properties
  18. 41 0
      huimv-farm-datacenter-egg/huimv-farm-admin/src/main/resources/com.huimv.admin.system.mapper/FeedEggDetailMapper.xml
  19. 28 2
      huimv-farm-datacenter-egg/huimv-farm-environ/pom.xml
  20. 3 11
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/FeedEggDetailController.java
  21. 11 1
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/LayEggController.java
  22. 11 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/LayEgg.java
  23. 67 0
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/eggvo/FeedEggPrintVo.java
  24. 1 1
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/eggvo/LayEggVo.java
  25. 1 3
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/FeedEggDetailMapper.java
  26. 1 1
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/LayEggMapper.java
  27. 1 2
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/IFeedEggDetailService.java
  28. 4 17
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/FeedEggDetailServiceImpl.java
  29. 1 1
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/LayEggServiceImpl.java
  30. 146 146
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/EggTimer.java
  31. 131 131
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/FeedConsumeTimer.java
  32. 102 102
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/LayEggTimer.java
  33. 76 48
      huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/util/Print.java
  34. 1 1
      huimv-farm-datacenter-egg/huimv-farm-produce/pom.xml

+ 60 - 2
huimv-farm-datacenter-egg/huimv-farm-admin/pom.xml

@@ -3,14 +3,16 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>huimv-farm-datacenter</artifactId>
+        <artifactId>huimv-farm-datacenter-egg</artifactId>
         <groupId>com.huimv</groupId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>huimv-farm-admin</artifactId>
-
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
     <dependencies>
 
         <dependency>
@@ -56,6 +58,53 @@
             <version>0.0.1</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls-poi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.15</version>
+        </dependency>
+
+        <!-- poi 读取word doc-->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-scratchpad</artifactId>
+            <version>3.15</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.15</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>3.15</version>
+        </dependency>
+
+<!--        <dependency>-->
+<!--            <groupId>org.jxls</groupId>-->
+<!--            <artifactId>jxls</artifactId>-->
+<!--            <version>3.0.0-beta1</version>-->
+<!--            <scope>compile</scope>-->
+<!--        </dependency>-->
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-core</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -70,6 +119,15 @@
                 <artifactId>maven-resources-plugin</artifactId>
                 <version>2.6</version>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
         </plugins>
 <!--        <resources>-->
 <!--            <resource>-->

+ 17 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/controller/LoginController.java

@@ -5,6 +5,7 @@ import com.huimv.admin.system.entity.Account;
 import com.huimv.admin.system.entity.BaseFarmX;
 import com.huimv.admin.system.entity.SysAccountMultilevel;
 import com.huimv.admin.system.service.IBaseFarmXService;
+import com.huimv.admin.system.service.IFeedEggDetailService;
 import com.huimv.admin.system.service.ILoginService;
 import com.huimv.admin.system.session.AccessToken;
 import com.huimv.common.exception.ExceptionEnum;
@@ -19,7 +20,9 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -30,6 +33,8 @@ public class LoginController {
 
     @Autowired
     ILoginService iLoginService;
+    @Autowired
+    private IFeedEggDetailService feedEggDetailService;
 
 //    @Autowired
 //    RedisTemplate redisTemplate;
@@ -179,7 +184,7 @@ public class LoginController {
 
     @GetMapping("/xfarmList")
     public Result farmList(@RequestParam(name = "id")Integer id){
-        QueryWrapper<BaseFarmX> wrapper = new QueryWrapper<>();
+        QueryWrapper<BaseFarmX> wrapper = new QueryWrapper<BaseFarmX>();
         wrapper.eq("row_status",true);
         if (id != null){
             wrapper.ne("id",id);
@@ -188,5 +193,16 @@ public class LoginController {
         return new Result(ResultCode.SUCCESS,baseFarmXService.list(wrapper));
     }
 
+    @GetMapping("/print")
+    public void print(@RequestParam(name = "startDate") String startDate,
+                      @RequestParam(name = "endDate") String endDate) throws IOException {
+        Map<String, String> map = new HashMap();
+        startDate = startDate.replace("-","/");
+        endDate = endDate.replace("-","/");
+        map.put("startDate",startDate);
+        map.put("endDate",endDate);
+        feedEggDetailService.print(map);
+    }
+
 
 }

+ 88 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/FeedEggDetail.java

@@ -0,0 +1,88 @@
+package com.huimv.admin.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 饲料产蛋报表
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("feed_egg_detail")
+public class FeedEggDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 日期
+     */
+    @TableField("date")
+    private String date;
+
+    /**
+     * 单元名称
+     */
+    @TableField("unit_name")
+    private String unitName;
+
+    /**
+     * 存栏
+     */
+    @TableField("stock")
+    private String stock;
+
+    /**
+     * 产蛋数量
+     */
+    @TableField("egg_production")
+    private String eggProduction;
+
+    /**
+     * 产蛋率
+     */
+    @TableField("lay_egg_rate")
+    private BigDecimal layEggRate;
+
+    /**
+     * 总产蛋重量
+     */
+    @TableField("egg_weight")
+    private BigDecimal eggWeight;
+
+    /**
+     * 鸡蛋平均重量
+     */
+    @TableField("avg_weight")
+    private BigDecimal avgWeight;
+
+    /**
+     * 总饲料消耗
+     */
+    @TableField("feed_consume")
+    private BigDecimal feedConsume;
+
+    /**
+     * 料蛋比
+     */
+    @TableField("feed_egg_ratio")
+    private BigDecimal feedEggRatio;
+
+
+}

+ 67 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/FeedEggPrintVo.java

@@ -0,0 +1,67 @@
+package com.huimv.admin.system.entity;
+
+import lombok.Data;
+
+@Data
+public class FeedEggPrintVo {
+    private String date;
+    private String totalEggWeight;
+    private String totalFeedConsume;
+    private String totalFeedEggRate;
+
+    private String stock1;
+    private String eggProduction1;
+    private String layEggRate1;
+    private String eggWeight1;
+    private String avgWeight1;
+    private String feedConsume1;
+    private String feedEggRatio1;
+
+    private String stock2;
+    private String eggProduction2;
+    private String layEggRate2;
+    private String eggWeight2;
+    private String avgWeight2;
+    private String feedConsume2;
+    private String feedEggRatio2;
+
+    private String stock3;
+    private String eggProduction3;
+    private String layEggRate3;
+    private String eggWeight3;
+    private String avgWeight3;
+    private String feedConsume3;
+    private String feedEggRatio3;
+
+    private String stock4;
+    private String eggProduction4;
+    private String layEggRate4;
+    private String eggWeight4;
+    private String avgWeight4;
+    private String feedConsume4;
+    private String feedEggRatio4;
+
+    private String stock5;
+    private String eggProduction5;
+    private String layEggRate5;
+    private String eggWeight5;
+    private String avgWeight5;
+    private String feedConsume5;
+    private String feedEggRatio5;
+
+    private String stock6;
+    private String eggProduction6;
+    private String layEggRate6;
+    private String eggWeight6;
+    private String avgWeight6;
+    private String feedConsume6;
+    private String feedEggRatio6;
+
+    private String stock7;
+    private String eggProduction7;
+    private String layEggRate7;
+    private String eggWeight7;
+    private String avgWeight7;
+    private String feedConsume7;
+    private String feedEggRatio7;
+}

+ 15 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/FeedEggVo.java

@@ -0,0 +1,15 @@
+package com.huimv.admin.system.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class FeedEggVo {
+    private String date;
+    private BigDecimal totalEggWeight;
+    private BigDecimal totalFeedConsume;
+    private BigDecimal totalFeedEggRate;
+    private List<FeedEggDetail> list;
+}

+ 2 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/entity/SysAccountMultilevel.java

@@ -1,6 +1,7 @@
 package com.huimv.admin.system.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
@@ -45,6 +46,7 @@ public class SysAccountMultilevel extends Model {
 
     private String userName;
 
+    @TableField("screen_video")
     private Integer screenVideo;
 
 }

+ 23 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/mapper/FeedEggDetailMapper.java

@@ -0,0 +1,23 @@
+package com.huimv.admin.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.admin.system.entity.FeedEggDetail;
+import com.huimv.admin.system.entity.FeedEggVo;
+import org.springframework.stereotype.Repository;
+
+
+import java.util.List;
+
+/**
+ * <p>
+ * 饲料产蛋报表 Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-19
+ */
+@Repository
+public interface FeedEggDetailMapper extends BaseMapper<FeedEggDetail> {
+    List<FeedEggVo> listPrint(String startDate, String endDate);
+}

+ 21 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/IFeedEggDetailService.java

@@ -0,0 +1,21 @@
+package com.huimv.admin.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.admin.system.entity.FeedEggDetail;
+import com.huimv.common.utils.Result;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 饲料产蛋报表 服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-19
+ */
+public interface IFeedEggDetailService extends IService<FeedEggDetail> {
+
+    void print(Map<String, String> map) throws IOException;
+}

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/AppSysMenuServiceImpl.java

@@ -79,7 +79,7 @@ public class AppSysMenuServiceImpl extends ServiceImpl<AppMenuMapper, AppSysMenu
     @Override
     public Result removeMenu(Integer menuId) {
         try {
-            QueryWrapper<AppSysMenu> menuQueryWrapper = new QueryWrapper<>();
+            QueryWrapper<AppSysMenu> menuQueryWrapper = new QueryWrapper();
             menuQueryWrapper.eq("parent_id",menuId);
             List<AppSysMenu> lists = menuMapper.selectList(menuQueryWrapper);
             if (lists != null && lists.size()>0){

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/AuthorizeServiceImpl.java

@@ -91,7 +91,7 @@ public class AuthorizeServiceImpl implements IAuthorizeService {
     @Override
     public Result getMenuByGroup(String groupId) {
         /* 根据权限组读取已关联菜单 */
-        QueryWrapper<GroupMenu> groupMenuQueryWrapper = new QueryWrapper<>();
+        QueryWrapper<GroupMenu> groupMenuQueryWrapper = new QueryWrapper();
         groupMenuQueryWrapper.eq("group_id",groupId);
         List<GroupMenu> groupMenuEntityList = groupMenuMapper.selectList(groupMenuQueryWrapper);
         if (groupMenuEntityList.size() == 0) {

+ 49 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/FeedEggDetailServiceImpl.java

@@ -0,0 +1,49 @@
+package com.huimv.admin.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.admin.system.entity.FeedEggDetail;
+import com.huimv.admin.system.entity.FeedEggVo;
+import com.huimv.admin.system.mapper.FeedEggDetailMapper;
+import com.huimv.admin.system.service.IFeedEggDetailService;
+import com.huimv.admin.system.util.Print;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 饲料产蛋报表 服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-03-19
+ */
+@Service
+public class FeedEggDetailServiceImpl extends ServiceImpl<FeedEggDetailMapper, FeedEggDetail> implements IFeedEggDetailService {
+
+    @Autowired
+    private FeedEggDetailMapper feedEggDetailMapper;
+
+    @Override
+    public void print(Map<String, String> map) throws IOException {
+        String startDate = map.get("startDate");
+        String endDate = map.get("endDate");
+        List<FeedEggVo> feedEggVos = feedEggDetailMapper.listPrint(startDate,endDate);
+        for (FeedEggVo feedEggVo : feedEggVos) {
+            List<FeedEggDetail> feedEggDetails = feedEggDetailMapper.selectList(new QueryWrapper<FeedEggDetail>().lambda().eq(FeedEggDetail::getDate, feedEggVo.getDate()).orderByAsc(FeedEggDetail::getUnitName));
+            feedEggVo.setList(feedEggDetails);
+        }
+        Print.printFeedEgg(feedEggVos);
+    }
+
+
+
+
+}

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/MenuServiceImpl.java

@@ -79,7 +79,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
     @Override
     public Result removeMenu(Integer menuId) {
         try {
-            QueryWrapper<Menu> menuQueryWrapper = new QueryWrapper<>();
+            QueryWrapper<Menu> menuQueryWrapper = new QueryWrapper();
             menuQueryWrapper.eq("parent_id",menuId);
             List<Menu> lists = menuMapper.selectList(menuQueryWrapper);
             if (lists != null && lists.size()>0){

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/ProdFarmNameServiceImpl.java

@@ -44,7 +44,7 @@ public class ProdFarmNameServiceImpl extends ServiceImpl<ProdFarmNameMapper, Pro
         Integer current = (Integer) map.get("current");
         String strchStr = (String)map.get("strchStr");
         Integer size =(Integer) map.get("size");
-        QueryWrapper<ProdFarmName> wrapper = new QueryWrapper<>();
+        QueryWrapper<ProdFarmName> wrapper = new QueryWrapper();
 
         if (StringUtils.isNotBlank(strchStr)){
             wrapper.like("farm_name",strchStr)

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/SysAccountMultilevelServiceImpl.java

@@ -57,7 +57,7 @@ public class SysAccountMultilevelServiceImpl extends ServiceImpl<SysAccountMulti
     @Override
     public Result findUserAccount(String searchStr, int pageNum, int pageSize, Integer userId) {
 
-        QueryWrapper<SysAccountMultilevel> wrapper = new QueryWrapper<>();
+        QueryWrapper<SysAccountMultilevel> wrapper = new QueryWrapper();
         wrapper.like("pids",userId).or().eq("id",userId);
         IPage<SysAccountMultilevel> page = this.page(new Page<>(pageNum, pageSize), wrapper);
         return new Result(ResultCode.SUCCESS,page);

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/service/impl/UserServiceImpl.java

@@ -39,7 +39,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
 
         if (!StringUtils.isEmpty(searchStr) ) {
             List<UserAccountDto> userAccountList = userMapper.findUserAndAccountByUserName(searchStr, start,pageSize);
-            QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
+            QueryWrapper<User> userQueryWrapper = new QueryWrapper();
             userQueryWrapper.eq("user_name",searchStr);
             int total = userMapper.selectCount(userQueryWrapper);
             JSONObject resultJo = new JSONObject();

+ 87 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/java/com/huimv/admin/system/util/Print.java

@@ -0,0 +1,87 @@
+package com.huimv.admin.system.util;
+
+import com.huimv.admin.system.entity.FeedEggDetail;
+import com.huimv.admin.system.entity.FeedEggPrintVo;
+import com.huimv.admin.system.entity.FeedEggVo;
+import org.jxls.common.Context;
+import org.jxls.util.JxlsHelper;
+
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Print {
+    public static void printFeedEgg(List<FeedEggVo> feedEggVos) throws IOException {
+        //准备数据
+        String path = "/opt/jar/FeedEggReport.xls";
+        //获取模板文件,你自己当前模板的位置  我这里为当前项目下
+        InputStream is = new FileInputStream("/opt/jar/FeedEgg.xlsx");
+        //根据模板生成的文件保存路径  我这里保存在本地D盘
+        OutputStream os = new FileOutputStream(path);
+        //绑定数据
+        Context context = new Context();
+        List<FeedEggPrintVo> list = new ArrayList();
+
+        for (FeedEggVo feedEggVo : feedEggVos) {
+            FeedEggPrintVo feedEggPrintVo = new FeedEggPrintVo();
+            feedEggPrintVo.setDate(feedEggVo.getDate());
+            feedEggPrintVo.setTotalEggWeight(feedEggVo.getTotalEggWeight() + "吨");
+            feedEggPrintVo.setTotalFeedConsume(feedEggVo.getTotalFeedConsume() + "吨");
+            feedEggPrintVo.setTotalFeedEggRate(feedEggVo.getTotalFeedEggRate().toString());
+
+            List<FeedEggDetail> list1 = feedEggVo.getList();
+            feedEggPrintVo.setStock1(list1.get(0).getStock());
+            feedEggPrintVo.setEggProduction1(list1.get(0).getEggProduction());
+            feedEggPrintVo.setLayEggRate1(list1.get(0).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight1(list1.get(0).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight1(list1.get(0).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume1(list1.get(0).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio1(list1.get(0).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock2(list1.get(1).getStock());
+            feedEggPrintVo.setEggProduction2(list1.get(1).getEggProduction());
+            feedEggPrintVo.setLayEggRate2(list1.get(1).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight2(list1.get(1).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight2(list1.get(1).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume2(list1.get(1).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio2(list1.get(1).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock3(list1.get(2).getStock());
+            feedEggPrintVo.setEggProduction3(list1.get(2).getEggProduction());
+            feedEggPrintVo.setLayEggRate3(list1.get(2).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight3(list1.get(2).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight3(list1.get(2).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume3(list1.get(2).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio3(list1.get(2).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock4(list1.get(3).getStock());
+            feedEggPrintVo.setEggProduction4(list1.get(3).getEggProduction());
+            feedEggPrintVo.setLayEggRate4(list1.get(3).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight4(list1.get(3).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight4(list1.get(3).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume4(list1.get(3).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio4(list1.get(3).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock5(list1.get(4).getStock());
+            feedEggPrintVo.setEggProduction5(list1.get(4).getEggProduction());
+            feedEggPrintVo.setLayEggRate5(list1.get(4).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight5(list1.get(4).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight5(list1.get(4).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume5(list1.get(4).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio5(list1.get(4).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock6(list1.get(5).getStock());
+            feedEggPrintVo.setEggProduction6(list1.get(5).getEggProduction());
+            feedEggPrintVo.setLayEggRate6(list1.get(5).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight6(list1.get(5).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight6(list1.get(5).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume6(list1.get(5).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio6(list1.get(5).getFeedEggRatio()+":1");
+
+            list.add(feedEggPrintVo);
+        }
+        context.putVar("list", list);
+        JxlsHelper.getInstance().processTemplate(is, os, context);
+    }
+}

+ 2 - 2
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/resources/application.properties

@@ -1,7 +1,7 @@
-#spring.profiles.active=dev
+spring.profiles.active=dev
 #spring.profiles.active=prod3
 #spring.profiles.active=prod
-spring.profiles.active=demo
+#spring.profiles.active=demo
 #spring.profiles.active=yv
 
 #ʱ¼ä¸ñʽÅäÖÃ

+ 41 - 0
huimv-farm-datacenter-egg/huimv-farm-admin/src/main/resources/com.huimv.admin.system.mapper/FeedEggDetailMapper.xml

@@ -0,0 +1,41 @@
+<?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.admin.system.mapper.FeedEggDetailMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, date, unit_name, stock, egg_production, lay_egg_rate, total_egg_weight, avg_weight, total_feed_consume, feed_egg_ratio
+    </sql>
+    <select id="listPrint" resultType="com.huimv.admin.system.entity.FeedEggVo">
+        SELECT
+            e.date,
+            e.total_egg_weight AS 'totalEggWeight',
+            COALESCE(ROUND(u.total_feed_consume / 1000, 2), 0) AS 'totalFeedConsume',
+            ROUND(CASE WHEN e.egg_production = 0 THEN 0 ELSE u.total_feed_consume / e.egg_production END, 2) AS 'totalFeedEggRate'
+        FROM
+            (SELECT
+                DATE AS DATE,
+                SUM(total_weight) AS total_egg_weight,
+                SUM(egg_production) AS egg_production
+             FROM
+                `lay_egg`
+            GROUP BY
+                 DATE) e
+        LEFT JOIN
+            (SELECT
+                 used_date AS DATE,
+                SUM(total_consume) AS total_feed_consume
+            FROM
+                 `feed_usage`
+             GROUP BY
+                 used_date) u
+        ON
+            e.date = u.date
+        <if test="startDate != null and startDate != ''">
+            WHERE e.date BETWEEN '${startDate}' AND '${endDate}'
+        </if>
+        ORDER BY
+            e.date ASC
+    </select>
+
+</mapper>

+ 28 - 2
huimv-farm-datacenter-egg/huimv-farm-environ/pom.xml

@@ -58,16 +58,42 @@
         </dependency>
 
         <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls-poi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi</artifactId>
-            <version>5.2.3</version>
+            <version>3.15</version>
+        </dependency>
+
+        <!-- poi 读取word doc-->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-scratchpad</artifactId>
+            <version>3.15</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
-            <version>5.2.3</version>
+            <version>3.15</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>3.15</version>
+        </dependency>
+
+
     </dependencies>
 
     <build>

+ 3 - 11
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/FeedEggDetailController.java

@@ -7,12 +7,10 @@ import com.huimv.environ.eco.entity.LayEgg;
 import com.huimv.environ.eco.service.IFeedEggDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -35,10 +33,4 @@ public class FeedEggDetailController {
     public Result page(@RequestBody Map<String,String> map){
         return feedEggDetailService.selectPage(map);
     }
-
-    @PostMapping("/print")
-    public Result print(@RequestBody Map<String,String> map){
-        return feedEggDetailService.print(map);
-    }
-
 }

+ 11 - 1
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/LayEggController.java

@@ -1,8 +1,12 @@
 package com.huimv.environ.eco.controller;
 
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.graphbuilder.curve.LagrangeCurve;
 import com.huimv.common.utils.Result;
 import com.huimv.environ.eco.entity.FeedMaterial;
 import com.huimv.environ.eco.entity.LayEgg;
@@ -16,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Map;
 
@@ -36,7 +41,12 @@ public class LayEggController {
 
     @PostMapping("/add")
     @Transactional
-    public Result add(@RequestBody List<LayEgg> list){
+    public Result add(@RequestBody Map<String,Object> map){
+        ObjectMapper objectMapper = new ObjectMapper();
+        List<LayEgg> list = objectMapper.convertValue(map.get("list"), new TypeReference<List<LayEgg>>() {});
+        for (LayEgg layEgg : list) {
+            layEgg.setDate(layEgg.getDate().replace("-","/"));
+        }
         String date = list.get(0).getDate();
         Integer integer = layEggService.count(new QueryWrapper<LayEgg>().lambda().eq(LayEgg::getDate, date));
         if (integer > 0){

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

@@ -1,14 +1,19 @@
 package com.huimv.environ.eco.entity;
 
 import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import java.time.LocalDate;
 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;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -35,6 +40,12 @@ public class LayEgg implements Serializable {
     private String date;
 
     /**
+     * 日期
+     */
+    @TableField(exist = false)
+    private String unit;
+
+    /**
      * 单元名称
      */
     private String unitName;

+ 67 - 0
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/eggvo/FeedEggPrintVo.java

@@ -0,0 +1,67 @@
+package com.huimv.environ.eco.entity.eggvo;
+
+import lombok.Data;
+
+@Data
+public class FeedEggPrintVo {
+    private String date;
+    private String totalEggWeight;
+    private String totalFeedConsume;
+    private String totalFeedEggRate;
+
+    private String stock1;
+    private String eggProduction1;
+    private String layEggRate1;
+    private String eggWeight1;
+    private String avgWeight1;
+    private String feedConsume1;
+    private String feedEggRatio1;
+
+    private String stock2;
+    private String eggProduction2;
+    private String layEggRate2;
+    private String eggWeight2;
+    private String avgWeight2;
+    private String feedConsume2;
+    private String feedEggRatio2;
+
+    private String stock3;
+    private String eggProduction3;
+    private String layEggRate3;
+    private String eggWeight3;
+    private String avgWeight3;
+    private String feedConsume3;
+    private String feedEggRatio3;
+
+    private String stock4;
+    private String eggProduction4;
+    private String layEggRate4;
+    private String eggWeight4;
+    private String avgWeight4;
+    private String feedConsume4;
+    private String feedEggRatio4;
+
+    private String stock5;
+    private String eggProduction5;
+    private String layEggRate5;
+    private String eggWeight5;
+    private String avgWeight5;
+    private String feedConsume5;
+    private String feedEggRatio5;
+
+    private String stock6;
+    private String eggProduction6;
+    private String layEggRate6;
+    private String eggWeight6;
+    private String avgWeight6;
+    private String feedConsume6;
+    private String feedEggRatio6;
+
+    private String stock7;
+    private String eggProduction7;
+    private String layEggRate7;
+    private String eggWeight7;
+    private String avgWeight7;
+    private String feedConsume7;
+    private String feedEggRatio7;
+}

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/eggvo/LayEggVo.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 @Data
 public class LayEggVo {
-    private LocalDate date;
+    private String date;
     private BigDecimal totalWeight;
     private List<LayEggUnitVo> list;
 }

+ 1 - 3
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/FeedEggDetailMapper.java

@@ -17,7 +17,5 @@ import java.util.List;
  */
 public interface FeedEggDetailMapper extends BaseMapper<FeedEggDetail> {
 
-    Page<FeedEggVo> page(Page<FeedEggVo> page);
-
-    List<FeedEggVo> listPrint(String startDate, String endDate);
+    Page<FeedEggVo> page(Page<FeedEggVo> page, String startDate, String endDate);
 }

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/LayEggMapper.java

@@ -21,5 +21,5 @@ public interface LayEggMapper extends BaseMapper<LayEgg> {
 
     Page<LayEggVo> page(Page<LayEggVo> page);
 
-    List<LayEggUnitVo> listUnit(LocalDate date);
+    List<LayEggUnitVo> listUnit(String date);
 }

+ 1 - 2
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/IFeedEggDetailService.java

@@ -4,6 +4,7 @@ import com.huimv.common.utils.Result;
 import com.huimv.environ.eco.entity.FeedEggDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -17,6 +18,4 @@ import java.util.Map;
 public interface IFeedEggDetailService extends IService<FeedEggDetail> {
 
     Result selectPage(Map<String, String> map);
-
-    Result print(Map<String, String> map);
 }

+ 4 - 17
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/FeedEggDetailServiceImpl.java

@@ -14,6 +14,7 @@ import com.huimv.environ.eco.util.Print;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -34,10 +35,12 @@ public class FeedEggDetailServiceImpl extends ServiceImpl<FeedEggDetailMapper, F
 
     @Override
     public Result selectPage(Map<String, String> map) {
+        String startDate = map.get("startDate");
+        String endDate = map.get("endDate");
         String pageNum = map.get("pageNum");
         String pageSize = map.get("pageSize");
         Page<FeedEggVo> page = new Page<>(Integer.parseInt(pageNum),Integer.parseInt(pageSize));
-        Page<FeedEggVo> layEggVoPage = feedEggDetailMapper.page(page);
+        Page<FeedEggVo> layEggVoPage = feedEggDetailMapper.page(page,startDate,endDate);
         List<FeedEggVo> records = layEggVoPage.getRecords();
         for (FeedEggVo record : records) {
             List<FeedEggDetail> feedEggDetails = feedEggDetailMapper.selectList(new QueryWrapper<FeedEggDetail>().lambda().eq(FeedEggDetail::getDate, record.getDate()).orderByAsc(FeedEggDetail::getUnitName));
@@ -46,20 +49,4 @@ public class FeedEggDetailServiceImpl extends ServiceImpl<FeedEggDetailMapper, F
         return new Result(ResultCode.SUCCESS,layEggVoPage);
     }
 
-    @Override
-    public Result print(Map<String, String> map) {
-        String startDate = map.get("startDate");
-        String endDate = map.get("endDate");
-        List<FeedEggVo> feedEggVos = feedEggDetailMapper.listPrint(startDate,endDate);
-        for (FeedEggVo feedEggVo : feedEggVos) {
-            List<FeedEggDetail> feedEggDetails = feedEggDetailMapper.selectList(new QueryWrapper<FeedEggDetail>().lambda().eq(FeedEggDetail::getDate, feedEggVo.getDate()).orderByAsc(FeedEggDetail::getUnitName));
-            feedEggVo.setList(feedEggDetails);
-        }
-
-        return Result.SUCCESS();
-    }
-
-
-
-
 }

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/LayEggServiceImpl.java

@@ -39,7 +39,7 @@ public class LayEggServiceImpl extends ServiceImpl<LayEggMapper, LayEgg> impleme
         Page<LayEggVo> layEggVoPage = layEggMapper.page(page);
         List<LayEggVo> records = layEggVoPage.getRecords();
         for (LayEggVo record : records) {
-            LocalDate date = record.getDate();
+            String date = record.getDate();
             List<LayEggUnitVo> layEggUnitVos = layEggMapper.listUnit(date);
             record.setList(layEggUnitVos);
         }

+ 146 - 146
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/EggTimer.java

@@ -1,146 +1,146 @@
-//package com.huimv.environ.eco.timer;
-//
-//
-//import cn.hutool.core.date.DateTime;
-//import cn.hutool.core.date.DateUtil;
-//import cn.hutool.json.JSONObject;
-//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-//import com.huimv.environ.eco.entity.BaseWarningInfo;
-//import com.huimv.environ.eco.entity.EggData;
-//import com.huimv.environ.eco.entity.EggHouse;
-//import com.huimv.environ.eco.entity.SysThreshold;
-//import com.huimv.environ.eco.entity.eggvo.HistoryEntity;
-//import com.huimv.environ.eco.entity.eggvo.HistroyOne;
-//import com.huimv.environ.eco.entity.eggvo.HistroyTwo;
-//import com.huimv.environ.eco.service.IBaseWarningInfoService;
-//import com.huimv.environ.eco.service.IEggDataService;
-//import com.huimv.environ.eco.service.IEggHouseService;
-//import com.huimv.environ.eco.service.ISysThresholdService;
-//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.util.Date;
-//import java.util.List;
-//
-//@Component
-//public class EggTimer {
-//    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";
-//
-//    @Autowired
-//    private IEggDataService eggDataService;
-//    @Autowired
-//    private IEggHouseService eggHouseService;
-//
-//    @Autowired
-//    private ISysThresholdService sysThresholdService;
-//    @Autowired
-//    private IBaseWarningInfoService baseWarningInfoService;
-//
-//
-//    @Scheduled(cron = "0 0/10 * * * ? ")
-////    @Scheduled(cron = "0 * * * * ? ")
-//    public void saveEggData(){
-//        System.out.println("test");
-//        RestTemplate restTemplate = new RestTemplate();
-//        HttpHeaders headers = new HttpHeaders();
-//        headers.set("Authorization","Token "+TOKEN);
-//        HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
-//
-//        List<EggHouse> list = eggHouseService.list();
-//        Date date= new Date();
-//        long end = date.getTime();
-//        DateTime dateTime = DateUtil.offsetMinute(date, -10);
-//        long start = dateTime.getTime();
-//        SysThreshold byId = sysThresholdService.getById(1);
-//        for (EggHouse eggHouse : list) {
-//            Integer i = eggHouse.getI();
-//            try {
-//                ResponseEntity<HistoryEntity> forEntity  =  restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+i+"&start="+start+"&end="+end, HttpMethod.GET, httpEntity,HistoryEntity.class );
-//                List<HistroyOne> data = forEntity.getBody().getData();
-//                for (HistroyOne datum : data) {
-//                    Long uploadTime = datum.getUpload_time();
-//                    HistroyTwo data1 = datum.getData();
-//
-//                    EggData eggData = new EggData();
-//                    eggData.setCo2(data1.getCo2());
-//                    eggData.setFtDoTalTdy(data1.getFt_do_tal_tdy());
-//                    eggData.setHR(data1.getH_r());
-//                    eggData.setI(i);
-//                    eggData.setTCur(data1.getT_cur());
-//                    eggData.setWtrTdy(data1.getWtr_tdy());
-//                    eggData.setUploadTime( new Date(uploadTime));
-//
-//                    eggData.setFN( data1.getF_n());
-//                    eggData.setFLv( data1.getF_lv());
-//                    eggData.setFV(data1.getF_v() );
-//                    eggData.setTS(data1.getT_s());
-//                    eggData.setTT( data1.getT_t());
-//                    eggData.setHT( data1.getH_t());
-//                    eggData.setHtL( data1.getHt_l());
-//                    eggDataService.save(eggData);
-//                    saveWarning(eggData,byId);
-//                }
-//
-//            }catch (Exception e){
-//                System.out.println("数据未取到");
-//            }
-//        }
-//    }
-//
-//    private void saveWarning(EggData eggData, SysThreshold byId) {
-//        String minTem = byId.getMinTem();
-//        String maxTem = byId.getMaxTem();
-//        String minHum = byId.getMinHum();
-//        String maxHum = byId.getMaxHum();
-//        Double tCur = eggData.getTCur();
-//        Integer hr = eggData.getHR();
-//        Integer i = eggData.getI();
-//
-//        BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
-//        baseWarningInfo.setFarmId(1);
-//        baseWarningInfo.setLevel(1);
-//        baseWarningInfo.setLevelName("一级报警");
-//        baseWarningInfo.setUploadTime(new Date());
-//        baseWarningInfo.setWarningTime(eggData.getUploadTime());
-//        //高温
-//        if (tCur>Double.parseDouble(maxTem)){
-//            baseWarningInfo.setMsg(i+"号舍高温预警:温度为"+tCur+"℃,超过高温阈值"+maxTem+"℃");
-//            baseWarningInfo.setAlarmType(7);
-//            baseWarningInfo.setWarningName("高温报警");
-//            baseWarningInfoService.save(baseWarningInfo);
-//        }
-//        //低温
-//        if (tCur<Double.parseDouble(minTem)){
-//            baseWarningInfo.setMsg(i+"号舍低温预警:温度为"+tCur+"℃,低于低温阈值"+minTem+"℃");
-//            baseWarningInfo.setAlarmType(7);
-//            baseWarningInfo.setWarningName("低温报警");
-//            baseWarningInfoService.save(baseWarningInfo);
-//        }
-//        //高湿
-//        if (hr>Integer.parseInt(maxHum)){
-//            baseWarningInfo.setMsg(i+"号舍高湿度预警:温度为"+hr+",高于阈值"+maxHum);
-//            baseWarningInfo.setAlarmType(7);
-//            baseWarningInfo.setWarningName("高湿度报警");
-//            baseWarningInfoService.save(baseWarningInfo);
-//        }
-//        //低湿
-//        if (hr<Integer.parseInt(minHum)){
-//            baseWarningInfo.setMsg(i+"号舍低湿度预警:温度为"+hr+",低于阈值"+minHum);
-//            baseWarningInfo.setAlarmType(7);
-//            baseWarningInfo.setWarningName("低湿度报警");
-//            baseWarningInfoService.save(baseWarningInfo);
-//        }
-//    }
-//
-//
-//}
+package com.huimv.environ.eco.timer;
+
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.environ.eco.entity.BaseWarningInfo;
+import com.huimv.environ.eco.entity.EggData;
+import com.huimv.environ.eco.entity.EggHouse;
+import com.huimv.environ.eco.entity.SysThreshold;
+import com.huimv.environ.eco.entity.eggvo.HistoryEntity;
+import com.huimv.environ.eco.entity.eggvo.HistroyOne;
+import com.huimv.environ.eco.entity.eggvo.HistroyTwo;
+import com.huimv.environ.eco.service.IBaseWarningInfoService;
+import com.huimv.environ.eco.service.IEggDataService;
+import com.huimv.environ.eco.service.IEggHouseService;
+import com.huimv.environ.eco.service.ISysThresholdService;
+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.util.Date;
+import java.util.List;
+
+@Component
+public class EggTimer {
+    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";
+
+    @Autowired
+    private IEggDataService eggDataService;
+    @Autowired
+    private IEggHouseService eggHouseService;
+
+    @Autowired
+    private ISysThresholdService sysThresholdService;
+    @Autowired
+    private IBaseWarningInfoService baseWarningInfoService;
+
+
+    @Scheduled(cron = "0 0/10 * * * ? ")
+//    @Scheduled(cron = "0 * * * * ? ")
+    public void saveEggData(){
+        System.out.println("test");
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Authorization","Token "+TOKEN);
+        HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
+
+        List<EggHouse> list = eggHouseService.list();
+        Date date= new Date();
+        long end = date.getTime();
+        DateTime dateTime = DateUtil.offsetMinute(date, -10);
+        long start = dateTime.getTime();
+        SysThreshold byId = sysThresholdService.getById(1);
+        for (EggHouse eggHouse : list) {
+            Integer i = eggHouse.getI();
+            try {
+                ResponseEntity<HistoryEntity> forEntity  =  restTemplate.exchange(BASE_URL + HISTORY_LIST+FARM_CODE+"&i="+i+"&start="+start+"&end="+end, HttpMethod.GET, httpEntity,HistoryEntity.class );
+                List<HistroyOne> data = forEntity.getBody().getData();
+                for (HistroyOne datum : data) {
+                    Long uploadTime = datum.getUpload_time();
+                    HistroyTwo data1 = datum.getData();
+
+                    EggData eggData = new EggData();
+                    eggData.setCo2(data1.getCo2());
+                    eggData.setFtDoTalTdy(data1.getFt_do_tal_tdy());
+                    eggData.setHR(data1.getH_r());
+                    eggData.setI(i);
+                    eggData.setTCur(data1.getT_cur());
+                    eggData.setWtrTdy(data1.getWtr_tdy());
+                    eggData.setUploadTime( new Date(uploadTime));
+
+                    eggData.setFN( data1.getF_n());
+                    eggData.setFLv( data1.getF_lv());
+                    eggData.setFV(data1.getF_v() );
+                    eggData.setTS(data1.getT_s());
+                    eggData.setTT( data1.getT_t());
+                    eggData.setHT( data1.getH_t());
+                    eggData.setHtL( data1.getHt_l());
+                    eggDataService.save(eggData);
+                    saveWarning(eggData,byId);
+                }
+
+            }catch (Exception e){
+                System.out.println("数据未取到");
+            }
+        }
+    }
+
+    private void saveWarning(EggData eggData, SysThreshold byId) {
+        String minTem = byId.getMinTem();
+        String maxTem = byId.getMaxTem();
+        String minHum = byId.getMinHum();
+        String maxHum = byId.getMaxHum();
+        Double tCur = eggData.getTCur();
+        Integer hr = eggData.getHR();
+        Integer i = eggData.getI();
+
+        BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
+        baseWarningInfo.setFarmId(1);
+        baseWarningInfo.setLevel(1);
+        baseWarningInfo.setLevelName("一级报警");
+        baseWarningInfo.setUploadTime(new Date());
+        baseWarningInfo.setWarningTime(eggData.getUploadTime());
+        //高温
+        if (tCur>Double.parseDouble(maxTem)){
+            baseWarningInfo.setMsg(i+"号舍高温预警:温度为"+tCur+"℃,超过高温阈值"+maxTem+"℃");
+            baseWarningInfo.setAlarmType(7);
+            baseWarningInfo.setWarningName("高温报警");
+            baseWarningInfoService.save(baseWarningInfo);
+        }
+        //低温
+        if (tCur<Double.parseDouble(minTem)){
+            baseWarningInfo.setMsg(i+"号舍低温预警:温度为"+tCur+"℃,低于低温阈值"+minTem+"℃");
+            baseWarningInfo.setAlarmType(7);
+            baseWarningInfo.setWarningName("低温报警");
+            baseWarningInfoService.save(baseWarningInfo);
+        }
+        //高湿
+        if (hr>Integer.parseInt(maxHum)){
+            baseWarningInfo.setMsg(i+"号舍高湿度预警:温度为"+hr+",高于阈值"+maxHum);
+            baseWarningInfo.setAlarmType(7);
+            baseWarningInfo.setWarningName("高湿度报警");
+            baseWarningInfoService.save(baseWarningInfo);
+        }
+        //低湿
+        if (hr<Integer.parseInt(minHum)){
+            baseWarningInfo.setMsg(i+"号舍低湿度预警:温度为"+hr+",低于阈值"+minHum);
+            baseWarningInfo.setAlarmType(7);
+            baseWarningInfo.setWarningName("低湿度报警");
+            baseWarningInfoService.save(baseWarningInfo);
+        }
+    }
+
+
+}

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

@@ -1,131 +1,131 @@
-//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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-//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();
-//
-//        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) {
-//            String stock = "0";
-//            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 one = feedUsageService.getOne(new QueryWrapper<FeedUsage>().lambda().eq(FeedUsage::getUsedDate, sdf.format(new Date())).eq(FeedUsage::getUnitName, datum.getI() + "舍"));
-//            if (ObjectUtil.isNotEmpty(one)){
-//                one.setStock(stock);
-//                one.setTotalConsume(BigDecimal.valueOf(totalConsume));
-//                if ("0".equals(stock)){
-//                    one.setSingleConsume(BigDecimal.ZERO);
-//                }else {
-//                    one.setSingleConsume(BigDecimal.valueOf(totalConsume).multiply(BigDecimal.valueOf(1000)).divide(BigDecimal.valueOf(Double.valueOf(stock)),2,RoundingMode.HALF_UP));
-//                }
-//                feedUsageService.updateById(one);
-//            }else {
-//                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;
-//
-//        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) {
-//            String stock = "0";
-//            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);
-//        }
-//    }
-//}
+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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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();
+
+        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) {
+            String stock = "0";
+            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 one = feedUsageService.getOne(new QueryWrapper<FeedUsage>().lambda().eq(FeedUsage::getUsedDate, sdf.format(new Date())).eq(FeedUsage::getUnitName, datum.getI() + "舍"));
+            if (ObjectUtil.isNotEmpty(one)){
+                one.setStock(stock);
+                one.setTotalConsume(BigDecimal.valueOf(totalConsume));
+                if ("0".equals(stock)){
+                    one.setSingleConsume(BigDecimal.ZERO);
+                }else {
+                    one.setSingleConsume(BigDecimal.valueOf(totalConsume).multiply(BigDecimal.valueOf(1000)).divide(BigDecimal.valueOf(Double.valueOf(stock)),2,RoundingMode.HALF_UP));
+                }
+                feedUsageService.updateById(one);
+            }else {
+                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;
+
+        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) {
+            String stock = "0";
+            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);
+        }
+    }
+}

+ 102 - 102
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/timer/LayEggTimer.java

@@ -1,102 +1,102 @@
-//package com.huimv.environ.eco.timer;
-//
-//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-//import com.huimv.environ.eco.entity.FeedEggDetail;
-//import com.huimv.environ.eco.entity.FeedUsage;
-//import com.huimv.environ.eco.entity.LayEgg;
-//import com.huimv.environ.eco.mapper.FeedEggDetailMapper;
-//import com.huimv.environ.eco.mapper.FeedUsageMapper;
-//import com.huimv.environ.eco.mapper.LayEggMapper;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.scheduling.annotation.Scheduled;
-//import org.springframework.stereotype.Component;
-//import org.springframework.transaction.annotation.Transactional;
-//
-//import java.math.BigDecimal;
-//import java.math.RoundingMode;
-//import java.time.LocalDate;
-//import java.time.format.DateTimeFormatter;
-//import java.util.List;
-//
-//@Component
-//public class LayEggTimer {
-//
-//    @Autowired
-//    private LayEggMapper layEggMapper;
-//    @Autowired
-//    private FeedEggDetailMapper feedEggDetailMapper;
-//    @Autowired
-//    private FeedUsageMapper feedUsageMapper;
-//
-//    @Scheduled(cron = "0 5 0 * * ?")
-////@Scheduled(cron = "0/10 * * * * ?")
-//    @Transactional
-//    public void saveLayEgg(){
-//        LocalDate localDate = LocalDate.now();
-//        LocalDate yesterday = localDate.minusDays(1);
-//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
-//        String date = yesterday.format(formatter);
-//        Integer count = layEggMapper.selectCount(new QueryWrapper<LayEgg>().lambda().eq(LayEgg::getDate, date));
-//        if (count == 0){
-//            for (int i = 1; i <= 7; i++){
-//                LayEgg layEgg = new LayEgg();
-//                layEgg.setDate(date);
-//                layEgg.setUnitName(i+"舍");
-//                layEgg.setAvgWeight(BigDecimal.ZERO);
-//                layEgg.setEggProduction(0);
-//                layEgg.setTotalWeight(BigDecimal.ZERO);
-//                layEggMapper.insert(layEgg);
-//            }
-//        }
-//    }
-//
-//    @Scheduled(cron = "0 10 0 * * ?")
-////    @Scheduled(cron = "0/10 * * * * ?")
-//    @Transactional
-//    public void saveDetail(){
-//        LocalDate localDate = LocalDate.now();
-//        LocalDate yesterday = localDate.minusDays(1);
-//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
-//        String date = yesterday.format(formatter);
-//        List<LayEgg> layEggs = layEggMapper.selectList(new QueryWrapper<LayEgg>().lambda().eq(LayEgg::getDate, date).orderByAsc(LayEgg::getUnitName));
-//        for (LayEgg layEgg : layEggs) {
-//            FeedEggDetail feedEggDetail = new FeedEggDetail();
-//            feedEggDetail.setDate(date);
-//            feedEggDetail.setUnitName(layEgg.getUnitName());
-//            String[] split = layEgg.getUnitName().split("舍");
-//            String updatedNumber = String.valueOf(Integer.parseInt(split[0]) + 2);
-//            String newUnitName = updatedNumber + "舍";
-//            FeedUsage feedUsage = feedUsageMapper.selectOne(new QueryWrapper<FeedUsage>().lambda().eq(FeedUsage::getUsedDate, date).eq(FeedUsage::getUnitName, newUnitName));
-//
-//            feedEggDetail.setStock(feedUsage.getStock());
-//            feedEggDetail.setEggProduction(layEgg.getEggProduction().toString());
-//            BigDecimal rate = BigDecimal.ZERO;
-//            BigDecimal stock = new BigDecimal(feedUsage.getStock());
-//            BigDecimal eggProduction = new BigDecimal(layEgg.getEggProduction());
-//            if (!feedUsage.getStock().equals("0")){
-//                rate =  eggProduction.divide(stock,4,RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2);
-//            }
-//            feedEggDetail.setLayEggRate(rate);
-//            feedEggDetail.setEggWeight(layEgg.getTotalWeight());
-//            feedEggDetail.setAvgWeight(layEgg.getAvgWeight());
-//            feedEggDetail.setFeedConsume(feedUsage.getTotalConsume());
-//
-//            BigDecimal ratio = BigDecimal.ZERO;
-//            BigDecimal feedConsume = feedUsage.getTotalConsume();
-//            if (eggProduction.compareTo(BigDecimal.ZERO) != 0){
-//                ratio =  feedConsume.divide(eggProduction).setScale(2,RoundingMode.HALF_UP);
-//            }
-//            feedEggDetail.setFeedEggRatio(ratio);
-//            feedEggDetailMapper.insert(feedEggDetail);
-//        }
-//
-//    }
-//
-//    public static void main(String[] args) {
-//        LocalDate localDate = LocalDate.now();
-//        LocalDate yesterday = localDate.minusDays(1);
-//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
-//        String date = yesterday.format(formatter);
-//        System.out.println(date);
-//    }
-//}
+package com.huimv.environ.eco.timer;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.environ.eco.entity.FeedEggDetail;
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.huimv.environ.eco.entity.LayEgg;
+import com.huimv.environ.eco.mapper.FeedEggDetailMapper;
+import com.huimv.environ.eco.mapper.FeedUsageMapper;
+import com.huimv.environ.eco.mapper.LayEggMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Component
+public class LayEggTimer {
+
+    @Autowired
+    private LayEggMapper layEggMapper;
+    @Autowired
+    private FeedEggDetailMapper feedEggDetailMapper;
+    @Autowired
+    private FeedUsageMapper feedUsageMapper;
+
+    @Scheduled(cron = "0 5 0 * * ?")
+//@Scheduled(cron = "0/10 * * * * ?")
+    @Transactional
+    public void saveLayEgg(){
+        LocalDate localDate = LocalDate.now();
+        LocalDate yesterday = localDate.minusDays(1);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        String date = yesterday.format(formatter);
+        Integer count = layEggMapper.selectCount(new QueryWrapper<LayEgg>().lambda().eq(LayEgg::getDate, date));
+        if (count == 0){
+            for (int i = 1; i <= 7; i++){
+                LayEgg layEgg = new LayEgg();
+                layEgg.setDate(date);
+                layEgg.setUnitName(i+"舍");
+                layEgg.setAvgWeight(BigDecimal.ZERO);
+                layEgg.setEggProduction(0);
+                layEgg.setTotalWeight(BigDecimal.ZERO);
+                layEggMapper.insert(layEgg);
+            }
+        }
+    }
+
+    @Scheduled(cron = "0 10 0 * * ?")
+//    @Scheduled(cron = "0/10 * * * * ?")
+    @Transactional
+    public void saveDetail(){
+        LocalDate localDate = LocalDate.now();
+        LocalDate yesterday = localDate.minusDays(1);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        String date = yesterday.format(formatter);
+        List<LayEgg> layEggs = layEggMapper.selectList(new QueryWrapper<LayEgg>().lambda().eq(LayEgg::getDate, date).orderByAsc(LayEgg::getUnitName));
+        for (LayEgg layEgg : layEggs) {
+            FeedEggDetail feedEggDetail = new FeedEggDetail();
+            feedEggDetail.setDate(date);
+            feedEggDetail.setUnitName(layEgg.getUnitName());
+            String[] split = layEgg.getUnitName().split("舍");
+            String updatedNumber = String.valueOf(Integer.parseInt(split[0]) + 2);
+            String newUnitName = updatedNumber + "舍";
+            FeedUsage feedUsage = feedUsageMapper.selectOne(new QueryWrapper<FeedUsage>().lambda().eq(FeedUsage::getUsedDate, date).eq(FeedUsage::getUnitName, newUnitName));
+
+            feedEggDetail.setStock(feedUsage.getStock());
+            feedEggDetail.setEggProduction(layEgg.getEggProduction().toString());
+            BigDecimal rate = BigDecimal.ZERO;
+            BigDecimal stock = new BigDecimal(feedUsage.getStock());
+            BigDecimal eggProduction = new BigDecimal(layEgg.getEggProduction());
+            if (!feedUsage.getStock().equals("0")){
+                rate =  eggProduction.divide(stock,4,RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2);
+            }
+            feedEggDetail.setLayEggRate(rate);
+            feedEggDetail.setEggWeight(layEgg.getTotalWeight());
+            feedEggDetail.setAvgWeight(layEgg.getAvgWeight());
+            feedEggDetail.setFeedConsume(feedUsage.getTotalConsume());
+
+            BigDecimal ratio = BigDecimal.ZERO;
+            BigDecimal feedConsume = feedUsage.getTotalConsume();
+            if (eggProduction.compareTo(BigDecimal.ZERO) != 0){
+                ratio =  feedConsume.divide(eggProduction).setScale(2,RoundingMode.HALF_UP);
+            }
+            feedEggDetail.setFeedEggRatio(ratio);
+            feedEggDetailMapper.insert(feedEggDetail);
+        }
+
+    }
+
+    public static void main(String[] args) {
+        LocalDate localDate = LocalDate.now();
+        LocalDate yesterday = localDate.minusDays(1);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        String date = yesterday.format(formatter);
+        System.out.println(date);
+    }
+}

+ 76 - 48
huimv-farm-datacenter-egg/huimv-farm-environ/src/main/java/com/huimv/environ/eco/util/Print.java

@@ -1,58 +1,86 @@
 package com.huimv.environ.eco.util;
 
+import com.huimv.environ.eco.entity.FeedEggDetail;
+import com.huimv.environ.eco.entity.eggvo.FeedEggPrintVo;
 import com.huimv.environ.eco.entity.eggvo.FeedEggVo;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
+import org.jxls.common.Context;
+import org.jxls.util.JxlsHelper;
+
+import java.io.*;
+import java.util.ArrayList;
 import java.util.List;
 
 public class Print {
-    public static void printFeedEgg(List<String> barnNames,List<FeedEggVo> feedEggVos, String filePath){
-        Workbook workbook = new XSSFWorkbook(); //
-        Sheet sheet = workbook.createSheet("FeedEggReport");
-
-        // 创建第一行标题
-        Row headerRow = sheet.createRow(0);
-        Cell headerCell = headerRow.createCell(0);
-        headerCell.setCellValue("日期");
-        headerCell = headerRow.createCell(1);
-        headerCell.setCellValue("总重量");
-        headerCell = headerRow.createCell(2);
-        headerCell.setCellValue("饲料消耗比");
-        headerCell = headerRow.createCell(3);
-        headerCell.setCellValue("总料蛋比");
-
-        int columnStartForBarns = 4;
-        // 添加产蛋舍标题(二级标题)
-        for (int i = 0; i < barnNames.size(); i++) {
-            String barnName = barnNames.get(i);
-            Cell headerCellForBarn = headerRow.createCell(columnStartForBarns + i * 6);
-            headerCellForBarn.setCellValue(barnName);
-
-            // 添加二级标题
-            Row subHeaderRow = sheet.createRow(1 + i); // 每个产蛋舍下面创建新的二级标题行
-            for (int j = 0; j < 7; j++) {
-                Cell subHeaderCell = subHeaderRow.createCell(columnStartForBarns + i * 7 + j);
-                String[] subHeaders = {"存栏", "产蛋数量", "产蛋率", "总产蛋重量", "鸡蛋平均重量", "饲料消耗", "料蛋比"};
-                subHeaderCell.setCellValue(subHeaders[j]);
-            }
-        }
+    public static void printFeedEgg(List<FeedEggVo> feedEggVos) throws IOException {
+        //准备数据
+        String path = "/opt/jar/FeedEggReport.xls";
+        //获取模板文件,你自己当前模板的位置  我这里为当前项目下
+        InputStream is = new FileInputStream("/opt/jar/FeedEgg.xlsx");
+        //根据模板生成的文件保存路径  我这里保存在本地D盘
+        OutputStream os = new FileOutputStream(path);
+        //绑定数据
+        Context context = new Context();
+        List<FeedEggPrintVo> list = new ArrayList<>();
+
+        for (FeedEggVo feedEggVo : feedEggVos) {
+            FeedEggPrintVo feedEggPrintVo = new FeedEggPrintVo();
+            feedEggPrintVo.setDate(feedEggVo.getDate());
+            feedEggPrintVo.setTotalEggWeight(feedEggVo.getTotalEggWeight() + "吨");
+            feedEggPrintVo.setTotalFeedConsume(feedEggVo.getTotalFeedConsume() + "吨");
+            feedEggPrintVo.setTotalFeedEggRate(feedEggVo.getTotalFeedEggRate().toString());
+
+            List<FeedEggDetail> list1 = feedEggVo.getList();
+            feedEggPrintVo.setStock1(list1.get(0).getStock());
+            feedEggPrintVo.setEggProduction1(list1.get(0).getEggProduction());
+            feedEggPrintVo.setLayEggRate1(list1.get(0).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight1(list1.get(0).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight1(list1.get(0).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume1(list1.get(0).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio1(list1.get(0).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock2(list1.get(1).getStock());
+            feedEggPrintVo.setEggProduction2(list1.get(1).getEggProduction());
+            feedEggPrintVo.setLayEggRate2(list1.get(1).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight2(list1.get(1).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight2(list1.get(1).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume2(list1.get(1).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio2(list1.get(1).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock3(list1.get(2).getStock());
+            feedEggPrintVo.setEggProduction3(list1.get(2).getEggProduction());
+            feedEggPrintVo.setLayEggRate3(list1.get(2).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight3(list1.get(2).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight3(list1.get(2).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume3(list1.get(2).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio3(list1.get(2).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock4(list1.get(3).getStock());
+            feedEggPrintVo.setEggProduction4(list1.get(3).getEggProduction());
+            feedEggPrintVo.setLayEggRate4(list1.get(3).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight4(list1.get(3).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight4(list1.get(3).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume4(list1.get(3).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio4(list1.get(3).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock5(list1.get(4).getStock());
+            feedEggPrintVo.setEggProduction5(list1.get(4).getEggProduction());
+            feedEggPrintVo.setLayEggRate5(list1.get(4).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight5(list1.get(4).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight5(list1.get(4).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume5(list1.get(4).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio5(list1.get(4).getFeedEggRatio()+":1");
+
+            feedEggPrintVo.setStock6(list1.get(5).getStock());
+            feedEggPrintVo.setEggProduction6(list1.get(5).getEggProduction());
+            feedEggPrintVo.setLayEggRate6(list1.get(5).getLayEggRate()+"%");
+            feedEggPrintVo.setEggWeight6(list1.get(5).getEggWeight()+"吨");
+            feedEggPrintVo.setAvgWeight6(list1.get(5).getAvgWeight()+"克");
+            feedEggPrintVo.setFeedConsume6(list1.get(5).getFeedConsume()+"Kg");
+            feedEggPrintVo.setFeedEggRatio6(list1.get(5).getFeedEggRatio()+":1");
 
-        try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
-            workbook.write(outputStream);
-        } catch (IOException e) {
-            e.printStackTrace();
-        } finally {
-            try {
-                workbook.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+            list.add(feedEggPrintVo);
         }
+        context.putVar("list", list);
+        JxlsHelper.getInstance().processTemplate(is, os, context);
     }
 }

+ 1 - 1
huimv-farm-datacenter-egg/huimv-farm-produce/pom.xml

@@ -3,7 +3,7 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>huimv-farm-datacenter</artifactId>
+        <artifactId>huimv-farm-datacenter-egg</artifactId>
         <groupId>com.huimv</groupId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>