|
@@ -6,7 +6,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import com.smppw.common.cache.CaffeineLocalCache;
|
|
|
-import com.smppw.common.pojo.IndexesTradeDateDo;
|
|
|
+import com.smppw.common.pojo.IndexesTradeDate;
|
|
|
import com.smppw.common.pojo.dto.DateValue;
|
|
|
import com.smppw.common.pojo.dto.NavDto;
|
|
|
import com.smppw.common.pojo.dto.calc.IndicatorCalcPropertyDto;
|
|
@@ -21,7 +21,7 @@ import java.util.*;
|
|
|
|
|
|
public class NavUtil {
|
|
|
|
|
|
- public static List<DateValue> filterFrequencyNav(List<DateValue> mainSecNavList, List<IndexesTradeDateDo> indexesTradeDateDoList, Frequency frequency) {
|
|
|
+ public static List<DateValue> filterFrequencyNav(List<DateValue> mainSecNavList, List<IndexesTradeDate> indexesTradeDateList, Frequency frequency) {
|
|
|
Map<String, DateValue> mainSecNavMap = new HashMap<>();
|
|
|
if (mainSecNavList == null || mainSecNavList.size() == 0) {
|
|
|
return new ArrayList<>();
|
|
@@ -35,8 +35,8 @@ public class NavUtil {
|
|
|
if (Frequency.Daily == frequency) {
|
|
|
validMainSecNavList = new ArrayList<>();
|
|
|
List<String> dailyTradeDateList = new ArrayList<>();
|
|
|
- for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
|
|
|
- dailyTradeDateList.add(indexesTradeDateDo.getTradeDate());
|
|
|
+ for (IndexesTradeDate indexesTradeDate : indexesTradeDateList) {
|
|
|
+ dailyTradeDateList.add(indexesTradeDate.getTradeDate());
|
|
|
}
|
|
|
for (String dailyTradeDate : dailyTradeDateList) {
|
|
|
if (mainSecNavMap.containsKey(dailyTradeDate)) {
|
|
@@ -48,13 +48,13 @@ public class NavUtil {
|
|
|
}
|
|
|
}
|
|
|
} else if (Frequency.Weekly == frequency) {
|
|
|
- validMainSecNavList = filterWeeklyFrequencyNav(indexesTradeDateDoList, mainSecNavMap);
|
|
|
+ validMainSecNavList = filterWeeklyFrequencyNav(indexesTradeDateList, mainSecNavMap);
|
|
|
} else if (Frequency.Monthly == frequency) {
|
|
|
- validMainSecNavList = filterMonthlyFrequencyNav(mainSecNavList, indexesTradeDateDoList, mainSecNavMap, frequency);
|
|
|
+ validMainSecNavList = filterMonthlyFrequencyNav(mainSecNavList, indexesTradeDateList, mainSecNavMap, frequency);
|
|
|
} else if (Frequency.Quarterly == frequency) {
|
|
|
- validMainSecNavList = filterMonthlyFrequencyNav(mainSecNavList, indexesTradeDateDoList, mainSecNavMap, frequency);
|
|
|
+ validMainSecNavList = filterMonthlyFrequencyNav(mainSecNavList, indexesTradeDateList, mainSecNavMap, frequency);
|
|
|
} else if (Frequency.Annually == frequency) {
|
|
|
- validMainSecNavList = filterMonthlyFrequencyNav(mainSecNavList, indexesTradeDateDoList, mainSecNavMap, frequency);
|
|
|
+ validMainSecNavList = filterMonthlyFrequencyNav(mainSecNavList, indexesTradeDateList, mainSecNavMap, frequency);
|
|
|
}
|
|
|
|
|
|
Collections.sort(validMainSecNavList, new Comparator<DateValue>() {
|
|
@@ -67,31 +67,31 @@ public class NavUtil {
|
|
|
return validMainSecNavList;
|
|
|
}
|
|
|
|
|
|
- private static List<DateValue> filterWeeklyFrequencyNav(List<IndexesTradeDateDo> indexesTradeDateDoList, Map<String, DateValue> mainSecNavMap) {
|
|
|
+ private static List<DateValue> filterWeeklyFrequencyNav(List<IndexesTradeDate> indexesTradeDateList, Map<String, DateValue> mainSecNavMap) {
|
|
|
List<DateValue> validMainSecNavList = new ArrayList<>();
|
|
|
List<String> yearWeekList = new ArrayList<>();
|
|
|
|
|
|
- Map<String, List<IndexesTradeDateDo>> yearWeekIndexesTradeDateDoListMap = new HashMap<>();
|
|
|
- for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
|
|
|
- if (!yearWeekList.contains(indexesTradeDateDo.getYearWeek())) {
|
|
|
- yearWeekList.add(indexesTradeDateDo.getYearWeek());
|
|
|
+ Map<String, List<IndexesTradeDate>> yearWeekIndexesTradeDateDoListMap = new HashMap<>();
|
|
|
+ for (IndexesTradeDate indexesTradeDate : indexesTradeDateList) {
|
|
|
+ if (!yearWeekList.contains(indexesTradeDate.getYearWeek())) {
|
|
|
+ yearWeekList.add(indexesTradeDate.getYearWeek());
|
|
|
}
|
|
|
- if (yearWeekIndexesTradeDateDoListMap.containsKey(indexesTradeDateDo.getYearWeek())) {
|
|
|
- List<IndexesTradeDateDo> yearWeekIndexesTradeDateDoList = yearWeekIndexesTradeDateDoListMap.get(indexesTradeDateDo.getYearWeek());
|
|
|
- yearWeekIndexesTradeDateDoList.add(indexesTradeDateDo);
|
|
|
+ if (yearWeekIndexesTradeDateDoListMap.containsKey(indexesTradeDate.getYearWeek())) {
|
|
|
+ List<IndexesTradeDate> yearWeekIndexesTradeDateList = yearWeekIndexesTradeDateDoListMap.get(indexesTradeDate.getYearWeek());
|
|
|
+ yearWeekIndexesTradeDateList.add(indexesTradeDate);
|
|
|
} else {
|
|
|
- List<IndexesTradeDateDo> yearWeekIndexesTradeDateDoList = new ArrayList<>();
|
|
|
- yearWeekIndexesTradeDateDoList.add(indexesTradeDateDo);
|
|
|
- yearWeekIndexesTradeDateDoListMap.put(indexesTradeDateDo.getYearWeek(), yearWeekIndexesTradeDateDoList);
|
|
|
+ List<IndexesTradeDate> yearWeekIndexesTradeDateList = new ArrayList<>();
|
|
|
+ yearWeekIndexesTradeDateList.add(indexesTradeDate);
|
|
|
+ yearWeekIndexesTradeDateDoListMap.put(indexesTradeDate.getYearWeek(), yearWeekIndexesTradeDateList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (String yearWeek : yearWeekList) {
|
|
|
- List<IndexesTradeDateDo> yearWeekIndexesTradeDateDoList = yearWeekIndexesTradeDateDoListMap.get(yearWeek);
|
|
|
+ List<IndexesTradeDate> yearWeekIndexesTradeDateList = yearWeekIndexesTradeDateDoListMap.get(yearWeek);
|
|
|
DateValue weekDateValue = null;
|
|
|
- for (int i = yearWeekIndexesTradeDateDoList.size() - 1; i >= 0; i--) {
|
|
|
- IndexesTradeDateDo indexesTradeDateDo = yearWeekIndexesTradeDateDoList.get(i);
|
|
|
- DateValue dv = mainSecNavMap.get(indexesTradeDateDo.getTradeDate());
|
|
|
+ for (int i = yearWeekIndexesTradeDateList.size() - 1; i >= 0; i--) {
|
|
|
+ IndexesTradeDate indexesTradeDate = yearWeekIndexesTradeDateList.get(i);
|
|
|
+ DateValue dv = mainSecNavMap.get(indexesTradeDate.getTradeDate());
|
|
|
if (dv != null) {
|
|
|
if (weekDateValue == null) {
|
|
|
weekDateValue = new DateValue();
|
|
@@ -112,22 +112,22 @@ public class NavUtil {
|
|
|
return validMainSecNavList;
|
|
|
}
|
|
|
|
|
|
- private static List<DateValue> filterMonthlyFrequencyNav(List<DateValue> mainSecNavList, List<IndexesTradeDateDo> indexesTradeDateDoList, Map<String, DateValue> mainSecNavMap,
|
|
|
+ private static List<DateValue> filterMonthlyFrequencyNav(List<DateValue> mainSecNavList, List<IndexesTradeDate> indexesTradeDateList, Map<String, DateValue> mainSecNavMap,
|
|
|
Frequency frequency) {
|
|
|
List<DateValue> validMainSecNavList = new ArrayList<>();
|
|
|
List<String> yearMonthList = new ArrayList<>();
|
|
|
Map<String, List<String>> yearMonthTradeDateListMap = new HashMap<>();
|
|
|
- for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
|
|
|
- if (!yearMonthList.contains(indexesTradeDateDo.getYearmonth())) {
|
|
|
- yearMonthList.add(indexesTradeDateDo.getYearmonth());
|
|
|
+ for (IndexesTradeDate indexesTradeDate : indexesTradeDateList) {
|
|
|
+ if (!yearMonthList.contains(indexesTradeDate.getYearmonth())) {
|
|
|
+ yearMonthList.add(indexesTradeDate.getYearmonth());
|
|
|
}
|
|
|
- if (yearMonthTradeDateListMap.containsKey(indexesTradeDateDo.getYearmonth())) {
|
|
|
- List<String> yearMonthTradeDateList = yearMonthTradeDateListMap.get(indexesTradeDateDo.getYearmonth());
|
|
|
- yearMonthTradeDateList.add(indexesTradeDateDo.getTradeDate());
|
|
|
+ if (yearMonthTradeDateListMap.containsKey(indexesTradeDate.getYearmonth())) {
|
|
|
+ List<String> yearMonthTradeDateList = yearMonthTradeDateListMap.get(indexesTradeDate.getYearmonth());
|
|
|
+ yearMonthTradeDateList.add(indexesTradeDate.getTradeDate());
|
|
|
} else {
|
|
|
List<String> yearMonthTradeDateList = new ArrayList<>();
|
|
|
- yearMonthTradeDateList.add(indexesTradeDateDo.getTradeDate());
|
|
|
- yearMonthTradeDateListMap.put(indexesTradeDateDo.getYearmonth(), yearMonthTradeDateList);
|
|
|
+ yearMonthTradeDateList.add(indexesTradeDate.getTradeDate());
|
|
|
+ yearMonthTradeDateListMap.put(indexesTradeDate.getYearmonth(), yearMonthTradeDateList);
|
|
|
}
|
|
|
}
|
|
|
String lastMonth = mainSecNavList.get(mainSecNavList.size() - 1).getDate().substring(0, 7);
|
|
@@ -247,7 +247,7 @@ public class NavUtil {
|
|
|
return validMainSecNavList;
|
|
|
}
|
|
|
|
|
|
- public static List<DateValue> filterDefaultRollingFrequencyNav(List<DateValue> mainSecNavList, List<IndexesTradeDateDo> indexesTradeDateDoList, Frequency frequency,
|
|
|
+ public static List<DateValue> filterDefaultRollingFrequencyNav(List<DateValue> mainSecNavList, List<IndexesTradeDate> indexesTradeDateList, Frequency frequency,
|
|
|
String endDateStr) {
|
|
|
Map<String, DateValue> mainSecNavMap = new HashMap<>();
|
|
|
if (mainSecNavList == null || mainSecNavList.size() == 0) {
|
|
@@ -262,8 +262,8 @@ public class NavUtil {
|
|
|
if (Frequency.Daily == frequency) {
|
|
|
validMainSecNavList = new ArrayList<>();
|
|
|
List<String> dailyTradeDateList = new ArrayList<>();
|
|
|
- for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
|
|
|
- dailyTradeDateList.add(indexesTradeDateDo.getTradeDate());
|
|
|
+ for (IndexesTradeDate indexesTradeDate : indexesTradeDateList) {
|
|
|
+ dailyTradeDateList.add(indexesTradeDate.getTradeDate());
|
|
|
}
|
|
|
for (String dailyTradeDate : dailyTradeDateList) {
|
|
|
if (mainSecNavMap.containsKey(dailyTradeDate)) {
|
|
@@ -275,13 +275,13 @@ public class NavUtil {
|
|
|
}
|
|
|
}
|
|
|
} else if (Frequency.Weekly == frequency) {
|
|
|
- validMainSecNavList = filterWeeklyFrequencyNavFillNullWeek(indexesTradeDateDoList, mainSecNavMap);
|
|
|
+ validMainSecNavList = filterWeeklyFrequencyNavFillNullWeek(indexesTradeDateList, mainSecNavMap);
|
|
|
} else if (Frequency.Monthly == frequency) {
|
|
|
- validMainSecNavList = filterMonthlyFrequencyNavFillNullMonth(indexesTradeDateDoList, mainSecNavMap, frequency, endDateStr);
|
|
|
+ validMainSecNavList = filterMonthlyFrequencyNavFillNullMonth(indexesTradeDateList, mainSecNavMap, frequency, endDateStr);
|
|
|
} else if (Frequency.Quarterly == frequency) {
|
|
|
- validMainSecNavList = filterMonthlyFrequencyNavFillNullMonth(indexesTradeDateDoList, mainSecNavMap, frequency, endDateStr);
|
|
|
+ validMainSecNavList = filterMonthlyFrequencyNavFillNullMonth(indexesTradeDateList, mainSecNavMap, frequency, endDateStr);
|
|
|
} else if (Frequency.Annually == frequency) {
|
|
|
- validMainSecNavList = filterMonthlyFrequencyNavFillNullMonth(indexesTradeDateDoList, mainSecNavMap, frequency, endDateStr);
|
|
|
+ validMainSecNavList = filterMonthlyFrequencyNavFillNullMonth(indexesTradeDateList, mainSecNavMap, frequency, endDateStr);
|
|
|
}
|
|
|
|
|
|
Collections.sort(validMainSecNavList, (o1, o2) -> o1.getDate().compareTo(o2.getDate()));
|
|
@@ -289,22 +289,22 @@ public class NavUtil {
|
|
|
return validMainSecNavList;
|
|
|
}
|
|
|
|
|
|
- private static List<DateValue> filterMonthlyFrequencyNavFillNullMonth(List<IndexesTradeDateDo> indexesTradeDateDoList, Map<String, DateValue> mainSecNavMap,
|
|
|
+ private static List<DateValue> filterMonthlyFrequencyNavFillNullMonth(List<IndexesTradeDate> indexesTradeDateList, Map<String, DateValue> mainSecNavMap,
|
|
|
Frequency frequency, String endDateStr) {
|
|
|
List<DateValue> validMainSecNavList = new ArrayList<>();
|
|
|
List<String> yearMonthList = new ArrayList<>();
|
|
|
Map<String, List<String>> yearMonthTradeDateListMap = new HashMap<>();
|
|
|
- for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
|
|
|
- if (!yearMonthList.contains(indexesTradeDateDo.getYearmonth())) {
|
|
|
- yearMonthList.add(indexesTradeDateDo.getYearmonth());
|
|
|
+ for (IndexesTradeDate indexesTradeDate : indexesTradeDateList) {
|
|
|
+ if (!yearMonthList.contains(indexesTradeDate.getYearmonth())) {
|
|
|
+ yearMonthList.add(indexesTradeDate.getYearmonth());
|
|
|
}
|
|
|
- if (yearMonthTradeDateListMap.containsKey(indexesTradeDateDo.getYearmonth())) {
|
|
|
- List<String> yearMonthTradeDateList = yearMonthTradeDateListMap.get(indexesTradeDateDo.getYearmonth());
|
|
|
- yearMonthTradeDateList.add(indexesTradeDateDo.getTradeDate());
|
|
|
+ if (yearMonthTradeDateListMap.containsKey(indexesTradeDate.getYearmonth())) {
|
|
|
+ List<String> yearMonthTradeDateList = yearMonthTradeDateListMap.get(indexesTradeDate.getYearmonth());
|
|
|
+ yearMonthTradeDateList.add(indexesTradeDate.getTradeDate());
|
|
|
} else {
|
|
|
List<String> yearMonthTradeDateList = new ArrayList<>();
|
|
|
- yearMonthTradeDateList.add(indexesTradeDateDo.getTradeDate());
|
|
|
- yearMonthTradeDateListMap.put(indexesTradeDateDo.getYearmonth(), yearMonthTradeDateList);
|
|
|
+ yearMonthTradeDateList.add(indexesTradeDate.getTradeDate());
|
|
|
+ yearMonthTradeDateListMap.put(indexesTradeDate.getYearmonth(), yearMonthTradeDateList);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -422,32 +422,32 @@ public class NavUtil {
|
|
|
return validMainSecNavList;
|
|
|
}
|
|
|
|
|
|
- private static List<DateValue> filterWeeklyFrequencyNavFillNullWeek(List<IndexesTradeDateDo> indexesTradeDateDoList, Map<String, DateValue> mainSecNavMap) {
|
|
|
+ private static List<DateValue> filterWeeklyFrequencyNavFillNullWeek(List<IndexesTradeDate> indexesTradeDateList, Map<String, DateValue> mainSecNavMap) {
|
|
|
List<DateValue> validMainSecNavList = new ArrayList<>();
|
|
|
List<String> yearWeekList = new ArrayList<>();
|
|
|
|
|
|
- Map<String, List<IndexesTradeDateDo>> yearWeekIndexesTradeDateDoListMap = new HashMap<>();
|
|
|
- for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
|
|
|
- if (!yearWeekList.contains(indexesTradeDateDo.getYearWeek())) {
|
|
|
- yearWeekList.add(indexesTradeDateDo.getYearWeek());
|
|
|
+ Map<String, List<IndexesTradeDate>> yearWeekIndexesTradeDateDoListMap = new HashMap<>();
|
|
|
+ for (IndexesTradeDate indexesTradeDate : indexesTradeDateList) {
|
|
|
+ if (!yearWeekList.contains(indexesTradeDate.getYearWeek())) {
|
|
|
+ yearWeekList.add(indexesTradeDate.getYearWeek());
|
|
|
}
|
|
|
- if (yearWeekIndexesTradeDateDoListMap.containsKey(indexesTradeDateDo.getYearWeek())) {
|
|
|
- List<IndexesTradeDateDo> yearWeekIndexesTradeDateDoList = yearWeekIndexesTradeDateDoListMap.get(indexesTradeDateDo.getYearWeek());
|
|
|
- yearWeekIndexesTradeDateDoList.add(indexesTradeDateDo);
|
|
|
+ if (yearWeekIndexesTradeDateDoListMap.containsKey(indexesTradeDate.getYearWeek())) {
|
|
|
+ List<IndexesTradeDate> yearWeekIndexesTradeDateList = yearWeekIndexesTradeDateDoListMap.get(indexesTradeDate.getYearWeek());
|
|
|
+ yearWeekIndexesTradeDateList.add(indexesTradeDate);
|
|
|
} else {
|
|
|
- List<IndexesTradeDateDo> yearWeekIndexesTradeDateDoList = new ArrayList<>();
|
|
|
- yearWeekIndexesTradeDateDoList.add(indexesTradeDateDo);
|
|
|
- yearWeekIndexesTradeDateDoListMap.put(indexesTradeDateDo.getYearWeek(), yearWeekIndexesTradeDateDoList);
|
|
|
+ List<IndexesTradeDate> yearWeekIndexesTradeDateList = new ArrayList<>();
|
|
|
+ yearWeekIndexesTradeDateList.add(indexesTradeDate);
|
|
|
+ yearWeekIndexesTradeDateDoListMap.put(indexesTradeDate.getYearWeek(), yearWeekIndexesTradeDateList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (String yearWeek : yearWeekList) {
|
|
|
- List<IndexesTradeDateDo> yearWeekIndexesTradeDateDoList = yearWeekIndexesTradeDateDoListMap.get(yearWeek);
|
|
|
+ List<IndexesTradeDate> yearWeekIndexesTradeDateList = yearWeekIndexesTradeDateDoListMap.get(yearWeek);
|
|
|
String lastTradeDate = null;
|
|
|
- for (int i = yearWeekIndexesTradeDateDoList.size() - 1; i >= 0; i--) {
|
|
|
- IndexesTradeDateDo indexesTradeDateDo = yearWeekIndexesTradeDateDoList.get(i);
|
|
|
- if (indexesTradeDateDo.getIsholiday().compareTo(0) == 0) {
|
|
|
- lastTradeDate = indexesTradeDateDo.getTradeDate();
|
|
|
+ for (int i = yearWeekIndexesTradeDateList.size() - 1; i >= 0; i--) {
|
|
|
+ IndexesTradeDate indexesTradeDate = yearWeekIndexesTradeDateList.get(i);
|
|
|
+ if (indexesTradeDate.getIsholiday().compareTo(0) == 0) {
|
|
|
+ lastTradeDate = indexesTradeDate.getTradeDate();
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -455,9 +455,9 @@ public class NavUtil {
|
|
|
continue;
|
|
|
}
|
|
|
DateValue weekDateValue = null;
|
|
|
- for (int i = yearWeekIndexesTradeDateDoList.size() - 1; i >= 0; i--) {
|
|
|
- IndexesTradeDateDo indexesTradeDateDo = yearWeekIndexesTradeDateDoList.get(i);
|
|
|
- DateValue dv = mainSecNavMap.get(indexesTradeDateDo.getTradeDate());
|
|
|
+ for (int i = yearWeekIndexesTradeDateList.size() - 1; i >= 0; i--) {
|
|
|
+ IndexesTradeDate indexesTradeDate = yearWeekIndexesTradeDateList.get(i);
|
|
|
+ DateValue dv = mainSecNavMap.get(indexesTradeDate.getTradeDate());
|
|
|
if (dv != null) {
|
|
|
weekDateValue = new DateValue();
|
|
|
weekDateValue.setValue(dv.getValue());
|