فهرست منبع

提交保存车辆

chenxiaofei 1 ماه پیش
والد
کامیت
e52d1d66b9

+ 42 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -3070,15 +3070,50 @@ public class KwtLogisticsConsignmentService {
         BigDecimal expectedTransportPrice =
                 Objects.nonNull(kwtLogisticsOrder.getPrice()) && Objects.nonNull(orderDetailVo.getAmount()) ?
                         kwtLogisticsOrder.getPrice().multiply(orderDetailVo.getAmount()) : BigDecimal.ZERO;
-        BigDecimal actualTransportPrice = Objects.nonNull(kwtLogisticsOrder.getPrice()) && Objects.nonNull(kwtLogisticsOrder.getUnloadAmount()) ?
-                kwtLogisticsOrder.getPrice().multiply(kwtLogisticsOrder.getUnloadAmount()) : BigDecimal.ZERO;
+//        BigDecimal actualTransportPrice = Objects.nonNull(kwtLogisticsOrder.getPrice()) && Objects.nonNull(kwtLogisticsOrder.getUnloadAmount()) ?
+//                kwtLogisticsOrder.getPrice().multiply(kwtLogisticsOrder.getUnloadAmount()) : BigDecimal.ZERO;
 
         logisticsOrderResp.setExpectedTransportPrice(expectedTransportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
-        logisticsOrderResp.setActualTransportPrice(actualTransportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
-        logisticsOrderResp.setLoadAmount((Objects.nonNull(kwtLogisticsOrder.getLoadAmount()) ?
-                kwtLogisticsOrder.getLoadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00") + kwtLogisticsOrder.getUnit());
-        logisticsOrderResp.setUnloadAmount((Objects.nonNull(kwtLogisticsOrder.getUnloadAmount()) ?
-                kwtLogisticsOrder.getUnloadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00") + kwtLogisticsOrder.getUnit());
+
+        List<KwtWaybillOrderSubtask> subtasks = logisticsOrderIdAndSubtaskList.getOrDefault(kwtLogisticsOrder.getId(), new ArrayList<>());
+        BigDecimal transportPrice = BigDecimal.ZERO;
+        BigDecimal loadAmount= BigDecimal.ZERO;
+        BigDecimal unloadAmount = BigDecimal.ZERO;
+        //用于计算
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        if (org.apache.commons.lang3.StringUtils.equals(kwtLogisticsOrder.getBillingMode(),
+                DictEnum.CHARGING_TYPE_1.getValue())) {
+            loadAmount = subtasks.stream().filter(x->Objects.nonNull(x.getLoadAmount()))
+                    .map(KwtWaybillOrderSubtask::getLoadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            transportPrice = Objects.nonNull(kwtLogisticsOrder.getPrice()) ? loadAmount.multiply(kwtLogisticsOrder.getPrice()) :
+                    BigDecimal.ZERO;
+           // logisticsOrderResp.setLoadAmount(loadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() + kwtLogisticsOrder.getUnit());
+            logisticsOrderResp.setUnloadAmount("-");
+           // logisticsOrderResp.setActualTransportPrice(transportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
+
+        } else if (org.apache.commons.lang3.StringUtils.equals(kwtLogisticsOrder.getBillingMode(),
+                DictEnum.CHARGING_TYPE_2.getValue())) {
+            loadAmount = subtasks.stream().filter(x->Objects.nonNull(x.getLoadAmount()))
+                    .map(KwtWaybillOrderSubtask::getLoadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            unloadAmount = subtasks.stream().filter(x->Objects.nonNull(x.getUnloadAmount()))
+                    .map(KwtWaybillOrderSubtask::getUnloadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            transportPrice = Objects.nonNull(kwtLogisticsOrder.getPrice()) ? unloadAmount.multiply(kwtLogisticsOrder.getPrice()) :
+                    BigDecimal.ZERO;
+
+           // logisticsOrderResp.setLoadAmount(loadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() + kwtLogisticsOrder.getUnit());
+            logisticsOrderResp.setUnloadAmount(unloadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() + kwtLogisticsOrder.getUnit());
+            //logisticsOrderResp.setActualTransportPrice(transportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
+        }
+        logisticsOrderResp.setLoadAmount(loadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() + kwtLogisticsOrder.getUnit());
+        logisticsOrderResp.setActualTransportPrice(transportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
+//        logisticsOrderResp.setActualTransportPrice(actualTransportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
+//        logisticsOrderResp.setLoadAmount((Objects.nonNull(kwtLogisticsOrder.getLoadAmount()) ?
+//                kwtLogisticsOrder.getLoadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00") + kwtLogisticsOrder.getUnit());
+//        logisticsOrderResp.setUnloadAmount((Objects.nonNull(kwtLogisticsOrder.getUnloadAmount()) ?
+//                kwtLogisticsOrder.getUnloadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00") + kwtLogisticsOrder.getUnit());
 
         KwtLogisticsOrderAddress loadAdd = finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap.getOrDefault(kwtLogisticsOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtLogisticsOrderAddress());
         logisticsOrderResp.setLoadAddress(loadAdd.getCityName() + loadAdd.getDetailAddress());