Explorar el Código

Merge remote-tracking branch 'origin/dev' into dev

czh hace 2 años
padre
commit
8e1a641f58

+ 49 - 21
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -2,9 +2,11 @@ package com.sckw.report.service;
 
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.CarWaybillQueryEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
+import com.sckw.core.model.enums.TaxRateTypeEnum;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
@@ -550,28 +552,13 @@ public class KwTransportService {
                     BigDecimal.valueOf(0) : waybillOrder.getDeficitAmount();
             vo.setDeficitAmount(String.valueOf(deficitAmount));
             // 存在装卸货差时 计算扣亏量
-            BigDecimal lossAmount = BigDecimal.valueOf(0);
-            BigDecimal loss = waybillOrder.getLoss() == null ? new BigDecimal("0.00") : waybillOrder.getLoss();
-            if (deficitAmount.compareTo(new BigDecimal("0.00")) > 0 && loss.compareTo(new BigDecimal("0.00")) > 0) {
-                String lossUnit = waybillOrder.getLossUnit();
-                Map<String, SysDictResDto> LossUnitType = remoteSystemService.queryDictMapByType(DictTypeEnum.TAX_RATE_TYPE.getType());
-                SysDictResDto sysDictRes = LossUnitType.get(lossUnit);
-                if (sysDictRes != null) {
-                if (sysDictRes.getLabel().equals("%")) {
-                    // 百分比
-                    lossAmount = loss.multiply(waybillOrder.getLoadAmount()).divide(BigDecimal.valueOf(100));
-                } else {
-                    // 千分比
-                    lossAmount = loss.multiply(waybillOrder.getLoadAmount()).divide(BigDecimal.valueOf(1000));
-                }
-                }
-                lossAmount = deficitAmount.subtract(lossAmount);
-                if (lossAmount.compareTo(new BigDecimal("0.00")) < 0) {
-                    lossAmount = new BigDecimal("0.00");
-                }
-            }
+            BigDecimal deficitLossAmount = deficitLossAmount(
+                    waybillOrder.getLoadAmount(),
+                    waybillOrder.getDeficitAmount(),
+                    waybillOrder.getLoss(),
+                    waybillOrder.getLossUnit());
             // 实际扣亏量
-            vo.setDeficitRealAmount(lossAmount.setScale(2, RoundingMode.HALF_UP).toString());
+            vo.setDeficitRealAmount(deficitLossAmount.setScale(2, RoundingMode.HALF_UP).toString());
             vo.setGoodsPriceUnit(waybillOrder.getGoodsPriceUnit() == null ?
                     null : String.valueOf(waybillOrder.getGoodsPriceUnit()));
             returnList.add(vo);
@@ -782,4 +769,45 @@ public class KwTransportService {
         });
         return list;
     }
+
+    /**
+     * @param loadAmount    装货量
+     * @param deficitAmount 亏吨量
+     * @param loss          合理损耗
+     * @desc 计算扣亏量
+     * @author zk
+     * @date 2023/7/27
+     **/
+    public BigDecimal deficitLossAmount(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, String lossUnit) {
+        if (loadAmount == null || deficitAmount == null) {
+            return new BigDecimal(Global.AMOUNT);
+        }
+        //亏吨<=0
+        if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
+            return new BigDecimal(Global.AMOUNT);
+        }
+        if (StringUtils.isBlank(lossUnit)) {
+            lossUnit = String.valueOf(NumberConstant.ZERO);
+        }
+        //承运订单亏吨扣款=(承运订单亏吨量 -(承运订单装货量 * 承运订单合理损耗))* 扣亏货值
+        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()));
+            }
+        }
+        //扣亏量=亏吨量【合理损耗占比为空或为0】
+        if (loss.doubleValue() == Global.NUMERICAL_ZERO) {
+            return deficitAmount;
+        }
+        //扣亏量=亏吨量-合理损耗值【要求大于0,如果小于0则扣亏货量取0】
+        BigDecimal deficitLossAmount = deficitAmount.subtract(loadAmount.multiply(loss).setScale(2, RoundingMode.HALF_UP));
+        if (deficitLossAmount.doubleValue() <= 0) {
+            return new BigDecimal(Global.AMOUNT);
+        }
+        return deficitLossAmount;
+    }
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportDubboServiceImpl.java

@@ -215,7 +215,7 @@ public class TransportDubboServiceImpl implements TransportDubboService {
                 BigDecimal lossAmount = loadAmount.multiply(logisticsOrderDTO.getLoss() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getLoss());
                 //扣亏量
 //                BigDecimal deductWeighNumber = defectiveWeighNumber.subtract(lossAmount);
-                BigDecimal deductWeighNumber = commonService.deficitPrice(loadAmount, defectiveWeighNumber, loss, logisticsOrderDTO.getLossUnit());
+                BigDecimal deductWeighNumber = commonService.deficitLossAmount(loadAmount, defectiveWeighNumber, loss, logisticsOrderDTO.getLossUnit());
                 if (deductWeighNumber.compareTo(new BigDecimal("0")) < 0) {
                     deductWeighNumber = new BigDecimal("0.00");
                 }

+ 7 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDriverVo.java

@@ -239,11 +239,15 @@ public class WaybillOrderDriverVo {
                 loss = loss.divide(new BigDecimal(TaxRateTypeEnum.MILLIMETER.getValue()));
             }
         }
+        //扣亏量=亏吨量【合理损耗占比为空或为0】
+        if (loss.doubleValue() == Global.NUMERICAL_ZERO) {
+            return deficitAmount;
+        }
         //扣亏量=亏吨量-合理损耗值【要求大于0,如果小于0则扣亏货量取0】
-        BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(2, RoundingMode.HALF_UP));
-        if (deficitPrice.doubleValue() <= 0) {
+        BigDecimal deficitLossAmount = deficitAmount.subtract(loadAmount.multiply(loss).setScale(2, RoundingMode.HALF_UP));
+        if (deficitLossAmount.doubleValue() <= 0) {
             return new BigDecimal(Global.AMOUNT);
         }
-        return deficitPrice;
+        return deficitLossAmount;
     }
 }

+ 13 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -788,7 +788,7 @@ public class CommonService {
             return new BigDecimal(Global.AMOUNT);
         }
         //合理损耗
-        loss = loss == null ? new BigDecimal("0.00") : loss;
+        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()));
@@ -809,15 +809,15 @@ public class CommonService {
          * 2、按卸货量:总运价=实卸量*运价-罚款值
          * 3、按趟次:总运价=运价*趟次【后期加】
          */
-        loadAmount = loadAmount == null ? new BigDecimal("0.00") : loadAmount;
+        loadAmount = loadAmount == null ? new BigDecimal(Global.AMOUNT) : loadAmount;
         //已委托量
-        entrustAmount = entrustAmount == null ? new BigDecimal("0.00") : entrustAmount;
+        entrustAmount = entrustAmount == null ? new BigDecimal(Global.AMOUNT) : entrustAmount;
         //合理损耗值
         BigDecimal multiply = loadAmount.multiply(loss.divide(BigDecimal.valueOf(1000L)));
         //亏吨量
-        deficitAmount = deficitAmount == null ? new BigDecimal("0.00") : deficitAmount;
+        deficitAmount = deficitAmount == null ? new BigDecimal(Global.AMOUNT) : deficitAmount;
         //扣亏量/吨
-        deficitAmount = deficitAmount.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : deficitAmount.subtract(multiply);
+        deficitAmount = deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) == 0 ? new BigDecimal(Global.AMOUNT) : deficitAmount.subtract(multiply);
         return deficitAmount;
     }
 
@@ -829,7 +829,7 @@ public class CommonService {
      * @author zk
      * @date 2023/7/27
      **/
-    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, String lossUnit) {
+    public BigDecimal deficitLossAmount(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, String lossUnit) {
         //亏吨<=0
 //        if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
 //            return new BigDecimal(Global.AMOUNT);
@@ -865,12 +865,15 @@ public class CommonService {
                 loss = loss.divide(new BigDecimal(TaxRateTypeEnum.MILLIMETER.getValue()));
             }
         }
+        //扣亏量=亏吨量【合理损耗占比为空或为0】
+        if (loss.doubleValue() == Global.NUMERICAL_ZERO) {
+            return deficitAmount;
+        }
         //扣亏量=亏吨量-合理损耗值【要求大于0,如果小于0则扣亏货量取0】
-        BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(2, RoundingMode.HALF_UP));
-//        log.error("[ddd] {}", deficitPrice);
-        if (deficitPrice.doubleValue() <= 0) {
+        BigDecimal deficitLossAmount = deficitAmount.subtract(loadAmount.multiply(loss).setScale(2, RoundingMode.HALF_UP));
+        if (deficitLossAmount.doubleValue() <= 0) {
             return new BigDecimal(Global.AMOUNT);
         }
-        return deficitPrice;
+        return deficitLossAmount;
     }
 }

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -380,7 +380,7 @@ public class ConsignOrderService {
                     BigDecimal defectiveWeigh = kwtWaybillOrder.getDeficitAmount() == null ? new BigDecimal("0.00") : kwtWaybillOrder.getDeficitAmount();
                     //扣亏量/吨
 //                    BigDecimal deduct = defectiveWeigh.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : defectiveWeigh.subtract(multiply);
-                    BigDecimal deduct = commonService.deficitPrice(loadAmount, defectiveWeigh, loss, order.getLossUnit());
+                    BigDecimal deduct = commonService.deficitLossAmount(loadAmount, defectiveWeigh, loss, order.getLossUnit());
                     carWaybillVo.setLOrderId(String.valueOf(kwtWaybillOrder.getLOrderId()));
                     carWaybillVo.setLOrderNo(order.getLOrderNo());
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
@@ -657,7 +657,7 @@ public class ConsignOrderService {
                     //扣亏量/吨
 //                    BigDecimal deduct = defectiveWeigh.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : defectiveWeigh.subtract(multiply);
 //                    BigDecimal decimal = commonService.deficitAmount();
-                    BigDecimal deduct = commonService.deficitPrice(loadAmount, defectiveWeigh, loss, order.getLossUnit());
+                    BigDecimal deduct = commonService.deficitLossAmount(loadAmount, defectiveWeigh, loss, order.getLossUnit());
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                     carWaybillVo.setWOrderNo(kwtWaybillOrder.getWOrderNo());
                     carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ManagementWaybillOrderService.java

@@ -212,7 +212,7 @@ public class ManagementWaybillOrderService {
                 // 计算扣亏量
                 BigDecimal loadAmount = waybillOrder.getLoadAmount() == null ? new BigDecimal("0.00") : waybillOrder.getLoadAmount();
                 BigDecimal unloadAmount = waybillOrder.getUnloadAmount() == null ? new BigDecimal("0.00") : waybillOrder.getUnloadAmount();
-                BigDecimal deficitRealAmount = commonService.deficitPrice(
+                BigDecimal deficitRealAmount = commonService.deficitLossAmount(
                         waybillOrder.getLoadAmount(),
                         loadAmount.subtract(unloadAmount),
                         waybillOrder.getLoss(),

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -631,7 +631,7 @@ public class TransportCommonService {
 //                if (deductWeighNumber.compareTo(new BigDecimal("0")) < 0) {
 //                    deductWeighNumber = new BigDecimal("0.00");
 //                }
-                BigDecimal deductWeighNumber = commonService.deficitPrice(loadAmount, defectiveWeighNumber, loss, logisticsOrderDTO.getLossUnit());
+                BigDecimal deductWeighNumber = commonService.deficitLossAmount(loadAmount, defectiveWeighNumber, loss, logisticsOrderDTO.getLossUnit());
                 //罚款值
                 BigDecimal fineValue = (logisticsOrderDTO.getGoodsPrice() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getGoodsPrice()).multiply(deductWeighNumber);
                 /**

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -189,7 +189,7 @@ public class WaybillManagementService {
             BigDecimal deficitLoss = info.getLoss() == null ? BigDecimal.valueOf(0) : info.getLoss();
             BigDecimal loadAmount = info.getLoadAmount() == null ? new BigDecimal("0.00") : info.getLoadAmount();
             BigDecimal unloadAmount = info.getUnloadAmount() == null ? new BigDecimal("0.00") : info.getUnloadAmount();
-            BigDecimal deficitRealAmount = commonService.deficitPrice(
+            BigDecimal deficitRealAmount = commonService.deficitLossAmount(
                     info.getLoadAmount(),
                     loadAmount.subtract(unloadAmount),
                     deficitLoss,
@@ -899,7 +899,7 @@ public class WaybillManagementService {
                         && wOrder.getUnloadAmount() != null
                         && wOrder.getDeficitAmount() != null
                 ) {
-                    BigDecimal realDeficitAMount = commonService.deficitPrice(
+                    BigDecimal realDeficitAMount = commonService.deficitLossAmount(
                             wOrder.getLoadAmount(),
                             wOrder.getDeficitAmount(),
                             wOrder.getLoss(),

+ 3 - 84
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -1391,48 +1391,6 @@
         LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
         <where>
             a.del_flag = 0
-<!--            <if test="type == 1">-->
-<!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
-                <!--                AND (-->
-                <!--                a.ent_id = #{entId}-->
-                <!--                <if test="userIds != null and userIds.size()>0">-->
-                <!--                    AND a.create_by IN-->
-                <!--                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-                <!--                OR (-->
-                <!--                d.top_ent_id = #{entId}-->
-                <!--                <if test="contactsIds != null and contactsIds.size()>0">-->
-                <!--                    AND d.contacts_id IN-->
-                <!--                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                 )-->
-<!--            </if>-->
-<!--            <if test="type == 2">-->
-<!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
-                <!--                AND (-->
-                <!--                a.ent_id = #{entId}-->
-                <!--                <if test="userIds != null and userIds.size()>0">-->
-                <!--                    AND a.create_by IN-->
-                <!--                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-                <!--                OR (-->
-                <!--                d.top_ent_id = #{entId}-->
-                <!--                <if test="contactsIds != null and contactsIds.size()>0">-->
-                <!--                    AND d.contacts_id IN-->
-                <!--                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-<!--            </if>-->
             <if test="query.keywords != null and query.keywords != ''">
                 and (
                 a.t_order_no like concat('%',#{query.keywords},'%')
@@ -1611,48 +1569,6 @@
         LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
         <where>
             a.del_flag = 0
-<!--            <if test="type == 1">-->
-<!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
-                <!--                AND (-->
-                <!--                a.ent_id = #{entId}-->
-                <!--                <if test="userIds != null and userIds.size()>0">-->
-                <!--                    AND a.create_by IN-->
-                <!--                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-                <!--                OR (-->
-                <!--                d.top_ent_id = #{entId}-->
-                <!--                <if test="contactsIds != null and contactsIds.size()>0">-->
-                <!--                    AND d.contacts_id IN-->
-                <!--                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-<!--            </if>-->
-<!--            <if test="type == 2">-->
-<!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
-                <!--                AND (-->
-                <!--                a.ent_id = #{entId}-->
-                <!--                <if test="userIds != null and userIds.size()>0">-->
-                <!--                    AND a.create_by IN-->
-                <!--                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-                <!--                OR (-->
-                <!--                d.top_ent_id = #{entId}-->
-                <!--                <if test="contactsIds != null and contactsIds.size()>0">-->
-                <!--                    AND d.contacts_id IN-->
-                <!--                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">-->
-                <!--                        #{item}-->
-                <!--                    </foreach>-->
-                <!--                </if>-->
-                <!--                )-->
-<!--            </if>-->
             <if test="query.keywords != null and query.keywords != ''">
                 and (
                 a.t_order_no like concat('%',#{query.keywords},'%')
@@ -1691,6 +1607,9 @@
             <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                 and c.city_code = #{query.unloadAddressCode}
             </if>
+            <if test="query.billingMode != null and query.billingMode != ''">
+                and a.billing_mode =#{query.billingMode}
+            </if>
         </where>
         group by a.status
     </select>