Переглянути джерело

预测对接图标接口调整

王苗苗 7 місяців тому
батько
коміт
ef8fae93e7

+ 8 - 3
slibra-admin/src/main/java/com/slibra/web/controller/business/TXinyiForecastComparisonController.java

@@ -6,6 +6,8 @@ import java.util.List;
 import java.util.Objects;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson2.JSONObject;
+import com.google.gson.JsonObject;
 import com.slibra.common.DecimalUtils;
 import com.slibra.common.utils.DateUtils;
 import com.slibra.common.utils.StringUtils;
@@ -63,9 +65,10 @@ public class TXinyiForecastComparisonController extends BaseController
      * @return
      */
     @GetMapping("/echartsList")
-    public List<TXinyiForecastComparison> echartsList(TXinyiForecastComparison tXinyiForecastComparison)
+//    public List<TXinyiForecastComparison> echartsList(TXinyiForecastComparison tXinyiForecastComparison)
+    public JSONObject echartsList(TXinyiForecastComparison tXinyiForecastComparison)
     {
-        //请求参数
+        /*//请求参数
         String timeBegin = tXinyiForecastComparison.getTimeBegin();
         String timeEnd = tXinyiForecastComparison.getTimeEnd();
 
@@ -82,7 +85,9 @@ public class TXinyiForecastComparisonController extends BaseController
         //        this.addListExtra(list);//处理误差率 乘以100,取绝对值 保留2位小数
         //2024年08月16日14:37:52  同一个SQL,不同排序
         tXinyiForecastComparison.setSort(SORT_ASC);
-        return tXinyiForecastComparisonService.selectTXinyiForecastComparisonList(tXinyiForecastComparison);
+        return tXinyiForecastComparisonService.selectTXinyiForecastComparisonList(tXinyiForecastComparison);*/
+        //2024年08月23日15:39:04  返回结果调整,只要3条数据:
+        return this.tXinyiForecastComparisonService.echartsList(tXinyiForecastComparison);
     }
 
     /**

+ 5 - 0
slibra-system/src/main/java/com/slibra/business/service/ITXinyiForecastComparisonService.java

@@ -1,6 +1,9 @@
 package com.slibra.business.service;
 
 import java.util.List;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.google.gson.JsonObject;
 import com.slibra.business.domain.TXinyiForecastComparison;
 
 /**
@@ -58,4 +61,6 @@ public interface ITXinyiForecastComparisonService
      * @return 结果
      */
     public int deleteTXinyiForecastComparisonById(Long id);
+
+    JSONObject echartsList(TXinyiForecastComparison tXinyiForecastComparison);
 }

+ 96 - 1
slibra-system/src/main/java/com/slibra/business/service/impl/TXinyiForecastComparisonServiceImpl.java

@@ -1,12 +1,23 @@
 package com.slibra.business.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.slibra.common.exception.ServiceException;
 import com.slibra.common.utils.DateUtils;
+import com.slibra.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.slibra.business.mapper.TXinyiForecastComparisonMapper;
 import com.slibra.business.domain.TXinyiForecastComparison;
 import com.slibra.business.service.ITXinyiForecastComparisonService;
+import org.springframework.util.CollectionUtils;
+
+import static com.slibra.common.constant.MyConstants.*;
 
 /**
  * 信义预测对比Service业务层处理
@@ -15,7 +26,7 @@ import com.slibra.business.service.ITXinyiForecastComparisonService;
  * @date 2024-06-18
  */
 @Service
-public class TXinyiForecastComparisonServiceImpl implements ITXinyiForecastComparisonService 
+public class TXinyiForecastComparisonServiceImpl implements ITXinyiForecastComparisonService
 {
     @Autowired
     private TXinyiForecastComparisonMapper tXinyiForecastComparisonMapper;
@@ -93,4 +104,88 @@ public class TXinyiForecastComparisonServiceImpl implements ITXinyiForecastCompa
     {
         return tXinyiForecastComparisonMapper.deleteTXinyiForecastComparisonById(id);
     }
+
+    @Override
+    public JSONObject echartsList(TXinyiForecastComparison tXinyiForecastComparison) {
+        JSONObject jsonObject = new JSONObject();
+        //获取最新N天的所有数据
+        List<TXinyiForecastComparison> tXinyiForecastComparisons = this.getRecentDates(tXinyiForecastComparison);
+        if(CollectionUtils.isEmpty(tXinyiForecastComparisons))
+            throw new ServiceException("未查询到数据");
+        //数据集合
+        List<String> timeList = tXinyiForecastComparisons.stream().map(TXinyiForecastComparison::getForecastTimeOne).collect(Collectors.toList());
+        //处理真实值的数据
+        jsonObject.put("real", this.getRealByTXinyiForecastComparison(tXinyiForecastComparisons, timeList));
+        jsonObject.put("hs", this.getHSByTXinyiForecastComparison(tXinyiForecastComparisons, timeList));
+        jsonObject.put("yy", this.getYYByTXinyiForecastComparison(tXinyiForecastComparisons, timeList));
+        return jsonObject;
+    }
+
+
+    private JSONObject getYYByTXinyiForecastComparison(List<TXinyiForecastComparison> list, List<String> timeList) {
+        JSONObject jsonObject = new JSONObject();
+        //获取日期集合
+        //把最新的一条数据的最后两个点的预测值补上
+        TXinyiForecastComparison tXinyiForecastComparison = list.get(0);
+        timeList.add(tXinyiForecastComparison.getForecastTimeTwo());
+        timeList.add(tXinyiForecastComparison.getForecastTimeThree());
+        jsonObject.put("time", timeList);
+        //获取数据集合
+        //把最新的一条数据的最后两个点的预测值补上
+        List<BigDecimal> dataList = list.stream().map(TXinyiForecastComparison::getYyForecastOne).collect(Collectors.toList());
+        dataList.add(tXinyiForecastComparison.getYyForecastTwo());
+        dataList.add(tXinyiForecastComparison.getYyForecastThree());
+        jsonObject.put("data", dataList);
+        return jsonObject;
+    }
+
+
+    private JSONObject getHSByTXinyiForecastComparison(List<TXinyiForecastComparison> list, List<String> timeList) {
+        JSONObject jsonObject = new JSONObject();
+        //获取日期集合
+        //把最新的一条数据的最后两个点的预测值补上
+        TXinyiForecastComparison tXinyiForecastComparison = list.get(0);
+        timeList.add(tXinyiForecastComparison.getForecastTimeTwo());
+        timeList.add(tXinyiForecastComparison.getForecastTimeThree());
+        jsonObject.put("time", timeList);
+        //获取数据集合
+        //把最新的一条数据的最后两个点的预测值补上
+        List<BigDecimal> dataList = list.stream().map(TXinyiForecastComparison::getHsForecastOne).collect(Collectors.toList());
+        dataList.add(tXinyiForecastComparison.getHsForecastTwo());
+        dataList.add(tXinyiForecastComparison.getHsForecastThree());
+        jsonObject.put("data", dataList);
+        return jsonObject;
+    }
+
+    private JSONObject getRealByTXinyiForecastComparison(List<TXinyiForecastComparison> list, List<String> timeList) {
+        JSONObject jsonObject = new JSONObject();
+        //获取日期集合
+        jsonObject.put("time", timeList);
+        //获取数据集合
+        jsonObject.put("data", list.stream().map(TXinyiForecastComparison::getRealOne).collect(Collectors.toList()));
+        return jsonObject;
+    }
+
+    private List<TXinyiForecastComparison> getRecentDates(TXinyiForecastComparison tXinyiForecastComparison) {
+        //请求参数
+        String timeBegin = tXinyiForecastComparison.getTimeBegin();
+        String timeEnd = tXinyiForecastComparison.getTimeEnd();
+
+        //日期兜底处理
+        Date nowDate = DateUtils.getNowDate();
+        Date dayBefore7 = DateUtils.plusDate(-7, nowDate);
+        //先用日期获取当天和前一天的数据,如果获取不到,则提示错误信息
+        String nowDateStr = DateUtils.parseDateToStr(DateUtils.YYYYMMDD_TS, nowDate)  + TIME_END_23;
+        String dayBefore7Str = DateUtils.parseDateToStr(DateUtils.YYYYMMDD_TS, dayBefore7)  + TIME_BEGIN_00;
+        if(StringUtils.isBlank(timeBegin))
+            tXinyiForecastComparison.setTimeBegin(dayBefore7Str);
+        if(StringUtils.isBlank(timeEnd))
+            tXinyiForecastComparison.setTimeEnd(nowDateStr);
+        //        this.addListExtra(list);//处理误差率 乘以100,取绝对值 保留2位小数
+        //2024年08月16日14:37:52  同一个SQL,不同排序
+        tXinyiForecastComparison.setSort(SORT_ASC);
+        return this.tXinyiForecastComparisonMapper.selectTXinyiForecastComparisonList(tXinyiForecastComparison);
+    }
+
+
 }