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