|
|
@ -11,9 +11,11 @@ import com.qs.serve.modules.bir.entity.dto.BirCenterGoodSplitDTO; |
|
|
|
import com.qs.serve.modules.bms.entity.BmsCostCenter; |
|
|
|
import com.qs.serve.modules.bms.entity.BmsRegion; |
|
|
|
import com.qs.serve.modules.bms.entity.BmsRegion2; |
|
|
|
import com.qs.serve.modules.bms.entity.BmsSupplier; |
|
|
|
import com.qs.serve.modules.bms.mapper.BmsCostCenterMapper; |
|
|
|
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; |
|
|
|
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; |
|
|
|
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivity; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityCenter; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; |
|
|
@ -62,6 +64,8 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
|
|
|
|
private final TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper; |
|
|
|
|
|
|
|
private final BmsSupplierMapper bmsSupplierMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void buildReport(int year, int month) { |
|
|
|
LocalDate startDate = LocalDate.of(year,month,1); |
|
|
@ -87,13 +91,29 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
Map<Long,List<TbsActivityCenterGoods>> collectMap = activityCenterGoodsAllList.stream() |
|
|
|
.collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId)); |
|
|
|
|
|
|
|
LambdaQueryWrapper<BmsSupplier> supplierLqw = new LambdaQueryWrapper<>(); |
|
|
|
supplierLqw.in(BmsSupplier::getId,activityCenterGoodsAllList.stream().map(a->a.getSupplierId()).distinct().collect(Collectors.toList())); |
|
|
|
List<BmsSupplier> bmsSupplierList = bmsSupplierMapper.selectList(supplierLqw); |
|
|
|
Map<String,BmsSupplier> supplierMap = bmsSupplierList.stream().collect(Collectors.toMap(BmsSupplier::getId,a->a)); |
|
|
|
|
|
|
|
LambdaQueryWrapper<BmsRegion> regionLqw = new LambdaQueryWrapper<>(); |
|
|
|
regionLqw.in(BmsRegion::getId,bmsSupplierList.stream().map(a->a.getRegionLast()).collect(Collectors.toList())); |
|
|
|
List<BmsRegion> saleRegionList = regionMapper.selectList(regionLqw); |
|
|
|
Map<String,BmsRegion> saleRegionMap = saleRegionList.stream().collect(Collectors.toMap(BmsRegion::getId,a->a)); |
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<BmsRegion2> region2Lqw = new LambdaQueryWrapper<>(); |
|
|
|
region2Lqw.in(BmsRegion2::getId,bmsSupplierList.stream().map(a->a.getRegion2Last()).collect(Collectors.toList())); |
|
|
|
List<BmsRegion2> bizRegionList = region2Mapper.selectList(region2Lqw); |
|
|
|
Map<String,BmsRegion2> bizRegionMap = bizRegionList.stream().collect(Collectors.toMap(BmsRegion2::getId,a->a)); |
|
|
|
|
|
|
|
// TODO查询费用释放
|
|
|
|
VtbFundFlow flow = new VtbFundFlow(); |
|
|
|
flow.setFundType(VtbFundFlowType.Release); |
|
|
|
flow.setSelectActivityIds(new ArrayList<>(collectMap.keySet())); |
|
|
|
List<VtbFundFlowSumAmtDTO> actReleaseList = fundFlowMapper.listSumAmount(flow); |
|
|
|
final Map<Long,BigDecimal> actReleaseMap = new HashMap<>(); |
|
|
|
actReleaseList.forEach(actRelease -> actReleaseMap.put(actRelease.getActivityId(),actRelease.getTotalAmt())); |
|
|
|
// VtbFundFlow flow = new VtbFundFlow();
|
|
|
|
// flow.setFundType(VtbFundFlowType.Release);
|
|
|
|
// flow.setSelectActivityIds(new ArrayList<>(collectMap.keySet()));
|
|
|
|
// List<VtbFundFlowSumAmtDTO> actReleaseList = fundFlowMapper.listSumAmount(flow);
|
|
|
|
// final Map<Long,BigDecimal> actReleaseMap = new HashMap<>();
|
|
|
|
// actReleaseList.forEach(actRelease -> actReleaseMap.put(actRelease.getActivityId(),actRelease.getTotalAmt()));
|
|
|
|
|
|
|
|
for (Long activityId : collectMap.keySet()) { |
|
|
|
//用于保存的对象列表
|
|
|
@ -109,20 +129,20 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
for (DateSplitDTO currDateSplit : dateSplitList) { |
|
|
|
//获取该项分割金额对象
|
|
|
|
BirCenterGoodSplitDTO goodSplitDTO = this.buildSplitAmount(activityCenterGoods, |
|
|
|
dateSplitList, currDateSplit,currentActDays,actReleaseMap); |
|
|
|
dateSplitList, currDateSplit,currentActDays); |
|
|
|
//创建底表对象
|
|
|
|
BirActivityCenterGoods entity = createBirActivityCenterGoodsEntity(costCenterList, |
|
|
|
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO,actReleaseMap); |
|
|
|
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO,supplierMap,saleRegionMap,bizRegionMap); |
|
|
|
bacgList.add(entity); |
|
|
|
} |
|
|
|
}else if (dateSplitList.size()==1){ |
|
|
|
DateSplitDTO currDateSplit = dateSplitList.get(0); |
|
|
|
//获取该项分割金额对象
|
|
|
|
BirCenterGoodSplitDTO goodSplitDTO = this.buildSplitAmount(activityCenterGoods, |
|
|
|
dateSplitList, currDateSplit,currentActDays,actReleaseMap); |
|
|
|
dateSplitList, currDateSplit,currentActDays); |
|
|
|
//创建底表对象
|
|
|
|
BirActivityCenterGoods entity = createBirActivityCenterGoodsEntity(costCenterList, |
|
|
|
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO,actReleaseMap); |
|
|
|
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO,supplierMap,saleRegionMap,bizRegionMap); |
|
|
|
bacgList.add(entity); |
|
|
|
} |
|
|
|
} |
|
|
@ -149,7 +169,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
Integer currentActDays, |
|
|
|
DateSplitDTO currDateSplit, |
|
|
|
BirCenterGoodSplitDTO goodSplitDTO, |
|
|
|
Map<Long,BigDecimal> actReleaseMap) { |
|
|
|
Map<String, BmsSupplier> supplierMap, Map<String, BmsRegion> saleRegionMap, Map<String, BmsRegion2> bizRegionMap) { |
|
|
|
BirActivityCenterGoods entity = new BirActivityCenterGoods(); |
|
|
|
entity.setActivityCenterGoodsId(activityCenterGoods.getId()); |
|
|
|
entity.setKeyNum(currDateSplit.getYearMonth()); |
|
|
@ -166,7 +186,11 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
entity.setActivityCode(activityCenterGoods.getActivityCode()); |
|
|
|
entity.setActivityTotalAmount(activityCenterGoods.getActivityAmt()); |
|
|
|
entity.setActivityTotalCheckAmount(activityCenterGoods.getActivityCheckAmt()); |
|
|
|
entity.setActivityTotalReleaseAmount(actReleaseMap.get(activityCenterGoods.getActivityId())); |
|
|
|
BigDecimal releaseAmount = BigDecimal.ZERO; |
|
|
|
if(1 == activityCenterGoods.getActivityFinishedFlag()){ |
|
|
|
releaseAmount = entity.getActivityTotalAmount().subtract(entity.getActivityTotalCheckAmount()); |
|
|
|
} |
|
|
|
entity.setActivityTotalReleaseAmount(releaseAmount); |
|
|
|
entity.setActivityFinishedFlag(activityCenterGoods.getActivityFinishedFlag()); |
|
|
|
entity.setSubjectId(activityCenterGoods.getSubjectId()); |
|
|
|
entity.setSubjectCode(activityCenterGoods.getSubjectCode()); |
|
|
@ -196,6 +220,20 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
entity.setSupplierId(activityCenterGoods.getSupplierId()); |
|
|
|
entity.setSupplierCode(activityCenterGoods.getSupplierCode()); |
|
|
|
entity.setSupplierName(activityCenterGoods.getSupplierName()); |
|
|
|
BmsSupplier supplier = supplierMap.get(entity.getSupplierId().toString()); |
|
|
|
if(supplier!=null){ |
|
|
|
BmsRegion saleRegion = saleRegionMap.get(supplier.getRegionLast()); |
|
|
|
if(saleRegion!=null) { |
|
|
|
entity.setSupplierSaleRegionId(saleRegion.getId()); |
|
|
|
entity.setSupplierSaleRegionName(saleRegion.getName()); |
|
|
|
} |
|
|
|
|
|
|
|
BmsRegion2 bizRegion = bizRegionMap.get(supplier.getRegion2Last()); |
|
|
|
if(bizRegion!=null) { |
|
|
|
entity.setSupplierBizRegionId(bizRegion.getId()); |
|
|
|
entity.setSupplierBizRegionName(bizRegion.getName()); |
|
|
|
} |
|
|
|
} |
|
|
|
return entity; |
|
|
|
} |
|
|
|
|
|
|
@ -296,8 +334,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe |
|
|
|
private BirCenterGoodSplitDTO buildSplitAmount(TbsActivityCenterGoods activityCenterGoods, |
|
|
|
List<DateSplitDTO> dateSplitList , |
|
|
|
DateSplitDTO currDateSplit, |
|
|
|
Integer currentActDays, |
|
|
|
Map<Long,BigDecimal> actReleaseMap){ |
|
|
|
Integer currentActDays){ |
|
|
|
|
|
|
|
BigDecimal currentCenterGoodsAmount = activityCenterGoods.getCenterGoodsAmount(); |
|
|
|
BigDecimal splitCenterGoodsAmount = activityCenterGoods.getCenterGoodsAmount(); |
|
|
|