Przeglądaj źródła

1、坐标轴bug修复。

jessie 5 lat temu
rodzic
commit
9dc12f2b65

+ 62 - 13
src/main/java/com/pavis/ai/app/fda/common/utils/DateUtils.java

@@ -2,6 +2,7 @@ package com.pavis.ai.app.fda.common.utils;
 
 import com.alibaba.fastjson.JSON;
 import com.pavis.ai.app.fda.common.config.constants.Constants;
+import com.pavis.ai.app.fda.form.inc.IncInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.joda.time.DateTime;
 
@@ -295,23 +296,71 @@ public class DateUtils {
         // 去重
         List<Float> distinctFloats = floats.stream()
                 .distinct()
+                .filter(x -> x!=null)
                 .collect(Collectors.toList());
-        // 排序
-        distinctFloats.sort(Comparator.reverseOrder());
-        System.err.println(JSON.toJSONString(distinctFloats));
-        // String result = floats.stream().reduce((first, second) -> second).orElse("no last element");
-        Float firstNum = distinctFloats.stream().findFirst().orElse( 0F );
-        Float lastNum = distinctFloats.stream().reduce((first, second) -> second).orElse(0F);
-        System.err.println(firstNum + " <> " + lastNum);
-        // 求各值间隔。 是否应该除以个数 todo 待讨论。
-        Float num = (firstNum - lastNum) / 10;
-        System.err.println(num);
+        // distinctFloats.stream().filter(s -> s == null)
+        //         .collect(Collectors.toList());
+        // distinctFloats = distinctFloats.stream().filter(x -> x!=null).collect(Collectors.toList());
         List<Float> finalFloats = new ArrayList<>();
-        for (Float aFloat : distinctFloats) {
-            finalFloats.add(aFloat / 10);
+        if(distinctFloats.size() > 0){
+            System.err.println(JSON.toJSONString(distinctFloats));
+            // 排序
+            distinctFloats.sort(Comparator.reverseOrder());
+            System.err.println(JSON.toJSONString(distinctFloats));
+            // String result = floats.stream().reduce((first, second) -> second).orElse("no last element");
+            Float firstNum = distinctFloats.stream().findFirst().orElse( 0F );
+            Float lastNum = distinctFloats.stream().reduce((first, second) -> second).orElse(0F);
+            System.err.println(firstNum + " <> " + lastNum);
+            // 求各值间隔。 是否应该除以个数 todo 待讨论。
+            Float num = (firstNum - lastNum) / 10;
+            System.err.println(num);
+            for (Float aFloat : distinctFloats) {
+                finalFloats.add(aFloat / 10);
+            }
+            System.err.println(JSON.toJSONString(finalFloats));
+        }else {
+            finalFloats.add(0.0F);
+            return finalFloats;
         }
-        System.err.println(JSON.toJSONString(finalFloats));
         return finalFloats;
     }
+    /**
+     * 计算坐标轴Y
+     * @param floats
+     * @return
+     */
+    public static List<Integer> getAxisList(List<Integer> floats){
+        // 去重
+        List<Integer> distinctFloats = floats.stream()
+                .distinct()
+                .filter(x -> x!=0)
+                .collect(Collectors.toList());
+        // distinctFloats.stream().filter(s -> s == null)
+        //         .collect(Collectors.toList());
+        // distinctFloats = distinctFloats.stream().filter(x -> x!=null).collect(Collectors.toList());
+        List<Integer> finals = new ArrayList<>();
+        if(distinctFloats.size() > 0){
+            System.err.println(JSON.toJSONString(distinctFloats));
+            // 排序
+            distinctFloats.sort(Comparator.reverseOrder());
+            System.err.println(JSON.toJSONString(distinctFloats));
+            // String result = floats.stream().reduce((first, second) -> second).orElse("no last element");
+            Integer firstNum = distinctFloats.stream().findFirst().orElse( 0);
+            Integer lastNum = distinctFloats.stream().reduce((first, second) -> second).orElse(0);
+            System.err.println(firstNum + " <> " + lastNum);
+            // 求各值间隔。 是否应该除以个数 todo 待讨论。
+            Integer num = (firstNum - lastNum) / 6;
+            finals.add(lastNum);
+            for (int i = 0; i < 7; i++) {
+                finals.add(lastNum += num);
+            }
+            System.err.println(JSON.toJSONString(finals));
+        }else {
+            finals.add(0);
+            finals.add(100);
+            return finals;
+        }
+        return finals;
+    }
 
 }

+ 1 - 1
src/main/java/com/pavis/ai/app/fda/form/his/IndustryDetailsInfo.java

@@ -21,5 +21,5 @@ public class IndustryDetailsInfo {
     private List<NewsList> news;
     private Boolean tag;
     private Boolean isFollowed;
-    private List<Float> axisByY;
+    private List<Integer> axisByY;
 }

+ 7 - 1
src/main/java/com/pavis/ai/app/fda/service/impl/HisServiceImpl.java

@@ -127,6 +127,7 @@ public class HisServiceImpl implements HisService {
         // 3、构造实际数据返回。
         List<IndustryDetail> industryDetails = new ArrayList<>();
         List<Float> floats = new ArrayList<>();
+        List<Integer> axisLists = new ArrayList<>();
         if (nextPlates.size() > 0 && isDetailed.equals(true)) {
             // 创建detail列表
             log.info("实际:{}", JSON.toJSONString(actualPlates));
@@ -137,6 +138,8 @@ public class HisServiceImpl implements HisService {
                     industryDetails.add(toIndustryDetail(industryPlate));
                     floats.add(industryPlate.getPlateClose());
                     floats.add(industryPlate.getPlateClosePred());
+                    axisLists.add(null == industryPlate.getPlateClose() ? 0 : Math.round(industryPlate.getPlateClose()));
+                    axisLists.add(null == industryPlate.getPlateClosePred() ? 0 : Math.round(industryPlate.getPlateClosePred()));
                 }
             }
         }
@@ -149,6 +152,8 @@ public class HisServiceImpl implements HisService {
                     industryDetails.add(toIndustryDetail(industryPlate));
                     floats.add(industryPlate.getPlateClose());
                     floats.add(industryPlate.getPlateClosePred());
+                    axisLists.add(null == industryPlate.getPlateClose() ? 0 : Math.round(industryPlate.getPlateClose()));
+                    axisLists.add(null == industryPlate.getPlateClosePred() ? 0 : Math.round(industryPlate.getPlateClosePred()));
                 }
             }
         }
@@ -160,12 +165,13 @@ public class HisServiceImpl implements HisService {
         List<FollowInfo> followInfos = getFollowed(findDetails.get(0).getUserId(), findDetails.get(0).getPlateId());
         Boolean isFollowed = followInfos.size() > 0 ? true : false;
         List<Float> axisByY = DateUtils.getAxisY(floats);
+        List<Integer> axisByYs = DateUtils.getAxisList(axisLists);
         IndustryDetailsInfo industryInfo = IndustryDetailsInfo.builder()
                 .actuals(industryDetails)
                 .news(newsLists)
                 .tag(true)
                 .isFollowed(isFollowed)
-                .axisByY(axisByY)
+                .axisByY(axisByYs)
                 .build();
         return industryInfo;
     }

+ 17 - 1
src/test/java/com/pavis/ai/app/fda/LocalDateTest.java

@@ -86,7 +86,23 @@ public class LocalDateTest {
         floats.add(55.90F);
         floats.add(55.90F);
         floats.add(89.123F);
-        System.err.println(DateUtils.getAxisY(floats));
+        // System.err.println(DateUtils.getAxisY(floats));
+        List<Integer> integers = new ArrayList<>();
+        integers.add(70);
+        integers.add(28);
+        integers.add(55);
+        integers.add(55);
+        integers.add(89);
+        Integer lastNum = 20;
+        Integer firstNum = 100;
+        Integer num = (firstNum - lastNum) / 6;
+        System.err.println(num);
+        List<Integer> nums = new ArrayList<>();
+        nums.add(lastNum);
+        for (int i = 0; i < 7; i++) {
+            nums.add(lastNum += num);
+        }
+        System.err.println(JSON.toJSONString(nums));
     }
 
     // 1、实际榜: