|
|
@ -17,6 +17,7 @@ import com.qs.serve.modules.bms.mapper.BmsRegionMapper; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivity; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityCenter; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; |
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsActivityCenterGoodsMapper; |
|
|
|
import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService; |
|
|
|
import com.qs.serve.modules.vtb.common.VtbFundFlowType; |
|
|
|
import com.qs.serve.modules.vtb.entity.VtbFundFlow; |
|
|
@ -59,13 +60,16 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
|
|
|
|
private final VtbFundFlowMapper fundFlowMapper; |
|
|
|
|
|
|
|
private final TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void buildReport(int year, int month) { |
|
|
|
LocalDate startDate = LocalDate.of(year,month,1); |
|
|
|
int lastDayNum2 = startDate.lengthOfMonth(); |
|
|
|
LocalDate endDate = LocalDate.of(year,month,lastDayNum2); |
|
|
|
//加载所有异动的数据
|
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(startDate,endDate); |
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(startDate,endDate,null); |
|
|
|
// List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(null,null,19596L);
|
|
|
|
if(activityCenterGoodsAllList.size()<1){ |
|
|
|
return; |
|
|
|
} |
|
|
@ -150,6 +154,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
entity.setActivityCenterGoodsId(activityCenterGoods.getId()); |
|
|
|
entity.setKeyNum(currDateSplit.getYearMonth()); |
|
|
|
entity.setDays(currentActDays); |
|
|
|
entity.setDayOfMouth(currDateSplit.getDays()); |
|
|
|
entity.setStarDate(currDateSplit.getStartDate()); |
|
|
|
entity.setEndDate(currDateSplit.getEndDate()); |
|
|
|
entity.setSplitAmount(goodSplitDTO.getCurrentSplitAmount()); |
|
|
@ -293,30 +298,12 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
DateSplitDTO currDateSplit, |
|
|
|
Integer currentActDays, |
|
|
|
Map<Long,BigDecimal> actReleaseMap){ |
|
|
|
//释放金额
|
|
|
|
BigDecimal activityReleaseAmt = actReleaseMap.get(activityCenterGoods.getActivityId()); |
|
|
|
//活动相关
|
|
|
|
BigDecimal activityAmt = activityCenterGoods.getActivityAmt(); |
|
|
|
BigDecimal activityCheckAmt = activityCenterGoods.getActivityCheckAmt(); |
|
|
|
//当前CenterGoods项金额
|
|
|
|
BigDecimal centerGoodsAmount = activityCenterGoods.getCenterGoodsAmount(); |
|
|
|
//当前CenterGoods项释放金额
|
|
|
|
BigDecimal currentReleaseAmount = activityReleaseAmt==null?BigDecimal.ZERO: |
|
|
|
activityReleaseAmt |
|
|
|
.multiply(activityCenterGoods.getCenterGoodsRate()) |
|
|
|
.multiply(activityCenterGoods.getCenterRate()) |
|
|
|
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN); |
|
|
|
//当前CenterGoods项核销金额(粗略计算)
|
|
|
|
BigDecimal currentCheckAmount = activityCheckAmt |
|
|
|
.multiply(activityCenterGoods.getCenterRate()) |
|
|
|
.multiply(activityCenterGoods.getCenterGoodsRate()) |
|
|
|
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN); |
|
|
|
//当前CenterGoods分割项金额
|
|
|
|
BigDecimal currentSplitAmount = activityCenterGoods.getCenterGoodsAmount(); |
|
|
|
//当前CenterGoods分割项核销金额(粗略计算)
|
|
|
|
BigDecimal currentSplitCheckAmount = currentCheckAmount; |
|
|
|
BigDecimal currentReleaseSplitAmount = currentReleaseAmount; |
|
|
|
//日期占比
|
|
|
|
|
|
|
|
BigDecimal currentCenterGoodsAmount = activityCenterGoods.getCenterGoodsAmount(); |
|
|
|
BigDecimal splitCenterGoodsAmount = activityCenterGoods.getCenterGoodsAmount(); |
|
|
|
|
|
|
|
BigDecimal currentCheckAmount = activityCenterGoods.getUsedAmount(); |
|
|
|
BigDecimal splitCheckAmount = activityCenterGoods.getUsedAmount(); |
|
|
|
|
|
|
|
// sort==size 最后一个节点
|
|
|
|
if (currDateSplit.getSort().equals(dateSplitList.size())) { |
|
|
@ -327,22 +314,24 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
if (splitDTO.getYearMonth().equals(currDateSplit.getYearMonth())) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
currentSplitAmount = currentSplitAmount.subtract(centerGoodsAmount.multiply(dayRate)); |
|
|
|
currentSplitCheckAmount = currentSplitCheckAmount.subtract(currentCheckAmount.multiply(dayRate)); |
|
|
|
currentReleaseSplitAmount = currentReleaseSplitAmount.subtract(currentReleaseSplitAmount.multiply(dayRate)); |
|
|
|
|
|
|
|
splitCenterGoodsAmount = splitCenterGoodsAmount.subtract(currentCenterGoodsAmount.multiply(dayRate)); |
|
|
|
splitCheckAmount = splitCheckAmount.subtract(currentCheckAmount.multiply(dayRate)); |
|
|
|
} |
|
|
|
} else { |
|
|
|
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "") |
|
|
|
.divide(new BigDecimal(currentActDays + ""), 4, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
currentSplitAmount = centerGoodsAmount.multiply(dayRate); |
|
|
|
currentSplitCheckAmount = currentCheckAmount.multiply(dayRate); |
|
|
|
currentReleaseSplitAmount = currentReleaseSplitAmount.multiply(dayRate); |
|
|
|
splitCenterGoodsAmount = currentCenterGoodsAmount.multiply(dayRate); |
|
|
|
splitCheckAmount = currentCheckAmount.multiply(dayRate); |
|
|
|
} |
|
|
|
BirCenterGoodSplitDTO goodSplitDTO = new BirCenterGoodSplitDTO(); |
|
|
|
goodSplitDTO.setCurrentSplitAmount(currentSplitAmount); |
|
|
|
goodSplitDTO.setCurrentSplitCheckAmount(currentSplitCheckAmount); |
|
|
|
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseSplitAmount); |
|
|
|
goodSplitDTO.setCurrentSplitAmount(splitCenterGoodsAmount); |
|
|
|
goodSplitDTO.setCurrentSplitCheckAmount(splitCenterGoodsAmount); |
|
|
|
goodSplitDTO.setCurrentSplitReleaseAmount(BigDecimal.ZERO); |
|
|
|
if(activityCenterGoods.getActivityFinishedFlag().equals(1)){ |
|
|
|
BigDecimal currentReleaseAmount = splitCenterGoodsAmount.subtract(splitCheckAmount); |
|
|
|
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseAmount); |
|
|
|
goodSplitDTO.setCurrentSplitCheckAmount(splitCheckAmount); |
|
|
|
} |
|
|
|
return goodSplitDTO; |
|
|
|
} |
|
|
|
|
|
|
|