From db26d503388a317e5c3997816f3d96ea57883d3a Mon Sep 17 00:00:00 2001 From: Yen Date: Sat, 12 Nov 2022 16:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=AE=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tbs/controller/TbsBudgetController.java | 12 +-- .../modules/tbs/entity/bo/TbsBudgetBo.java | 14 ++- .../service/impl/TbsBudgetServiceImpl.java | 96 ++++++++++++++++++- .../mapper/tbs/TbsBudgetConditionMapper.xml | 63 ++++++++++++ 4 files changed, 174 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml 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 a73c9922..6ddf4f60 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 @@ -78,8 +78,6 @@ public class TbsBudgetController { return R.ok(tbsBudget); } - - /** * 更新 * @param param @@ -89,9 +87,8 @@ public class TbsBudgetController { @SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.UPDATE) @PreAuthorize("hasRole('tbs:budget:update')") public R updateById(@RequestBody @Valid TbsBudgetBo param){ - TbsBudget entity = CopierUtil.copy(param,new TbsBudget()); - boolean result = tbsBudgetService.updateById(entity); - return R.isTrue(result); + tbsBudgetService.modify(param); + return R.ok(); } /** @@ -103,9 +100,8 @@ public class TbsBudgetController { @SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.INSERT) @PreAuthorize("hasRole('tbs:budget:insert')") public R save(@RequestBody @Valid TbsBudgetBo param){ - TbsBudget entity = CopierUtil.copy(param,new TbsBudget()); - boolean result = tbsBudgetService.save(entity); - return R.isTrue(result); + tbsBudgetService.modify(param); + return R.ok(); } /** 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 73a37d95..cb370217 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 @@ -14,7 +14,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import javax.validation.constraints.NotBlank; - +import java.util.List; /** * 预算 Bo * @author YenHex @@ -44,7 +44,19 @@ public class TbsBudgetBo implements Serializable { @Length(max = 255,message = "备注长度不能超过255字") private String remark; + /** 品牌Id列表 */ + private List brandIds; + + /** 品类Id列表 */ + private List categoryIds; + + /** 系列Id列表 */ + private List seriesIds; + /** 商品Id列表(前端显示为sku) */ + private List spuIds; + /** skuId列表(前端显示为单品) */ + private List skuIds; } 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 db3a3969..29d99b6a 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 @@ -1,14 +1,27 @@ package com.qs.serve.modules.tbs.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.service.BmsCostCenterService; import com.qs.serve.modules.bms.service.BmsSubjectService; +import com.qs.serve.modules.goods.entity.GoodsCategory; +import com.qs.serve.modules.goods.entity.GoodsSku; +import com.qs.serve.modules.goods.entity.GoodsSpu; +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.tbs.common.TbsGoodsType; +import com.qs.serve.modules.tbs.entity.TbsActivityGoods; +import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; import com.qs.serve.modules.tbs.entity.TbsSchedule; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityGoodsBo; import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo; +import com.qs.serve.modules.tbs.service.TbsBudgetConditionService; import com.qs.serve.modules.tbs.service.TbsScheduleService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,6 +30,9 @@ import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.service.TbsBudgetService; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; +import java.util.*; +import java.util.stream.Collectors; + /** * 预算 服务实现类 * @author YenHex @@ -30,10 +46,15 @@ public class TbsBudgetServiceImpl extends ServiceImpl private final BmsSubjectService subjectService; private final BmsCostCenterService costCenterService; private final TbsScheduleService scheduleService; + private final TbsBudgetConditionService budgetConditionService; + + private final GoodsSkuService goodsSkuService; + private final GoodsSpuService goodsSpuService; + private final GoodsCategoryService goodsCategoryService; @Override public void modify(TbsBudgetBo budgetBo) { - TbsBudget budget = null; + TbsBudget budget; if(budgetBo.getId()!=null){ budget = this.getById(budgetBo.getId()); if(budget==null){ @@ -54,10 +75,81 @@ public class TbsBudgetServiceImpl extends ServiceImpl budget.setScheduleId(schedule.getId()); budget.setScheduleCode(schedule.getCode()); budget.setScheduleName(schedule.getName()); - this.saveOrUpdate(budget); + //删除条件 + if(budget.getId()!=null){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId()); + budgetConditionService.remove(lqw); + this.saveOrUpdate(budget); + } //设置条件 + List budgetConditions = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(budgetBo.getSkuIds())){ + List skuList = goodsSkuService.listByIds(budgetBo.getSkuIds()); + for (GoodsSku sku : skuList) { + GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId()); + GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst()); + GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond()); + GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird()); + TbsBudgetCondition condition = new TbsBudgetCondition(); + condition.setBudgetId(budget.getId()); + condition.setTargetType(TbsGoodsType.sku.name()); + condition.setTargetId(sku.getId()); + condition.setTargetCode(sku.getSkuCode()); + condition.setTargetName(sku.getSpecInfos()); + condition.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId()); + condition.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos()); + budgetConditions.add(condition); + } + } + if(CollectionUtil.isNotEmpty(budgetBo.getSpuIds())){ + List spuList = goodsSpuService.listByIds(budgetBo.getSpuIds()); + for (GoodsSpu goodsSpu : spuList) { + GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst()); + GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond()); + GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird()); + TbsBudgetCondition condition = new TbsBudgetCondition(); + condition.setBudgetId(budget.getId()); + condition.setTargetType(TbsGoodsType.spu.name()); + condition.setTargetId(goodsSpu.getId()); + condition.setTargetCode(goodsSpu.getSpuCode()); + condition.setTargetName(goodsSpu.getName()); + condition.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()); + condition.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()); + budgetConditions.add(condition); + } + } + budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getSeriesIds())); + budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getCategoryIds())); + budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getBrandIds())); + budgetConditionService.saveBatch(budgetConditions); + } + /** + * 建立类目条件 + * @param budgetId + * @param categoryIds + * @return + */ + public List buildCategoryCondition(Long budgetId,List categoryIds){ + List budgetConditions = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(categoryIds)){ + List categoryList = goodsCategoryService.listByIds(categoryIds); + for (GoodsCategory category : categoryList) { + TbsBudgetCondition condition = new TbsBudgetCondition(); + condition.setBudgetId(budgetId); + condition.setTargetType(TbsGoodsType.series.name()); + condition.setTargetId(category.getId()); + condition.setTargetCode(category.getCode()); + condition.setTargetName(category.getName()); + condition.setTargetLevelPathIds(category.getLevelPath()); + condition.setTargetLevelPathNames(category.getLevelPathNames()); + budgetConditions.add(condition); + } + } + return budgetConditions; } + } diff --git a/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml new file mode 100644 index 00000000..60dedea7 --- /dev/null +++ b/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + tbs_budget_condition.`id`, + tbs_budget_condition.`budgt_id`, + tbs_budget_condition.`target_type`, + tbs_budget_condition.`target_id`, + tbs_budget_condition.`target_code`, + tbs_budget_condition.`target_name`, + tbs_budget_condition.`target_level_path_ids`, + tbs_budget_condition.`target_level_path_names`, + tbs_budget_condition.`remark`, + tbs_budget_condition.`create_time`, + tbs_budget_condition.`update_time`, + tbs_budget_condition.`tenant_id`, + tbs_budget_condition.`create_by`, + tbs_budget_condition.`update_by`, + tbs_budget_condition.`del_flag` + + + +