Ver Fonte

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

zk há 2 anos atrás
pai
commit
a79e4a4077

+ 13 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpTradeFreezeMapper.java

@@ -0,0 +1,13 @@
+package com.sckw.payment.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.payment.model.KwpTradeFreeze;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @date 2023-09-20 17:32:24
+* @author xucaiqin
+*/
+@Mapper
+public interface KwpTradeFreezeMapper extends BaseMapper<KwpTradeFreeze> {
+}

+ 69 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpTradeFreeze.java

@@ -0,0 +1,69 @@
+package com.sckw.payment.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 贸易订单冻结单表
+* @date 2023-09-20 17:32:24
+* @author xucaiqin
+*/
+@Data
+@TableName(value = "kwp_trade_freeze")
+public class KwpTradeFreeze {
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 贸易订单id
+     */
+    @TableField(value = "t_order_id")
+    private Long tOrderId;
+
+    /**
+     * 中台冻结订单号
+     */
+    @TableField(value = "order_no")
+    private String orderNo;
+
+    @TableField(value = "`status`")
+    private Integer status;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_by")
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(value = "update_by")
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time")
+    private LocalDateTime updateTime;
+
+    /**
+     * 0-正常 1-删除
+     */
+    @TableField(value = "del_flag")
+    private Integer delFlag;
+}

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsOrderService.java

@@ -51,7 +51,7 @@ public class KwpLedgerLogisticsOrderService {
     /**
      * 根据id查询
      *
-     * @param id
+     * @param id 物流对账单id
      * @return
      */
     public List<KwpLedgerLogisticsOrder> queryList(Long id) {

+ 17 - 12
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java

@@ -568,6 +568,8 @@ public class KwpSettlementWalletService {
 
     /**
      * 销售-预付款
+     * 贸易订单下单时,冻结资金
+     * 预付款结算时,解冻资金。在进行清分。
      *
      * @param id 结算单id
      * @return
@@ -576,20 +578,19 @@ public class KwpSettlementWalletService {
     public String confirmTradeCollection(Long id) {
         log.info("销售预付款确认,结算单id:{}", id);
         String key = String.format(RedisConstant.SETTLEMENT_KEY, id);
-
+        SettlementTradeDto byId = kwpSettlementTradeService.getById(id, TradeUnitType.PURCHASE);
+        if (Objects.isNull(byId)) {
+            throw new BusinessException("结算单不存在");
+        }
+        if (StringUtils.isNotBlank(byId.getTrading()) && !byId.getTrading().startsWith(TradingEnum.PRE_PAY.getValue())) {
+            throw new BusinessException("只支持预付款交易方式进行预付款确认操作");
+        }
+        List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(byId.getLedgerId());
+        if (CollectionUtils.isEmpty(kwpLedgerTradeOrders)) {
+            throw new BusinessException("未找到关联的贸易订单");
+        }
         if (redisLockUtil.tryLock(key)) {
             try {
-                SettlementTradeDto byId = kwpSettlementTradeService.getById(id, TradeUnitType.PURCHASE);
-                if (Objects.isNull(byId)) {
-                    throw new BusinessException("结算单不存在");
-                }
-                if (StringUtils.isNotBlank(byId.getTrading()) && !byId.getTrading().startsWith(TradingEnum.PRE_PAY.getValue())) {
-                    throw new BusinessException("只支持预付款交易方式进行预付款确认操作");
-                }
-                List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(byId.getLedgerId());
-                if (CollectionUtils.isEmpty(kwpLedgerTradeOrders)) {
-                    throw new BusinessException("未找到关联的贸易订单");
-                }
                 //更新交易结算单状态和金额
                 KwpSettlementTrade kwpSettlementTrade = new KwpSettlementTrade();
                 kwpSettlementTrade.setId(byId.getId());
@@ -601,9 +602,12 @@ public class KwpSettlementWalletService {
                 //预付款-更新对账单已付金额
                 kwpLedgerTradeService.updateActualPrice(byId.gettLedgerId(), byId.getTotalPrice());
                 //新增电子钱包结算记录
+                //清分单号
+                String orderNo = OrderUtils.generateOrderNo("ST");
                 KwpSettlementWallet kwpSettlementWallet = new KwpSettlementWallet();
                 kwpSettlementWallet.setId(new IdWorker(1).nextId());
                 kwpSettlementWallet.setEntId(LoginUserHolder.getEntId());
+                kwpSettlementWallet.setOrderNo(orderNo);
                 kwpSettlementWallet.setSettlementId(byId.getId());
                 kwpSettlementWallet.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());
                 kwpSettlementWallet.setChannel(WalletChannelEnum.getValue(byId.getTrading()));
@@ -644,6 +648,7 @@ public class KwpSettlementWalletService {
 
                 //todo-xcq 调用中台接口
 
+
                 return "确认回款成功";
             } finally {
                 redisLockUtil.unlock(key);

+ 51 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpTradeFreezeService.java

@@ -0,0 +1,51 @@
+package com.sckw.payment.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.payment.dao.KwpTradeFreezeMapper;
+import com.sckw.payment.model.KwpTradeFreeze;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author xucaiqin
+ * @date 2023-09-20 17:32:24
+ */
+@Service
+@RequiredArgsConstructor
+public class KwpTradeFreezeService {
+    private final KwpTradeFreezeMapper kwpTradeFreezeMapper;
+
+    /**
+     * 通过贸易订单id查询
+     *
+     * @param tOrderId 贸易订单id
+     * @return
+     */
+    public KwpTradeFreeze getByTOrderId(Long tOrderId) {
+        LambdaQueryWrapper<KwpTradeFreeze> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpTradeFreeze::getTOrderId, tOrderId)
+                .eq(KwpTradeFreeze::getDelFlag, Global.UN_DELETED).last("limit 1");
+        return kwpTradeFreezeMapper.selectOne(wrapper);
+    }
+
+    public void save(Long tOrderId, String orderNo) {
+        KwpTradeFreeze kwpTradeFreeze = new KwpTradeFreeze();
+        kwpTradeFreeze.setId(new IdWorker(NumberConstant.ONE).nextId());
+        kwpTradeFreeze.setTOrderId(tOrderId);
+        kwpTradeFreeze.setOrderNo(orderNo);
+        kwpTradeFreeze.setStatus(0);
+        kwpTradeFreeze.setCreateBy(LoginUserHolder.getUserId());
+        kwpTradeFreeze.setCreateTime(LocalDateTime.now());
+        kwpTradeFreeze.setUpdateBy(LoginUserHolder.getUserId());
+        kwpTradeFreeze.setUpdateTime(LocalDateTime.now());
+        kwpTradeFreeze.setDelFlag(Global.UN_DELETED);
+        kwpTradeFreezeMapper.insert(kwpTradeFreeze);
+    }
+
+}

+ 35 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java

@@ -12,6 +12,7 @@ import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.OrderUtils;
 import com.sckw.core.utils.StringTimeUtil;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.response.HttpResult;
 import com.sckw.manage.api.RemoteManageService;
 import com.sckw.manage.api.model.dto.res.FindEntCooperateResVo;
 import com.sckw.payment.api.model.constant.ChannelEnum;
@@ -128,6 +129,19 @@ public class WalletService {
         return walletRelationService.getEnt(id);
     }
 
+    /**
+     * 查询中台用户id
+     *
+     * @param id
+     * @return
+     */
+    private String getUid(Long id) {
+        if (Objects.isNull(id)) {
+            return null;
+        }
+        return walletRelationService.getRelation(id);
+    }
+
     /**
      * 通过企业名称查询关联的中台用户id
      *
@@ -1466,6 +1480,27 @@ public class WalletService {
         return null;
     }
 
+    /**
+     * 贸易订单预支付下单时,冻结预付款金额
+     *
+     * @param payEntId     支付方企业
+     * @param channel      渠道
+     * @param receiveEntId 收款方企业
+     * @param money        冻结金额(分)
+     * @param orderNo      订单流水
+     * @return
+     */
+    public HttpResult freezeMoney(Long payEntId, ChannelEnum channel, Long receiveEntId, Long money, String orderNo) {
+        String uid = getUid(payEntId);
+        String filter = getUid(receiveEntId);
+        R<Freeze> freezeR = payCenterService.walletFreeze(uid, channel, filter, money, orderNo);
+        if (!freezeR.getStatus()) {
+            log.error("资金冻结异常:{}", JSONObject.toJSONString(freezeR));
+            HttpResult.error(freezeR.getMsg());
+        }
+        return HttpResult.ok("冻结成功");
+    }
+
     /**
      * 退款处理
      *

+ 7 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/dubbo/PaymentDubboServiceImpl.java

@@ -2,6 +2,7 @@ package com.sckw.payment.service.dubbo;
 
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.OrderUtils;
+import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.payment.api.dubbo.PaymentDubboService;
 import com.sckw.payment.api.model.constant.ChannelEnum;
@@ -72,6 +73,9 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
         if (Objects.isNull(money)) {
             return HttpResult.error("订单金额不能为空");
         }
+        if (Objects.isNull(tOrderId)) {
+            return HttpResult.error("贸易订单id不能为空");
+        }
         long m;
         try {
             m = money.multiply(new BigDecimal("100")).longValueExact();
@@ -83,7 +87,9 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
         String orderNo = OrderUtils.generateOrderNo("STF");
         HttpResult httpResult = walletService.freezeMoney(payEntId, channel, receiveEntId, m, orderNo);
         //记录订单流水号
-        kwpTradeFreezeService.save(tOrderId, orderNo);
+        if (httpResult.getCode() == HttpStatus.SUCCESS_CODE) {
+            kwpTradeFreezeService.save(tOrderId, orderNo);
+        }
         return httpResult;
     }
 

+ 22 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpTradeFreezeMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sckw.payment.dao.KwpTradeFreezeMapper">
+  <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpTradeFreeze">
+    <!--@mbg.generated-->
+    <!--@Table kwp_trade_freeze-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="t_order_id" jdbcType="BIGINT" property="tOrderId" />
+    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="create_by" jdbcType="BIGINT" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, t_order_id, order_no, `status`, create_by, create_time, update_by, update_time, 
+    del_flag
+  </sql>
+</mapper>

+ 75 - 20
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -253,7 +253,7 @@ public class CommonService {
      * @param appConsignUrl  app托运地址
      * @param pcCarriageUrl  PC承运地址
      * @param appCarriageUrl app承运地址
-     * @param type 1代表给托运创建人发 2代表给承运创建人发
+     * @param type           1代表给托运创建人发 2代表给承运创建人发
      */
     public void newSendLogisticsOrderToMessage(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit,
                                                String orderNo, Long createBy, Long entId,
@@ -269,25 +269,25 @@ public class CommonService {
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("orderNo", orderNo);
         if (flag && createBy.equals(consignUnit.getContactsId())) {
-            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl,consignMessageEnum);
-            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl, consignMessageEnum);
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
         } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
-            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
-            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl,consignMessageEnum);
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl, consignMessageEnum);
         } else {
-            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl,consignMessageEnum);
-            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl, consignMessageEnum);
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
             if (type.equals("1")) {
-                sendLogisticsCreateByMessage(createBy, entId, map,pcConsignUrl,appConsignUrl,consignMessageEnum);
+                sendLogisticsCreateByMessage(createBy, entId, map, pcConsignUrl, appConsignUrl, consignMessageEnum);
             } else {
-                sendLogisticsCreateByMessage(createBy, entId, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+                sendLogisticsCreateByMessage(createBy, entId, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
             }
 
         }
 
     }
 
-    private void sendLogisticsCreateByMessage(Long createBy, Long entId, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+    private void sendLogisticsCreateByMessage(Long createBy, Long entId, Map<String, Object> map, String pcUrl, String appUrl, MessageEnum messageEnum) {
         UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
         //给订单创建人发消息
         List<UserInfo> userInfos = new ArrayList<>();
@@ -311,7 +311,7 @@ public class CommonService {
         streamBridge.send("sckw-message", JSON.toJSONString(msg));
     }
 
-    private void sendLogisticsCarriageMessage(KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+    private void sendLogisticsCarriageMessage(KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map, String pcUrl, String appUrl, MessageEnum messageEnum) {
         //给业务联系人发消息[承运方]
         List<UserInfo> userInfoList = new ArrayList<>();
         UserInfo userInfo = new UserInfo();
@@ -332,7 +332,7 @@ public class CommonService {
         streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
     }
 
-    private void sendLogisticsConsignMessage(KwtLogisticsOrderUnit consignUnit, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+    private void sendLogisticsConsignMessage(KwtLogisticsOrderUnit consignUnit, Map<String, Object> map, String pcUrl, String appUrl, MessageEnum messageEnum) {
         //给业务联系人发消息[托运方]
         List<UserInfo> list = new ArrayList<>();
         UserInfo userInfo = new UserInfo();
@@ -419,7 +419,10 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("app", consignLogisticsOrderUrl);
+                    put("pc", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -435,7 +438,10 @@ public class CommonService {
         message.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.NEW_CARRIAGE_ORDER)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("app", consignLogisticsOrderUrl);
+                    put("pc", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(list)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[托运方]-业务联系人:{}", JSON.toJSONString(message));
@@ -463,10 +469,10 @@ public class CommonService {
         carriageUnit.setContactsId(Long.parseLong(addOrderDTO.getAcceptContactsId()));
         carriageUnit.setFirmName(addOrderDTO.getConsignCompany());
         carriageUnit.setTopEntId(acceptMap == null ? null : acceptMap.getId());
-        newSendLogisticsOrderToMessage(checkUnit,carriageUnit,lOrderNo,createBy,entId
-                ,messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
-                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
-                MessageEnum.NEW_LOGISTICS_ORDER,MessageEnum.NEW_CARRIAGE_ORDER,"1"
+        newSendLogisticsOrderToMessage(checkUnit, carriageUnit, lOrderNo, createBy, entId
+                , messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                MessageEnum.NEW_LOGISTICS_ORDER, MessageEnum.NEW_CARRIAGE_ORDER, "1"
         );
 
     }
@@ -491,7 +497,10 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(messageEnum)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("app", consignLogisticsOrderUrl);
+                    put("pc", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("托运订单/承运订单自建物流订单-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -740,6 +749,52 @@ public class CommonService {
         streamBridge.send("sckw-message", JSON.toJSONString(message));
     }
 
+
+    /**
+     * @param loadAmount    装货量
+     * @param deficitAmount 亏吨量
+     * @param loss          合理损耗
+     * @desc 计算扣亏量
+     **/
+    public BigDecimal deficitAmount(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal entrustAmount, BigDecimal loss, String lossUnit) {
+        //亏吨<=0
+        if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
+            return new BigDecimal(Global.AMOUNT);
+        }
+        //合理损耗
+        loss = loss == null ? new BigDecimal("0.00") : 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()));
+            }
+        }
+        /**
+         * 一、罚款值计算:
+         * 1、合理损耗值=实装量*合理损耗(‰)
+         * 1.1 亏吨量= 实装量-实卸量
+         * 2、扣亏量=亏吨量-合理损耗值【要求大于0,如果小于0则扣亏货量取0】
+         * 3、罚款值=扣亏量 * 扣亏货值
+         *
+         * 二、运价计算:
+         * 1、按装货量:总运价=实装量*运价
+         * 2、按卸货量:总运价=实卸量*运价-罚款值
+         * 3、按趟次:总运价=运价*趟次【后期加】
+         */
+        loadAmount = loadAmount == null ? new BigDecimal("0.00") : loadAmount;
+        //已委托量
+        entrustAmount = entrustAmount == null ? new BigDecimal("0.00") : entrustAmount;
+        //合理损耗值
+        BigDecimal multiply = loadAmount.multiply(loss.divide(BigDecimal.valueOf(1000L)));
+        //亏吨量
+        deficitAmount = deficitAmount == null ? new BigDecimal("0.00") : deficitAmount;
+        //扣亏量/吨
+        deficitAmount = deficitAmount.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : deficitAmount.subtract(multiply);
+        return deficitAmount;
+    }
+
     /**
      * @param loadAmount    装货量
      * @param deficitAmount 亏吨量
@@ -748,7 +803,7 @@ public class CommonService {
      * @author zk
      * @date 2023/7/27
      **/
-    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss,String lossUnit) {
+    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, String lossUnit) {
         //亏吨<=0
         if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
             return new BigDecimal(Global.AMOUNT);

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

@@ -648,6 +648,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 decimal = commonService.deficitAmount();
                     BigDecimal deduct = commonService.deficitPrice(loadAmount, defectiveWeigh, loss, order.getLossUnit());
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                     carWaybillVo.setWOrderNo(kwtWaybillOrder.getWOrderNo());

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

@@ -31,7 +31,6 @@ import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
-import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
@@ -2556,6 +2555,8 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
         map.put("proceed", proceed);
 
@@ -2598,6 +2599,8 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
         map.put("proceed", proceed);