diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostSubItem.java index 333281ce..63b6ae39 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostSubItem.java +++ b/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; + + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index b828ce3d..2b11e086 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -264,11 +264,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); List subList = new ArrayList<>(); //创建子表数据 - try { - this.buildSubList(result, tbsActivityCenters, subjectNames, subList); - } catch (Exception e) { - e.printStackTrace(); - } + this.buildSubList(result, tbsActivityCenters, subjectNames, subList); + //创建商品抬头列表 List tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); Set bands = new HashSet<>(); @@ -373,21 +370,21 @@ public class TbsCostApplyServiceImpl extends ServiceImpl 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 budgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -464,16 +461,19 @@ public class TbsCostApplyServiceImpl extends ServiceImpla.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 ServiceImpla.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 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); /* ------------------------------------------------------------------------- */