Bladeren bron

1、数据获取判空;
2、亏吨扣款计算方式调整;

zk 2 jaren geleden
bovenliggende
commit
00e5a1c41b

+ 49 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/TaxRateTypeEnum.java

@@ -0,0 +1,49 @@
+package com.sckw.core.model.enums;
+
+import lombok.Data;
+
+/**
+ * desc 合理损耗单位
+ * author zk
+ * date 2023/9/4 0004
+ */
+public enum TaxRateTypeEnum {
+
+    //‰
+    PERCENT(0, "‰", 1000),
+    //%
+    MILLIMETER(1, "%", 100);
+
+    private final Integer code;
+
+    private final String name;
+
+    private final Integer value;
+
+    TaxRateTypeEnum(Integer code, String name, Integer value){
+        this.code = code;
+        this.name = name;
+        this.value = value;
+    }
+
+    public static TaxRateTypeEnum getName(Integer code){
+        for (TaxRateTypeEnum typeEnum : values()) {
+            if (typeEnum.getCode().equals(code)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getValue() {
+        return value;
+    }
+}

+ 3 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java

@@ -149,6 +149,9 @@ public class KwfDriverService {
      * @date 2023/8/30
      **/
     public String getDictValue(String type, String value) {
+        if (StringUtils.isBlank(type) || StringUtils.isBlank(value)) {
+            return null;
+        }
         List<String> dictKey = new ArrayList<>(){{
             add(type + Global.POUND + value);
         }};

+ 9 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDriverVo.java

@@ -1,6 +1,7 @@
 package com.sckw.transport.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.sckw.core.model.constant.Global;
 import lombok.Data;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -42,6 +43,11 @@ public class WaybillOrderDriverVo {
      */
     private Integer type;
 
+    /**
+     * 循环/趟次
+     */
+    private String typeName;
+
     /**
      * 承运企业主键ID
      */
@@ -152,4 +158,7 @@ public class WaybillOrderDriverVo {
      */
     private Date createTime;
 
+    public String getTypeName() {
+        return type != null && type == Global.NUMERICAL_ONE ? "趟次" : "循环";
+    }
 }

+ 17 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -5,10 +5,7 @@ import com.github.pagehelper.PageHelper;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
-import com.sckw.core.model.enums.CarWaybillEnum;
-import com.sckw.core.model.enums.LogisticsOrderEnum;
-import com.sckw.core.model.enums.OrderRuleEnum;
-import com.sckw.core.model.enums.RedisOrderGenerateEnum;
+import com.sckw.core.model.enums.*;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
@@ -1549,7 +1546,7 @@ public class KwtWaybillOrderService {
         waybillOrder.setUnloadAmount(params.getAmount());
         waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
         BigDecimal deficitPrice = deficitPrice(waybillOrder.getLoadAmount(), waybillOrder.getDeficitAmount(),
-                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+                logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
         waybillOrder.setDeficitPrice(deficitPrice);
         waybillOrder.setStatus(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
         waybillOrderDao.updateById(waybillOrder);
@@ -1636,13 +1633,23 @@ public class KwtWaybillOrderService {
      * @author zk
      * @date 2023/7/27
      **/
-    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, BigDecimal goodsPrice) {
+    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss,
+                                   String lossUnit, BigDecimal goodsPrice) {
         //亏吨<=0
         if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
             return new BigDecimal(Global.AMOUNT);
         }
         //承运订单亏吨扣款=(承运订单亏吨量 -(承运订单装货量 * 承运订单合理损耗))* 扣亏货值
         loss = loss == null ? new BigDecimal(Global.AMOUNT) : loss;
+        if (loss.doubleValue() > 0 && StringUtils.isNotBlank(lossUnit)) {
+            if (lossUnit.equals(String.valueOf(TaxRateTypeEnum.PERCENT.getCode()))) {
+                loss = loss.divide(new BigDecimal(TaxRateTypeEnum.PERCENT.getValue()));
+            }
+            if (lossUnit.equals(String.valueOf(TaxRateTypeEnum.MILLIMETER.getCode()))) {
+                loss = loss.divide(new BigDecimal(TaxRateTypeEnum.MILLIMETER.getValue()));
+            }
+        }
+
         goodsPrice = goodsPrice == null ? new BigDecimal(Global.AMOUNT) : goodsPrice;
         BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(4, RoundingMode.HALF_UP))
                 .multiply(goodsPrice).setScale(4, RoundingMode.HALF_UP);
@@ -1814,7 +1821,7 @@ public class KwtWaybillOrderService {
         waybillOrder.setUnloadAmount(params.getType() == Global.NUMERICAL_TWO ? params.getAmount() : waybillOrder.getUnloadAmount());
         waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
         BigDecimal deficitPrice = deficitPrice(waybillOrder.getLoadAmount(), waybillOrder.getDeficitAmount(),
-                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+                logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
         waybillOrder.setDeficitPrice(deficitPrice);
         waybillOrderDao.updateById(waybillOrder);
 
@@ -1964,7 +1971,7 @@ public class KwtWaybillOrderService {
             logisticsOrder.setUnloadTime(waybillCount.getUnloadTime());
             logisticsOrder.setDeficitAmount(waybillCount.getDeficitAmount());
             BigDecimal deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
-                    logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+                    logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
             logisticsOrder.setDeficitPrice(deficitPrice);
             logisticsOrderDao.updateById(logisticsOrder);
 
@@ -2023,7 +2030,7 @@ public class KwtWaybillOrderService {
         waybillOrder.setUnloadAmount(params.getUnloadAmount());
         waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
         BigDecimal deficitPrice = deficitPrice(waybillOrder.getLoadAmount(), waybillOrder.getDeficitAmount(),
-                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+                logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
         waybillOrder.setDeficitPrice(deficitPrice);
         waybillOrder.setStatus(status);
         waybillOrderDao.updateById(waybillOrder);
@@ -2066,7 +2073,7 @@ public class KwtWaybillOrderService {
             logisticsOrder.setUnloadTime(waybillCount.getUnloadTime());
             logisticsOrder.setDeficitAmount(waybillCount.getDeficitAmount());
             deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
-                    logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+                    logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
             logisticsOrder.setDeficitPrice(deficitPrice);
             logisticsOrderDao.updateById(logisticsOrder);