From e66666086ab149eaca935fd1afbc123d3b0d36ed Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 12 Jun 2024 08:45:57 +0800 Subject: [PATCH] =?UTF-8?q?opt:=20=E6=8B=86=E5=88=86=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=B1=82=E4=BB=A3=E7=A0=81=20feat=EF=BC=9A?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=B4=E6=9C=9F=E5=93=81=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/dto/CommonIdsParam.java | 16 ++ .../GoodsImminentBatchController.java | 114 ++++++++ .../goods/entity/GoodsImminentBatch.java | 110 +++++++ .../goods/entity/bo/GoodsImminentBatchBo.java | 53 ++++ .../mapper/GoodsImminentBatchMapper.java | 14 + .../service/GoodsImminentBatchService.java | 16 ++ .../impl/GoodsImminentBatchServiceImpl.java | 28 ++ .../tbs/controller/TbsActivityController.java | 271 +----------------- .../controller/TbsActivityController2.java | 130 +++++++++ .../tbs/service/TbsCostApplyPart1Service.java | 14 + .../impl/TbsCostApplyPart1ServiceImpl.java | 260 ++++++++++++++++- 11 files changed, 754 insertions(+), 272 deletions(-) create mode 100644 src/main/java/com/qs/serve/common/model/dto/CommonIdsParam.java create mode 100644 src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java create mode 100644 src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java create mode 100644 src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java create mode 100644 src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java diff --git a/src/main/java/com/qs/serve/common/model/dto/CommonIdsParam.java b/src/main/java/com/qs/serve/common/model/dto/CommonIdsParam.java new file mode 100644 index 00000000..ba8c8661 --- /dev/null +++ b/src/main/java/com/qs/serve/common/model/dto/CommonIdsParam.java @@ -0,0 +1,16 @@ +package com.qs.serve.common.model.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2024/6/11 + */ +@Data +public class CommonIdsParam { + + private List ids; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java new file mode 100644 index 00000000..71e580b6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java @@ -0,0 +1,114 @@ +package com.qs.serve.modules.goods.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.goods.entity.GoodsSku; +import com.qs.serve.modules.goods.entity.bo.GoodsImminentBatchBo; +import com.qs.serve.modules.goods.service.GoodsSkuService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.goods.entity.GoodsImminentBatch; +import com.qs.serve.modules.goods.service.GoodsImminentBatchService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 商品 临期批次 + * @author YenHex + * @since 2024-06-11 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("goods/imminentBatch") +public class GoodsImminentBatchController { + + private GoodsImminentBatchService goodsImminentBatchService; + private GoodsSkuService goodsSkuService; + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(GoodsImminentBatch param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = goodsImminentBatchService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.QUERY) + public R getById(@PathVariable("id") String id){ + GoodsImminentBatch goodsImminentBatch = goodsImminentBatchService.getById(id); + return R.ok(goodsImminentBatch); + } + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.UPDATE) + public R updateById(@RequestBody @Valid GoodsImminentBatchBo param){ + //param.setBatchCode(null); + param.setSkuId(null); + GoodsImminentBatch entity = CopierUtil.copy(param,new GoodsImminentBatch()); + boolean result = goodsImminentBatchService.updateById(entity); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.INSERT) + public R save(@RequestBody @Valid GoodsImminentBatchBo param){ + GoodsImminentBatch entity = CopierUtil.copy(param,new GoodsImminentBatch()); + GoodsSku goodsSku = goodsSkuService.getById(param.getSkuId()); + entity.setSkuCode(goodsSku.getSkuCode()); + entity.setSkuName(goodsSku.getSkuName()); + if(goodsImminentBatchService.checkExist(param.getBatchCode(),param.getSkuId())){ + return R.error("已重复"); + } + boolean result = goodsImminentBatchService.save(entity); + return R.isTrue(result); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.DELETE) + @PreAuthorize("hasRole('goods:imminentBatch:delete')") + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = goodsImminentBatchService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java new file mode 100644 index 00000000..7f192aa7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java @@ -0,0 +1,110 @@ +package com.qs.serve.modules.goods.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 临期批次 实体类 + * @author YenHex + * @since 2024-06-11 + */ +@Data +@TableName("goods_imminent_batch") +public class GoodsImminentBatch implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Integer id; + + /** skuID */ + @NotBlank(message = "skuID不能为空") + @Length(max = 255,message = "skuID长度不能超过255字") + private String skuId; + + /** sku编码 */ + @Length(max = 255,message = "sku编码长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String skuCode; + + /** sku名称 */ + @Length(max = 255,message = "sku名称长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String skuName; + + /** 批号 */ + @NotBlank(message = "批号不能为空") + @Length(max = 255,message = "批号长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String batchCode; + + /** 数量 */ + private Integer quantity; + + /** 已下单数量 */ + private Integer orderQuantity; + + /** 截止销售时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate endDate; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 查询开始 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryStartDate; + + /** 查询结束 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryEndDate; + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java new file mode 100644 index 00000000..bdafed58 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java @@ -0,0 +1,53 @@ +package com.qs.serve.modules.goods.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 临期批次 Bo + * @author YenHex + * @since 2024-06-11 + */ +@Data +public class GoodsImminentBatchBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Integer id; + + /** skuID */ + @NotBlank(message = "skuID不能为空") + @Length(max = 255,message = "skuID长度不能超过255字") + private String skuId; + + /** 批号 */ + @NotBlank(message = "批号不能为空") + @Length(max = 255,message = "批号长度不能超过255字") + private String batchCode; + + /** 数量 */ + private Integer quantity; + + /** 截止销售时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate endDate; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java new file mode 100644 index 00000000..c4736e2f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.goods.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.goods.entity.GoodsImminentBatch; + +/** + * 临期批次 Mapper + * @author YenHex + * @date 2024-06-11 + */ +public interface GoodsImminentBatchMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java new file mode 100644 index 00000000..892115cc --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java @@ -0,0 +1,16 @@ +package com.qs.serve.modules.goods.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.goods.entity.GoodsImminentBatch; + +/** + * 临期批次 服务接口 + * @author YenHex + * @date 2024-06-11 + */ +public interface GoodsImminentBatchService extends IService { + + boolean checkExist(String batchCode,String skuId); + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java new file mode 100644 index 00000000..d69ca1e3 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java @@ -0,0 +1,28 @@ +package com.qs.serve.modules.goods.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.goods.entity.GoodsImminentBatch; +import com.qs.serve.modules.goods.service.GoodsImminentBatchService; +import com.qs.serve.modules.goods.mapper.GoodsImminentBatchMapper; + +/** + * 临期批次 服务实现类 + * @author YenHex + * @since 2024-06-11 + */ +@Slf4j +@Service +@AllArgsConstructor +public class GoodsImminentBatchServiceImpl extends ServiceImpl implements GoodsImminentBatchService { + + @Override + public boolean checkExist(String batchCode, String skuId) { + long count = this.count(new LambdaQueryWrapper().eq(GoodsImminentBatch::getBatchCode,batchCode).eq(GoodsImminentBatch::getSkuId,skuId)); + return count>0; + } +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 7c5c04ab..e31d37be 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -68,7 +68,6 @@ import java.util.stream.Collectors; public class TbsActivityController { private final SysUserService sysUserService; - private final TbsCostApplyService costApplyService; private final TbsActivityService tbsActivityService; private final TbsActivityGoodsService activityGoodsService; @@ -77,28 +76,9 @@ public class TbsActivityController { private final TbsActivityCenterGoodsService activityCenterGoodsService; private final TbsActivityChannelService activityChannelService; private final TbsActivityChannelPointService activityChannelPointService; - - private final GoodsSkuService goodsSkuService; - private final GoodsSpuService goodsSpuService; - private final GoodsCategoryService goodsCategoryService; - - private final BmsSupplierService bmsSupplierService; - private final BmsCostCenterService bmsCostCenterService; - private final BmsRegion2Service bmsRegion2Service; - private final BmsRegionService bmsRegionService; - private final BmsSubjectService bmsSubjectService; - private final BmsSubjectFormService bmsSubjectFormService; - private final VtbVerificationService verificationService; - private final VtbFundFlowService vtbFundFlowService; - private final TbsActivityApplicationService tbsActivityApplicationService; - private final TbsBudgetService tbsBudgetService; - private final TbsBudgetConditionService tbsBudgetConditionService; - private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; private final TbsCostApplyPart1Service tbsCostApplyPart1Service; - private SysAttachService attachService; - TbsActivityDebugApplicationService tbsActivityDebugApplicationService; @GetMapping("/reset/{id}") @@ -141,7 +121,7 @@ public class TbsActivityController { activity.setGoodsList(goodsList); List activitySubjects = activitySubjectService.list(qw); activity.setSubjectCenterList(activitySubjects); - this.buildDetailVo(activity); + tbsCostApplyPart1Service.buildDetailVo(activity); activity.initWarningDay(overflowDays); } return R.ok(list); @@ -266,98 +246,10 @@ public class TbsActivityController { @PreAuthorize("hasRole('tbs:activity:query')") public R getById(@PathVariable("id") String id){ TbsActivity activity = tbsActivityService.getById(id); - this.buildDetailVo(activity); + tbsCostApplyPart1Service.buildDetailVo(activity); return R.ok(activity); } - private void buildDetailVo(TbsActivity activity) { - LambdaQueryWrapper actGoodsLqw = new LambdaQueryWrapper<>(); - actGoodsLqw.eq(TbsActivityGoods::getActivityId,activity.getId()); - actGoodsLqw.orderByDesc(TbsActivityGoods::getTargetName); - List goodsList = activityGoodsService.list(actGoodsLqw); - if(goodsList.size()>0){ - activity.setGoodsType(goodsList.get(0).getTargetType()); - goodsList.forEach(TbsActivityGoods::initSpuSkuName); - goodsList.forEach(TbsActivityGoods::initCategoryNameByPathsName); - } - activity.setGoodsList(goodsList); - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("activity_id", activity.getId()); - List activityChannels = activityChannelService.list(qw); - activity.setCustomChannelList(activityChannels); - if(activityChannels.size()<1){ - List channelPoints = activityChannelPointService.list(qw); - activity.setCustomChannelPointList(channelPoints); - if(channelPoints.size()<1 && activityChannels.size()<1){ - activity.setCustomSupplier(bmsSupplierService.getById(activity.getSupplierId())); - } - } - List activitySubjects = activitySubjectService.list(qw); - List activityCenters = activityCenterService.list(qw); - - TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); - - //成本中心关联出相关预算 - for (TbsActivityCenter center : activityCenters) { - //没通过加载可选的所有预算,已通过加载出选中的预算 - String subjectId = center.getSubjectId()+""; - String centerType = center.getCenterType(); - String centerId = center.getCenterId(); - if(costApply.getChargeState()>0||activity.getCostPassFlag().equals(1)){ - //选中的预算 - String activityId = activity.getId()+""; - List list = tbsScheduleItemBudgetMapper.listByActivityAndSubjectAndCenter( - activityId,subjectId,centerType,centerId); - center.setMatchBudgetList(list); - }else { - //可选的所有预算 - List list = - tbsScheduleItemBudgetMapper.listBySubjectAndCenter(subjectId,centerType,centerId); - center.setMatchBudgetList(list); - } - } - - Map> centerListMap = activityCenters.stream().collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId)); - List subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList()); - List subjectList = bmsSubjectService.listByIds(subjectIds); - List formIds = subjectList.stream().map(BmsSubject::getFormId).distinct().collect(Collectors.toList()); - List subjectForms = null; - if(CollectionUtil.isNotEmpty(formIds)){ - subjectForms = bmsSubjectFormService.listByIds(formIds); - } - for (TbsActivitySubject activitySubject : activitySubjects) { - if(CollectionUtil.isNotEmpty(subjectForms)){ - for (BmsSubject subject : subjectList) { - if(subject.getId().equals(activitySubject.getSubjectId())&&subject.getFormId()!=null){ - for (BmsSubjectForm subjectForm : subjectForms) { - if(subjectForm.getId().equals(subject.getFormId())){ - activitySubject.setSubjectFormInfo(subjectForm); - break; - } - } - break; - } - } - } - List activityCenterList = centerListMap.get(activitySubject.getSubjectId()); - activitySubject.setActivityCenterList(activityCenterList); - } - activity.setSubjectCenterList(activitySubjects); - List activityCenterGoodsList = activityCenterGoodsService.list(qw); - activityCenterGoodsList.forEach(TbsActivityCenterGoods::initSpuSkuName); - activity.setCenterGoodsList(activityCenterGoodsList); - - if(CollectionUtil.isNotEmpty(activity.getAttachIds())){ - List attachIds = Arrays.asList(activity.getAttachIds()); - List attachList = attachService.listByIds(attachIds); - activity.setAttachList(attachList); - } - - LambdaQueryWrapper vtbLqw = new LambdaQueryWrapper<>(); - vtbLqw.eq(VtbVerification::getActivityId,activity.getId()); - activity.setVerificationNum(verificationService.count(vtbLqw)); - } - /** * 对比预算 * @param param @@ -484,48 +376,6 @@ public class TbsActivityController { return R.ok(); } - /** - * 刷新活动相关金额 - * @param id - * @return - */ - @GetMapping("/flushAmount/{id}") - @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) - public R flushActivityAmount(@PathVariable("id") Long id){ - Long[] ids = new Long[]{}; - List errorIds = new ArrayList<>(); - for (Long aLong : ids) { - try { - vtbFundFlowService.flushActivityAmount(aLong); - } catch (Exception e) { - errorIds.add(aLong); - } - } - for (Long errorId : errorIds) { - System.out.println(errorId); - } - //vtbFundFlowService.flushActivityAmount(id); - return R.ok(); - } - - /** - * 刷新活动相关金额 - * @param id - * @return - */ - @GetMapping("/flushAmount2/{id}") - @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) - public R flushActivityAmount2(@PathVariable("id") Long id){ -// Long[] ids = new Long[]{} -// for (Long aLong : ids) { -// tbsCostApplyPart1Service.updateAmtAndRateByActSubject(aLong); -// } - tbsCostApplyPart1Service.updateAmtAndRateByActSubject(id); - return R.ok(); - } - - - /** * 获取默认的成本中心 * @param defaultCenterBo @@ -533,123 +383,8 @@ public class TbsActivityController { */ @PostMapping("/getDefaultCenter") public R getDefaultCenter(@RequestBody TbsActivityDefaultCenterBo defaultCenterBo){ - String goodsType = defaultCenterBo.getActivityGoodsType(); - List goodsIds = defaultCenterBo.getGoodsIds(); - goodsIds = goodsIds.stream().filter(Objects::nonNull).collect(Collectors.toList()); - Long subjectId = defaultCenterBo.getSubjectId(); - Long supplierId = defaultCenterBo.getSupplierId(); - BmsSupplier supplier = bmsSupplierService.getById(supplierId); - List centerBudgetList = new ArrayList<>(); - //[产品List空] 或[科目ID空] ,返回[客户] - if(CollectionUtil.isNotEmpty(goodsIds)&&subjectId!=null){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(TbsBudget::getBudgetState,1); - //排除随货编码 - lqw.ne(TbsBudget::getSubjectCode,"FYMC05"); - List budgetList = tbsBudgetService.list(lqw); - List idPaths = new ArrayList<>(); - if(budgetList.size()>0){ - if(TbsGoodsType.spu.name().equals(goodsType)){ - for (Long goodsId : goodsIds) { - GoodsSpu goodsSpu = goodsSpuService.getById(goodsId); - String idPath = goodsSpu.getCategoryFirst()+"_"+goodsSpu.getCategorySecond()+"_" - +goodsSpu.getCategoryThird()+"_"+goodsSpu.getId(); - idPaths.add(idPath); - } - }else if(TbsGoodsType.sku.name().equals(goodsType)){ - for (Long goodsId : goodsIds) { - GoodsSku sku = goodsSkuService.getById(goodsId); - GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId()); - String idPath = goodsSpu.getCategoryFirst()+"_"+goodsSpu.getCategorySecond()+"_" - +goodsSpu.getCategoryThird()+"_"+goodsSpu.getId()+"_"+sku.getId(); - idPaths.add(idPath); - } - }else { - for (Long goodsId : goodsIds) { - GoodsCategory category = goodsCategoryService.getById(goodsId); - if(category!=null){ - idPaths.add(category.getLevelPath()); - } - } - } - } - List budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList()); - LambdaQueryWrapper lqwCon = new LambdaQueryWrapper<>(); - lqwCon.in(TbsBudgetCondition::getBudgetId,budgetIds); - List budgetConditionsAll = tbsBudgetConditionService.list(lqwCon); - Map> groupedConditions = budgetConditionsAll.stream() - .collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); - for (TbsBudget budget : budgetList) { - if(budget.getConditionFlag().equals(1)){ - List budgetConditions = groupedConditions.get(budget.getId()); - for (int i = 0; i < idPaths.size(); i++) { - String idPath = idPaths.get(i); - boolean isMatch = false; - if(budgetConditions!=null){ - for (TbsBudgetCondition budgetCondition : budgetConditions) { - if(idPath.contains(budgetCondition.getTargetLevelPathIds())){ - isMatch = true; - } - } - } - if(!isMatch){ - break; - } - //满足条件 - if(i+1==idPaths.size()){ - centerBudgetList.add(budget); - } - } - }else { - centerBudgetList.add(budget); - } - } - } - //匹配有预算并且成本中心为客户的 - for (TbsBudget budget : centerBudgetList) { - if (budget.getCenterType().equals(TbsCenterType.customer.name())){ - if(budget.getCenterId().equals(supplier.getId())){ - TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); - defaultCenterVo.setSupplier(supplier); - return R.ok(defaultCenterVo); - } - } - } - - //匹配有预算并且成本中心为销售区域的,按最按近的销售区域优先级返回 - Optional regionThirdCenter = centerBudgetList.stream().filter(a -> a.getCenterType().equals(TbsCenterType.saleRegion.name()) - && a.getCenterId().equals(supplier.getRegionThird())).findFirst(); - if(regionThirdCenter.isPresent()){ - TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); - BmsRegion saleRegionTemp = bmsRegionService.getById(regionThirdCenter.get().getCenterId()); - defaultCenterVo.setSaleRegion(saleRegionTemp); - return R.ok(defaultCenterVo); - } - Optional regionSecondCenter = centerBudgetList.stream().filter(a -> a.getCenterType().equals(TbsCenterType.saleRegion.name()) - && a.getCenterId().equals(supplier.getRegionSecond())).findFirst(); - if(regionSecondCenter.isPresent()){ - TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); - BmsRegion saleRegionTemp = bmsRegionService.getById(regionSecondCenter.get().getCenterId()); - defaultCenterVo.setSaleRegion(saleRegionTemp); - return R.ok(defaultCenterVo); - } - Optional regionFirstCenter = centerBudgetList.stream().filter(a -> a.getCenterType().equals(TbsCenterType.saleRegion.name()) - && a.getCenterId().equals(supplier.getRegionFirst())).findFirst(); - if(regionFirstCenter.isPresent()){ - TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); - BmsRegion saleRegionTemp = bmsRegionService.getById(regionFirstCenter.get().getCenterId()); - defaultCenterVo.setSaleRegion(saleRegionTemp); - return R.ok(defaultCenterVo); - } - - - TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); - defaultCenterVo.setSupplier(supplier); - return R.ok(defaultCenterVo); + return tbsCostApplyPart1Service.getDefaultCenter(defaultCenterBo); } - - - } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java new file mode 100644 index 00000000..af5518e6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java @@ -0,0 +1,130 @@ +package com.qs.serve.modules.tbs.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qs.serve.common.model.annotation.LimitSubmit; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.CommonIdsParam; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.bms.entity.BmsRegion; +import com.qs.serve.modules.bms.entity.BmsSubject; +import com.qs.serve.modules.bms.entity.BmsSubjectForm; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.*; +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.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.TbsCostApplyState; +import com.qs.serve.modules.tbs.common.TbsGoodsType; +import com.qs.serve.modules.tbs.common.util.TbsActivityUtil; +import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityDefaultCenterBo; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo; +import com.qs.serve.modules.tbs.entity.so.TbsActivitySo; +import com.qs.serve.modules.tbs.entity.vo.TbsActivityCenterGoodsVo; +import com.qs.serve.modules.tbs.entity.vo.TbsActivityDefaultCenterVo; +import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; +import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.service.VtbFundFlowService; +import com.qs.serve.modules.vtb.service.VtbVerificationService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 预算 费用活动 + * @module 预算 + * @service 费用活动 + * @author YenHex + * @since 2022-11-08 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("tbs/activity") +public class TbsActivityController2 { + + private final VtbFundFlowService vtbFundFlowService; + private final TbsActivityService tbsActivityService; + private final TbsCostApplyPart1Service tbsCostApplyPart1Service; + + /** + * 批量查询活动详情 + * @param param + * @return + */ + @PostMapping("/getByIds/{ids}") + public R> getByIds(@RequestBody CommonIdsParam param){ + List activityList = tbsActivityService.listByIds(param.getIds()); + for (TbsActivity activity : activityList) { + tbsCostApplyPart1Service.buildDetailVo(activity); + } + return R.ok(activityList); + } + + + /** + * 刷新活动相关金额 + * @param id + * @return + */ + @GetMapping("/flushAmount/{id}") + @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) + public R flushActivityAmount(@PathVariable("id") Long id){ + Long[] ids = new Long[]{}; + List errorIds = new ArrayList<>(); + for (Long aLong : ids) { + try { + vtbFundFlowService.flushActivityAmount(aLong); + } catch (Exception e) { + errorIds.add(aLong); + } + } + for (Long errorId : errorIds) { + System.out.println(errorId); + } + //vtbFundFlowService.flushActivityAmount(id); + return R.ok(); + } + + /** + * 刷新活动相关金额 + * @param id + * @return + */ + @GetMapping("/flushAmount2/{id}") + @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) + public R flushActivityAmount2(@PathVariable("id") Long id){ +// Long[] ids = new Long[]{} +// for (Long aLong : ids) { +// tbsCostApplyPart1Service.updateAmtAndRateByActSubject(aLong); +// } + tbsCostApplyPart1Service.updateAmtAndRateByActSubject(id); + return R.ok(); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java index 6e1ce5df..ba5f859a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java @@ -1,7 +1,11 @@ package com.qs.serve.modules.tbs.service; import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityDefaultCenterBo; +import com.qs.serve.modules.tbs.entity.vo.TbsActivityDefaultCenterVo; +import org.springframework.web.bind.annotation.RequestBody; /** * @author YenHex @@ -36,4 +40,14 @@ public interface TbsCostApplyPart1Service { * @param activityId */ void updateAmtAndRateByActSubject(Long activityId); + + + /** + * 建立活动VO + * @param activity + */ + void buildDetailVo(TbsActivity activity); + + R getDefaultCenter(TbsActivityDefaultCenterBo defaultCenterBo); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java index 423c0086..c56968cb 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java @@ -9,23 +9,39 @@ import com.qs.serve.common.util.*; import com.qs.serve.modules.bir.consts.BirActivityCenterGoodsUtil; 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.BmsSubject; +import com.qs.serve.modules.bms.entity.BmsSubjectForm; +import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper; -import com.qs.serve.modules.bms.service.BmsSubjectService; -import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +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.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.entity.SysAttach; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.mapper.SysUserMapper; 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.TbsCostApplyState; +import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityDefaultCenterBo; +import com.qs.serve.modules.tbs.entity.vo.TbsActivityDefaultCenterVo; import com.qs.serve.modules.tbs.mapper.*; import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; +import com.qs.serve.modules.vtb.service.VtbFundFlowService; +import com.qs.serve.modules.vtb.service.VtbVerificationService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -33,8 +49,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,6 +77,37 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { private TbsBudgetLogMapper tbsBudgetLogMapper; private TbsBudgetCostItemMapper tbsBudgetCostItemMapper; private SysUserMapper sysUserMapper; + private final SysUserService sysUserService; + + private final TbsCostApplyService costApplyService; + private final TbsActivityService tbsActivityService; + private final TbsActivityGoodsService activityGoodsService; + private final TbsActivitySubjectService activitySubjectService; + private final TbsActivityCenterService activityCenterService; + private final TbsActivityCenterGoodsService activityCenterGoodsService; + private final TbsActivityChannelService activityChannelService; + private final TbsActivityChannelPointService activityChannelPointService; + + private final GoodsSkuService goodsSkuService; + private final GoodsSpuService goodsSpuService; + private final GoodsCategoryService goodsCategoryService; + + private final BmsSupplierService bmsSupplierService; + private final BmsCostCenterService bmsCostCenterService; + private final BmsRegion2Service bmsRegion2Service; + private final BmsRegionService bmsRegionService; + private final BmsSubjectService bmsSubjectService; + private final BmsSubjectFormService bmsSubjectFormService; + + private final VtbVerificationService verificationService; + private final VtbFundFlowService vtbFundFlowService; + + private final TbsActivityApplicationService tbsActivityApplicationService; + private final TbsBudgetService tbsBudgetService; + private final TbsBudgetConditionService tbsBudgetConditionService; + private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; + private final TbsCostApplyPart1Service tbsCostApplyPart1Service; + private SysAttachService attachService; @Override public TbsCostApply copyById(Long costId) { @@ -419,4 +465,210 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { } + @Override + public void buildDetailVo(TbsActivity activity) { + LambdaQueryWrapper actGoodsLqw = new LambdaQueryWrapper<>(); + actGoodsLqw.eq(TbsActivityGoods::getActivityId,activity.getId()); + actGoodsLqw.orderByDesc(TbsActivityGoods::getTargetName); + List goodsList = activityGoodsService.list(actGoodsLqw); + if(goodsList.size()>0){ + activity.setGoodsType(goodsList.get(0).getTargetType()); + goodsList.forEach(TbsActivityGoods::initSpuSkuName); + goodsList.forEach(TbsActivityGoods::initCategoryNameByPathsName); + } + activity.setGoodsList(goodsList); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("activity_id", activity.getId()); + List activityChannels = activityChannelService.list(qw); + activity.setCustomChannelList(activityChannels); + if(activityChannels.size()<1){ + List channelPoints = activityChannelPointService.list(qw); + activity.setCustomChannelPointList(channelPoints); + if(channelPoints.size()<1 && activityChannels.size()<1){ + activity.setCustomSupplier(bmsSupplierService.getById(activity.getSupplierId())); + } + } + List activitySubjects = activitySubjectService.list(qw); + List activityCenters = activityCenterService.list(qw); + + TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); + + //成本中心关联出相关预算 + for (TbsActivityCenter center : activityCenters) { + //没通过加载可选的所有预算,已通过加载出选中的预算 + String subjectId = center.getSubjectId()+""; + String centerType = center.getCenterType(); + String centerId = center.getCenterId(); + if(costApply.getChargeState()>0||activity.getCostPassFlag().equals(1)){ + //选中的预算 + String activityId = activity.getId()+""; + List list = tbsScheduleItemBudgetMapper.listByActivityAndSubjectAndCenter( + activityId,subjectId,centerType,centerId); + center.setMatchBudgetList(list); + }else { + //可选的所有预算 + List list = + tbsScheduleItemBudgetMapper.listBySubjectAndCenter(subjectId,centerType,centerId); + center.setMatchBudgetList(list); + } + } + + Map> centerListMap = activityCenters.stream().collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId)); + List subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList()); + List subjectList = bmsSubjectService.listByIds(subjectIds); + List formIds = subjectList.stream().map(BmsSubject::getFormId).distinct().collect(Collectors.toList()); + List subjectForms = null; + if(CollectionUtil.isNotEmpty(formIds)){ + subjectForms = bmsSubjectFormService.listByIds(formIds); + } + for (TbsActivitySubject activitySubject : activitySubjects) { + if(CollectionUtil.isNotEmpty(subjectForms)){ + for (BmsSubject subject : subjectList) { + if(subject.getId().equals(activitySubject.getSubjectId())&&subject.getFormId()!=null){ + for (BmsSubjectForm subjectForm : subjectForms) { + if(subjectForm.getId().equals(subject.getFormId())){ + activitySubject.setSubjectFormInfo(subjectForm); + break; + } + } + break; + } + } + } + List activityCenterList = centerListMap.get(activitySubject.getSubjectId()); + activitySubject.setActivityCenterList(activityCenterList); + } + activity.setSubjectCenterList(activitySubjects); + List activityCenterGoodsList = activityCenterGoodsService.list(qw); + activityCenterGoodsList.forEach(TbsActivityCenterGoods::initSpuSkuName); + activity.setCenterGoodsList(activityCenterGoodsList); + + if(CollectionUtil.isNotEmpty(activity.getAttachIds())){ + List attachIds = Arrays.asList(activity.getAttachIds()); + List attachList = attachService.listByIds(attachIds); + activity.setAttachList(attachList); + } + + LambdaQueryWrapper vtbLqw = new LambdaQueryWrapper<>(); + vtbLqw.eq(VtbVerification::getActivityId,activity.getId()); + activity.setVerificationNum(verificationService.count(vtbLqw)); + } + + + @Override + public R getDefaultCenter(TbsActivityDefaultCenterBo defaultCenterBo) { + String goodsType = defaultCenterBo.getActivityGoodsType(); + List goodsIds = defaultCenterBo.getGoodsIds(); + goodsIds = goodsIds.stream().filter(Objects::nonNull).collect(Collectors.toList()); + Long subjectId = defaultCenterBo.getSubjectId(); + Long supplierId = defaultCenterBo.getSupplierId(); + BmsSupplier supplier = bmsSupplierService.getById(supplierId); + List centerBudgetList = new ArrayList<>(); + //[产品List空] 或[科目ID空] ,返回[客户] + if(CollectionUtil.isNotEmpty(goodsIds)&&subjectId!=null){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsBudget::getBudgetState,1); + //排除随货编码 + lqw.ne(TbsBudget::getSubjectCode,"FYMC05"); + List budgetList = tbsBudgetService.list(lqw); + List idPaths = new ArrayList<>(); + if(budgetList.size()>0){ + if(TbsGoodsType.spu.name().equals(goodsType)){ + for (Long goodsId : goodsIds) { + GoodsSpu goodsSpu = goodsSpuService.getById(goodsId); + String idPath = goodsSpu.getCategoryFirst()+"_"+goodsSpu.getCategorySecond()+"_" + +goodsSpu.getCategoryThird()+"_"+goodsSpu.getId(); + idPaths.add(idPath); + } + }else if(TbsGoodsType.sku.name().equals(goodsType)){ + for (Long goodsId : goodsIds) { + GoodsSku sku = goodsSkuService.getById(goodsId); + GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId()); + String idPath = goodsSpu.getCategoryFirst()+"_"+goodsSpu.getCategorySecond()+"_" + +goodsSpu.getCategoryThird()+"_"+goodsSpu.getId()+"_"+sku.getId(); + idPaths.add(idPath); + } + }else { + for (Long goodsId : goodsIds) { + GoodsCategory category = goodsCategoryService.getById(goodsId); + if(category!=null){ + idPaths.add(category.getLevelPath()); + } + } + } + } + List budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList()); + LambdaQueryWrapper lqwCon = new LambdaQueryWrapper<>(); + lqwCon.in(TbsBudgetCondition::getBudgetId,budgetIds); + List budgetConditionsAll = tbsBudgetConditionService.list(lqwCon); + Map> groupedConditions = budgetConditionsAll.stream() + .collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); + for (TbsBudget budget : budgetList) { + if(budget.getConditionFlag().equals(1)){ + List budgetConditions = groupedConditions.get(budget.getId()); + for (int i = 0; i < idPaths.size(); i++) { + String idPath = idPaths.get(i); + boolean isMatch = false; + if(budgetConditions!=null){ + for (TbsBudgetCondition budgetCondition : budgetConditions) { + if(idPath.contains(budgetCondition.getTargetLevelPathIds())){ + isMatch = true; + } + } + } + if(!isMatch){ + break; + } + //满足条件 + if(i+1==idPaths.size()){ + centerBudgetList.add(budget); + } + } + }else { + centerBudgetList.add(budget); + } + } + } + //匹配有预算并且成本中心为客户的 + for (TbsBudget budget : centerBudgetList) { + if (budget.getCenterType().equals(TbsCenterType.customer.name())){ + if(budget.getCenterId().equals(supplier.getId())){ + TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); + defaultCenterVo.setSupplier(supplier); + return R.ok(defaultCenterVo); + } + } + } + + //匹配有预算并且成本中心为销售区域的,按最按近的销售区域优先级返回 + Optional regionThirdCenter = centerBudgetList.stream().filter(a -> a.getCenterType().equals(TbsCenterType.saleRegion.name()) + && a.getCenterId().equals(supplier.getRegionThird())).findFirst(); + if(regionThirdCenter.isPresent()){ + TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); + BmsRegion saleRegionTemp = bmsRegionService.getById(regionThirdCenter.get().getCenterId()); + defaultCenterVo.setSaleRegion(saleRegionTemp); + return R.ok(defaultCenterVo); + } + Optional regionSecondCenter = centerBudgetList.stream().filter(a -> a.getCenterType().equals(TbsCenterType.saleRegion.name()) + && a.getCenterId().equals(supplier.getRegionSecond())).findFirst(); + if(regionSecondCenter.isPresent()){ + TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); + BmsRegion saleRegionTemp = bmsRegionService.getById(regionSecondCenter.get().getCenterId()); + defaultCenterVo.setSaleRegion(saleRegionTemp); + return R.ok(defaultCenterVo); + } + Optional regionFirstCenter = centerBudgetList.stream().filter(a -> a.getCenterType().equals(TbsCenterType.saleRegion.name()) + && a.getCenterId().equals(supplier.getRegionFirst())).findFirst(); + if(regionFirstCenter.isPresent()){ + TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); + BmsRegion saleRegionTemp = bmsRegionService.getById(regionFirstCenter.get().getCenterId()); + defaultCenterVo.setSaleRegion(saleRegionTemp); + return R.ok(defaultCenterVo); + } + + + TbsActivityDefaultCenterVo defaultCenterVo = new TbsActivityDefaultCenterVo(); + defaultCenterVo.setSupplier(supplier); + return R.ok(defaultCenterVo); + } }