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; ...@@ -5,15 +5,14 @@ import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.StoreInfoDTO; import cn.freemud.management.entities.dto.request.console.StoreInfoDTO;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto; 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.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType; import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang.math.NumberUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.*;
import java.util.LinkedList;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
...@@ -30,7 +29,7 @@ public class DeliverySdkAdapter { ...@@ -30,7 +29,7 @@ public class DeliverySdkAdapter {
, ConsoleResponseDTO<BizDTO> bizDTO, String deliveryCallBackUrl) { , ConsoleResponseDTO<BizDTO> bizDTO, String deliveryCallBackUrl) {
StoreInfoDTO storeInfo = bizDTO.getBizVO().getStoreInfo(); StoreInfoDTO storeInfo = bizDTO.getBizVO().getStoreInfo();
CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto(); CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto();
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1)); deliveryOrderRequestDto.setDepatchWeight(this.getDepatchWeightByOrder(order.getProductList()));
deliveryOrderRequestDto.setSerialNumber(order.getOtherCode()); deliveryOrderRequestDto.setSerialNumber(order.getOtherCode());
deliveryOrderRequestDto.setOrderId(order.getOid()); deliveryOrderRequestDto.setOrderId(order.getOid());
deliveryOrderRequestDto.setOrderRemark(order.getRemark()); deliveryOrderRequestDto.setOrderRemark(order.getRemark());
...@@ -78,4 +77,27 @@ public class DeliverySdkAdapter { ...@@ -78,4 +77,27 @@ public class DeliverySdkAdapter {
}).collect(Collectors.toCollection(LinkedList::new)))); }).collect(Collectors.toCollection(LinkedList::new))));
return deliveryOrderRequestDto; 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