diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java index 268b1acb..906389cd 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java @@ -75,21 +75,21 @@ public class BmsChannelPointController { if(StringUtils.hasText(param.getPointLevel())){ channelPointWrapper.eq(BmsChannelPoint::getPointLevel,param.getPointLevel()); } - - List list = bmsChannelPointService.list(channelPointWrapper); -// if(list.size()>0){ -// List channelIds = list.stream().map(BmsChannelPoint::getChannelId).distinct().collect(Collectors.toList()); -// List channels = bmsChannelService.listByIds(channelIds); -// for (BmsChannelPoint channelPoint : list) { -// for (BmsChannel channel : channels) { -// if(channelPoint.getChannelId().equals(channel.getId())){ -// channelPoint.setChannelName(channel.getChannelName()); -// break; -// } -// } -// } -// } + for (BmsChannelPoint channelPoint : list) { + if(StringUtils.hasText(channelPoint.getBizRegionPath())){ + String[] bizRegions = channelPoint.getBizRegionPath().split("_"); + if(bizRegions.length>0){ + channelPoint.setBizRegionName(bizRegions[bizRegions.length-1]); + } + } + if(StringUtils.hasText(channelPoint.getSaleRegionPath())){ + String[] regions = channelPoint.getSaleRegionPath().split("_"); + if(regions.length>0){ + channelPoint.setSaleRegionName(regions[regions.length-1]); + } + } + } return R.byPageHelperList(list); } @@ -103,8 +103,6 @@ public class BmsChannelPointController { @PreAuthorize("hasRole('bms:channelPoint:query')") public R getById(@PathVariable("id") String id){ BmsChannelPoint bmsChannelPoint = bmsChannelPointService.getById(id); -// BmsChannel channel = bmsChannelService.getById(bmsChannelPoint.getChannelId()); -// bmsChannelPoint.setChannelName(channel.getChannelName()); BmsRegion bmsRegion = bmsRegionService.getById(bmsChannelPoint.getSaleRegionId()); if(bmsRegion!=null){ bmsChannelPoint.setSaleRegionName(bmsRegion.getName()); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java index 37b8492b..39fda273 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java @@ -268,7 +268,7 @@ public class BmsRegion2Controller { bmsRegion2Service.updateById(param); } } - bmsRegion2Service.flushAllLevel(false); + bmsRegion2Service.flushAllLevel(true); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java index 7ff07b2f..900ad943 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java @@ -74,6 +74,8 @@ public class BmsChannelPoint implements Serializable { @Length(max = 255,message = "销售区域长度不能超过255字") private String saleRegionPath; + private String saleRegionPathIds; + /** 行政区域id */ @NotNull(message = "行政区域id不能为空") private String bizRegionId; @@ -83,6 +85,8 @@ public class BmsChannelPoint implements Serializable { @Length(max = 255,message = "行政区域长度不能超过255字") private String bizRegionPath; + private String bizRegionPathIds; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java index 85782008..0191a09f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java @@ -99,6 +99,9 @@ public class BmsRuleMainService { if(StringUtils.hasText(supplier.getRegionThird())){ regionIds.add(supplier.getRegionThird()); } + if(StringUtils.hasText(supplier.getRegionFourthly())){ + regionIds.add(supplier.getRegionFourthly()); + } LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(BmsRuleRegion::getRuleId,ruleIds); lqw.in(BmsRuleRegion::getRegionId,regionIds); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java index 71e87b61..d50ba4d7 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java @@ -48,19 +48,13 @@ public class BmsChannelPointServiceImpl extends ServiceImpl list = tbsBudgetService.listByIds(budgetIds); List voList = new ArrayList<>(); for (TbsBudget budget : list) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId()); - List budgetConditions = tbsBudgetConditionService.list(lqw); - Map> listMap = budgetConditions.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType)); - TbsBudgetVo budgetVo = CopierUtil.copy(budget,new TbsBudgetVo()); - budgetVo.setBrandConditions(listMap.get(TbsGoodsType.brand.name())); - budgetVo.setCategoryConditions(listMap.get(TbsGoodsType.category.name())); - budgetVo.setSeriesConditions(listMap.get(TbsGoodsType.series.name())); - budgetVo.setSkuConditions(listMap.get(TbsGoodsType.sku.name())); - budgetVo.setSpuConditions(listMap.get(TbsGoodsType.spu.name())); - LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); - lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId()); - List scheduleItemBudgets = tbsScheduleItemBudgetService.list(lqw2); - budgetVo.setScheduleItem(scheduleItemBudgets); + TbsBudgetVo budgetVo = toVoEntity(budget); voList.add(budgetVo); } return R.byPageHelperList(list,voList); @@ -108,9 +95,9 @@ public class TbsBudgetController { @GetMapping("/getById/{id}") @SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.QUERY) @PreAuthorize("hasRole('tbs:budget:query')") - public R getById(@PathVariable("id") String id){ - TbsBudget tbsBudget = tbsBudgetService.getById(id); - return R.ok(tbsBudget); + public R getById(@PathVariable("id") String id){ + TbsBudget budget = tbsBudgetService.getById(id); + return R.ok(toVoEntity(budget)); } /** @@ -129,6 +116,36 @@ public class TbsBudgetController { return R.ok(); } + private TbsBudgetVo toVoEntity(TbsBudget budget){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId()); + List budgetConditions = tbsBudgetConditionService.list(lqw); + Map> listMap = budgetConditions.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType)); + TbsBudgetVo budgetVo = CopierUtil.copy(budget,new TbsBudgetVo()); + budgetVo.setBrandConditions(listMap.get(TbsGoodsType.brand.name())); + budgetVo.setCategoryConditions(listMap.get(TbsGoodsType.category.name())); + budgetVo.setSeriesConditions(listMap.get(TbsGoodsType.series.name())); + List skuCondition = listMap.get(TbsGoodsType.sku.name()); + if(skuCondition!=null){ + for (TbsBudgetCondition budgetCondition : skuCondition) { + try { + String[] names = budgetCondition.getTargetLevelPathNames().split("_"); + budgetCondition.setSkuName(names[names.length-1]); + budgetCondition.setSpuName(names[names.length-2]); + } catch (Exception e) { + log.error("格式错误:{}",budgetCondition.getTargetLevelPathNames()); + } + } + } + budgetVo.setSkuConditions(skuCondition); + budgetVo.setSpuConditions(listMap.get(TbsGoodsType.spu.name())); + LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId()); + List scheduleItemBudgets = tbsScheduleItemBudgetService.list(lqw2); + budgetVo.setScheduleItem(scheduleItemBudgets); + return budgetVo; + } + /** * 更新状态 * @param param 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 8ab9be1e..139e1d3f 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 @@ -50,7 +50,7 @@ public class TbsBudget implements Serializable { /** 成本中心id */ @NotNull(message = "成本中心id不能为空") - private Long centerId; + private String centerId; @NotNull(message = "成本中心类型不能为空") private String centerType; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java index 2612eb61..fd913447 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java @@ -96,5 +96,10 @@ public class TbsBudgetCondition implements Serializable { @JsonProperty private String delFlag; + @TableField(exist = false) + private String spuName; + + @TableField(exist = false) + private String skuName; } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java index 27cd31c0..61dfd21b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java @@ -35,6 +35,9 @@ public class TbsScheduleItemBudget implements Serializable { @NotNull(message = "考核id不能为空") private Long scheduleId; + /** 考核项id */ + private Long scheduleItemId; + /** 考核编码 */ @NotBlank(message = "考核编码不能为空") @Length(max = 30,message = "考核编码长度不能超过30字") 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 cfc801bf..a3213704 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 @@ -34,8 +34,15 @@ public class TbsBudgetBo implements Serializable { /** 成本中心id */ @NotNull(message = "成本中心id不能为空") - private Long centerId; - + private String centerId; + + /** + * 成本中心类型: + center, + customer, + bizRegion, + saleRegion, + */ @NotNull(message = "成本中心类型不能为空") private String centerType; 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 aef9fa32..aa7dd3ce 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 @@ -39,7 +39,7 @@ public class TbsBudgetVo implements Serializable { private String subjectName; /** 成本中心id */ - private Long centerId; + private String centerId; private String centerType; @@ -58,6 +58,9 @@ public class TbsBudgetVo implements Serializable { /** 考核期名称 */ private String scheduleName; + /** 费用启用状态 */ + private Integer budgetState; + /** 备注 */ private String remark; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java new file mode 100644 index 00000000..5d03e825 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java @@ -0,0 +1,54 @@ +package com.qs.serve.modules.tbs.service; + +import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.bms.entity.BmsCostCenter; +import com.qs.serve.modules.bms.entity.BmsRegion; +import com.qs.serve.modules.bms.entity.BmsRegion2; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.*; +import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; +import com.qs.serve.modules.tbs.common.TbsCenterType; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author YenHex + * @since 2022/11/18 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsCenterDtoService { + + + private final BmsCostCenterService costCenterService; + private final BmsSupplierService supplierService; + private final BmsRegionService saleRegionService; + private final BmsRegion2Service bizRegionService; + + /** + * 获取成本中心DTO + * @param centerType + * @param centerId + * @return + */ + public TbsCenterDto getCenterDto(String centerType, String centerId){ + if(centerType.equals(TbsCenterType.center.name())){ + BmsCostCenter costCenter = costCenterService.getById(centerId); + return new TbsCenterDto(centerId,costCenter.getCode(),costCenter.getName()); + }else if (centerType.equals(TbsCenterType.customer.name())){ + BmsSupplier supplier4Center = supplierService.getById(centerId); + return new TbsCenterDto(centerId,supplier4Center.getCode(),supplier4Center.getName()); + }else if(centerType.equals(TbsCenterType.saleRegion.name())){ + BmsRegion saleRegion = saleRegionService.getById(centerId); + return new TbsCenterDto(centerId,saleRegion.getCode(),saleRegion.getName()); + }else if (centerType.equals(TbsCenterType.bizRegion.name())){ + BmsRegion2 bizRegion = bizRegionService.getById(centerId); + return new TbsCenterDto(centerId,bizRegion.getCode(),bizRegion.getName()); + } + Assert.throwEx("无法匹配成本中心类型:"+centerType); + return null; + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index c8d5d4f2..774ea54e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -51,12 +51,10 @@ public class TbsActivityServiceImpl extends ServiceImpl private final TbsBudgetConditionService budgetConditionService; private final TbsScheduleItemBudgetService scheduleItemBudgetService; private final TbsScheduleItemService scheduleItemService; + private final TbsCenterDtoService tbsCenterDtoService; private final GoodsSkuService goodsSkuService; private final GoodsSpuService goodsSpuService; @@ -65,14 +67,14 @@ public class TbsBudgetServiceImpl extends ServiceImpl budget = CopierUtil.copy(budgetBo,new TbsBudget()); } BmsSubject subject = subjectService.getById(budgetBo.getSubjectId()); - BmsCostCenter costCenter = costCenterService.getById(budgetBo.getCenterId()); + TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(budgetBo.getCenterType(),budgetBo.getCenterId()); TbsSchedule schedule = scheduleService.getById(budgetBo.getScheduleId()); budget.setSubjectId(subject.getId()); budget.setSubjectCode(subject.getSubjectCode()); budget.setSubjectName(subject.getSubjectName()); - budget.setCenterId(costCenter.getId()); - budget.setCenterCode(costCenter.getCode()); - budget.setCenterName(costCenter.getName()); + budget.setCenterId(centerDto.getId()); + budget.setCenterCode(centerDto.getCenterCode()); + budget.setCenterName(centerDto.getCenterName()); budget.setScheduleId(schedule.getId()); budget.setScheduleCode(schedule.getCode()); budget.setScheduleName(schedule.getName()); @@ -103,6 +105,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl Assert.throwEx("考核期周期需设置金额"); } itemBudget.setId(null); + itemBudget.setScheduleItemId(scheduleItem.getId()); itemBudget.setBudgetId(budget.getId()); scheduleItemBudgets.add(itemBudget); }