Browse Source

opt: 拆分活动控制层代码

feat:添加临期品管理
checkBack
Yen 1 year ago
parent
commit
e66666086a
  1. 16
      src/main/java/com/qs/serve/common/model/dto/CommonIdsParam.java
  2. 114
      src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java
  3. 110
      src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java
  4. 53
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java
  5. 14
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java
  6. 16
      src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java
  7. 28
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java
  8. 271
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  9. 130
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java
  10. 14
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java
  11. 260
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java

16
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<String> ids;
}

114
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<PageVo<GoodsImminentBatch>> getPage(GoodsImminentBatch param){
LambdaQueryWrapper<GoodsImminentBatch> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<GoodsImminentBatch> 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<GoodsImminentBatch> 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<Long> idsLong = StringUtils.splitIdLong(ids);
boolean result = goodsImminentBatchService.removeByIds(idsLong);
return R.isTrue(result);
}
}

110
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;
}

53
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;
}

14
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<GoodsImminentBatch> {
}

16
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<GoodsImminentBatch> {
boolean checkExist(String batchCode,String skuId);
}

28
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<GoodsImminentBatchMapper,GoodsImminentBatch> implements GoodsImminentBatchService {
@Override
public boolean checkExist(String batchCode, String skuId) {
long count = this.count(new LambdaQueryWrapper<GoodsImminentBatch>().eq(GoodsImminentBatch::getBatchCode,batchCode).eq(GoodsImminentBatch::getSkuId,skuId));
return count>0;
}
}

271
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java

@ -68,7 +68,6 @@ import java.util.stream.Collectors;
public class TbsActivityController { public class TbsActivityController {
private final SysUserService sysUserService; private final SysUserService sysUserService;
private final TbsCostApplyService costApplyService; private final TbsCostApplyService costApplyService;
private final TbsActivityService tbsActivityService; private final TbsActivityService tbsActivityService;
private final TbsActivityGoodsService activityGoodsService; private final TbsActivityGoodsService activityGoodsService;
@ -77,28 +76,9 @@ public class TbsActivityController {
private final TbsActivityCenterGoodsService activityCenterGoodsService; private final TbsActivityCenterGoodsService activityCenterGoodsService;
private final TbsActivityChannelService activityChannelService; private final TbsActivityChannelService activityChannelService;
private final TbsActivityChannelPointService activityChannelPointService; 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 VtbVerificationService verificationService;
private final VtbFundFlowService vtbFundFlowService;
private final TbsActivityApplicationService tbsActivityApplicationService; private final TbsActivityApplicationService tbsActivityApplicationService;
private final TbsBudgetService tbsBudgetService;
private final TbsBudgetConditionService tbsBudgetConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsCostApplyPart1Service tbsCostApplyPart1Service; private final TbsCostApplyPart1Service tbsCostApplyPart1Service;
private SysAttachService attachService;
TbsActivityDebugApplicationService tbsActivityDebugApplicationService; TbsActivityDebugApplicationService tbsActivityDebugApplicationService;
@GetMapping("/reset/{id}") @GetMapping("/reset/{id}")
@ -141,7 +121,7 @@ public class TbsActivityController {
activity.setGoodsList(goodsList); activity.setGoodsList(goodsList);
List<TbsActivitySubject> activitySubjects = activitySubjectService.list(qw); List<TbsActivitySubject> activitySubjects = activitySubjectService.list(qw);
activity.setSubjectCenterList(activitySubjects); activity.setSubjectCenterList(activitySubjects);
this.buildDetailVo(activity); tbsCostApplyPart1Service.buildDetailVo(activity);
activity.initWarningDay(overflowDays); activity.initWarningDay(overflowDays);
} }
return R.ok(list); return R.ok(list);
@ -266,98 +246,10 @@ public class TbsActivityController {
@PreAuthorize("hasRole('tbs:activity:query')") @PreAuthorize("hasRole('tbs:activity:query')")
public R<TbsActivity> getById(@PathVariable("id") String id){ public R<TbsActivity> getById(@PathVariable("id") String id){
TbsActivity activity = tbsActivityService.getById(id); TbsActivity activity = tbsActivityService.getById(id);
this.buildDetailVo(activity); tbsCostApplyPart1Service.buildDetailVo(activity);
return R.ok(activity); return R.ok(activity);
} }
private void buildDetailVo(TbsActivity activity) {
LambdaQueryWrapper<TbsActivityGoods> actGoodsLqw = new LambdaQueryWrapper<>();
actGoodsLqw.eq(TbsActivityGoods::getActivityId,activity.getId());
actGoodsLqw.orderByDesc(TbsActivityGoods::getTargetName);
List<TbsActivityGoods> 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<TbsActivityChannel> activityChannels = activityChannelService.list(qw);
activity.setCustomChannelList(activityChannels);
if(activityChannels.size()<1){
List<TbsActivityChannelPoint> channelPoints = activityChannelPointService.list(qw);
activity.setCustomChannelPointList(channelPoints);
if(channelPoints.size()<1 && activityChannels.size()<1){
activity.setCustomSupplier(bmsSupplierService.getById(activity.getSupplierId()));
}
}
List<TbsActivitySubject> activitySubjects = activitySubjectService.list(qw);
List<TbsActivityCenter> 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<TbsScheduleItemBudget> list = tbsScheduleItemBudgetMapper.listByActivityAndSubjectAndCenter(
activityId,subjectId,centerType,centerId);
center.setMatchBudgetList(list);
}else {
//可选的所有预算
List<TbsScheduleItemBudget> list =
tbsScheduleItemBudgetMapper.listBySubjectAndCenter(subjectId,centerType,centerId);
center.setMatchBudgetList(list);
}
}
Map<Long,List<TbsActivityCenter>> centerListMap = activityCenters.stream().collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId));
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList());
List<BmsSubject> subjectList = bmsSubjectService.listByIds(subjectIds);
List<Long> formIds = subjectList.stream().map(BmsSubject::getFormId).distinct().collect(Collectors.toList());
List<BmsSubjectForm> 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<TbsActivityCenter> activityCenterList = centerListMap.get(activitySubject.getSubjectId());
activitySubject.setActivityCenterList(activityCenterList);
}
activity.setSubjectCenterList(activitySubjects);
List<TbsActivityCenterGoods> activityCenterGoodsList = activityCenterGoodsService.list(qw);
activityCenterGoodsList.forEach(TbsActivityCenterGoods::initSpuSkuName);
activity.setCenterGoodsList(activityCenterGoodsList);
if(CollectionUtil.isNotEmpty(activity.getAttachIds())){
List<String> attachIds = Arrays.asList(activity.getAttachIds());
List<SysAttach> attachList = attachService.listByIds(attachIds);
activity.setAttachList(attachList);
}
LambdaQueryWrapper<VtbVerification> vtbLqw = new LambdaQueryWrapper<>();
vtbLqw.eq(VtbVerification::getActivityId,activity.getId());
activity.setVerificationNum(verificationService.count(vtbLqw));
}
/** /**
* 对比预算 * 对比预算
* @param param * @param param
@ -484,48 +376,6 @@ public class TbsActivityController {
return R.ok(); 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<Long> 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 * @param defaultCenterBo
@ -533,123 +383,8 @@ public class TbsActivityController {
*/ */
@PostMapping("/getDefaultCenter") @PostMapping("/getDefaultCenter")
public R<TbsActivityDefaultCenterVo> getDefaultCenter(@RequestBody TbsActivityDefaultCenterBo defaultCenterBo){ public R<TbsActivityDefaultCenterVo> getDefaultCenter(@RequestBody TbsActivityDefaultCenterBo defaultCenterBo){
String goodsType = defaultCenterBo.getActivityGoodsType(); return tbsCostApplyPart1Service.getDefaultCenter(defaultCenterBo);
List<Long> 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<TbsBudget> centerBudgetList = new ArrayList<>();
//[产品List空] 或[科目ID空] ,返回[客户]
if(CollectionUtil.isNotEmpty(goodsIds)&&subjectId!=null){
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudget::getBudgetState,1);
//排除随货编码
lqw.ne(TbsBudget::getSubjectCode,"FYMC05");
List<TbsBudget> budgetList = tbsBudgetService.list(lqw);
List<String> 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<Long> budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList());
LambdaQueryWrapper<TbsBudgetCondition> lqwCon = new LambdaQueryWrapper<>();
lqwCon.in(TbsBudgetCondition::getBudgetId,budgetIds);
List<TbsBudgetCondition> budgetConditionsAll = tbsBudgetConditionService.list(lqwCon);
Map<Long, List<TbsBudgetCondition>> groupedConditions = budgetConditionsAll.stream()
.collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId));
for (TbsBudget budget : budgetList) {
if(budget.getConditionFlag().equals(1)){
List<TbsBudgetCondition> 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<TbsBudget> 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<TbsBudget> 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<TbsBudget> 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);
}
} }

130
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<List<TbsActivity>> getByIds(@RequestBody CommonIdsParam param){
List<TbsActivity> 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<Long> 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();
}
}

14
src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java

@ -1,7 +1,11 @@
package com.qs.serve.modules.tbs.service; package com.qs.serve.modules.tbs.service;
import com.qs.serve.common.model.dto.R; 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.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 * @author YenHex
@ -36,4 +40,14 @@ public interface TbsCostApplyPart1Service {
* @param activityId * @param activityId
*/ */
void updateAmtAndRateByActSubject(Long activityId); void updateAmtAndRateByActSubject(Long activityId);
/**
* 建立活动VO
* @param activity
*/
void buildDetailVo(TbsActivity activity);
R<TbsActivityDefaultCenterVo> getDefaultCenter(TbsActivityDefaultCenterBo defaultCenterBo);
} }

260
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.consts.BirActivityCenterGoodsUtil;
import com.qs.serve.modules.bir.service.BirCenterRateService; import com.qs.serve.modules.bir.service.BirCenterRateService;
import com.qs.serve.modules.bir.service.BirRoiRateService; 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.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; 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.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.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysUserService; 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.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.*; 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.mapper.*;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; 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.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -33,8 +49,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -62,6 +77,37 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
private TbsBudgetLogMapper tbsBudgetLogMapper; private TbsBudgetLogMapper tbsBudgetLogMapper;
private TbsBudgetCostItemMapper tbsBudgetCostItemMapper; private TbsBudgetCostItemMapper tbsBudgetCostItemMapper;
private SysUserMapper sysUserMapper; 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 @Override
public TbsCostApply copyById(Long costId) { public TbsCostApply copyById(Long costId) {
@ -419,4 +465,210 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
} }
@Override
public void buildDetailVo(TbsActivity activity) {
LambdaQueryWrapper<TbsActivityGoods> actGoodsLqw = new LambdaQueryWrapper<>();
actGoodsLqw.eq(TbsActivityGoods::getActivityId,activity.getId());
actGoodsLqw.orderByDesc(TbsActivityGoods::getTargetName);
List<TbsActivityGoods> 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<TbsActivityChannel> activityChannels = activityChannelService.list(qw);
activity.setCustomChannelList(activityChannels);
if(activityChannels.size()<1){
List<TbsActivityChannelPoint> channelPoints = activityChannelPointService.list(qw);
activity.setCustomChannelPointList(channelPoints);
if(channelPoints.size()<1 && activityChannels.size()<1){
activity.setCustomSupplier(bmsSupplierService.getById(activity.getSupplierId()));
}
}
List<TbsActivitySubject> activitySubjects = activitySubjectService.list(qw);
List<TbsActivityCenter> 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<TbsScheduleItemBudget> list = tbsScheduleItemBudgetMapper.listByActivityAndSubjectAndCenter(
activityId,subjectId,centerType,centerId);
center.setMatchBudgetList(list);
}else {
//可选的所有预算
List<TbsScheduleItemBudget> list =
tbsScheduleItemBudgetMapper.listBySubjectAndCenter(subjectId,centerType,centerId);
center.setMatchBudgetList(list);
}
}
Map<Long,List<TbsActivityCenter>> centerListMap = activityCenters.stream().collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId));
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList());
List<BmsSubject> subjectList = bmsSubjectService.listByIds(subjectIds);
List<Long> formIds = subjectList.stream().map(BmsSubject::getFormId).distinct().collect(Collectors.toList());
List<BmsSubjectForm> 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<TbsActivityCenter> activityCenterList = centerListMap.get(activitySubject.getSubjectId());
activitySubject.setActivityCenterList(activityCenterList);
}
activity.setSubjectCenterList(activitySubjects);
List<TbsActivityCenterGoods> activityCenterGoodsList = activityCenterGoodsService.list(qw);
activityCenterGoodsList.forEach(TbsActivityCenterGoods::initSpuSkuName);
activity.setCenterGoodsList(activityCenterGoodsList);
if(CollectionUtil.isNotEmpty(activity.getAttachIds())){
List<String> attachIds = Arrays.asList(activity.getAttachIds());
List<SysAttach> attachList = attachService.listByIds(attachIds);
activity.setAttachList(attachList);
}
LambdaQueryWrapper<VtbVerification> vtbLqw = new LambdaQueryWrapper<>();
vtbLqw.eq(VtbVerification::getActivityId,activity.getId());
activity.setVerificationNum(verificationService.count(vtbLqw));
}
@Override
public R<TbsActivityDefaultCenterVo> getDefaultCenter(TbsActivityDefaultCenterBo defaultCenterBo) {
String goodsType = defaultCenterBo.getActivityGoodsType();
List<Long> 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<TbsBudget> centerBudgetList = new ArrayList<>();
//[产品List空] 或[科目ID空] ,返回[客户]
if(CollectionUtil.isNotEmpty(goodsIds)&&subjectId!=null){
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudget::getBudgetState,1);
//排除随货编码
lqw.ne(TbsBudget::getSubjectCode,"FYMC05");
List<TbsBudget> budgetList = tbsBudgetService.list(lqw);
List<String> 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<Long> budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList());
LambdaQueryWrapper<TbsBudgetCondition> lqwCon = new LambdaQueryWrapper<>();
lqwCon.in(TbsBudgetCondition::getBudgetId,budgetIds);
List<TbsBudgetCondition> budgetConditionsAll = tbsBudgetConditionService.list(lqwCon);
Map<Long, List<TbsBudgetCondition>> groupedConditions = budgetConditionsAll.stream()
.collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId));
for (TbsBudget budget : budgetList) {
if(budget.getConditionFlag().equals(1)){
List<TbsBudgetCondition> 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<TbsBudget> 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<TbsBudget> 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<TbsBudget> 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);
}
} }

Loading…
Cancel
Save