|
@@ -245,7 +245,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
|
|
|
|
|
|
for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
|
|
|
- Set<String> hasMonths = typeDateMapEntry.getValue().stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
|
|
|
+ List<IndexBaseMonthData> value = typeDateMapEntry.getValue();
|
|
|
+ Set<String> hasMonths = value.stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
|
|
|
LocalDate currentMonthDate = startDate;
|
|
|
while (currentMonthDate.compareTo(endDate)<=0){
|
|
|
if((IndexDataType.HOMEWORK_CREATE_RATE.equals(typeDateMapEntry.getKey())
|
|
@@ -265,12 +266,12 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
indexBaseMonthData.setActivateNum(BigDecimal.ZERO);
|
|
|
indexBaseMonthData.setPercent(BigDecimal.ZERO);
|
|
|
indexBaseMonthData.setDataType(typeDateMapEntry.getKey());
|
|
|
- typeDateMapEntry.getValue().add(indexBaseMonthData);
|
|
|
+ value.add(indexBaseMonthData);
|
|
|
currentMonthDate = currentMonthDate.plusDays(1);
|
|
|
}
|
|
|
- typeDateMapEntry.getValue().sort(Comparator.comparing(IndexBaseMonthData::getMonth));
|
|
|
+ value.sort(Comparator.comparing(IndexBaseMonthData::getMonth));
|
|
|
if(typeDateMapEntry.getKey().getPercent()){
|
|
|
- for (IndexBaseMonthData indexBaseMonthData : typeDateMapEntry.getValue()) {
|
|
|
+ for (IndexBaseMonthData indexBaseMonthData : value) {
|
|
|
if(indexBaseMonthData.getTotalNum().compareTo(BigDecimal.ZERO)==0){
|
|
|
indexBaseMonthData.setPercent(BigDecimal.ZERO);
|
|
|
continue;
|
|
@@ -279,7 +280,21 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
}
|
|
|
}
|
|
|
IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
|
|
|
- indexBaseData.setIndexMonthData(typeDateMapEntry.getValue(), currentMonth);
|
|
|
+ indexBaseData.setIndexMonthData(value, currentMonth);
|
|
|
+ if(OTHER_AMOUNT.equals(typeDateMapEntry.getKey())){
|
|
|
+ List<IndexBaseMonthData> otherAmountDetails = new ArrayList<>();
|
|
|
+ if(value != null && value.size() > 0){
|
|
|
+ Map<String, List<IndexBaseMonthData>> collect = value.stream().filter(c->StringUtils.isNotEmpty(c.getOrderType())).collect(Collectors.groupingBy(e -> e.getOrderType()));
|
|
|
+ collect.keySet().forEach(e->{
|
|
|
+ IndexBaseMonthData data = new IndexBaseMonthData();
|
|
|
+ data.setOrderType(e);
|
|
|
+ BigDecimal reduce = collect.get(e).stream().map(IndexBaseMonthData::getPercent).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ data.setPercent(reduce);data.setActivateNum(reduce);data.setTotalNum(reduce);
|
|
|
+ otherAmountDetails.add(data);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ indexBaseData.setIndexMonthDataDetail(otherAmountDetails);
|
|
|
+ }
|
|
|
if(FINANCE_PAY.equals(typeDateMapEntry.getKey()) || FINANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
FINANCE_BALANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
TOTAL_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
@@ -288,7 +303,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
VIP_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
PRACTICE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
OTHER_AMOUNT.equals(typeDateMapEntry.getKey())){
|
|
|
- indexBaseData.setPercent(typeDateMapEntry.getValue().stream().map(IndexBaseMonthData::getPercent).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ indexBaseData.setPercent(value.stream().map(IndexBaseMonthData::getPercent).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
}
|
|
|
if(IndexDataType.VIP_GROUP_COURSE.equals(typeDateMapEntry.getKey()) || VIP_GROUP_ONLINE_COURSE.equals(typeDateMapEntry.getKey()) ||
|
|
|
IndexDataType.VIP_GROUP_OFFLINE_COURSE.equals(typeDateMapEntry.getKey())){
|