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