From f7e1a7c23f14e1af0ad38cf1dfca2dc7d42456eb Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 09:34:16 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=BA=95=E8=A1=A8=E6=9F=A5=E8=AF=A2=20?= =?UTF-8?q?=E5=92=8C=20=E9=A2=84=E7=AE=97=E8=B0=83=E6=95=B4=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BirActivityCenterGoodsController.java | 8 +++++ .../bir/entity/BirActivityCenterGoods.java | 18 +++++++++- .../tbs/controller/TbsBudgetController.java | 33 +++++++++++++++++++ .../entity/bo/TbsScheduleItemBudgetBo.java | 1 - .../service/impl/TbsBudgetServiceImpl.java | 12 ++++--- 5 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java index 1b945f80..2061c77a 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java @@ -58,6 +58,14 @@ public class BirActivityCenterGoodsController { public R> getPage(BirActivityCenterGoods param){ PageUtil.startPage(); LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); + if(param.getKeyNumStart()!=null){ + Integer keyNumStart = Integer.parseInt(param.getKeyNumStart().replace("-","")); + channelWrapper.ge(BirActivityCenterGoods::getKeyNum,keyNumStart); + } + if(param.getKeyNumEnd()!=null){ + Integer keyNumEnd = Integer.parseInt(param.getKeyNumEnd().replace("-","")); + channelWrapper.le(BirActivityCenterGoods::getKeyNum,keyNumEnd); + } List list = centerGoodsService.list(channelWrapper); return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java b/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java index 5483c8ad..b9a0a49f 100644 --- a/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java +++ b/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java @@ -85,6 +85,7 @@ public class BirActivityCenterGoods implements Serializable { /** 活动编码 */ @NotBlank(message = "活动编码不能为空") @Length(max = 30,message = "活动编码长度不能超过30字") + @TableField(condition = SqlCondition.LIKE) private String activityCode; /** 活动总金额 */ @@ -106,11 +107,13 @@ public class BirActivityCenterGoods implements Serializable { /** 科目编码 */ @NotBlank(message = "科目编码不能为空") @Length(max = 50,message = "科目编码长度不能超过50字") + @TableField(condition = SqlCondition.LIKE) private String subjectCode; /** 科目名称 */ @NotBlank(message = "科目名称不能为空") @Length(max = 50,message = "科目名称长度不能超过50字") + @TableField(condition = SqlCondition.LIKE) private String subjectName; /** 成本中心类型 */ @@ -126,11 +129,13 @@ public class BirActivityCenterGoods implements Serializable { /** 成本中心编码 */ @NotBlank(message = "成本中心编码不能为空") @Length(max = 50,message = "成本中心编码长度不能超过50字") + @TableField(condition = SqlCondition.LIKE) private String centerCode; /** 成本中心名称 */ @NotBlank(message = "成本中心名称不能为空") @Length(max = 200,message = "成本中心名称长度不能超过200字") + @TableField(condition = SqlCondition.LIKE) private String centerName; /** 成本中心金额 */ @@ -165,11 +170,13 @@ public class BirActivityCenterGoods implements Serializable { /** 目标编码 */ @NotBlank(message = "目标编码不能为空") @Length(max = 30,message = "目标编码长度不能超过30字") + @TableField(condition = SqlCondition.LIKE) private String targetCode; /** 目标名称 */ @NotBlank(message = "目标名称不能为空") @Length(max = 200,message = "目标名称长度不能超过200字") + @TableField(condition = SqlCondition.LIKE) private String targetName; /** 目标等级路径 */ @@ -261,20 +268,29 @@ public class BirActivityCenterGoods implements Serializable { /** 客户编码 */ @NotBlank(message = "客户编码不能为空") @Length(max = 30,message = "客户编码长度不能超过30字") + @TableField(condition = SqlCondition.LIKE) private String supplierCode; /** 客户名称 */ @NotBlank(message = "客户名称不能为空") @Length(max = 200,message = "客户名称长度不能超过200字") + @TableField(condition = SqlCondition.LIKE) private String supplierName; - + @TableField(condition = SqlCondition.LIKE) private String supplierSaleRegionName; private String supplierSaleRegionId; + @TableField(condition = SqlCondition.LIKE) private String supplierBizRegionName; private String supplierBizRegionId; + + @TableField(exist = false) + private String keyNumStart; + + @TableField(exist = false) + private String keyNumEnd; } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index 22b15f92..9f488615 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -185,6 +185,39 @@ public class TbsBudgetController { return R.ok(); } + /** + * 修改周期金额 + * @param param + * @return + */ + @PostMapping("/updateScheduleItemAmountAdd") + @SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.UPDATE) + @PreAuthorize("hasRole('tbs:budget:update')") + public R updateScheduleItemAmountAdd(@RequestBody @Valid TbsScheduleItemBudgetBo param){ + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + TbsScheduleItemBudget scheduleItemBudget = tbsScheduleItemBudgetService.getById(param.getId()); + //金额相同时退出 +// if(scheduleItemBudget.getBudgetAmount().compareTo(param.getBudgetAmount())==0){return R.ok();} + TbsBudget budget = tbsBudgetService.getById(scheduleItemBudget.getBudgetId()); +// TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget(); +// itemBudget.setId(param.getId()); +// itemBudget.setBudgetAmount(param.getBudgetAmount()); +// tbsScheduleItemBudgetService.updateById(itemBudget); + //0-预算新增;1-费用申请;2-预算调增;3-预算调减;4-费用释放 + BudgetLogOptFlag optType; + BigDecimal amount; + if(param.getBudgetAmount().compareTo(BigDecimal.ZERO)>0){ + amount = param.getBudgetAmount(); + optType = BudgetLogOptFlag.State_2; + }else { + amount = param.getBudgetAmount(); + optType = BudgetLogOptFlag.State_3; + } + TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser,budget,scheduleItemBudget,optType, amount); + tbsBudgetLogService.save(budgetLog); + return R.ok(); + } + /** * 修改预计发货金额 * @param param diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsScheduleItemBudgetBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsScheduleItemBudgetBo.java index 958dcd40..184d7d70 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsScheduleItemBudgetBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsScheduleItemBudgetBo.java @@ -30,7 +30,6 @@ public class TbsScheduleItemBudgetBo implements Serializable { private Long id; /** 预算金额 */ - @DecimalMin(value = "0") @NotNull(message = "预算金额不能为空") private BigDecimal budgetAmount; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 34ff79b1..0f4ca752 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -40,10 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -428,6 +425,13 @@ public class TbsBudgetServiceImpl extends ServiceImpl LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId()); List scheduleItemBudgets = scheduleItemBudgetService.list(lqw2); + scheduleItemBudgets.forEach(a->{ + LambdaQueryWrapper budgetLogLambdaQueryWrapper = new LambdaQueryWrapper<>(); + budgetLogLambdaQueryWrapper.in(TbsBudgetLog::getOptType, BudgetLogOptFlag.getFinalBudgetOptFlag()); + budgetLogLambdaQueryWrapper.eq(TbsBudgetLog::getScheduleItemBudgetId,a.getId()); + List logList = budgetLogService.list(budgetLogLambdaQueryWrapper); + a.setBudgetAmount(logList.stream().map(b->b.getAmount()).reduce(BigDecimal.ZERO,BigDecimal::add)); + }); budgetVo.setScheduleItem(scheduleItemBudgets); return budgetVo; } From 0d7abad4bdc0299b711cd0d8a46ed58467a5ffec Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 12:04:24 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E9=A2=84=E7=AE=97=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/modules/tbs/entity/TbsBudget.java | 11 ++++++++++- .../qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java | 2 ++ .../qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java | 1 + .../tbs/service/impl/TbsBudgetServiceImpl.java | 11 +++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index aab75398..96431900 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -10,7 +10,9 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; import lombok.Data; +import org.apache.ibatis.type.JdbcType; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; @@ -23,7 +25,7 @@ import javax.validation.constraints.NotBlank; * @since 2022-11-12 */ @Data -@TableName("tbs_budget") +@TableName(value = "tbs_budget", autoResultMap = true) public class TbsBudget implements Serializable { private static final long serialVersionUID = 1L; @@ -123,9 +125,16 @@ public class TbsBudget implements Serializable { @JsonProperty private String delFlag; + /** 附件id */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] attachIds; + /** 后端传输dto */ @TableField(exist = false) private List budgetConditionList; + @TableField(exist = false) + private List attachList; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java index 7eb426c7..3ec01de6 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java @@ -74,6 +74,8 @@ public class TbsBudgetBo implements Serializable { /** skuId列表(前端显示为单品) */ private List skuIds; + private String[] attachIds; + @Data public static class ScheduleItem{ diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java index da2b9f8f..ec79d8e8 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java @@ -75,6 +75,7 @@ public class TbsBudgetVo implements Serializable { private List spuConditions; private List scheduleItem; private List scheduleItemBudgets; + private List attachList; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 0f4ca752..cca4d626 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -17,7 +17,9 @@ import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.sys.entity.SysAttach; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsGoodsType; @@ -73,6 +75,9 @@ public class TbsBudgetServiceImpl extends ServiceImpl private final TbsBudgetCostItemPolicyService tbsBudgetCostItemPolicyService; private final VtbFundFlowService vtbFundFlowService; + private SysAttachService attachService; + + @Override @Transactional(rollbackFor = Exception.class) public void modify(TbsBudgetBo budgetBo) { @@ -433,6 +438,12 @@ public class TbsBudgetServiceImpl extends ServiceImpl a.setBudgetAmount(logList.stream().map(b->b.getAmount()).reduce(BigDecimal.ZERO,BigDecimal::add)); }); budgetVo.setScheduleItem(scheduleItemBudgets); + + if(CollectionUtil.isNotEmpty(budget.getAttachIds())){ + List attachIds = Arrays.asList(budget.getAttachIds()); + List attachList = attachService.listByIds(attachIds); + budgetVo.setAttachList(attachList); + } return budgetVo; } From f7085e3d82120f320bb440e4671867ea83196183 Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 12:04:49 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=B0=81=E8=A3=85=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E8=B4=B9=E7=94=A8=E7=8E=87=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bir/service/BirCenterRateService.java | 8 + .../impl/BirCenterRateServiceImpl.java | 164 +++++++ .../service/impl/TbsCostApplyServiceImpl.java | 444 +++++++++--------- src/main/java/com/qs/serve/task/BirTask.java | 10 +- 4 files changed, 404 insertions(+), 222 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java create mode 100644 src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java new file mode 100644 index 00000000..70bdb8c9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java @@ -0,0 +1,8 @@ +package com.qs.serve.modules.bir.service; + +import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; + +public interface BirCenterRateService { + public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName); + +} diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java new file mode 100644 index 00000000..d14b9674 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java @@ -0,0 +1,164 @@ +package com.qs.serve.modules.bir.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.SpringUtils; +import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; +import com.qs.serve.modules.bir.entity.BirRoiRate; +import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO; +import com.qs.serve.modules.bir.entity.so.BirCostRoiSo; +import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo; +import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo; +import com.qs.serve.modules.bir.mapper.BirRoiRateMapper; +import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; +import com.qs.serve.modules.bir.service.BirCenterRateService; +import com.qs.serve.modules.bir.service.BirRoiRateService; +import com.qs.serve.modules.bms.entity.BmsCenterRegion; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.mapper.BmsCenterRegionMapper; +import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; +import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; +import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +import com.qs.serve.modules.tbs.common.util.QuarterUtil; +import com.qs.serve.modules.tbs.entity.TbsBudget; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; +import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; +import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; +import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.Month; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * @author YenHex + * @since 2023-06-05 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BirCenterRateServiceImpl implements BirCenterRateService { + + private TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; + private TbsBudgetMapper tbsBudgetMapper; + private BirRoiRateService birRoiRateService; + private final ErpDispatchDataMapper dispatchDataMapper; + private BirActivityCenterGoodsService birActivityCenterGoodsService; + + + + public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType,String centerId,String centerName){ + + int year = LocalDate.now().getYear(); + int month = LocalDate.now().getMonthValue(); + month = month>1?month:1; + int startMonthNum = year*100 + 1; + int endMonthNum = year*100 + month; + BirRoiCostDTO costDTO = new BirRoiCostDTO(); + costDTO.setStartMonthNum(startMonthNum); + costDTO.setEndMonthNum(endMonthNum); + + + String centerKey = centerType + "-" + centerId; + TbsCostSubItem.CostCenterTranStr costCenter = new TbsCostSubItem.CostCenterTranStr(centerName,centerType+"-"+centerId); + /* --------------- 全年目标费用率YTD 目标预计发货,目标预算 --------------------------- */ + //通过成本中心TYPE和ID取预算 + LambdaQueryWrapper budgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); + budgetLambdaQueryWrapper.eq(TbsBudget::getCenterId,centerId); + budgetLambdaQueryWrapper.eq(TbsBudget::getCenterType,centerType); + List tbsBudgetList = tbsBudgetMapper.selectList(budgetLambdaQueryWrapper); + //通过预算ID取预算的发货和金额 + LambdaQueryWrapper scheduleItemBudgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); + scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,tbsBudgetList.stream().map(a->a.getId()).collect(Collectors.toList())); + List scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectList(scheduleItemBudgetLambdaQueryWrapper); + //合计目标发货和金定额 + 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.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.toString()); + costCenter.setYtdTargetSales(targetDispatchAmout.toString()); +// costCenter.setYtdTargetExpenseRate(targetExpenseRate); + +// costCenter.setQtdTargetBudget(BigDecimal.ZERO); +// costCenter.setQtdTargetSales(BigDecimal.ZERO); +// costCenter.setQtdTargetExpenseRate(BigDecimal.ZERO); +// costCenter.setMtdTargetBudget(BigDecimal.ZERO); +// costCenter.setMtdTargetSales(BigDecimal.ZERO); +// costCenter.setMtdTargetExpenseRate(BigDecimal.ZERO); + /* ------------------------------------------------------------------------- */ + //实际发贷数 + List supplierCodeList = birRoiRateService.getSupplierCodesByCenter(costDTO,centerType, Arrays.asList(centerId)); + List dispatchSumVos = dispatchDataMapper.querySumCost(startMonthNum,endMonthNum,supplierCodeList); + + //获取BIR表的数据,用于计算实际费用率 + LambdaQueryWrapper birLwq = new LambdaQueryWrapper<>(); + birLwq.eq(BirActivityCenterGoods::getCenterId,centerId); + birLwq.eq(BirActivityCenterGoods::getCenterType,centerType); + birLwq.ge(BirActivityCenterGoods::getKeyNum,startMonthNum); + birLwq.le(BirActivityCenterGoods::getKeyNum,endMonthNum); + List birCenterCost = birActivityCenterGoodsService.list(birLwq); + + /* --------------- 实际费用率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.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); + /* ------------------------------------------------------------------------- */ + + /* --------------- 实际费用率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.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); + /* ------------------------------------------------------------------------- */ + + /* --------------- 实际费用率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.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()); + } + return costCenter; + } + +} + 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 2b11e086..ca1ce96c 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 @@ -15,6 +15,7 @@ import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO; import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo; import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; +import com.qs.serve.modules.bir.service.BirCenterRateService; import com.qs.serve.modules.bir.service.BirRoiRateService; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; @@ -92,6 +93,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl1?month:1; - int startMonthNum = year*100 + 1; - int endMonthNum = year*100 + month; - BirRoiRateService roiRateService = SpringUtils.getBean(BirRoiRateService.class); - BirRoiCostDTO costDTO = new BirRoiCostDTO(); - costDTO.setStartMonthNum(startMonthNum); - costDTO.setEndMonthNum(endMonthNum); +// int year = LocalDate.now().getYear(); +// int month = LocalDate.now().getMonthValue(); +// month = month>1?month:1; +// int startMonthNum = year*100 + 1; +// int endMonthNum = year*100 + month; +// BirRoiRateService roiRateService = SpringUtils.getBean(BirRoiRateService.class); +// BirRoiCostDTO costDTO = new BirRoiCostDTO(); +// costDTO.setStartMonthNum(startMonthNum); +// costDTO.setEndMonthNum(endMonthNum); //获取BIR表的数据,用于计算实际费用率 - LambdaQueryWrapper birLwq = new LambdaQueryWrapper<>(); - birLwq.in(BirActivityCenterGoods::getCenterId,tbsActivityCenters.stream().map(a->a.getCenterId()).collect(Collectors.toList())); - birLwq.ge(BirActivityCenterGoods::getKeyNum,startMonthNum); - birLwq.le(BirActivityCenterGoods::getKeyNum,endMonthNum); - List birActivityCenterGoodsList = birActivityCenterGoodsService.list(birLwq); - Map> birCenterCostMap = birActivityCenterGoodsList.stream().collect(Collectors.groupingBy(a->a.getCenterType() + "-"+a.getCenterId())); +// LambdaQueryWrapper birLwq = new LambdaQueryWrapper<>(); +// birLwq.in(BirActivityCenterGoods::getCenterId,tbsActivityCenters.stream().map(a->a.getCenterId()).collect(Collectors.toList())); +// birLwq.ge(BirActivityCenterGoods::getKeyNum,startMonthNum); +// birLwq.le(BirActivityCenterGoods::getKeyNum,endMonthNum); +// List birActivityCenterGoodsList = birActivityCenterGoodsService.list(birLwq); +// Map> birCenterCostMap = birActivityCenterGoodsList.stream().collect(Collectors.groupingBy(a->a.getCenterType() + "-"+a.getCenterId())); //成本中心去重 Map> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a->a.getCenterType()+"-"+a.getCenterId())); List centerList = centerMapList.values().stream().map(a->a.get(0)).collect(Collectors.toList()); for(TbsActivityCenter center : centerList){ - String centerType = center.getCenterType(); - String centerId = center.getCenterId(); - String centerKey = centerType + "-" + centerId; - TbsCostSubItem.CostCenterTranStr costCenter = new TbsCostSubItem.CostCenterTranStr(center.getCenterName(),centerType+"-"+centerId); - /* --------------- 全年目标费用率YTD 目标预计发货,目标预算 --------------------------- */ - //通过成本中心TYPE和ID取预算 - LambdaQueryWrapper budgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); - budgetLambdaQueryWrapper.eq(TbsBudget::getCenterId,centerId); - budgetLambdaQueryWrapper.eq(TbsBudget::getCenterType,centerType); - List tbsBudgetList = tbsBudgetMapper.selectList(budgetLambdaQueryWrapper); - //通过预算ID取预算的发货和金额 - LambdaQueryWrapper scheduleItemBudgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); - scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,tbsBudgetList.stream().map(a->a.getId()).collect(Collectors.toList())); - List scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectList(scheduleItemBudgetLambdaQueryWrapper); - //合计目标发货和金定额 - 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.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.toString()); - costCenter.setYtdTargetSales(targetDispatchAmout.toString()); -// costCenter.setYtdTargetExpenseRate(targetExpenseRate); - -// costCenter.setQtdTargetBudget(BigDecimal.ZERO); -// costCenter.setQtdTargetSales(BigDecimal.ZERO); -// costCenter.setQtdTargetExpenseRate(BigDecimal.ZERO); -// costCenter.setMtdTargetBudget(BigDecimal.ZERO); -// costCenter.setMtdTargetSales(BigDecimal.ZERO); -// costCenter.setMtdTargetExpenseRate(BigDecimal.ZERO); - /* ------------------------------------------------------------------------- */ - //实际发贷数 - List supplierCodeList = roiRateService.getSupplierCodesByCenter(costDTO,centerType,Arrays.asList(centerId)); - List dispatchSumVos = dispatchDataMapper.querySumCost(startMonthNum,endMonthNum,supplierCodeList); - List birCenterCost = birCenterCostMap.containsKey(centerKey)?birCenterCostMap.get(centerKey):new ArrayList<>(); - - /* --------------- 实际费用率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.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); - /* ------------------------------------------------------------------------- */ - - /* --------------- 实际费用率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.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); - /* ------------------------------------------------------------------------- */ - - /* --------------- 实际费用率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.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); - /* ------------------------------------------------------------------------- */ - - + TbsCostSubItem.CostCenterTranStr costCenter = centerRateService.buildCostCenter(center.getCenterType(),center.getCenterId(),center.getCenterName()); subList.add(costCenter); +// String centerType = center.getCenterType(); +// String centerId = center.getCenterId(); +// String centerKey = centerType + "-" + centerId; +// TbsCostSubItem.CostCenterTranStr costCenter = new TbsCostSubItem.CostCenterTranStr(center.getCenterName(),centerType+"-"+centerId); +// /* --------------- 全年目标费用率YTD 目标预计发货,目标预算 --------------------------- */ +// //通过成本中心TYPE和ID取预算 +// LambdaQueryWrapper budgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// budgetLambdaQueryWrapper.eq(TbsBudget::getCenterId,centerId); +// budgetLambdaQueryWrapper.eq(TbsBudget::getCenterType,centerType); +// List tbsBudgetList = tbsBudgetMapper.selectList(budgetLambdaQueryWrapper); +// //通过预算ID取预算的发货和金额 +// LambdaQueryWrapper scheduleItemBudgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,tbsBudgetList.stream().map(a->a.getId()).collect(Collectors.toList())); +// List scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectList(scheduleItemBudgetLambdaQueryWrapper); +// //合计目标发货和金定额 +// 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.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.toString()); +// costCenter.setYtdTargetSales(targetDispatchAmout.toString()); +//// costCenter.setYtdTargetExpenseRate(targetExpenseRate); +// +//// costCenter.setQtdTargetBudget(BigDecimal.ZERO); +//// costCenter.setQtdTargetSales(BigDecimal.ZERO); +//// costCenter.setQtdTargetExpenseRate(BigDecimal.ZERO); +//// costCenter.setMtdTargetBudget(BigDecimal.ZERO); +//// costCenter.setMtdTargetSales(BigDecimal.ZERO); +//// costCenter.setMtdTargetExpenseRate(BigDecimal.ZERO); +// /* ------------------------------------------------------------------------- */ +// //实际发贷数 +// List supplierCodeList = roiRateService.getSupplierCodesByCenter(costDTO,centerType,Arrays.asList(centerId)); +// List dispatchSumVos = dispatchDataMapper.querySumCost(startMonthNum,endMonthNum,supplierCodeList); +// List birCenterCost = birCenterCostMap.containsKey(centerKey)?birCenterCostMap.get(centerKey):new ArrayList<>(); +// +// /* --------------- 实际费用率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.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); +// /* ------------------------------------------------------------------------- */ +// +// /* --------------- 实际费用率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.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); +// /* ------------------------------------------------------------------------- */ +// +// /* --------------- 实际费用率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.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); +// /* ------------------------------------------------------------------------- */ + + +// subList.add(costCenter); } } - /** - * 创建成本中心维度对象(弃) - * @param result - * @param tbsScheduleItemBudgets - * @param year - * @param month - * @param supplierCodeMapWithCenterType - * @param birGroupByCenter - * @param activityCenter - * @param centerKey - * @return - */ - @NotNull - private TbsCostSubItem.CostCenter buildCostCenterParam(TbsBudgetCostResult result, List tbsScheduleItemBudgets, - int year, int month, Map> supplierCodeMapWithCenterType, - Map> birGroupByCenter, - TbsActivityCenter activityCenter, String centerKey) { - TbsCostSubItem.CostCenter costCenter = new TbsCostSubItem.CostCenter(activityCenter.getCenterName(), - activityCenter.getCenterType()+"_"+ activityCenter.getCenterId()); - //设置目标销量、目标预算 - for (TbsBudget budget : result.getBudgetList()) { - boolean eqType = activityCenter.getCenterType().equals(budget.getCenterType()); - boolean eqCost = activityCenter.getCenterId().equals(budget.getCenterId()); - if (eqType && eqCost) { - BigDecimal totalBudgetAmount = BigDecimal.ZERO; - BigDecimal totalPreDispatchAmount = BigDecimal.ZERO; - //从命中的预算周期中取出目标发货 和 目标预算 进行合计 - for (TbsScheduleItemBudget itemBudget : tbsScheduleItemBudgets) { - if (itemBudget.getBudgetId().equals(budget.getId())) { - if (itemBudget.getBudgetAmount() != null) { - totalBudgetAmount = totalBudgetAmount.add(itemBudget.getBudgetAmount()); - } - if (itemBudget.getPreDispatchAmount() != null) { - totalPreDispatchAmount = totalBudgetAmount.add(itemBudget.getPreDispatchAmount()); - } - } - } - costCenter.setAreaBudget(totalBudgetAmount); - costCenter.setTargetSales(totalPreDispatchAmount); - if (totalPreDispatchAmount.compareTo(BigDecimal.ZERO) != 0) { - costCenter.setTargetExpenseRate(totalBudgetAmount.divide(totalPreDispatchAmount,2, BigDecimal.ROUND_DOWN)); - } - //暂保持目标相关数据一致 - costCenter.setYtdTargetSales(costCenter.getTargetSales().setScale(2,BigDecimal.ROUND_DOWN)); - costCenter.setYtdTargetBudget(costCenter.getAreaBudget().setScale(2, RoundingMode.DOWN)); - costCenter.setYtdTargetExpenseRate(costCenter.getTargetExpenseRate().setScale(2, RoundingMode.DOWN)); -// costCenter.setQtdTargetSales(costCenter.getTargetSales()); -// costCenter.setQtdTargetBudget(costCenter.getAreaBudget()); -// costCenter.setQtdTargetExpenseRate(costCenter.getTargetExpenseRate()); -// costCenter.setMtdTargetSales(); -// costCenter.setMtdTargetBudget(); -// costCenter.setMtdTargetExpenseRate(); - break; - - } - } - //发货金额 - List erpDispatchSumVoList = supplierCodeMapWithCenterType.get(centerKey); - - //所有相关费率记录 - List centerGoods = birGroupByCenter.get(centerKey); - if(CollectionUtil.isNotEmpty(centerGoods)){ - //年费率 - TbsCenterGoodBirDTO bir4Year = this.getTbsCenterGoodBirDTO(centerGoods,erpDispatchSumVoList); - costCenter.setYtdRealSales(bir4Year.getRealSales()); - costCenter.setYtdRealCost(bir4Year.getRealCost()); - costCenter.setYtdRealExpenseRate(bir4Year.getRealExpenseRate()); - - //季度 - List yearMonthList =QuarterUtil.getQuarterNumbers(year, month); - List centerGoodsQuarter = centerGoods.stream() - .filter(a-> yearMonthList.contains(a.getKeyNum())) - .collect(Collectors.toList()); - TbsCenterGoodBirDTO bir4Quarter = this.getTbsCenterGoodBirDTO(centerGoodsQuarter,erpDispatchSumVoList); - costCenter.setQtdRealSales(bir4Quarter.getRealSales()); - costCenter.setQtdRealCost(bir4Quarter.getRealCost()); - costCenter.setQtdRealExpenseRate(bir4Quarter.getRealExpenseRate()); - - //月份 - String mStr = month >9? month +"":"0"+ month; - Integer currYearMonth = Integer.parseInt(year +mStr); - List centerGoodsM = centerGoods.stream() - .filter(a-> currYearMonth.equals(a.getKeyNum())) - .collect(Collectors.toList()); - TbsCenterGoodBirDTO bir4Month = this.getTbsCenterGoodBirDTO(centerGoodsM,erpDispatchSumVoList); - costCenter.setMtdRealSales(bir4Month.getRealSales()); - costCenter.setMtdRealCost(bir4Month.getRealCost()); - costCenter.setMtdRealExpenseRate(bir4Month.getRealExpenseRate()); - } - return costCenter; - } - - /** - * 创建 成本中心 DTO(弃) - * @param centerGoods - * @param erpDispatchSumVoList - * @return - */ - @NotNull - private TbsCenterGoodBirDTO getTbsCenterGoodBirDTO(List centerGoods,List erpDispatchSumVoList) { - BigDecimal totalRealDispatch = BigDecimal.ZERO; - BigDecimal totalRealCost; - BigDecimal totalRealCheck = BigDecimal.ZERO; - BigDecimal totalRealRelease = BigDecimal.ZERO; - for (BirActivityCenterGoods centerGood : centerGoods) { - totalRealCheck = totalRealCheck.add(centerGood.getSplitUsedAmount()); - totalRealRelease = totalRealRelease.add(centerGood.getSplitReleaseAmount()); - for (ErpDispatchSumVo dispatchSumVo : erpDispatchSumVoList) { - if(centerGood.getKeyNum().equals(dispatchSumVo.getYearMonth())){ - totalRealDispatch = totalRealDispatch.add(dispatchSumVo.getDispatchSumCost()); - } - } - } - totalRealCost = totalRealCheck.add(totalRealRelease); - TbsCenterGoodBirDTO birDTO = new TbsCenterGoodBirDTO(); - birDTO.setRealCost(totalRealCost); - birDTO.setRealCheck(totalRealCheck); - birDTO.setRealRelease(totalRealRelease); - birDTO.initRealExpenseRate(); - return birDTO; - } +// /** +// * 创建成本中心维度对象(弃) +// * @param result +// * @param tbsScheduleItemBudgets +// * @param year +// * @param month +// * @param supplierCodeMapWithCenterType +// * @param birGroupByCenter +// * @param activityCenter +// * @param centerKey +// * @return +// */ +// @NotNull +// private TbsCostSubItem.CostCenter buildCostCenterParam(TbsBudgetCostResult result, List tbsScheduleItemBudgets, +// int year, int month, Map> supplierCodeMapWithCenterType, +// Map> birGroupByCenter, +// TbsActivityCenter activityCenter, String centerKey) { +// TbsCostSubItem.CostCenter costCenter = new TbsCostSubItem.CostCenter(activityCenter.getCenterName(), +// activityCenter.getCenterType()+"_"+ activityCenter.getCenterId()); +// //设置目标销量、目标预算 +// for (TbsBudget budget : result.getBudgetList()) { +// boolean eqType = activityCenter.getCenterType().equals(budget.getCenterType()); +// boolean eqCost = activityCenter.getCenterId().equals(budget.getCenterId()); +// if (eqType && eqCost) { +// BigDecimal totalBudgetAmount = BigDecimal.ZERO; +// BigDecimal totalPreDispatchAmount = BigDecimal.ZERO; +// //从命中的预算周期中取出目标发货 和 目标预算 进行合计 +// for (TbsScheduleItemBudget itemBudget : tbsScheduleItemBudgets) { +// if (itemBudget.getBudgetId().equals(budget.getId())) { +// if (itemBudget.getBudgetAmount() != null) { +// totalBudgetAmount = totalBudgetAmount.add(itemBudget.getBudgetAmount()); +// } +// if (itemBudget.getPreDispatchAmount() != null) { +// totalPreDispatchAmount = totalBudgetAmount.add(itemBudget.getPreDispatchAmount()); +// } +// } +// } +// costCenter.setAreaBudget(totalBudgetAmount); +// costCenter.setTargetSales(totalPreDispatchAmount); +// if (totalPreDispatchAmount.compareTo(BigDecimal.ZERO) != 0) { +// costCenter.setTargetExpenseRate(totalBudgetAmount.divide(totalPreDispatchAmount,2, BigDecimal.ROUND_DOWN)); +// } +// //暂保持目标相关数据一致 +// costCenter.setYtdTargetSales(costCenter.getTargetSales().setScale(2,BigDecimal.ROUND_DOWN)); +// costCenter.setYtdTargetBudget(costCenter.getAreaBudget().setScale(2, RoundingMode.DOWN)); +// costCenter.setYtdTargetExpenseRate(costCenter.getTargetExpenseRate().setScale(2, RoundingMode.DOWN)); +//// costCenter.setQtdTargetSales(costCenter.getTargetSales()); +//// costCenter.setQtdTargetBudget(costCenter.getAreaBudget()); +//// costCenter.setQtdTargetExpenseRate(costCenter.getTargetExpenseRate()); +//// costCenter.setMtdTargetSales(); +//// costCenter.setMtdTargetBudget(); +//// costCenter.setMtdTargetExpenseRate(); +// break; +// +// } +// } +// //发货金额 +// List erpDispatchSumVoList = supplierCodeMapWithCenterType.get(centerKey); +// +// //所有相关费率记录 +// List centerGoods = birGroupByCenter.get(centerKey); +// if(CollectionUtil.isNotEmpty(centerGoods)){ +// //年费率 +// TbsCenterGoodBirDTO bir4Year = this.getTbsCenterGoodBirDTO(centerGoods,erpDispatchSumVoList); +// costCenter.setYtdRealSales(bir4Year.getRealSales()); +// costCenter.setYtdRealCost(bir4Year.getRealCost()); +// costCenter.setYtdRealExpenseRate(bir4Year.getRealExpenseRate()); +// +// //季度 +// List yearMonthList =QuarterUtil.getQuarterNumbers(year, month); +// List centerGoodsQuarter = centerGoods.stream() +// .filter(a-> yearMonthList.contains(a.getKeyNum())) +// .collect(Collectors.toList()); +// TbsCenterGoodBirDTO bir4Quarter = this.getTbsCenterGoodBirDTO(centerGoodsQuarter,erpDispatchSumVoList); +// costCenter.setQtdRealSales(bir4Quarter.getRealSales()); +// costCenter.setQtdRealCost(bir4Quarter.getRealCost()); +// costCenter.setQtdRealExpenseRate(bir4Quarter.getRealExpenseRate()); +// +// //月份 +// String mStr = month >9? month +"":"0"+ month; +// Integer currYearMonth = Integer.parseInt(year +mStr); +// List centerGoodsM = centerGoods.stream() +// .filter(a-> currYearMonth.equals(a.getKeyNum())) +// .collect(Collectors.toList()); +// TbsCenterGoodBirDTO bir4Month = this.getTbsCenterGoodBirDTO(centerGoodsM,erpDispatchSumVoList); +// costCenter.setMtdRealSales(bir4Month.getRealSales()); +// costCenter.setMtdRealCost(bir4Month.getRealCost()); +// costCenter.setMtdRealExpenseRate(bir4Month.getRealExpenseRate()); +// } +// return costCenter; +// } + +// /** +// * 创建 成本中心 DTO(弃) +// * @param centerGoods +// * @param erpDispatchSumVoList +// * @return +// */ +// @NotNull +// private TbsCenterGoodBirDTO getTbsCenterGoodBirDTO(List centerGoods,List erpDispatchSumVoList) { +// BigDecimal totalRealDispatch = BigDecimal.ZERO; +// BigDecimal totalRealCost; +// BigDecimal totalRealCheck = BigDecimal.ZERO; +// BigDecimal totalRealRelease = BigDecimal.ZERO; +// for (BirActivityCenterGoods centerGood : centerGoods) { +// totalRealCheck = totalRealCheck.add(centerGood.getSplitUsedAmount()); +// totalRealRelease = totalRealRelease.add(centerGood.getSplitReleaseAmount()); +// for (ErpDispatchSumVo dispatchSumVo : erpDispatchSumVoList) { +// if(centerGood.getKeyNum().equals(dispatchSumVo.getYearMonth())){ +// totalRealDispatch = totalRealDispatch.add(dispatchSumVo.getDispatchSumCost()); +// } +// } +// } +// totalRealCost = totalRealCheck.add(totalRealRelease); +// TbsCenterGoodBirDTO birDTO = new TbsCenterGoodBirDTO(); +// birDTO.setRealCost(totalRealCost); +// birDTO.setRealCheck(totalRealCheck); +// birDTO.setRealRelease(totalRealRelease); +// birDTO.initRealExpenseRate(); +// return birDTO; +// } /** diff --git a/src/main/java/com/qs/serve/task/BirTask.java b/src/main/java/com/qs/serve/task/BirTask.java index d7476119..b6a7691a 100644 --- a/src/main/java/com/qs/serve/task/BirTask.java +++ b/src/main/java/com/qs/serve/task/BirTask.java @@ -1,5 +1,6 @@ package com.qs.serve.task; +import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; import com.qs.serve.task.controller.TaskActivityController; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -7,6 +8,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.time.LocalDate; + /** * @author YenHex * @since 2023/7/14 @@ -17,11 +20,14 @@ import org.springframework.stereotype.Component; @ConditionalOnProperty(value = "project.task", havingValue = "true") public class BirTask { - TaskActivityController activityController; + private final BirActivityCenterGoodsService birActivityCenterGoodsService; @Scheduled(cron="0 0 1 * * ?") public void buildTempTable(){ - activityController.taskBir(null); + int year = LocalDate.now().getYear(); + for (int i = 1;i < 13; i++) { + birActivityCenterGoodsService.buildReport(year,i); + } } } From dfee8c94cbb12a9ab189ef540a03ef1916b67f26 Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 15:55:22 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=8F=B0=E5=B8=90=E5=8F=91=E8=B4=A7=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/task/ErpDipatchTask.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/main/java/com/qs/serve/task/ErpDipatchTask.java diff --git a/src/main/java/com/qs/serve/task/ErpDipatchTask.java b/src/main/java/com/qs/serve/task/ErpDipatchTask.java new file mode 100644 index 00000000..d52d6079 --- /dev/null +++ b/src/main/java/com/qs/serve/task/ErpDipatchTask.java @@ -0,0 +1,33 @@ +package com.qs.serve.task; + +import com.qs.serve.modules.bir.mapper.BirReportAccountBookMapper; +import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; + +/** + * @author YenHex + * @since 2023/7/14 + */ +@Slf4j +@Component +@AllArgsConstructor +@ConditionalOnProperty(value = "project.task", havingValue = "true") +public class ErpDipatchTask { + + private final BirReportAccountBookMapper birReportAccountBookMapper; + + @Scheduled(cron="0 0 1 * * ?") + public void buildTempTable(){ + birReportAccountBookMapper.buildAllDispatch(); + birReportAccountBookMapper.buildRegionDispatch(); + birReportAccountBookMapper.buildBizRegionDispatch(); + birReportAccountBookMapper.buildCustomerDispatch(); + } + +} From dc0eb4fdc436b93e231e004755b470c85d9958b4 Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 15:55:35 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=8F=B0=E5=B8=90=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/BirReportAccountBookMapper.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/qs/serve/modules/bir/mapper/BirReportAccountBookMapper.java b/src/main/java/com/qs/serve/modules/bir/mapper/BirReportAccountBookMapper.java index 44d606e7..053b534f 100644 --- a/src/main/java/com/qs/serve/modules/bir/mapper/BirReportAccountBookMapper.java +++ b/src/main/java/com/qs/serve/modules/bir/mapper/BirReportAccountBookMapper.java @@ -48,5 +48,24 @@ public interface BirReportAccountBookMapper { @InterceptorIgnore(tenantLine = "true") List> reportAccountBookCenter(@Param("inyear")String inyear); + @Select("call build_region_dispatch()") + @Options(statementType = StatementType.CALLABLE) + @InterceptorIgnore(tenantLine = "true") + void buildRegionDispatch(); + + @Select("call build_bizregion_dispatch()") + @Options(statementType = StatementType.CALLABLE) + @InterceptorIgnore(tenantLine = "true") + void buildBizRegionDispatch(); + + @Select("call build_customer_dispatch()") + @Options(statementType = StatementType.CALLABLE) + @InterceptorIgnore(tenantLine = "true") + void buildCustomerDispatch(); + + @Select("call build_all_dispatch()") + @Options(statementType = StatementType.CALLABLE) + @InterceptorIgnore(tenantLine = "true") + void buildAllDispatch(); } From fa9984a4abddcf5cc4dd20ef38a8722e1dfeb67d Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 15:56:05 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=88=90=E6=9C=AC=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E8=B4=B9=E7=94=A8=E7=8E=87=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bir/controller/BirRoiRateController.java | 20 ++++++++--- .../bir/service/BirCenterRateService.java | 5 ++- .../impl/BirCenterRateServiceImpl.java | 35 +++++++++++++++---- .../tbs/entity/dto/TbsCostSubItem.java | 2 ++ 4 files changed, 50 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index b89696d0..8c671949 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java @@ -14,18 +14,15 @@ import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.so.BirCostRoiSo; import com.qs.serve.modules.bir.entity.vo.*; -import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; -import com.qs.serve.modules.bir.service.BirBaseActivityService; -import com.qs.serve.modules.bir.service.BirReportAccountBookService; +import com.qs.serve.modules.bir.service.*; import com.qs.serve.modules.tbs.common.TbsCenterType; +import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.service.TbsBudgetService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; -import com.qs.serve.modules.bir.service.BirRoiRateService; - import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -46,6 +43,8 @@ public class BirRoiRateController { private BirActivityCenterGoodsService activityCenterGoodsService; private BirReportAccountBookService birReportAccountBookService; private TbsBudgetService tbsBudgetService; + private BirCenterRateService birCenterRateService; + /** * 台账数据集 @@ -141,6 +140,17 @@ public class BirRoiRateController { return R.ok(vo); } + /** + * 获取成本中心费率 + * @param id + * @return + */ + @RepeatSubmit + @GetMapping("/centerRateByCostApplyId") + public R> centerRateByCostApplyId(Long id){ + return R.ok(birCenterRateService.findCostCenterDataByCostApplyId(id)); + } + } diff --git a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java index 70bdb8c9..9baeac30 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java +++ b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java @@ -2,7 +2,10 @@ package com.qs.serve.modules.bir.service; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; +import java.util.List; + public interface BirCenterRateService { - public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName); + TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName); + List findCostCenterDataByCostApplyId(Long id); } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java index d14b9674..087f044c 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java @@ -11,6 +11,7 @@ import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO; import com.qs.serve.modules.bir.entity.so.BirCostRoiSo; import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo; import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo; +import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper; import com.qs.serve.modules.bir.mapper.BirRoiRateMapper; import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; import com.qs.serve.modules.bir.service.BirCenterRateService; @@ -22,10 +23,12 @@ import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; import com.qs.serve.modules.tbs.common.util.QuarterUtil; +import com.qs.serve.modules.tbs.entity.TbsActivityCenter; import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; +import com.qs.serve.modules.tbs.mapper.TbsActivityCenterMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; import lombok.AllArgsConstructor; @@ -36,10 +39,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.Month; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -56,9 +56,32 @@ public class BirCenterRateServiceImpl implements BirCenterRateService { private TbsBudgetMapper tbsBudgetMapper; private BirRoiRateService birRoiRateService; private final ErpDispatchDataMapper dispatchDataMapper; - private BirActivityCenterGoodsService birActivityCenterGoodsService; + private BirActivityCenterGoodsMapper birActivityCenterGoodsMapper; + private TbsActivityCenterMapper tbsActivityCenterMapper; + public List findCostCenterDataByCostApplyId(Long id){ + List centerDataList = new ArrayList<>(); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsActivityCenter::getCostApplyId,id); + List tbsActivityCenters = tbsActivityCenterMapper.selectList(lqw); + if(tbsActivityCenters.size()==0){ + return centerDataList; + } + + Map> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a->a.getCenterType()+"-"+a.getCenterId())); + List centerList = centerMapList.values().stream().map(a->a.get(0)).collect(Collectors.toList()); + + for(TbsActivityCenter center : centerList) { + TbsCostSubItem.CostCenterTranStr costCenter = this.buildCostCenter(center.getCenterType(), center.getCenterId(), center.getCenterName()); + costCenter.setCenterId(center.getCenterId()); + costCenter.setCentertype(center.getCenterType()); + centerDataList.add(costCenter); + } + return centerDataList; + } + public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType,String centerId,String centerName){ @@ -117,7 +140,7 @@ public class BirCenterRateServiceImpl implements BirCenterRateService { birLwq.eq(BirActivityCenterGoods::getCenterType,centerType); birLwq.ge(BirActivityCenterGoods::getKeyNum,startMonthNum); birLwq.le(BirActivityCenterGoods::getKeyNum,endMonthNum); - List birCenterCost = birActivityCenterGoodsService.list(birLwq); + List birCenterCost = birActivityCenterGoodsMapper.selectList(birLwq); /* --------------- 实际费用率YTD --------------------------------------------- */ BigDecimal ytdRealDipatch = dispatchSumVos.stream().map(a->a.getDispatchSumCost()).reduce(BigDecimal.ZERO,BigDecimal::add); 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 63b6ae39..aeb44329 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 @@ -106,6 +106,8 @@ public class TbsCostSubItem { } private String chengBenZhongXin; private String chengBenZhongXinId; + private String centertype; + private String centerId; //区域预算,预算金额 private String areaBudget; From 1dae6e80eecfe1cf1017f971571c4be5f82e2cd7 Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 24 Jul 2023 17:58:45 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E7=8E=87=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=94=BF=E7=AD=96ID=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bir/controller/BirRoiRateController.java | 4 +- .../bir/service/BirCenterRateService.java | 2 +- .../impl/BirCenterRateServiceImpl.java | 56 ++++++++++++------- .../tbs/entity/dto/TbsCostSubItem.java | 1 + 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index 8c671949..09f2f9db 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java @@ -147,8 +147,8 @@ public class BirRoiRateController { */ @RepeatSubmit @GetMapping("/centerRateByCostApplyId") - public R> centerRateByCostApplyId(Long id){ - return R.ok(birCenterRateService.findCostCenterDataByCostApplyId(id)); + public R> centerRateByCostApplyId(Long costApplyId,Long policyId){ + return R.ok(birCenterRateService.findCostCenterDataByCostApplyId(costApplyId,policyId)); } diff --git a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java index 9baeac30..e25788e0 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java +++ b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java @@ -7,5 +7,5 @@ import java.util.List; public interface BirCenterRateService { TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName); - List findCostCenterDataByCostApplyId(Long id); + List findCostCenterDataByCostApplyId(Long costApplyId,Long policyId); } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java index 087f044c..c0560363 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java @@ -23,14 +23,13 @@ import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; import com.qs.serve.modules.tbs.common.util.QuarterUtil; -import com.qs.serve.modules.tbs.entity.TbsActivityCenter; -import com.qs.serve.modules.tbs.entity.TbsBudget; -import com.qs.serve.modules.tbs.entity.TbsCostApply; -import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; +import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.mapper.TbsActivityCenterMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; +import com.qs.serve.modules.tzc.entity.TzcPolicyItem; +import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -58,27 +57,44 @@ public class BirCenterRateServiceImpl implements BirCenterRateService { private final ErpDispatchDataMapper dispatchDataMapper; private BirActivityCenterGoodsMapper birActivityCenterGoodsMapper; private TbsActivityCenterMapper tbsActivityCenterMapper; + private TzcPolicyItemMapper tzcPolicyItemMapper; - public List findCostCenterDataByCostApplyId(Long id){ + public List findCostCenterDataByCostApplyId(Long costApplyId,Long policyId){ List centerDataList = new ArrayList<>(); - - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(TbsActivityCenter::getCostApplyId,id); - List tbsActivityCenters = tbsActivityCenterMapper.selectList(lqw); - if(tbsActivityCenters.size()==0){ - return centerDataList; + if(costApplyId!=null) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsActivityCenter::getCostApplyId, costApplyId); + List tbsActivityCenters = tbsActivityCenterMapper.selectList(lqw); + if (tbsActivityCenters.size() == 0) { + return centerDataList; + } + + Map> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a -> a.getCenterType() + "-" + a.getCenterId())); + List centerList = centerMapList.values().stream().map(a -> a.get(0)).collect(Collectors.toList()); + for(TbsActivityCenter center : centerList) { + TbsCostSubItem.CostCenterTranStr costCenter = this.buildCostCenter(center.getCenterType(), center.getCenterId(), center.getCenterName()); + costCenter.setCenterId(center.getCenterId()); + costCenter.setCentertype(center.getCenterType()); + costCenter.setCenterCode(center.getCenterCode()); + centerDataList.add(costCenter); + } } - - Map> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a->a.getCenterType()+"-"+a.getCenterId())); - List centerList = centerMapList.values().stream().map(a->a.get(0)).collect(Collectors.toList()); - - for(TbsActivityCenter center : centerList) { - TbsCostSubItem.CostCenterTranStr costCenter = this.buildCostCenter(center.getCenterType(), center.getCenterId(), center.getCenterName()); - costCenter.setCenterId(center.getCenterId()); - costCenter.setCentertype(center.getCenterType()); - centerDataList.add(costCenter); + if(policyId!=null) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TzcPolicyItem::getPolicyId,policyId); + List policyItems = tzcPolicyItemMapper.selectList(lqw); + Map> centerMapList = policyItems.stream().collect(Collectors.groupingBy(a -> a.getCenterType() + "-" + a.getCenterId())); + List centerList = centerMapList.values().stream().map(a -> a.get(0)).collect(Collectors.toList()); + for(TzcPolicyItem center : centerList) { + TbsCostSubItem.CostCenterTranStr costCenter = this.buildCostCenter(center.getCenterType(), center.getCenterId(), center.getCenterName()); + costCenter.setCenterId(center.getCenterId()); + costCenter.setCentertype(center.getCenterType()); + costCenter.setCenterCode(center.getCenterCode()); + centerDataList.add(costCenter); + } } + return centerDataList; } 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 aeb44329..db72568e 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 @@ -107,6 +107,7 @@ public class TbsCostSubItem { private String chengBenZhongXin; private String chengBenZhongXinId; private String centertype; + private String centerCode; private String centerId; //区域预算,预算金额