Commit 7028ad46 by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/1.9.32_商品加料'

parents a2e0b65c fbfee320
......@@ -89,7 +89,7 @@ public class MaterialPromotionService implements IPromotionService {
for (ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods materialGoods : product.getMaterialList()) {
pk = shoppingCartConvertAdapter.jointPk(product.getCartGoodsUid(), materialGoods.getSpuId());
MaterialApportion material = map.get(pk);
if ((material == null) || (material != null && material.getApportionAmount().intValue() == 0))
if ((material == null) || (material != null && material.getTotalDiscountAmount().intValue() == 0))
continue;
List<ActivityDiscountsDto> activityDiscountsDtos = materialGoods.getActivityDiscountsDtos();
if (CollectionUtils.isEmpty(activityDiscountsDtos)) {
......@@ -97,18 +97,17 @@ public class MaterialPromotionService implements IPromotionService {
}
//设置行记录参加的活动及总优惠
if (CollectionUtils.isNotEmpty(material.getDetails())) {
long sum = material.getDetails().stream().mapToLong(ApportionDetails::getQty).sum();
for (ApportionDetails detail : material.getDetails()) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(detail.getActivityCode());
activityDiscountsDto.setActivityName(detail.getActivityName());
activityDiscountsDto.setActivityType(detail.getActivityType());
activityDiscountsDto.setDiscountAmount(material.getApportionAmount() * (sum == product.getQty() ? 1 : product.getQty()));
activityDiscountsDto.setDiscountAmount(detail.getAmount().intValue());
activityDiscountsDtos.add(activityDiscountsDto);
}
}
materialGoods.setActivityDiscountsDtos(activityDiscountsDtos);
materialGoods.setTotalDiscountAmount(material.getTotalDiscountAmount() * (material.getQty() == product.getQty() ? 1 : product.getQty()));
materialGoods.setTotalDiscountAmount(material.getTotalDiscountAmount());
product.setProductType(GoodsTypeEnum.MATERIAL.getGoodsType());
}
}
......@@ -146,10 +145,8 @@ public class MaterialPromotionService implements IPromotionService {
pk = shoppingCartConvertAdapter.jointPk(apportionGood.getCartGoodsUid(), material.getGoodsId());
if (mApportion.get(pk) == null) {
MaterialApportion materialApportion = new MaterialApportion();
materialApportion.setApportionAmount(material.getApportionAmount() * material.getGoodsQuantity());
materialApportion.setGoodsId(material.getGoodsId());
materialApportion.setTotalDiscountAmount(material.getApportionAmount() * material.getGoodsQuantity());
materialApportion.setQty(material.getGoodsQuantity());
materialApportion.setTotalDiscountAmount(material.getApportionAmount() * apportionGood.getGoodsQuantity());
materialApportion.setPk(pk);
ArrayList<ApportionDetails> apportionDetailsList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(material.getApportionDetails())) {
......@@ -158,8 +155,7 @@ public class MaterialPromotionService implements IPromotionService {
apportionDetails.setActivityName(apportionDetail.getActivityName());
apportionDetails.setActivityCode(apportionDetail.getActivityCode());
apportionDetails.setActivityType(apportionDetail.getActivityType());
apportionDetails.setAmount(apportionDetail.getActivityApportionAmount());
apportionDetails.setQty(material.getGoodsQuantity());
apportionDetails.setAmount(apportionDetail.getActivityApportionAmount()*apportionGood.getGoodsQuantity());
apportionDetailsList.add(apportionDetails);
}
materialApportion.setDetails(apportionDetailsList);
......@@ -168,20 +164,26 @@ public class MaterialPromotionService implements IPromotionService {
continue;
}
MaterialApportion apportion = mApportion.get(pk);
apportion.setApportionAmount(apportion.getApportionAmount() + material.getApportionAmount() * material.getGoodsQuantity());
apportion.setTotalDiscountAmount(apportion.getTotalDiscountAmount() + material.getApportionAmount() * material.getGoodsQuantity());
apportion.setQty(apportion.getQty() + material.getGoodsQuantity());
apportion.setTotalDiscountAmount(apportion.getTotalDiscountAmount() + material.getApportionAmount() * apportionGood.getGoodsQuantity());
List<ApportionDetails> details = apportion.getDetails();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails apportionDetail : material.getApportionDetails()) {
//累加不同的均摊活动
if (apportion.getDetails().stream().filter(e -> e.getActivityCode().equals(apportionDetail.getActivityCode())).count() == 0) {
ApportionDetails apportionDetails = new ApportionDetails();
apportionDetails.setActivityName(apportionDetail.getActivityName());
apportionDetails.setActivityCode(apportionDetail.getActivityCode());
apportionDetails.setActivityType(apportionDetail.getActivityType());
apportionDetails.setAmount(apportionDetail.getActivityApportionAmount());
apportionDetails.setQty(material.getGoodsQuantity());
apportionDetails.setAmount(apportionDetail.getActivityApportionAmount()*apportionGood.getGoodsQuantity());
details.add(apportionDetails);
}
//相同的均摊累加金额
else {
for (ApportionDetails detail : apportion.getDetails()) {
if (detail.getActivityCode().equals(apportionDetail.getActivityCode())) {
detail.setAmount(detail.getAmount()+apportionDetail.getActivityApportionAmount()*apportionGood.getGoodsQuantity());
}
}
}
apportion.setDetails(details);
}
mApportion.put(pk, apportion);
......@@ -193,14 +195,10 @@ public class MaterialPromotionService implements IPromotionService {
@Data
private class MaterialApportion {
private String goodsId;
private Long salePrice;
private Long amount;
private Integer apportionAmount;
//优惠金额
private Integer totalDiscountAmount;
private List<ApportionDetails> details;
private String pk;
private Integer qty;
}
@Data
......@@ -209,6 +207,5 @@ public class MaterialPromotionService implements IPromotionService {
private String activityName;
private Integer activityType;
private Long amount;
private Integer qty;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment