Browse Source

feat: 计算返利添加测试日志

master
Yen 2 months ago
parent
commit
6a618e4bdc
  1. 126
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java
  2. 3
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityService.java
  3. 69
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
  4. 7
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

126
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java

@ -65,102 +65,44 @@ public class TbsActivityController2 {
private ErpDispatchSumPmsVo buildVrpDispatchSumPms(Long activityId) { private ErpDispatchSumPmsVo buildVrpDispatchSumPms(Long activityId) {
TbsActivity activity = tbsActivityService.getById(activityId); TbsActivity activity = tbsActivityService.getById(activityId);
ErpDispatchSumPmsQuery query = new ErpDispatchSumPmsQuery(); ErpDispatchSumPmsVo erpDispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity);
query.setSupplierCode(activity.getSupplierCode());
query.setStartDate(activity.getActStartDate()); BigDecimal amt = erpDispatchSumPmsVo.getTotalAmount();
query.setEndDate(activity.getActEndDate()); List<TbsActivitySubject> activitySubjects = tbsActivitySubjectService.list(new LambdaQueryWrapper<TbsActivitySubject>()
List<TbsActivityGoods> activityGoodsList = tbsActivityGoodsService.list( .eq(TbsActivitySubject::getActivityId,activityId));
new LambdaQueryWrapper<TbsActivityGoods>()
.eq(TbsActivityGoods::getActivityId, activityId)); List<SubjectDispatchSumVo> dispatchSumVoList = new ArrayList<>();
Map<String,List<TbsActivityGoods>> actGoodsMap = activityGoodsList.stream() // 开始平摊逻辑
.collect(Collectors.groupingBy(TbsActivityGoods::getTargetType)); int size = activitySubjects.size();
boolean hasGoods = false; if (size > 0) {
List<TbsActivityGoods> brandGoodsList = actGoodsMap.get("brand"); BigDecimal totalAmount = BigDecimal.ZERO;
if(brandGoodsList!=null){ for (TbsActivitySubject subject : activitySubjects) {
List<Long> ids = brandGoodsList.stream() totalAmount = totalAmount.add(subject.getAmount());
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setBrandIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> seriesGoodsList = actGoodsMap.get("series");
if(seriesGoodsList!=null){
List<Long> ids = seriesGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setSeriesIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> categoryGoodsList = actGoodsMap.get("category");
if(categoryGoodsList!=null){
List<Long> ids = categoryGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setCategoryIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> spuGoodsList = actGoodsMap.get("spu");
if(spuGoodsList!=null){
List<Long> ids = spuGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setSpuIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> skuGoodsList = actGoodsMap.get("sku");
if(skuGoodsList!=null){
List<Long> ids = skuGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setSkuIds(ids);
hasGoods = true;
}
ErpDispatchSumPmsVo sumPmsVo = new ErpDispatchSumPmsVo();
sumPmsVo.setSupplierCode(query.getSupplierCode());
sumPmsVo.setStartDate(query.getStartDate());
sumPmsVo.setEndDate(query.getEndDate());
sumPmsVo.setCategoryIds(query.getCategoryIds());
sumPmsVo.setSpuIds(query.getSpuIds());
sumPmsVo.setSkuIds(query.getSkuIds());
BigDecimal amt = BigDecimal.ZERO;
if (hasGoods){
amt = erpDispatchDataMapper.queryCusAmtByPms(query);
if (amt==null){
amt = BigDecimal.ZERO;
} }
List<TbsActivitySubject> activitySubjects = tbsActivitySubjectService.list(new LambdaQueryWrapper<TbsActivitySubject>() BigDecimal remainingAmt = amt;
.eq(TbsActivitySubject::getActivityId,activityId)); for (int i = 0; i < size; i++) {
TbsActivitySubject subject = activitySubjects.get(i);
List<SubjectDispatchSumVo> dispatchSumVoList = new ArrayList<>(); BigDecimal allocatedAmt;
// 开始平摊逻辑
int size = activitySubjects.size(); if (i == size - 1) {
if (size > 0) { // 最后一项使用剩余金额
BigDecimal totalAmount = BigDecimal.ZERO; allocatedAmt = remainingAmt;
for (TbsActivitySubject subject : activitySubjects) { } else {
totalAmount = totalAmount.add(subject.getAmount()); // 按比例分配
} allocatedAmt = amt.multiply(subject.getAmount()).divide(totalAmount, 2, RoundingMode.HALF_UP);
BigDecimal remainingAmt = amt; remainingAmt = remainingAmt.subtract(allocatedAmt);
for (int i = 0; i < size; i++) {
TbsActivitySubject subject = activitySubjects.get(i);
BigDecimal allocatedAmt;
if (i == size - 1) {
// 最后一项使用剩余金额
allocatedAmt = remainingAmt;
} else {
// 按比例分配
allocatedAmt = amt.multiply(subject.getAmount()).divide(totalAmount, 2, RoundingMode.HALF_UP);
remainingAmt = remainingAmt.subtract(allocatedAmt);
}
SubjectDispatchSumVo subjectDispatchSumVo = new SubjectDispatchSumVo();
subjectDispatchSumVo.setSubjectId(subject.getSubjectId());
subjectDispatchSumVo.setSubjectCode(subject.getSubjectCode());
subjectDispatchSumVo.setSubjectName(subject.getSubjectName());
subjectDispatchSumVo.setSubjectAmount(allocatedAmt);
dispatchSumVoList.add(subjectDispatchSumVo);
} }
SubjectDispatchSumVo subjectDispatchSumVo = new SubjectDispatchSumVo();
subjectDispatchSumVo.setSubjectId(subject.getSubjectId());
subjectDispatchSumVo.setSubjectCode(subject.getSubjectCode());
subjectDispatchSumVo.setSubjectName(subject.getSubjectName());
subjectDispatchSumVo.setSubjectAmount(allocatedAmt);
dispatchSumVoList.add(subjectDispatchSumVo);
} }
sumPmsVo.setSubjectDispatchAmountList(dispatchSumVoList);
} }
sumPmsVo.setTotalAmount(amt); erpDispatchSumPmsVo.setSubjectDispatchAmountList(dispatchSumVoList);
return sumPmsVo; return erpDispatchSumPmsVo;
} }
/** /**

3
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityService.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.tbs.service; package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.erp.entity.vo.ErpDispatchSumPmsVo;
import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo; import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo;
@ -14,6 +15,8 @@ import java.util.List;
*/ */
public interface TbsActivityService extends IService<TbsActivity> { public interface TbsActivityService extends IService<TbsActivity> {
ErpDispatchSumPmsVo getDispatchSumByActivity(TbsActivity activity);
/** /**
* 申请活动加载列表 * 申请活动加载列表
* @param id * @param id

69
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -11,6 +11,9 @@ import com.qs.serve.common.utils.StringUtils;
import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.mapper.BmsSubjectFormMapper; import com.qs.serve.modules.bms.mapper.BmsSubjectFormMapper;
import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.erp.entity.so.ErpDispatchSumPmsQuery;
import com.qs.serve.modules.erp.entity.vo.ErpDispatchSumPmsVo;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper;
import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.GoodsCategory;
import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.GoodsSpu;
@ -73,8 +76,74 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
private final SysConfigService configService; private final SysConfigService configService;
private final ErpDispatchDataMapper erpDispatchDataMapper;
private final TbsActivityAmtCheckMapper activityAmtCheckMapper; private final TbsActivityAmtCheckMapper activityAmtCheckMapper;
@Override
public ErpDispatchSumPmsVo getDispatchSumByActivity(TbsActivity activity) {
ErpDispatchSumPmsQuery query = new ErpDispatchSumPmsQuery();
query.setSupplierCode(activity.getSupplierCode());
query.setStartDate(activity.getActStartDate());
query.setEndDate(activity.getActEndDate());
List<TbsActivityGoods> activityGoodsList = activityGoodsService.list(
new LambdaQueryWrapper<TbsActivityGoods>()
.eq(TbsActivityGoods::getActivityId, activity.getId()));
Map<String,List<TbsActivityGoods>> actGoodsMap = activityGoodsList.stream()
.collect(Collectors.groupingBy(TbsActivityGoods::getTargetType));
boolean hasGoods = false;
List<TbsActivityGoods> brandGoodsList = actGoodsMap.get("brand");
if(brandGoodsList!=null){
List<Long> ids = brandGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setBrandIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> seriesGoodsList = actGoodsMap.get("series");
if(seriesGoodsList!=null){
List<Long> ids = seriesGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setSeriesIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> categoryGoodsList = actGoodsMap.get("category");
if(categoryGoodsList!=null){
List<Long> ids = categoryGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setCategoryIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> spuGoodsList = actGoodsMap.get("spu");
if(spuGoodsList!=null){
List<Long> ids = spuGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setSpuIds(ids);
hasGoods = true;
}
List<TbsActivityGoods> skuGoodsList = actGoodsMap.get("sku");
if(skuGoodsList!=null){
List<Long> ids = skuGoodsList.stream()
.map(TbsActivityGoods::getTargetId).collect(Collectors.toList());
query.setSkuIds(ids);
hasGoods = true;
}
ErpDispatchSumPmsVo sumPmsVo = new ErpDispatchSumPmsVo();
sumPmsVo.setSupplierCode(query.getSupplierCode());
sumPmsVo.setStartDate(query.getStartDate());
sumPmsVo.setEndDate(query.getEndDate());
sumPmsVo.setCategoryIds(query.getCategoryIds());
sumPmsVo.setSpuIds(query.getSpuIds());
sumPmsVo.setSkuIds(query.getSkuIds());
BigDecimal amt = BigDecimal.ZERO;
if (hasGoods) {
amt = erpDispatchDataMapper.queryCusAmtByPms(query);
if (amt==null){
amt = BigDecimal.ZERO;
}
}
sumPmsVo.setTotalAmount(amt);
return sumPmsVo;
}
@Override @Override
public void initReopenState() { public void initReopenState() {
LocalDate now = LocalDate.now(); LocalDate now = LocalDate.now();

7
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -16,6 +16,7 @@ import com.qs.serve.common.utils.CopierUtil;
import com.qs.serve.common.utils.PageUtil; import com.qs.serve.common.utils.PageUtil;
import com.qs.serve.common.utils.StringUtils; import com.qs.serve.common.utils.StringUtils;
import com.qs.serve.framework.redis.utils.CodeGenUtil; import com.qs.serve.framework.redis.utils.CodeGenUtil;
import com.qs.serve.modules.erp.entity.vo.ErpDispatchSumPmsVo;
import com.qs.serve.modules.sync.AsyncFactory; import com.qs.serve.modules.sync.AsyncFactory;
import com.qs.serve.modules.sys.common.AuthContextUtils; import com.qs.serve.modules.sys.common.AuthContextUtils;
import com.qs.serve.modules.tag.util.TagFiledUtil; import com.qs.serve.modules.tag.util.TagFiledUtil;
@ -828,6 +829,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
validActivity(cotractFlag,activity,true,isCurrentCommit); validActivity(cotractFlag,activity,true,isCurrentCommit);
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
verification.setId(verificationBo.getId()); verification.setId(verificationBo.getId());
verification.setRebateId(activity.getRebateId());
verification.setRebatePeriodId(activity.getRebatePeriodId());
verification.setCostApplyCode(costApply.getCode()); verification.setCostApplyCode(costApply.getCode());
verification.setActivityCode(activity.getActivityCode()); verification.setActivityCode(activity.getActivityCode());
verification.setPayConditionId(verificationBo.getPayConditionId()); verification.setPayConditionId(verificationBo.getPayConditionId());
@ -913,11 +916,11 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
totalAmount = totalAmount.add(verificationSubject.getUsedAmount()); totalAmount = totalAmount.add(verificationSubject.getUsedAmount());
totalDispatchAmt = totalDispatchAmt.add(verificationSubject.getFinalDispatchAmt()); totalDispatchAmt = totalDispatchAmt.add(verificationSubject.getFinalDispatchAmt());
} }
ErpDispatchSumPmsVo dispatchSumPmsVo = activityService.getDispatchSumByActivity(activity);
verification.setAutoDispatchAmt(dispatchSumPmsVo.getTotalAmount());
verification.setFinalDispatchAmt(totalDispatchAmt); verification.setFinalDispatchAmt(totalDispatchAmt);
verification.setAmount(totalAmount); verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount); verification.setAmountRecord(totalAmount);
// TODO 系统自动获取的发货金额
verification.setAutoDispatchAmt(BigDecimal.ZERO);
//保存 //保存
this.saveOrUpdate(verification); this.saveOrUpdate(verification);

Loading…
Cancel
Save