Newspaper vor 1 Jahr
Ursprung
Commit
626b3f6bf3

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

@@ -3,19 +3,19 @@ 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.core.conditions.query.QueryWrapper;
 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.BuildEntity;
-import com.huimv.environ.eco.entity.eggvo.BuildVo;
-import com.huimv.environ.eco.entity.eggvo.HistoryEntity;
-import com.huimv.environ.eco.entity.eggvo.HistroyOne;
+import com.huimv.environ.eco.entity.FeedUsage;
+import com.huimv.environ.eco.entity.eggvo.*;
 import com.huimv.environ.eco.entity.feedVo.*;
 import com.huimv.environ.eco.mapper.FeedConsumeMapper;
 import com.huimv.environ.eco.mapper.FeedUsageMapper;
 import com.huimv.environ.eco.service.IFeedConsumeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.environ.eco.service.IFeedUsageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -41,6 +41,9 @@ import java.util.*;
 @Service
 public class FeedConsumeServiceImpl extends ServiceImpl<FeedConsumeMapper, FeedConsume> implements IFeedConsumeService {
 
+
+    @Autowired
+    private IFeedUsageService feedUsageService;
     @Autowired
     private FeedConsumeMapper feedConsumeMapper;
     @Autowired
@@ -49,6 +52,7 @@ public class FeedConsumeServiceImpl extends ServiceImpl<FeedConsumeMapper, FeedC
     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 CURRENT_LIST= "current/list/?code=";
     private static  final  String LIST_ORIGIN_HOUSE= "hardware/list-origin-house/?code=";
     private static final String FARM_CODE = "2022011710";
 
@@ -165,6 +169,53 @@ public class FeedConsumeServiceImpl extends ServiceImpl<FeedConsumeMapper, FeedC
         String startDate = map.get("startDate");
         String endDate = map.get("endDate");
         String unitName = map.get("unitName");
+
+        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);
+            }
+        }
+
         FeedAnalysisVo feedAnalysisVo = new FeedAnalysisVo();
         FeedConsumeChartVo feedConsumeChartVo= feedConsumeMapper.getTotal(startDate, endDate);
         FeedUsedChartVo feedUsedChartVo = feedUsageMapper.getTotal(startDate, endDate,unitName);

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

@@ -109,6 +109,7 @@ public class FeedConsumeTimer {
 
             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();
@@ -116,6 +117,7 @@ public class FeedConsumeTimer {
             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)){

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

@@ -65,9 +65,22 @@
             m.month;
     </select>
     <select id="getAnalysis" resultType="com.huimv.environ.eco.entity.feedVo.BuildFeedVo">
-        SELECT unit_name as 'unitName',MAX(stock) as 'stock',MAX(age) as 'age',SUM(total_consume) as 'totalConsume',ROUND(AVG(single_consume),2) as 'singleConsume' FROM `feed_usage`
-        WHERE used_date BETWEEN '${startDate}' AND '${endDate}'
-        GROUP BY unit_name
+        SELECT
+            fu.unit_name AS 'unitName',
+            (SELECT stock FROM feed_usage WHERE unit_name = fu.unit_name AND used_date = max_date) AS 'stock',
+            MAX(fu.age) AS 'age',
+            SUM(fu.total_consume) AS 'totalConsume',
+            ROUND(AVG(fu.single_consume), 2) AS 'singleConsume'
+        FROM
+            `feed_usage` fu
+        JOIN
+            (SELECT unit_name, MAX(used_date) AS max_date FROM feed_usage WHERE used_date BETWEEN '${startDate}' AND '${endDate}' GROUP BY unit_name) AS max_dates
+        ON
+            fu.unit_name = max_dates.unit_name AND fu.used_date = max_dates.max_date
+        WHERE
+            fu.used_date BETWEEN '${startDate}' AND '${endDate}'
+        GROUP BY
+    fu.unit_name;
     </select>
     <select id="listScreenUse" resultType="com.huimv.environ.eco.entity.FeedUsage">
         SELECT unit_name as 'unitName',ROUND(SUM(total_consume)/1000,2) as 'totalConsume',ROUND(AVG(single_consume),2) as 'singleConsume' FROM `feed_usage`