Browse Source

费用率

v1.0
15989082884@163.com 2 years ago
parent
commit
ec3555e2f5
  1. 64
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostSubItem.java
  2. 61
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

64
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostSubItem.java

@ -98,4 +98,68 @@ public class TbsCostSubItem {
}
@Data
public static class CostCenterTranStr{
public CostCenterTranStr(String chengBenZhongXin, String chengBenZhongXinId) {
this.chengBenZhongXin = chengBenZhongXin;
this.chengBenZhongXinId = chengBenZhongXinId;
}
private String chengBenZhongXin;
private String chengBenZhongXinId;
//区域预算,预算金额
private String areaBudget;
//目标销量,预估发货金额
private String targetSales;
//目标预算费率,预估费率。targetExpenseRate = areaBudget/targetSales
private String targetExpenseRate;
//目标销量(发货金额)
private String qtdTargetSales;
//目标预算(预算金额)
private String qtdTargetBudget;
//目标费用率(预算金额/预估发货金额)
private String qtdTargetExpenseRate;
//实际销量(发货金额)
private String qtdRealSales;
//实际费用(核销和释放金额)
private String qtdRealCost;
//实际费用率(核销和释放金额/发货金额)
private String qtdRealExpenseRate;
//目标销量
private String ytdTargetSales;
//目标预算
private String ytdTargetBudget;
//目标费用率
private String ytdTargetExpenseRate;
//实际销量
private String ytdRealSales;
//实际费用
private String ytdRealCost;
//实际费用率
private String ytdRealExpenseRate;
//目标销量
private String mtdTargetSales;
//目标预算
private String mtdTargetBudget;
//目标费用率
private String mtdTargetExpenseRate;
//实际销量
private String mtdRealSales;
//实际费用
private String mtdRealCost;
//实际费用率
private String mtdRealExpenseRate;
}
}

61
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -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);
/* ------------------------------------------------------------------------- */

Loading…
Cancel
Save