|
@ -39,7 +39,8 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void buildReport(int year, int month) { |
|
|
public void buildReport(int year, int month) { |
|
|
int yearMonth = Integer.parseInt(year+""+month); |
|
|
String monthStr = month<10?"0"+month:month+""; |
|
|
|
|
|
int yearMonth = Integer.parseInt(year+""+monthStr); |
|
|
LocalDate startDate = LocalDate.of(year,month,1); |
|
|
LocalDate startDate = LocalDate.of(year,month,1); |
|
|
int lastDayNum2 = startDate.lengthOfMonth(); |
|
|
int lastDayNum2 = startDate.lengthOfMonth(); |
|
|
LocalDate endDate = LocalDate.of(year,month,lastDayNum2); |
|
|
LocalDate endDate = LocalDate.of(year,month,lastDayNum2); |
|
@ -53,10 +54,10 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe |
|
|
List<TbsActivity> activityList = activityMapper.selectList(activityLqw); |
|
|
List<TbsActivity> activityList = activityMapper.selectList(activityLqw); |
|
|
List<BirBaseActivity> birBaseActivities = new ArrayList<>(); |
|
|
List<BirBaseActivity> birBaseActivities = new ArrayList<>(); |
|
|
for (TbsActivity activity : activityList) { |
|
|
for (TbsActivity activity : activityList) { |
|
|
|
|
|
BirBaseActivity baseActivity = new BirBaseActivity(); |
|
|
LocalDate actStartDate = activity.getActStartDate(); |
|
|
LocalDate actStartDate = activity.getActStartDate(); |
|
|
LocalDate actEndDate = activity.getActEndDate(); |
|
|
LocalDate actEndDate = activity.getActEndDate(); |
|
|
Period period = Period.between(startDate, endDate); |
|
|
int currentActDays = (int) (actEndDate.toEpochDay()-actStartDate.toEpochDay()+1); |
|
|
int currentActDays = period.getDays()+1; |
|
|
|
|
|
BigDecimal amount = activity.getTotalAmount(); |
|
|
BigDecimal amount = activity.getTotalAmount(); |
|
|
List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate); |
|
|
List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate); |
|
|
//活动金额
|
|
|
//活动金额
|
|
@ -70,6 +71,8 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe |
|
|
.filter(a->a.getYearMonth().equals(yearMonth)) |
|
|
.filter(a->a.getYearMonth().equals(yearMonth)) |
|
|
.collect(Collectors.toList()).get(0); |
|
|
.collect(Collectors.toList()).get(0); |
|
|
currItemDays = currDateSplit.getDays(); |
|
|
currItemDays = currDateSplit.getDays(); |
|
|
|
|
|
baseActivity.setStartDate(currDateSplit.getStartDate()); |
|
|
|
|
|
baseActivity.setEndDate(currDateSplit.getEndDate()); |
|
|
if(currDateSplit.getSort().equals(dateSplitList.size())){ |
|
|
if(currDateSplit.getSort().equals(dateSplitList.size())){ |
|
|
//活动金额
|
|
|
//活动金额
|
|
|
currentAmount = activity.getTotalAmount(); |
|
|
currentAmount = activity.getTotalAmount(); |
|
@ -82,28 +85,27 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe |
|
|
} |
|
|
} |
|
|
//日期占比
|
|
|
//日期占比
|
|
|
BigDecimal dayRate = new BigDecimal(splitDTO.getDays()+"") |
|
|
BigDecimal dayRate = new BigDecimal(splitDTO.getDays()+"") |
|
|
.multiply(new BigDecimal(currentActDays+"")) |
|
|
.divide(new BigDecimal(currentActDays+""),2, BigDecimal.ROUND_HALF_DOWN); |
|
|
.divide(new BigDecimal("100"), RoundingMode.HALF_DOWN); |
|
|
|
|
|
currentAmount = currentAmount.subtract(amount.multiply(dayRate)); |
|
|
currentAmount = currentAmount.subtract(amount.multiply(dayRate)); |
|
|
currentCheckAmount = currentCheckAmount.subtract(activity.getUsedAmount().multiply(dayRate)); |
|
|
currentCheckAmount = currentCheckAmount.subtract(activity.getUsedAmount().multiply(dayRate)); |
|
|
} |
|
|
} |
|
|
}else { |
|
|
}else { |
|
|
//日期占比
|
|
|
//日期占比
|
|
|
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays()+"") |
|
|
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays()+"") |
|
|
.multiply(new BigDecimal(currentActDays+"")) |
|
|
.divide(new BigDecimal(currentActDays+""),2, BigDecimal.ROUND_HALF_DOWN); |
|
|
.divide(new BigDecimal("100"), RoundingMode.HALF_DOWN); |
|
|
|
|
|
currentAmount = amount.multiply(dayRate); |
|
|
currentAmount = amount.multiply(dayRate); |
|
|
currentCheckAmount = activity.getUsedAmount().multiply(dayRate); |
|
|
currentCheckAmount = activity.getUsedAmount().multiply(dayRate); |
|
|
} |
|
|
} |
|
|
}else if (dateSplitList.size()==1){ |
|
|
}else if (dateSplitList.size()==1){ |
|
|
DateSplitDTO dateSplit = dateSplitList.get(0); |
|
|
DateSplitDTO dateSplit = dateSplitList.get(0); |
|
|
|
|
|
baseActivity.setStartDate(dateSplit.getStartDate()); |
|
|
|
|
|
baseActivity.setEndDate(dateSplit.getEndDate()); |
|
|
currentAmount = amount; |
|
|
currentAmount = amount; |
|
|
currentCheckAmount = activity.getUsedAmount(); |
|
|
currentCheckAmount = activity.getUsedAmount(); |
|
|
currItemDays = dateSplit.getDays(); |
|
|
currItemDays = dateSplit.getDays(); |
|
|
}else { |
|
|
}else { |
|
|
Assert.throwEx("dateSplitList is empty"); |
|
|
Assert.throwEx("dateSplitList is empty"); |
|
|
} |
|
|
} |
|
|
BirBaseActivity baseActivity = new BirBaseActivity(); |
|
|
|
|
|
baseActivity.setKeyNum(yearMonth); |
|
|
baseActivity.setKeyNum(yearMonth); |
|
|
baseActivity.setActivityId(activity.getId()); |
|
|
baseActivity.setActivityId(activity.getId()); |
|
|
baseActivity.setActivityAmt(currentAmount); |
|
|
baseActivity.setActivityAmt(currentAmount); |
|
|