|
@@ -34,11 +34,12 @@ import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.ym.mec.biz.dal.enums.IndexDataType.FINANCE_AMOUNT;
|
|
|
import static com.ym.mec.biz.dal.enums.IndexErrorType.WAIT_CREATE_PAYMENT_CALENDER;
|
|
|
|
|
|
@Service
|
|
|
public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBaseMonthData> implements IndexBaseMonthDataService {
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private IndexBaseMonthDataDao indexBaseMonthDataDao;
|
|
|
@Autowired
|
|
@@ -107,10 +108,43 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
}
|
|
|
|
|
|
Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = indexBaseDatas.stream().filter(d->Objects.nonNull(d.getDataType())).collect(Collectors.groupingBy(IndexBaseMonthData::getDataType));
|
|
|
- typeDateMap.put(IndexDataType.FINANCE_PAY,indexBaseMonthDataDao.getFinancePayDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
|
|
|
+ List<IndexBaseMonthData> financePayDataWithTimely = indexBaseMonthDataDao.getFinancePayDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds));
|
|
|
+ typeDateMap.put(IndexDataType.FINANCE_PAY,financePayDataWithTimely);
|
|
|
typeDateMap.put(IndexDataType.FINANCE_BALANCE_AMOUNT,indexBaseMonthDataDao.getFinanceBalanceDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
|
|
|
- typeDateMap.put(IndexDataType.FINANCE_AMOUNT,indexBaseMonthDataDao.getFinanceActualDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
|
|
|
- typeDateMap.put(IndexDataType.TOTAL_AMOUNT,indexBaseMonthDataDao.getTotalAmountDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
|
|
|
+ typeDateMap.put(FINANCE_AMOUNT,indexBaseMonthDataDao.getFinanceActualDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
|
|
|
+ List<IndexBaseMonthData> totalAmountDataWithTimely = indexBaseMonthDataDao.getTotalAmountDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds));
|
|
|
+
|
|
|
+ if(financePayDataWithTimely.size() > 0){
|
|
|
+ for (IndexBaseMonthData indexBaseMonthData : financePayDataWithTimely) {
|
|
|
+ BigDecimal percent = indexBaseMonthData.getPercent();
|
|
|
+ if(percent != null && percent.doubleValue() != 0d){
|
|
|
+ List<IndexBaseMonthData> collect = totalAmountDataWithTimely.stream().filter(e -> DateUtil.format(e.getMonth(), DateUtil.ISO_EXPANDED_DATE_FORMAT).
|
|
|
+ equals(DateUtil.format(indexBaseMonthData.getMonth(), DateUtil.ISO_EXPANDED_DATE_FORMAT))).collect(Collectors.toList());
|
|
|
+ IndexBaseMonthData totalAmountDate = null;
|
|
|
+ if(collect != null && collect.size() > 0){
|
|
|
+ totalAmountDate = collect.get(0);
|
|
|
+ }
|
|
|
+ if(totalAmountDate == null){
|
|
|
+ totalAmountDate = new IndexBaseMonthData();
|
|
|
+ totalAmountDate.setTotalNum(percent.negate());
|
|
|
+ totalAmountDate.setDataType(FINANCE_AMOUNT);
|
|
|
+ totalAmountDate.setActivateNum(percent.negate());
|
|
|
+ totalAmountDate.setOrganId(indexBaseMonthData.getOrganId());
|
|
|
+ totalAmountDate.setMonth(indexBaseMonthData.getMonth());
|
|
|
+ totalAmountDate.setPercent(percent.negate());
|
|
|
+ totalAmountDataWithTimely.add(totalAmountDate);
|
|
|
+ }else {
|
|
|
+ BigDecimal totalAmount = totalAmountDate.getPercent();
|
|
|
+ totalAmountDate.setActivateNum(totalAmount.subtract(percent));
|
|
|
+ totalAmountDate.setTotalNum(totalAmount.subtract(percent));
|
|
|
+ totalAmountDate.setPercent(totalAmount.subtract(percent));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ totalAmountDataWithTimely = totalAmountDataWithTimely.stream().sorted(Comparator.comparing(IndexBaseMonthData::getMonth)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ typeDateMap.put(IndexDataType.TOTAL_AMOUNT,totalAmountDataWithTimely);
|
|
|
|
|
|
|
|
|
for (IndexDataType dataType : IndexDataType.values()) {
|
|
@@ -132,7 +166,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
typeDateMap.put(dataType, new ArrayList<>(Arrays.asList(indexBaseMonthData)));
|
|
|
}
|
|
|
|
|
|
- BigDecimal totalAmount = BigDecimal.ZERO;
|
|
|
+
|
|
|
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());
|
|
|
LocalDate currentMonthDate = startDate;
|
|
@@ -169,7 +203,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
}
|
|
|
IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
|
|
|
indexBaseData.setIndexMonthData(typeDateMapEntry.getValue(), currentMonth);
|
|
|
- if(IndexDataType.FINANCE_PAY.equals(typeDateMapEntry.getKey()) || IndexDataType.FINANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
+ if(IndexDataType.FINANCE_PAY.equals(typeDateMapEntry.getKey()) || FINANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
IndexDataType.FINANCE_BALANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
|
|
|
IndexDataType.TOTAL_AMOUNT.equals(typeDateMapEntry.getKey())){
|
|
|
indexBaseData.setPercent(typeDateMapEntry.getValue().stream().map(IndexBaseMonthData::getPercent).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
@@ -225,10 +259,15 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
|
|
|
saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_PRACTICE_COURSE_NUM);
|
|
|
|
|
|
//经营数据
|
|
|
- saveData(indexBaseMonthDataDao.getFinancePayData(dayStr),dayStr,IndexDataType.FINANCE_PAY);
|
|
|
- saveData(indexBaseMonthDataDao.getFinanceBalanceData(dayStr),dayStr,IndexDataType.FINANCE_BALANCE_AMOUNT);
|
|
|
- saveData(indexBaseMonthDataDao.getFinanceActualData(dayStr),dayStr,IndexDataType.FINANCE_AMOUNT);
|
|
|
- saveData(indexBaseMonthDataDao.getTotalAmountData(dayStr),dayStr,IndexDataType.TOTAL_AMOUNT);
|
|
|
+
|
|
|
+// List<IndexBaseMonthData> financePayData = indexBaseMonthDataDao.getFinancePayData(dayStr);
|
|
|
+// List<IndexBaseMonthData> financeBalanceData = indexBaseMonthDataDao.getFinanceBalanceData(dayStr);
|
|
|
+// List<IndexBaseMonthData> financeActualData = indexBaseMonthDataDao.getFinanceActualData(dayStr);
|
|
|
+//
|
|
|
+// saveData(financePayData,dayStr,IndexDataType.FINANCE_PAY);
|
|
|
+// saveData(financeBalanceData,dayStr,IndexDataType.FINANCE_BALANCE_AMOUNT);
|
|
|
+// saveData(financeActualData,dayStr,IndexDataType.FINANCE_AMOUNT);
|
|
|
+// saveData(totalAmountData,dayStr,IndexDataType.TOTAL_AMOUNT);
|
|
|
|
|
|
//业务数据
|
|
|
saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, null), monday.toString(), IndexDataType.HOMEWORK_CREATE_RATE);
|