莫名的null值情况
This commit is contained in:
@@ -1,10 +1,9 @@
|
|||||||
package com.czg.service.order.mapper;
|
package com.czg.service.order.mapper;
|
||||||
|
|
||||||
|
import com.czg.order.entity.ShopOrderStatistic;
|
||||||
import com.czg.order.vo.ProductCostAmountVO;
|
import com.czg.order.vo.ProductCostAmountVO;
|
||||||
import com.czg.order.vo.TotalVo;
|
import com.czg.order.vo.TotalVo;
|
||||||
import com.mybatisflex.core.BaseMapper;
|
import com.mybatisflex.core.BaseMapper;
|
||||||
import com.czg.order.entity.ShopOrderStatistic;
|
|
||||||
import org.apache.ibatis.annotations.MapKey;
|
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -283,7 +282,7 @@ public interface ShopOrderStatisticMapper extends BaseMapper<ShopOrderStatistic>
|
|||||||
|
|
||||||
|
|
||||||
@Select("SELECT " +
|
@Select("SELECT " +
|
||||||
" detail.product_id as productId," +
|
" detail.product_id as productId," +
|
||||||
" detail.sku_id as skuId," +
|
" detail.sku_id as skuId," +
|
||||||
" sum(detail.num - detail.return_num) as count " +
|
" sum(detail.num - detail.return_num) as count " +
|
||||||
"FROM " +
|
"FROM " +
|
||||||
|
|||||||
@@ -19,10 +19,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -192,24 +189,30 @@ public class ShopOrderStatisticServiceImpl extends ServiceImpl<ShopOrderStatisti
|
|||||||
* 获取商品成本价
|
* 获取商品成本价
|
||||||
*/
|
*/
|
||||||
private BigDecimal getProductCostAmount(Long shopId, LocalDate day) {
|
private BigDecimal getProductCostAmount(Long shopId, LocalDate day) {
|
||||||
|
BigDecimal productCostAmount = BigDecimal.ZERO;
|
||||||
|
////获取orderDetail信息 productId skuId 数量
|
||||||
|
List<ProductCostAmountVO> orderDetailProduct = mapper.getOrderDetailProduct(shopId, day);
|
||||||
|
orderDetailProduct = orderDetailProduct.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (CollUtil.isEmpty(orderDetailProduct)) {
|
||||||
|
return productCostAmount;
|
||||||
|
}
|
||||||
//获取商品sku成本价 productId skuId price
|
//获取商品sku成本价 productId skuId price
|
||||||
List<ProductCostAmountVO> skuCostAmountList = mapper.getSkuCostAmount(shopId);
|
List<ProductCostAmountVO> skuCostAmountList = mapper.getSkuCostAmount(shopId);
|
||||||
// //获取商品耗材成本价 productId price
|
// //获取商品耗材成本价 productId price
|
||||||
List<ProductCostAmountVO> consCostAmountList = mapper.getConsCostAmount(shopId);
|
List<ProductCostAmountVO> consCostAmountList = mapper.getConsCostAmount(shopId);
|
||||||
//获取orderDetail信息 productId skuId 数量
|
|
||||||
BigDecimal productCostAmount = BigDecimal.ZERO;
|
|
||||||
if (CollUtil.isEmpty(skuCostAmountList) && CollUtil.isEmpty(consCostAmountList)) {
|
if (CollUtil.isEmpty(skuCostAmountList) && CollUtil.isEmpty(consCostAmountList)) {
|
||||||
return productCostAmount;
|
return productCostAmount;
|
||||||
}
|
}
|
||||||
List<ProductCostAmountVO> orderDetailProduct = mapper.getOrderDetailProduct(shopId, day);
|
|
||||||
if (CollUtil.isEmpty(orderDetailProduct)) {
|
|
||||||
return productCostAmount;
|
|
||||||
}
|
|
||||||
Map<Long, BigDecimal> skuCostAmountMap = skuCostAmountList.stream()
|
Map<Long, BigDecimal> skuCostAmountMap = skuCostAmountList.stream()
|
||||||
.collect(Collectors.toMap(ProductCostAmountVO::getSkuId, ProductCostAmountVO::getCostAmount));
|
.collect(Collectors.toMap(ProductCostAmountVO::getSkuId, ProductCostAmountVO::getCostAmount));
|
||||||
Map<Long, BigDecimal> consCostAmountMap = consCostAmountList.stream()
|
Map<Long, BigDecimal> consCostAmountMap = consCostAmountList.stream()
|
||||||
.collect(Collectors.toMap(ProductCostAmountVO::getProductId, ProductCostAmountVO::getCostAmount));
|
.collect(Collectors.toMap(ProductCostAmountVO::getProductId, ProductCostAmountVO::getCostAmount));
|
||||||
for (ProductCostAmountVO productCostAmountVO : orderDetailProduct) {
|
for (ProductCostAmountVO productCostAmountVO : orderDetailProduct) {
|
||||||
|
if (productCostAmountVO == null || productCostAmountVO.getCount() <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (skuCostAmountMap.containsKey(productCostAmountVO.getSkuId())) {
|
if (skuCostAmountMap.containsKey(productCostAmountVO.getSkuId())) {
|
||||||
BigDecimal costAmount = skuCostAmountMap.get(productCostAmountVO.getSkuId());
|
BigDecimal costAmount = skuCostAmountMap.get(productCostAmountVO.getSkuId());
|
||||||
productCostAmount = productCostAmount.add(costAmount.multiply(new BigDecimal(productCostAmountVO.getCount())).setScale(2, RoundingMode.HALF_UP));
|
productCostAmount = productCostAmount.add(costAmount.multiply(new BigDecimal(productCostAmountVO.getCount())).setScale(2, RoundingMode.HALF_UP));
|
||||||
|
|||||||
Reference in New Issue
Block a user