Newspaper 1 year ago
parent
commit
8681bddbda

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

@@ -66,4 +66,10 @@ public class FeedUsageController {
         return feedUsageService.listChartUse(map);
     }
 
+
+    @PostMapping("/listStock")
+    public Result listStock(@RequestBody Map<String,String> map){
+        return feedUsageService.listStock(map);
+    }
+
 }

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

@@ -1,6 +1,7 @@
 package com.huimv.environ.eco.controller;
 
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,9 +9,11 @@ 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.FeedEggDetail;
 import com.huimv.environ.eco.entity.FeedMaterial;
 import com.huimv.environ.eco.entity.LayEgg;
 import com.huimv.environ.eco.entity.eggvo.LayEggVo;
+import com.huimv.environ.eco.service.IFeedEggDetailService;
 import com.huimv.environ.eco.service.ILayEggService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -20,6 +23,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Map;
@@ -38,6 +43,8 @@ public class LayEggController {
 
     @Autowired
     private ILayEggService layEggService;
+    @Autowired
+    private IFeedEggDetailService feedEggDetailService;
 
     @PostMapping("/add")
     @Transactional
@@ -45,7 +52,29 @@ public class LayEggController {
         ObjectMapper objectMapper = new ObjectMapper();
         List<LayEgg> list = objectMapper.convertValue(map.get("list"), new TypeReference<List<LayEgg>>() {});
         for (LayEgg layEgg : list) {
+            BigDecimal rate = BigDecimal.ZERO;
             layEgg.setDate(layEgg.getDate().replace("-","/"));
+            FeedEggDetail feedEggDetail = feedEggDetailService.getOne(new QueryWrapper<FeedEggDetail>().lambda().eq(FeedEggDetail::getDate, layEgg.getDate()).eq(FeedEggDetail::getUnitName, layEgg.getUnitName()));
+            if (ObjectUtil.isNotEmpty(feedEggDetail)){
+                BigDecimal totalWeight = layEgg.getTotalWeight();
+                feedEggDetail.setEggProduction(layEgg.getEggProduction().toString());
+                feedEggDetail.setEggWeight(totalWeight);
+                feedEggDetail.setAvgWeight(layEgg.getAvgWeight());
+                BigDecimal stock = new BigDecimal(feedEggDetail.getStock());
+                BigDecimal eggProduction = new BigDecimal(layEgg.getEggProduction());
+                if (!feedEggDetail.getStock().equals("0")){
+                    rate =  eggProduction.divide(stock,4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2);
+                }
+                feedEggDetail.setLayEggRate(rate);
+
+                BigDecimal ratio = BigDecimal.ZERO;
+                BigDecimal feedConsume = feedEggDetail.getFeedConsume();
+
+                if (eggProduction.compareTo(BigDecimal.ZERO) != 0){
+                    ratio =  feedConsume.divide(eggProduction).setScale(2,RoundingMode.HALF_UP);
+                }
+                feedEggDetail.setFeedEggRatio(ratio);
+            }
         }
         String date = list.get(0).getDate();
         Integer integer = layEggService.count(new QueryWrapper<LayEgg>().lambda().eq(LayEgg::getDate, date));

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

@@ -0,0 +1,13 @@
+package com.huimv.environ.eco.entity.feedVo;
+
+import lombok.Data;
+
+@Data
+public class StockVo {
+    private Integer month;
+    private Integer value1;
+    private Integer value2;
+    private Integer value3;
+    private Integer value4;
+    private Integer value5;
+}

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

@@ -2,10 +2,7 @@ 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.BuildFeedVo;
-import com.huimv.environ.eco.entity.feedVo.FeedUsedChartVo;
-import com.huimv.environ.eco.entity.feedVo.FeedUsedVo;
-import com.huimv.environ.eco.entity.feedVo.FeedVo;
+import com.huimv.environ.eco.entity.feedVo.*;
 
 import java.util.Date;
 import java.util.List;
@@ -35,4 +32,8 @@ public interface FeedUsageMapper extends BaseMapper<FeedUsage> {
     List<BuildFeedVo> getAnalysis(String startDate, String endDate);
 
     List<FeedUsage> listScreenUse(String startDate);
+
+    String getMaxDay(int month);
+
+    StockVo listStock(String maxDay);
 }

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

@@ -22,4 +22,6 @@ public interface IFeedUsageService extends IService<FeedUsage> {
     Result listChartUse(Map<String, String> map);
 
     Result listScreenUse(Map<String, String> map);
+
+    Result listStock(Map<String, String> map);
 }

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

@@ -5,10 +5,7 @@ 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.FeedConsumeChartVo;
-import com.huimv.environ.eco.entity.feedVo.FeedUsedChartVo;
-import com.huimv.environ.eco.entity.feedVo.FeedUsedVo;
-import com.huimv.environ.eco.entity.feedVo.FeedVo;
+import com.huimv.environ.eco.entity.feedVo.*;
 import com.huimv.environ.eco.mapper.FeedUsageMapper;
 import com.huimv.environ.eco.service.IFeedUsageService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,7 +15,9 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -107,4 +106,18 @@ public class FeedUsageServiceImpl extends ServiceImpl<FeedUsageMapper, FeedUsage
         }
         return new Result(ResultCode.SUCCESS,feedUsages);
     }
+
+    @Override
+    public Result listStock(Map<String, String> map) {
+        List<StockVo> stockVoList = new ArrayList<>();
+        int nowMonth = LocalDate.now().getMonthValue();
+        for (int i = 1; i <= nowMonth; i++) {
+           String maxDay = feedUsageMapper.getMaxDay(i);
+           if (ObjectUtil.isNotEmpty(maxDay)){
+               StockVo stockVo = feedUsageMapper.listStock(maxDay);
+               stockVoList.add(stockVo);
+           }
+        }
+        return new Result(ResultCode.SUCCESS,stockVoList);
+    }
 }

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

@@ -88,4 +88,19 @@
         GROUP BY unit_name
     </select>
 
+    <select id="getMaxDay" resultType="java.lang.String">
+        SELECT MAX(used_date) FROM `feed_usage` WHERE
+        YEAR(used_date) = YEAR(CURDATE()) and MONTH(used_date) = #{month}
+    </select>
+    <select id="listStock" resultType="com.huimv.environ.eco.entity.feedVo.StockVo">
+        SELECT
+	        MONTH(used_date) AS MONTH,
+            SUM(CASE WHEN age BETWEEN 0 AND 100 THEN stock ELSE 0 END) AS value1,
+	        SUM(CASE WHEN age BETWEEN 101 AND 200 THEN stock ELSE 0 END) AS value2,
+	        SUM(CASE WHEN age BETWEEN 201 AND 300 THEN stock ELSE 0 END) AS value3,
+	        SUM(CASE WHEN age BETWEEN 301 AND 400 THEN stock ELSE 0 END) AS value4,
+	        SUM(CASE WHEN age BETWEEN 401 AND 500 THEN stock ELSE 0 END) AS value5
+        FROM `feed_usage` WHERE used_date = #{maxDay}
+    </select>
+
 </mapper>