Browse Source

上架导出返利后单价计算更新

liyuan 3 months ago
parent
commit
b5c8fea812

+ 12 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.common.enums.CommonEnum;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
@@ -43,9 +44,12 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -472,11 +476,14 @@ public class ProductLaunchController extends BladeController {
 					.map(Dept::getFullName).collect(Collectors.joining(" | "));
 				item.setSharedCompany(deptName);
 			}
-			if (!stockDescList.isEmpty()) {
-				List<PjStockDesc> stockDescs = stockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
-				if (!stockDescs.isEmpty()) {
-					item.setRebatePrice(stockDescs.get(0).getRebatePrice() + "");
-				}
+			if (stockDescList.isEmpty()) {
+				continue;
+			}
+			List<PjStockDesc> stockDescs = stockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
+			if (!stockDescs.isEmpty()) {
+				List<PjStockDesc> nonZeroList = stockDescs.stream().filter(sd -> Objects.nonNull(sd.getBalanceQuantity()) && sd.getBalanceQuantity().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
+				BigDecimal allRebatePrice = nonZeroList.stream().map(PjStockDesc::getRebatePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+				item.setRebatePrice(allRebatePrice.compareTo(BigDecimal.ZERO) == 0 ? CommonEnum.ZERO.info : String.valueOf(allRebatePrice.divide(new BigDecimal(nonZeroList.size()), 2, RoundingMode.HALF_UP)));
 			}
 		}
 		ExcelUtil.export(response, "导出产品上下架数据", "产品上下架数据表", BeanUtil.copyProperties(pjProductLaunchList, ProductLaunchExportExcel.class), ProductLaunchExportExcel.class);