Commit 79001388 by 周晓航

【订C,获取订单明细商品重量,求和(含套餐),传递给devily/create配送服务,克变成千克,÷1000,保留2位小数】

https://www.tapd.cn/43862731/prong/stories/view/1143862731001047524
parent d3a83303
......@@ -5,15 +5,14 @@ import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.StoreInfoDTO;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.Date;
import java.util.LinkedList;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
@Component
......@@ -30,7 +29,7 @@ public class DeliverySdkAdapter {
, ConsoleResponseDTO<BizDTO> bizDTO, String deliveryCallBackUrl) {
StoreInfoDTO storeInfo = bizDTO.getBizVO().getStoreInfo();
CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto();
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1));
deliveryOrderRequestDto.setDepatchWeight(this.getDepatchWeightByOrder(order.getProductList()));
deliveryOrderRequestDto.setSerialNumber(order.getOtherCode());
deliveryOrderRequestDto.setOrderId(order.getOid());
deliveryOrderRequestDto.setOrderRemark(order.getRemark());
......@@ -78,4 +77,27 @@ public class DeliverySdkAdapter {
}).collect(Collectors.toCollection(LinkedList::new))));
return deliveryOrderRequestDto;
}
private BigDecimal getDepatchWeightByOrder(List<ProductBeanV1> productList) {
if (CollectionUtils.isEmpty(productList)) {
return new BigDecimal("0.5");
}
BigDecimal result = BigDecimal.ZERO;
productList.forEach(p -> {
BigDecimal sum = p.getWeight().multiply(new BigDecimal(p.getNumber()));
if (CollectionUtils.isNotEmpty(p.getComboProduct())) {
long comboProductSum = p.getComboProduct().stream().mapToLong(value -> value.getWeight().multiply(new BigDecimal(value.getNumber())).longValue()).sum();
long materialProductSum = p.getMaterialProduct().stream().mapToLong(value -> value.getWeight().multiply(new BigDecimal(value.getNumber())).longValue()).sum();
long sendProductSum = p.getSendProduct().stream().mapToLong(value -> value.getWeight().multiply(new BigDecimal(value.getNumber())).longValue()).sum();
BigDecimal otherProductSum = new BigDecimal(comboProductSum + materialProductSum + sendProductSum);
sum.add(otherProductSum);
}
result.add(sum);
});
if (result.compareTo(BigDecimal.ZERO) <= 0) {
return new BigDecimal("0.5");
}
// 这里 计算的结果是 g 需要变成 kg 给接口 保留2位小数 后面多余直接舍弃
return result.divide(new BigDecimal("1000"), 2, BigDecimal.ROUND_DOWN);
}
}
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