|
|
@ -264,11 +264,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
List<String> subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); |
|
|
|
List<Object> subList = new ArrayList<>(); |
|
|
|
//创建子表数据
|
|
|
|
try { |
|
|
|
this.buildSubList(result, tbsActivityCenters, subjectNames, subList); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
this.buildSubList(result, tbsActivityCenters, subjectNames, subList); |
|
|
|
|
|
|
|
//创建商品抬头列表
|
|
|
|
List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
Set<String> bands = new HashSet<>(); |
|
|
@ -373,21 +370,21 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
private void buildMainData4ROI(TbsCostApply tbsCostApply, Map<String, Object> data) { |
|
|
|
YtdQtdToOAVo ytdQtdToOAVo = birRoiRateService.buildYtdAndQtdData(tbsCostApply); |
|
|
|
data.put("ytdCusExpenseRate",ytdQtdToOAVo.getYtdCustomerPercent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdCustomerPercent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdCustomerPercent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("ytdEmpExpenseRate",ytdQtdToOAVo.getYtdUserPercent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdUserPercent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdUserPercent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("ytdAdminiExpenseRate",ytdQtdToOAVo.getYtdRegionPercent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdRegionPercent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdRegionPercent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("ytdSalesExpenseRate",ytdQtdToOAVo.getYtdRegion2Percent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdRegion2Percent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdRegion2Percent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("cusExpenseRate",ytdQtdToOAVo.getQtdCustomerPercent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdCustomerPercent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdCustomerPercent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("empExpenseRate",ytdQtdToOAVo.getQtdUserPercent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdUserPercent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdUserPercent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("salesExpenseRate",ytdQtdToOAVo.getQtdRegionPercent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegionPercent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegionPercent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
data.put("adminiExpenseRate",ytdQtdToOAVo.getQtdRegion2Percent()==null? |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegion2Percent()).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegion2Percent()).setScale(2, RoundingMode.HALF_UP).toString()); |
|
|
|
|
|
|
|
//插入记录表前移除历史记录
|
|
|
|
// tbsCostPercentMapper.delByCostApplyId(tbsCostApply.getId());
|
|
|
@ -450,7 +447,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
String centerType = center.getCenterType(); |
|
|
|
String centerId = center.getCenterId(); |
|
|
|
String centerKey = centerType + "-" + centerId; |
|
|
|
TbsCostSubItem.CostCenter costCenter = new TbsCostSubItem.CostCenter(center.getCenterName(),centerType+"-"+centerId); |
|
|
|
TbsCostSubItem.CostCenterTranStr costCenter = new TbsCostSubItem.CostCenterTranStr(center.getCenterName(),centerType+"-"+centerId); |
|
|
|
/* --------------- 全年目标费用率YTD 目标预计发货,目标预算 --------------------------- */ |
|
|
|
//通过成本中心TYPE和ID取预算
|
|
|
|
LambdaQueryWrapper<TbsBudget> budgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
@ -464,16 +461,19 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
//合计目标发货和金定额
|
|
|
|
BigDecimal targetBudgetAmout = scheduleItemBudgetList.stream().map(a->a.getBudgetAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
BigDecimal targetDispatchAmout = scheduleItemBudgetList.stream().map(a->a.getPreDispatchAmount()==null?BigDecimal.ZERO:a.getPreDispatchAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
costCenter.setTargetSales(targetDispatchAmout); |
|
|
|
costCenter.setAreaBudget(targetBudgetAmout); |
|
|
|
costCenter.setTargetSales(targetDispatchAmout.toString()); |
|
|
|
costCenter.setAreaBudget(targetBudgetAmout.toString()); |
|
|
|
BigDecimal targetExpenseRate = BigDecimal.ZERO; |
|
|
|
if(targetDispatchAmout.compareTo(BigDecimal.ZERO)!=0) { |
|
|
|
targetExpenseRate = targetBudgetAmout.divide(targetDispatchAmout, 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
costCenter.setTargetExpenseRate(targetExpenseRate.toString()); |
|
|
|
costCenter.setYtdTargetExpenseRate(targetExpenseRate.toString()); |
|
|
|
} |
|
|
|
costCenter.setTargetExpenseRate(targetExpenseRate); |
|
|
|
costCenter.setYtdTargetBudget(targetBudgetAmout); |
|
|
|
costCenter.setYtdTargetSales(targetDispatchAmout); |
|
|
|
costCenter.setYtdTargetExpenseRate(targetExpenseRate); |
|
|
|
// costCenter.setTargetExpenseRate(targetExpenseRate);
|
|
|
|
costCenter.setYtdTargetBudget(targetBudgetAmout.toString()); |
|
|
|
costCenter.setYtdTargetSales(targetDispatchAmout.toString()); |
|
|
|
// costCenter.setYtdTargetExpenseRate(targetExpenseRate);
|
|
|
|
|
|
|
|
// costCenter.setQtdTargetBudget(BigDecimal.ZERO);
|
|
|
|
// costCenter.setQtdTargetSales(BigDecimal.ZERO);
|
|
|
|
// costCenter.setQtdTargetExpenseRate(BigDecimal.ZERO);
|
|
|
@ -489,39 +489,42 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
/* --------------- 实际费用率YTD --------------------------------------------- */ |
|
|
|
BigDecimal ytdRealDipatch = dispatchSumVos.stream().map(a->a.getDispatchSumCost()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
BigDecimal ytdRealCost = birCenterCost.stream().map(a->a.getSplitUsedAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
costCenter.setYtdRealCost(ytdRealCost); |
|
|
|
costCenter.setYtdRealSales(ytdRealDipatch); |
|
|
|
costCenter.setYtdRealCost(ytdRealCost.toString()); |
|
|
|
costCenter.setYtdRealSales(ytdRealDipatch.toString()); |
|
|
|
BigDecimal ytdRealExpenseRate = BigDecimal.ZERO; |
|
|
|
if(ytdRealDipatch.compareTo(BigDecimal.ZERO)!=0) { |
|
|
|
ytdRealExpenseRate = ytdRealCost.divide(ytdRealDipatch, 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
costCenter.setYtdRealExpenseRate(ytdRealExpenseRate.toString()); |
|
|
|
} |
|
|
|
costCenter.setYtdRealExpenseRate(ytdRealExpenseRate); |
|
|
|
// costCenter.setYtdRealExpenseRate(ytdRealExpenseRate);
|
|
|
|
/* ------------------------------------------------------------------------- */ |
|
|
|
|
|
|
|
/* --------------- 实际费用率QTD --------------------------------------------- */ |
|
|
|
List<Integer> yearQuarter = QuarterUtil.getQuarterNumbers(year, month); |
|
|
|
BigDecimal qtdRealDipatch = dispatchSumVos.stream().filter(a->yearQuarter.contains(a.getYearMonth())).map(a->a.getDispatchSumCost()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
BigDecimal qtdRealCost = birCenterCost.stream().filter(a->yearQuarter.contains(a.getKeyNum())).map(a->a.getSplitUsedAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
costCenter.setQtdRealCost(qtdRealCost); |
|
|
|
costCenter.setQtdRealSales(qtdRealDipatch); |
|
|
|
costCenter.setQtdRealCost(qtdRealCost.toString()); |
|
|
|
costCenter.setQtdRealSales(qtdRealDipatch.toString()); |
|
|
|
BigDecimal qtdRealExpenseRate = BigDecimal.ZERO; |
|
|
|
if(qtdRealDipatch.compareTo(BigDecimal.ZERO)!=0) { |
|
|
|
qtdRealExpenseRate = qtdRealCost.divide(qtdRealDipatch, 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
costCenter.setQtdRealExpenseRate(qtdRealExpenseRate.toString()); |
|
|
|
} |
|
|
|
costCenter.setQtdRealExpenseRate(qtdRealExpenseRate); |
|
|
|
// costCenter.setQtdRealExpenseRate(qtdRealExpenseRate);
|
|
|
|
/* ------------------------------------------------------------------------- */ |
|
|
|
|
|
|
|
/* --------------- 实际费用率MTD --------------------------------------------- */ |
|
|
|
Integer yearMonth = year*100 + month; |
|
|
|
BigDecimal mtdRealDipatch = dispatchSumVos.stream().filter(a->yearMonth.equals(a.getYearMonth())).map(a->a.getDispatchSumCost()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
BigDecimal mtdRealCost = birCenterCost.stream().filter(a->yearMonth.equals(a.getKeyNum())).map(a->a.getSplitUsedAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
costCenter.setMtdRealCost(mtdRealCost); |
|
|
|
costCenter.setMtdRealSales(mtdRealDipatch); |
|
|
|
costCenter.setMtdRealCost(mtdRealCost.toString()); |
|
|
|
costCenter.setMtdRealSales(mtdRealDipatch.toString()); |
|
|
|
BigDecimal mtdRealExpenseRate = BigDecimal.ZERO; |
|
|
|
if(mtdRealDipatch.compareTo(BigDecimal.ZERO)!=0) { |
|
|
|
mtdRealExpenseRate = mtdRealCost.divide(mtdRealDipatch, 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
costCenter.setMtdRealExpenseRate(mtdRealExpenseRate.toString()); |
|
|
|
} |
|
|
|
costCenter.setMtdRealExpenseRate(mtdRealExpenseRate); |
|
|
|
// costCenter.setMtdRealExpenseRate(mtdRealExpenseRate);
|
|
|
|
/* ------------------------------------------------------------------------- */ |
|
|
|
|
|
|
|
|
|
|
|