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) {
TbsActivity activity = tbsActivityService.getById(activityId);
ErpDispatchSumPmsQuery query = new ErpDispatchSumPmsQuery();
query.setSupplierCode(activity.getSupplierCode());
query.setStartDate(activity.getActStartDate());
query.setEndDate(activity.getActEndDate());
List<TbsActivityGoods> activityGoodsList = tbsActivityGoodsService.list(
new LambdaQueryWrapper<TbsActivityGoods>()
.eq(TbsActivityGoods::getActivityId, activityId));
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;
ErpDispatchSumPmsVo erpDispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity);
BigDecimal amt = erpDispatchSumPmsVo.getTotalAmount();
List<TbsActivitySubject> activitySubjects = tbsActivitySubjectService.list(new LambdaQueryWrapper<TbsActivitySubject>()
.eq(TbsActivitySubject::getActivityId,activityId));
List<SubjectDispatchSumVo> dispatchSumVoList = new ArrayList<>();
// 开始平摊逻辑
int size = activitySubjects.size();
if (size > 0) {
BigDecimal totalAmount = BigDecimal.ZERO;
for (TbsActivitySubject subject : activitySubjects) {
totalAmount = totalAmount.add(subject.getAmount());
}
List<TbsActivitySubject> activitySubjects = tbsActivitySubjectService.list(new LambdaQueryWrapper<TbsActivitySubject>()
.eq(TbsActivitySubject::getActivityId,activityId));
List<SubjectDispatchSumVo> dispatchSumVoList = new ArrayList<>();
// 开始平摊逻辑
int size = activitySubjects.size();
if (size > 0) {
BigDecimal totalAmount = BigDecimal.ZERO;
for (TbsActivitySubject subject : activitySubjects) {
totalAmount = totalAmount.add(subject.getAmount());
}
BigDecimal remainingAmt = amt;
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);
BigDecimal remainingAmt = amt;
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);
}
sumPmsVo.setSubjectDispatchAmountList(dispatchSumVoList);
}
sumPmsVo.setTotalAmount(amt);
return sumPmsVo;
erpDispatchSumPmsVo.setSubjectDispatchAmountList(dispatchSumVoList);
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;
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.bo.TbsActivityBo;
@ -14,6 +15,8 @@ import java.util.List;
*/
public interface TbsActivityService extends IService<TbsActivity> {
ErpDispatchSumPmsVo getDispatchSumByActivity(TbsActivity activity);
/**
* 申请活动加载列表
* @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.mapper.BmsSubjectFormMapper;
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.GoodsSku;
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 ErpDispatchDataMapper erpDispatchDataMapper;
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
public void initReopenState() {
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.StringUtils;
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.sys.common.AuthContextUtils;
import com.qs.serve.modules.tag.util.TagFiledUtil;
@ -828,6 +829,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
validActivity(cotractFlag,activity,true,isCurrentCommit);
VtbVerification verification = new VtbVerification();
verification.setId(verificationBo.getId());
verification.setRebateId(activity.getRebateId());
verification.setRebatePeriodId(activity.getRebatePeriodId());
verification.setCostApplyCode(costApply.getCode());
verification.setActivityCode(activity.getActivityCode());
verification.setPayConditionId(verificationBo.getPayConditionId());
@ -913,11 +916,11 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
totalAmount = totalAmount.add(verificationSubject.getUsedAmount());
totalDispatchAmt = totalDispatchAmt.add(verificationSubject.getFinalDispatchAmt());
}
ErpDispatchSumPmsVo dispatchSumPmsVo = activityService.getDispatchSumByActivity(activity);
verification.setAutoDispatchAmt(dispatchSumPmsVo.getTotalAmount());
verification.setFinalDispatchAmt(totalDispatchAmt);
verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount);
// TODO 系统自动获取的发货金额
verification.setAutoDispatchAmt(BigDecimal.ZERO);
//保存
this.saveOrUpdate(verification);

Loading…
Cancel
Save