From 88e80207eb7e2766052f5ea4b154debd2ae5a364 Mon Sep 17 00:00:00 2001
From: aiqingguo <aiqingguo@clxkj.cn>
Date: Mon, 23 Sep 2024 16:51:50 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=BF=E8=BF=90=E4=BC=98=E5=8C=96=E9=9C=80?=
 =?UTF-8?q?=E6=B1=829.30?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../settle/SettlementDriverDetailEnum.java    |  32 +++
 .../BrokerOrderChildDriverPayMqParam.java     |  16 ++
 .../SettlementDriverConfirmMqParam.java       |  16 ++
 .../SettlementDriverPayAcceptSyncMqParam.java |  22 ++
 .../settle/SettlementDriverSettleMqParam.java |  16 ++
 .../SettlementOrderChildRiskAddMqParam.java   |  16 ++
 .../performance/vo/pc/broker/TransportVO.java |   2 +
 .../settle/CarrierPageSettlementDriverVO.java |   6 +
 .../config/RabbitBrokerConfig.java            |  13 +
 .../config/RabbitSettlementConfig.java        |  26 ++
 .../constant/RabbitKeyBrokerConstants.java    |   6 +
 .../RabbitKeySettlementConstants.java         |  12 +
 .../clx/performance/dao/OrderChildDao.java    |   3 +
 .../dao/impl/OrderChildDaoImpl.java           |   9 +
 .../impl/settle/SettlementDriverDaoImpl.java  |  21 +-
 .../settle/SettlementDriverDetailDaoImpl.java |  25 ++
 .../dao/settle/SettlementDriverDao.java       |   4 +
 .../dao/settle/SettlementDriverDetailDao.java |   5 +
 .../extranal/broker/BrokerService.java        |   1 +
 .../broker/impl/BrokerServiceImpl.java        |  11 +
 .../clx/performance/feign/BrokerFeign.java    |   7 +
 .../job/settlement/SettlementJob.java         |  81 +++++-
 .../BrokerOrderChildDriverPayListener.java    |  45 ++++
 .../SettlementDriverConfirmListener.java      |  43 +++
 ...SettlementDriverPayAcceptSyncListener.java |  43 +++
 .../model/settle/SettlementDriverDetail.java  |   1 +
 .../OrderChildBrokerMqHandlerService.java     |   4 +
 .../broker/OrderChildBrokerMqService.java     |   2 +
 .../broker/OrderChildBrokerService.java       |   3 +
 .../OrderChildBrokerMqHandlerServiceImpl.java |  15 ++
 .../broker/OrderChildBrokerMqServiceImpl.java |  15 ++
 .../broker/OrderChildBrokerServiceImpl.java   |   8 +
 .../impl/child/OrderChildPostServiceImpl.java |   3 +
 .../SettlementMqHandlerServiceImpl.java       | 253 +++++++++++++++---
 .../impl/settle/SettlementMqServiceImpl.java  |  30 ++-
 .../SettlementOrderChildRiskServiceImpl.java  |  13 +-
 .../settle/SettlementPostServiceImpl.java     |   6 +
 .../settle/SettlementMqHandlerService.java    |  11 +-
 .../service/settle/SettlementMqService.java   |   4 +
 .../service/settle/SettlementPostService.java |   1 +
 40 files changed, 784 insertions(+), 66 deletions(-)
 create mode 100644 performance-api/src/main/java/com/clx/performance/enums/settle/SettlementDriverDetailEnum.java
 create mode 100644 performance-api/src/main/java/com/clx/performance/vo/mq/broker/BrokerOrderChildDriverPayMqParam.java
 create mode 100644 performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverConfirmMqParam.java
 create mode 100644 performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverPayAcceptSyncMqParam.java
 create mode 100644 performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverSettleMqParam.java
 create mode 100644 performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementOrderChildRiskAddMqParam.java
 create mode 100644 performance-web/src/main/java/com/clx/performance/listener/broker/BrokerOrderChildDriverPayListener.java
 create mode 100644 performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverConfirmListener.java
 create mode 100644 performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverPayAcceptSyncListener.java

diff --git a/performance-api/src/main/java/com/clx/performance/enums/settle/SettlementDriverDetailEnum.java b/performance-api/src/main/java/com/clx/performance/enums/settle/SettlementDriverDetailEnum.java
new file mode 100644
index 000000000..8320ecc36
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/enums/settle/SettlementDriverDetailEnum.java
@@ -0,0 +1,32 @@
+package com.clx.performance.enums.settle;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public enum SettlementDriverDetailEnum {
+    ;
+
+    @Getter
+    @AllArgsConstructor
+    public enum PayAcceptStatus {
+        INIT(0, "鏈彈鐞嗘敮浠�"),
+        ACCEPTING(1, "鏀粯鍙楃悊涓�"),
+        ACCEPTED(2,"宸插彈鐞嗘敮浠�"),
+        ;
+        private final Integer code;
+        private final String msg;
+
+        public static Optional<PayAcceptStatus> getByCode(int code) {
+            return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
+        }
+
+        public static String getMsgByCode(int code) {
+            return getByCode(code).map(PayAcceptStatus::getMsg).orElse(null);
+        }
+    }
+}
diff --git a/performance-api/src/main/java/com/clx/performance/vo/mq/broker/BrokerOrderChildDriverPayMqParam.java b/performance-api/src/main/java/com/clx/performance/vo/mq/broker/BrokerOrderChildDriverPayMqParam.java
new file mode 100644
index 000000000..5b2b33ac6
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/vo/mq/broker/BrokerOrderChildDriverPayMqParam.java
@@ -0,0 +1,16 @@
+package com.clx.performance.vo.mq.broker;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class BrokerOrderChildDriverPayMqParam {
+
+    private String childNo;                 //杩愬崟缂栧彿
+
+}
diff --git a/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverConfirmMqParam.java b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverConfirmMqParam.java
new file mode 100644
index 000000000..d6652be7f
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverConfirmMqParam.java
@@ -0,0 +1,16 @@
+package com.clx.performance.vo.mq.settle;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class SettlementDriverConfirmMqParam {
+
+    private String childNo;
+
+}
diff --git a/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverPayAcceptSyncMqParam.java b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverPayAcceptSyncMqParam.java
new file mode 100644
index 000000000..6de5869c0
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverPayAcceptSyncMqParam.java
@@ -0,0 +1,22 @@
+package com.clx.performance.vo.mq.settle;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @Author: aiqingguo
+ * @Description: 鏀粯鍙楃悊
+ * @Date: 2023-10-19 15:45:25
+ * @Version: 1.0
+ */
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class SettlementDriverPayAcceptSyncMqParam {
+
+    private String childNo;             //杩愬崟缂栧彿
+
+}
diff --git a/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverSettleMqParam.java b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverSettleMqParam.java
new file mode 100644
index 000000000..56640fa05
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementDriverSettleMqParam.java
@@ -0,0 +1,16 @@
+package com.clx.performance.vo.mq.settle;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class SettlementDriverSettleMqParam {
+
+    private String childNo;             //杩愬崟缂栧彿
+
+}
diff --git a/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementOrderChildRiskAddMqParam.java b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementOrderChildRiskAddMqParam.java
new file mode 100644
index 000000000..d379ffe17
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementOrderChildRiskAddMqParam.java
@@ -0,0 +1,16 @@
+package com.clx.performance.vo.mq.settle;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class SettlementOrderChildRiskAddMqParam {
+
+    private Integer id;             //id
+
+}
diff --git a/performance-api/src/main/java/com/clx/performance/vo/pc/broker/TransportVO.java b/performance-api/src/main/java/com/clx/performance/vo/pc/broker/TransportVO.java
index 9af2733f1..e60201924 100644
--- a/performance-api/src/main/java/com/clx/performance/vo/pc/broker/TransportVO.java
+++ b/performance-api/src/main/java/com/clx/performance/vo/pc/broker/TransportVO.java
@@ -37,5 +37,7 @@ public class TransportVO {
     @ApiModelProperty(value = "寮€绁ㄧ姸鎬� 0 鏈紑绁� 1 宸插紑绁� ", example = "1234124", dataType = "String")
     private Integer invoiceStatus;
 
+    @ApiModelProperty(value = "绗笁鏂硅繍鍗曠姸鎬� 20-宸插嵏璐э紝30-宸插垱寤烘敮浠樺崟", example = "1234124", dataType = "String")
+    private Integer thirdPartyChildStatus;
 
 }
diff --git a/performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverVO.java b/performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverVO.java
index 061a50c93..93f4f3380 100644
--- a/performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverVO.java
+++ b/performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverVO.java
@@ -1,5 +1,6 @@
 package com.clx.performance.vo.pc.carrier.settle;
 
+import com.clx.performance.enums.settle.SettlementDriverEnum;
 import com.msl.common.convertor.type.MoneyOutConvert;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
@@ -81,6 +82,11 @@ public class CarrierPageSettlementDriverVO {
     private BigDecimal settlementFreight;
     @ApiModelProperty(value = "鐘舵€�")
     private Integer status;
+    private String statusMsg;
+    public String getStatusMsg() {
+        return SettlementDriverEnum.Status.getMsgByCode(status);
+    }
+
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     private String createTime;
     @ApiModelProperty(value = "缁撶畻骞冲彴 1锛氶┈涓婃潵  2锛氱綉杩愬钩鍙�")
diff --git a/performance-web/src/main/java/com/clx/performance/config/RabbitBrokerConfig.java b/performance-web/src/main/java/com/clx/performance/config/RabbitBrokerConfig.java
index 619f8761d..b472def35 100644
--- a/performance-web/src/main/java/com/clx/performance/config/RabbitBrokerConfig.java
+++ b/performance-web/src/main/java/com/clx/performance/config/RabbitBrokerConfig.java
@@ -77,4 +77,17 @@ public class RabbitBrokerConfig {
                 .with(RabbitKeyBrokerConstants.ORDER_CHILD_UPDATE_ROUTING_KEY);
     }
 
+    /**
+     * 杩愬崟鍙告満纭鏀惰揣
+     */
+    @Bean
+    public Queue brokerOrderChildDriverConfirmQueue() {
+        return new Queue(RabbitKeyBrokerConstants.ORDER_CHILD_DRIVER_PAY_QUEUE);
+    }
+    @Bean
+    public Binding brokerOrderChildDriverConfirmQueueBinding() {
+        return BindingBuilder.bind(brokerOrderChildDriverConfirmQueue()).to(brokerDefaultExchange())
+                .with(RabbitKeyBrokerConstants.ORDER_CHILD_DRIVER_PAY_ROUTING_KEY);
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java b/performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java
index 4dc43fddc..a0179a635 100644
--- a/performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java
+++ b/performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java
@@ -86,6 +86,19 @@ public class RabbitSettlementConfig {
                 .with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY);
     }
 
+    /**
+     * 寮€绁ㄦ柟寮忓悓姝�
+     */
+    @Bean
+    public Queue settlementDriverPayAcceptSyncQueue() {
+        return new Queue(RabbitKeySettlementConstants.SETTLEMENT_DRIVER_PAY_ACCEPT_SYNC_QUEUE);
+    }
+    @Bean
+    public Binding settlementDriverPayAcceptSyncQueueBinding() {
+        return BindingBuilder.bind(settlementDriverPayAcceptSyncQueue()).to(settlementDefaultExchange())
+                .with(RabbitKeySettlementConstants.SETTLEMENT_DRIVER_PAY_ACCEPT_SYNC_ROUTING_KEY);
+    }
+
     /**
      * 缁撶畻
      */
@@ -175,4 +188,17 @@ public class RabbitSettlementConfig {
                 .with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY);
     }
 
+    /**
+     * 鍙告満纭鏀惰揣
+     */
+    @Bean
+    public Queue settlementDriverConfirmQueue() {
+        return new Queue(RabbitKeySettlementConstants.SETTLEMENT_DRIVER_CONFIRM_QUEUE);
+    }
+    @Bean
+    public Binding settlementDriverConfirmQueueBinding() {
+        return BindingBuilder.bind(settlementDriverConfirmQueue()).to(settlementDefaultExchange())
+                .with(RabbitKeySettlementConstants.SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY);
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/constant/RabbitKeyBrokerConstants.java b/performance-web/src/main/java/com/clx/performance/constant/RabbitKeyBrokerConstants.java
index 1c5a84190..fe2dddad5 100644
--- a/performance-web/src/main/java/com/clx/performance/constant/RabbitKeyBrokerConstants.java
+++ b/performance-web/src/main/java/com/clx/performance/constant/RabbitKeyBrokerConstants.java
@@ -45,4 +45,10 @@ public class RabbitKeyBrokerConstants {
     public static final String ORDER_CHILD_UPDATE_QUEUE = PREFIX +"orderChild.update"+QUEUE;
     public static final String ORDER_CHILD_UPDATE_ROUTING_KEY = PREFIX +"orderChild.update"+QUEUE_ROUTING_KEY;
 
+    /**
+     * 鍙告満鏀粯
+     */
+    public static final String ORDER_CHILD_DRIVER_PAY_QUEUE = PREFIX +"orderChildDriver.pay"+QUEUE;
+    public static final String ORDER_CHILD_DRIVER_PAY_ROUTING_KEY = PREFIX +"orderChildDriver.pay"+QUEUE_ROUTING_KEY;
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java b/performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java
index 30600516e..f25a6cf79 100644
--- a/performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java
+++ b/performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java
@@ -51,6 +51,12 @@ public class RabbitKeySettlementConstants {
     public static final String SETTLEMENT_INVOICE_TYPE_SYNC_QUEUE = PREFIX +"settlementInvoiceType.sync"+QUEUE;
     public static final String SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY = PREFIX +"settlementInvoiceType.sync"+QUEUE_ROUTING_KEY;
 
+    /**
+     * 鍚屾鏀粯鍙楃悊
+     */
+    public static final String SETTLEMENT_DRIVER_PAY_ACCEPT_SYNC_QUEUE = PREFIX +"settlementDriverPayAccept.sync"+QUEUE;
+    public static final String SETTLEMENT_DRIVER_PAY_ACCEPT_SYNC_ROUTING_KEY = PREFIX +"settlementDriverPayAccept.sync"+QUEUE_ROUTING_KEY;
+
     /**
      * 缁撶畻
      */
@@ -92,4 +98,10 @@ public class RabbitKeySettlementConstants {
     public static final String SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE = PREFIX +"settlementInvoice.update"+QUEUE;
     public static final String SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY = PREFIX +"settlementInvoice.update"+QUEUE_ROUTING_KEY;
 
+    /**
+     * 鍙告満纭鏀惰揣
+     */
+    public static final String SETTLEMENT_DRIVER_CONFIRM_QUEUE = PREFIX +"settlementDriver.confirm"+QUEUE;
+    public static final String SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY = PREFIX +"settlementDriver.confirm"+QUEUE_ROUTING_KEY;
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java b/performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
index 6a34a46ef..202bbccc6 100644
--- a/performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
+++ b/performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
@@ -211,4 +211,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
     List<OrderGoodsNotCancelChildDTO> countValidByOrderGoodsNoList(List<String> orderGoodsList);
 
     void batchUpdateCancel(List<OrderChild> canCancelOrderChildList);
+
+    List<OrderChild> findListByChildNoList(List<String> childNoList);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java b/performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
index bced781b6..50adfedac 100644
--- a/performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
@@ -703,4 +703,13 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
     public void batchUpdateCancel(List<OrderChild> canCancelOrderChildList) {
         baseMapper.batchUpdateCancel(canCancelOrderChildList);
     }
+
+
+    @Override
+    public List<OrderChild> findListByChildNoList(List<String> childNoList) {
+        return list(lQrWrapper()
+                .in(OrderChild :: getChildNo, childNoList)
+        );
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDaoImpl.java b/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDaoImpl.java
index 800a31a0c..80e1dbba3 100644
--- a/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDaoImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDaoImpl.java
@@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.clx.performance.dao.settle.SettlementDriverDao;
 import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
+import com.clx.performance.enums.settle.SettlementDriverEnum;
+import com.clx.performance.enums.settle.SettlementOwnerEnum;
 import com.clx.performance.mapper.settle.SettlementDriverMapper;
 import com.clx.performance.model.settle.SettlementDriver;
-import com.clx.performance.model.settle.SettlementOrderChildRisk;
-import com.clx.performance.model.settle.SettlementOwner;
 import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
 import com.msl.common.base.Optional;
 import com.msl.common.dao.impl.BaseDaoImpl;
@@ -18,7 +18,6 @@ import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Objects;
-import java.util.Set;
 
 /**
  * @Author: aiqinguo
@@ -38,6 +37,14 @@ public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper,
         );
     }
 
+    @Override
+    public boolean updateSettleStatus(SettlementDriver item) {
+        return update(lUdWrapper()
+                .eq(SettlementDriver::getId, item.getId())
+                .set(SettlementDriver::getStatus, item.getStatus())
+        );
+    }
+
     @Override
     public Optional<SettlementDriver> findBySettlementNo(String settlementNo) {
         return Optional.of(lQrWrapper()
@@ -54,6 +61,14 @@ public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper,
                 .map(super::getOne);
     }
 
+    @Override
+    public List<SettlementDriver> listDriverConfirmSync() {
+        return list(lUdWrapper()
+                .eq(SettlementDriver::getInvoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())
+                .eq(SettlementDriver::getStatus, SettlementDriverEnum.Status.DRIVER_UNCONFIRMED.getCode())
+        );
+    }
+
     @Override
     public IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param) {
         LambdaQueryWrapper<SettlementDriver> query = new LambdaQueryWrapper<>();
diff --git a/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDetailDaoImpl.java b/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
index eef18d8f4..5dfaed88e 100644
--- a/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.clx.performance.dao.settle.SettlementDriverDetailDao;
 import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
+import com.clx.performance.enums.settle.SettlementDriverDetailEnum;
 import com.clx.performance.enums.settle.SettlementDriverEnum;
 import com.clx.performance.enums.settle.SettlementOwnerEnum;
 import com.clx.performance.mapper.settle.SettlementDriverDetailMapper;
@@ -85,6 +86,13 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
         );
     }
 
+    @Override
+    public boolean updatePayAcceptStatus(SettlementDriverDetail item) {
+        return update(lUdWrapper()
+                .eq(SettlementDriverDetail::getId, item.getId())
+                .set(SettlementDriverDetail::getPayAcceptStatus, item.getPayAcceptStatus())
+        );
+    }
 
 
     @Override
@@ -96,6 +104,23 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
                 .map(super::getOne);
     }
 
+    @Override
+    public List<SettlementDriverDetail> listDriverPaySync(LocalDateTime time) {
+        return list(lUdWrapper()
+                .eq(SettlementDriverDetail::getInvoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())
+                .eq(SettlementDriverDetail::getPayAcceptStatus, SettlementDriverDetailEnum.PayAcceptStatus.INIT.getCode())
+                .ge(SettlementDriverDetail::getCreateTime, time)
+        );
+    }
+
+    @Override
+    public List<SettlementDriverDetail> listDriverPayAcceptSync() {
+        return list(lUdWrapper()
+                .eq(SettlementDriverDetail::getInvoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())
+                .eq(SettlementDriverDetail::getPayAcceptStatus, SettlementDriverDetailEnum.PayAcceptStatus.ACCEPTING.getCode())
+        );
+    }
+
     @Override
     public IPage<SettlementDriverDetail> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param) {
         LambdaQueryWrapper<SettlementDriverDetail> query = new LambdaQueryWrapper<>();
diff --git a/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDao.java b/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDao.java
index 5fafc92ae..a520403e3 100644
--- a/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDao.java
+++ b/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDao.java
@@ -20,10 +20,14 @@ public interface SettlementDriverDao extends BaseDao<SettlementDriverMapper, Set
     boolean updatePayStatus(SettlementDriver item);
 
 
+    boolean updateSettleStatus(SettlementDriver item);
+
     Optional<SettlementDriver> findBySettlementNo(String settlementNo);
 
     Optional<SettlementDriver> findByChildNo(String childNo);
 
+    List<SettlementDriver> listDriverConfirmSync();
+
     IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param);
 
 
diff --git a/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDetailDao.java b/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDetailDao.java
index 1c0f1a5f0..927316912 100644
--- a/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDetailDao.java
+++ b/performance-web/src/main/java/com/clx/performance/dao/settle/SettlementDriverDetailDao.java
@@ -24,10 +24,15 @@ public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetai
     boolean updateInvoiceTypeAndPrepayFreightFlag(SettlementDriverDetail item);
     boolean updateConvertOrdinary(SettlementDriverDetail item);
     boolean updatePreFreight(SettlementDriverDetail item);
+    boolean updatePayAcceptStatus(SettlementDriverDetail item);
 
 
     Optional<SettlementDriverDetail> getByChildNo(String childNo);
 
+    List<SettlementDriverDetail> listDriverPaySync(LocalDateTime time);
+
+    List<SettlementDriverDetail> listDriverPayAcceptSync();
+
     IPage<SettlementDriverDetail> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
 
     List<SettlementDriverDetail> listUnPay(LocalDateTime beginTime);
diff --git a/performance-web/src/main/java/com/clx/performance/extranal/broker/BrokerService.java b/performance-web/src/main/java/com/clx/performance/extranal/broker/BrokerService.java
index c44286132..a1562de8e 100644
--- a/performance-web/src/main/java/com/clx/performance/extranal/broker/BrokerService.java
+++ b/performance-web/src/main/java/com/clx/performance/extranal/broker/BrokerService.java
@@ -7,6 +7,7 @@ public interface BrokerService {
 
     void orderChildSync(TransportParam param);
     void orderChildUpdate(TransportParam param);
+    void orderChildPay(String childNo);
 
     TransportVO getOrderChildStatus(String childNo);
 
diff --git a/performance-web/src/main/java/com/clx/performance/extranal/broker/impl/BrokerServiceImpl.java b/performance-web/src/main/java/com/clx/performance/extranal/broker/impl/BrokerServiceImpl.java
index bb6c0c3c5..9ee9cc7ed 100644
--- a/performance-web/src/main/java/com/clx/performance/extranal/broker/impl/BrokerServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/extranal/broker/impl/BrokerServiceImpl.java
@@ -45,6 +45,17 @@ public class BrokerServiceImpl implements BrokerService {
         log.info("杩愬崟鏇存柊缃戠粶璐ц繍, childNo:{}, result:{}", param.getOrderChild().getSourceChildNo(), JSON.toJSONString(result));
     }
 
+    @Override
+    public void orderChildPay(String childNo) {
+
+        Result<Object> result = brokerFeign.payConfirm(childNo, settlementConfig.getBrokerUserCode());
+        if (result.getCode() != 0) {
+            log.info("鍙告満鏀粯, childNo:{}, msg:{}", childNo, result.getMsg());
+        }
+        log.info("鍙告満鏀粯, childNo:{}, result:{}", childNo, JSON.toJSONString(result));
+
+    }
+
     @Override
     public TransportVO getOrderChildStatus(String childNo) {
 
diff --git a/performance-web/src/main/java/com/clx/performance/feign/BrokerFeign.java b/performance-web/src/main/java/com/clx/performance/feign/BrokerFeign.java
index 3c1c438eb..ffbe60e11 100644
--- a/performance-web/src/main/java/com/clx/performance/feign/BrokerFeign.java
+++ b/performance-web/src/main/java/com/clx/performance/feign/BrokerFeign.java
@@ -32,4 +32,11 @@ public interface BrokerFeign {
                                               @RequestParam @NotNull(message = "userCode涓嶈兘涓虹┖") String userCode,
                                               @RequestParam String settlementNo);
 
+    /**
+     *  鍙告満鏀粯
+     */
+    @RequestMapping(value = "/broker-service/open/transport/payConfirm", method = RequestMethod.POST)
+    Result<Object> payConfirm(@RequestParam @NotBlank(message = "杩愬崟缂栧彿涓嶈兘涓虹┖") String orderCode,
+                                              @RequestParam @NotNull(message = "userCode涓嶈兘涓虹┖") String userCode);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java b/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java
index 1c91a0fb2..34130579d 100644
--- a/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java
+++ b/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java
@@ -2,13 +2,11 @@ package com.clx.performance.job.settlement;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.clx.performance.dao.OrderChildDao;
 import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
-import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao;
-import com.clx.performance.dao.settle.SettlementOwnerDao;
-import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
-import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
-import com.clx.performance.model.settle.SettlementOwner;
-import com.clx.performance.model.settle.SettlementOwnerDetail;
+import com.clx.performance.dao.settle.*;
+import com.clx.performance.model.OrderChild;
+import com.clx.performance.model.settle.*;
 import com.clx.performance.service.broker.OrderChildBrokerMqService;
 import com.clx.performance.service.settle.SettlementMqService;
 import com.msl.common.job.JobLog;
@@ -22,6 +20,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -35,9 +34,12 @@ public class SettlementJob {
 
     private final SettlementMqService settlementMqService;
     private final SettlementOwnerDetailDao settlementOwnerDetailDao;
+    private final SettlementDriverDetailDao settlementDriverDetailDao;
+    private final SettlementDriverDao settlementDriverDao;
     private final SettlementOwnerDao settlementOwnerDao;
     private final OrderChildSyncTransportRecordDao orderChildSyncTransportRecordDao;
     private final OrderChildBrokerMqService orderChildBrokerMqService;
+    private final OrderChildDao orderChildDao;
 
     /**
      * 鍚屾鏃犺溅鎵胯繍杩愬崟寮€绁ㄧ被鍨�
@@ -57,6 +59,45 @@ public class SettlementJob {
         }
     }
 
+    /**
+     * 鍙告満纭鏀惰揣鍚屾
+     */
+    @XxlJob("settlementDriverConfirmSync")
+    public void settlementDriverConfirmSync() {
+        List<SettlementDriver> recordList = settlementDriverDao
+                .listDriverConfirmSync();
+        log.info("寰呭徃鏈虹‘璁ゆ敹璐у悓姝ワ紝size:{}", recordList.size());
+        if (recordList.isEmpty()) {return;}
+
+        List<OrderChild> childList = orderChildDao.findListByChildNoList(
+                recordList.stream().map(SettlementDriver::getChildNo).collect(Collectors.toList()));
+        childList = childList.stream().filter(item -> item.getConfirmTime() != null).collect(Collectors.toList());
+        log.info("寰呭徃鏈虹‘璁ゆ敹璐у悓姝ワ紝size:{}", childList.size());
+
+        for (OrderChild item : childList) {
+
+            settlementMqService.settlementDriverConfirm(item.getChildNo());
+        }
+    }
+
+    /**
+     * 鍚屾鏃犺溅鎵胯繍杩愬崟鏀粯鍙楃悊
+     */
+    @XxlJob("settlementDriverPayAcceptSync")
+    public void settlementDriverPayAcceptSync() {
+
+        List<SettlementDriverDetail> recordList = settlementDriverDetailDao
+                .listDriverPayAcceptSync();
+
+        log.info("寰呭悓姝ユ棤杞︽壙杩愯繍鍗曟敮浠樺彈鐞嗭紝size:{}", recordList.size());
+        if (recordList.isEmpty()) {return;}
+
+        for (SettlementDriverDetail item : recordList) {
+
+            settlementMqService.driverPayAcceptSync(item.getChildNo());
+        }
+    }
+
     /**
      * 鍚屾鏃犺溅鎵胯繍杩愬崟寮€绁ㄧ姸鎬�
      */
@@ -188,4 +229,32 @@ public class SettlementJob {
         }
     }
 
+    /**
+     * 缃戠粶璐ц繍杩愬崟鏀粯鍚屾(娴嬭瘯)
+     */
+    @XxlJob("settlementDriverPayTest")
+    public void settlementDriverPayTest() {
+        try {
+            List<String> childNoList=null;
+
+            String jobParam= XxlJobHelper.getJobParam();
+            log.info("缃戠粶璐ц繍杩愬崟鏀粯鍚屾, param:{}", jobParam);
+            if (StringUtils.isNotBlank(jobParam)) {
+                childNoList = JSON.parseArray(jobParam, String.class);
+            }
+            if (childNoList == null || childNoList.isEmpty()) {
+                return;
+            }
+
+            for (String childNo : childNoList) {
+
+                // 鍙戦€乵q (杩愬崟鍙告満鏀粯)
+                orderChildBrokerMqService.orderChildDriverPay(childNo);
+            }
+        } catch (Exception e) {
+            log.warn("缃戠粶璐ц繍杩愬崟鏀粯鍚屾 澶辫触锛宮sg:{}", ExceptionUtils.getStackTrace(e));
+            JobLog.error("缃戠粶璐ц繍杩愬崟鏀粯鍚屾 澶辫触", e);
+        }
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/listener/broker/BrokerOrderChildDriverPayListener.java b/performance-web/src/main/java/com/clx/performance/listener/broker/BrokerOrderChildDriverPayListener.java
new file mode 100644
index 000000000..f3c9a6036
--- /dev/null
+++ b/performance-web/src/main/java/com/clx/performance/listener/broker/BrokerOrderChildDriverPayListener.java
@@ -0,0 +1,45 @@
+package com.clx.performance.listener.broker;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.clx.performance.common.MqWrapper;
+import com.clx.performance.constant.RabbitKeyBrokerConstants;
+import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
+import com.clx.performance.vo.mq.broker.BrokerOrderChildDriverPayMqParam;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: 鑹惧簡鍥�
+ * @Description: 鍙告満鏀粯 mq
+ * @Date: 2023-10-20 11:45:08
+ * @Version: 1.0
+ */
+@Slf4j
+@Component
+public class BrokerOrderChildDriverPayListener {
+
+    @Autowired
+    private OrderChildBrokerMqHandlerService orderChildBrokerMqHandlerService;
+
+    @RabbitListener(queues = RabbitKeyBrokerConstants.ORDER_CHILD_DRIVER_PAY_QUEUE)
+    public void process(Message message) {
+        try{
+            log.info("鏃犺溅鎵胯繍-鍙告満鏀粯, message:{}", new String(message.getBody()));
+            process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<BrokerOrderChildDriverPayMqParam>>(){}).getData());
+            log.info("鏃犺溅鎵胯繍-鍙告満鏀粯 鎴愬姛, message:{}", new String(message.getBody()));
+        }catch (Exception e){
+            log.info("鏃犺溅鎵胯繍-鍙告満鏀粯 澶辫触锛宮sg:{}", ExceptionUtils.getStackTrace(e));
+        }
+    }
+
+    private void process(BrokerOrderChildDriverPayMqParam mq){
+
+        orderChildBrokerMqHandlerService.orderChildDriverPay(mq);
+
+    }
+}
diff --git a/performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverConfirmListener.java b/performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverConfirmListener.java
new file mode 100644
index 000000000..13af70f8b
--- /dev/null
+++ b/performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverConfirmListener.java
@@ -0,0 +1,43 @@
+package com.clx.performance.listener.settle;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.clx.performance.common.MqWrapper;
+import com.clx.performance.constant.RabbitKeySettlementConstants;
+import com.clx.performance.service.settle.SettlementMqHandlerService;
+import com.clx.performance.vo.mq.settle.SettlementDriverConfirmMqParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: 鑹惧簡鍥�
+ * @Description: 鍙告満纭鏀惰揣 mq
+ * @Date: 2023-10-20 11:45:08
+ * @Version: 1.0
+ */
+@Slf4j
+@Component
+public class SettlementDriverConfirmListener {
+
+    @Autowired
+    private SettlementMqHandlerService settlementMqHandlerService;
+
+    @RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_DRIVER_CONFIRM_QUEUE)
+    public void process(Message message) {
+        try{
+            log.info("缁撶畻-鍙告満纭鏀惰揣, message:{}", new String(message.getBody()));
+            process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementDriverConfirmMqParam>>(){}).getData());
+        }catch (Exception e){
+            log.info("缁撶畻-鍙告満纭鏀惰揣 澶辫触",e);
+        }
+    }
+
+    private void process(SettlementDriverConfirmMqParam mq){
+
+        settlementMqHandlerService.settlementDriverConfirm(mq);
+
+    }
+}
diff --git a/performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverPayAcceptSyncListener.java b/performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverPayAcceptSyncListener.java
new file mode 100644
index 000000000..cf252f627
--- /dev/null
+++ b/performance-web/src/main/java/com/clx/performance/listener/settle/SettlementDriverPayAcceptSyncListener.java
@@ -0,0 +1,43 @@
+package com.clx.performance.listener.settle;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.clx.performance.common.MqWrapper;
+import com.clx.performance.constant.RabbitKeySettlementConstants;
+import com.clx.performance.service.settle.SettlementMqHandlerService;
+import com.clx.performance.vo.mq.settle.SettlementDriverPayAcceptSyncMqParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: 鑹惧簡鍥�
+ * @Description: 鍙告満鏀粯鍙楃悊鍚屾 mq
+ * @Date: 2023-10-20 11:45:08
+ * @Version: 1.0
+ */
+@Slf4j
+@Component
+public class SettlementDriverPayAcceptSyncListener {
+
+    @Autowired
+    private SettlementMqHandlerService settlementMqHandlerService;
+
+    @RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_DRIVER_PAY_ACCEPT_SYNC_QUEUE)
+    public void process(Message message) {
+        try{
+            log.info("缁撶畻-鍙告満鏀粯鍙楃悊鍚屾, message:{}", new String(message.getBody()));
+            process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementDriverPayAcceptSyncMqParam>>(){}).getData());
+        }catch (Exception e){
+            log.info("缁撶畻-鍙告満鏀粯鍙楃悊鍚屾 澶辫触",e);
+        }
+    }
+
+    private void process(SettlementDriverPayAcceptSyncMqParam mq){
+
+        settlementMqHandlerService.driverPayAcceptSync(mq);
+
+    }
+}
diff --git a/performance-web/src/main/java/com/clx/performance/model/settle/SettlementDriverDetail.java b/performance-web/src/main/java/com/clx/performance/model/settle/SettlementDriverDetail.java
index 8c045df19..379c75eb4 100644
--- a/performance-web/src/main/java/com/clx/performance/model/settle/SettlementDriverDetail.java
+++ b/performance-web/src/main/java/com/clx/performance/model/settle/SettlementDriverDetail.java
@@ -53,6 +53,7 @@ public class SettlementDriverDetail implements HasKey<Integer> {
     private String invoicingCompanyGroupCode;  //寮€绁ㄥ叕鍙哥粺涓€绀句細淇$敤浠g爜
     private BigDecimal platformServiceFee;           //骞冲彴鏈嶅姟璐癸紙鍒嗭級
     private BigDecimal platformServiceFeeRate;       //骞冲彴鏈嶅姟璐硅垂鐜�%
+    private Integer payAcceptStatus;                 //鏀粯鍙楃悊鐘舵€侊細0鏈彈鐞嗘敮浠� 1鏀粯鍙楃悊涓� 2宸插彈鐞嗘敮浠�
     private Integer status;                         //鐘舵€�
     private LocalDateTime createTime;                      //鍒涘缓鏃堕棿
     private LocalDateTime modifiedTime;                    //淇敼鏃堕棿
diff --git a/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqHandlerService.java b/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqHandlerService.java
index d6ce9dd62..d000371d2 100644
--- a/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqHandlerService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqHandlerService.java
@@ -1,5 +1,6 @@
 package com.clx.performance.service.broker;
 
+import com.clx.performance.vo.mq.broker.BrokerOrderChildDriverPayMqParam;
 import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
 import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
 
@@ -7,4 +8,7 @@ public interface OrderChildBrokerMqHandlerService {
     void orderChildSync(BrokerOrderChildSyncMqParam mq);
 
     void orderChildUpdate(BrokerOrderChildUpdateMqParam mq);
+
+    void orderChildDriverPay(BrokerOrderChildDriverPayMqParam mq);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqService.java b/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqService.java
index f7fd3eadc..b02368ff7 100644
--- a/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerMqService.java
@@ -9,4 +9,6 @@ public interface OrderChildBrokerMqService {
 
     void orderChildUpdate(List<String> childNoList);
 
+    void orderChildDriverPay(String childNo);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerService.java b/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerService.java
index 25eed84d4..609538778 100644
--- a/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerService.java
@@ -12,4 +12,7 @@ public interface OrderChildBrokerService {
                         SettlementDriverDetail settlementDriverDetail);
     void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
                         SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver);
+
+    void orderChildDriverPay(SettlementDriverDetail settlementDriverDetail);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqHandlerServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqHandlerServiceImpl.java
index cdd5d882c..f5ea59110 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqHandlerServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqHandlerServiceImpl.java
@@ -7,6 +7,7 @@ import com.clx.performance.dao.settle.SettlementDriverDetailDao;
 import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
 import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
 import com.clx.performance.enums.PerformanceResultEnum;
+import com.clx.performance.enums.settle.SettlementDriverDetailEnum;
 import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
 import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
 import com.clx.performance.model.OrderChild;
@@ -18,6 +19,7 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
 import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
 import com.clx.performance.service.broker.OrderChildBrokerMqService;
 import com.clx.performance.service.broker.OrderChildBrokerService;
+import com.clx.performance.vo.mq.broker.BrokerOrderChildDriverPayMqParam;
 import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
 import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
 import lombok.extern.slf4j.Slf4j;
@@ -141,4 +143,17 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
 
     }
 
+    @Override
+    public void orderChildDriverPay(BrokerOrderChildDriverPayMqParam mq) {
+        SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
+                .getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+
+        settlementDriverDetail.setPayAcceptStatus(SettlementDriverDetailEnum.PayAcceptStatus.ACCEPTING.getCode());
+        settlementDriverDetailDao.updatePayAcceptStatus(settlementDriverDetail);
+
+        // 鍙告満鏀粯
+        orderChildBrokerService.orderChildDriverPay(settlementDriverDetail);
+
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqServiceImpl.java
index 4cea1ad68..78c3e880b 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqServiceImpl.java
@@ -5,6 +5,7 @@ import com.clx.performance.common.MqDelay;
 import com.clx.performance.common.MqWrapper;
 import com.clx.performance.constant.RabbitKeyBrokerConstants;
 import com.clx.performance.service.broker.OrderChildBrokerMqService;
+import com.clx.performance.vo.mq.broker.BrokerOrderChildDriverPayMqParam;
 import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
 import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
 import lombok.extern.slf4j.Slf4j;
@@ -58,4 +59,18 @@ public class OrderChildBrokerMqServiceImpl implements OrderChildBrokerMqService
         }
     }
 
+    @Override
+    public void orderChildDriverPay(String childNo) {
+        BrokerOrderChildDriverPayMqParam mq = new BrokerOrderChildDriverPayMqParam();
+        mq.setChildNo(childNo);
+
+        MqDelay delay =
+                new MqDelay<>(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
+                        RabbitKeyBrokerConstants.ORDER_CHILD_DRIVER_PAY_ROUTING_KEY, new MqWrapper<>(mq));
+        Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
+        message.getMessageProperties().setExpiration("5000");
+        rabbitTemplate.send(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
+                RabbitKeyBrokerConstants.DEFAULT_DELAY_ROUTING_KEY, message);
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java
index 472cd839e..39e4cba72 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java
@@ -7,6 +7,7 @@ import com.clx.order.vo.feign.FeignOrderVO;
 import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
 import com.clx.performance.dao.OrderChildImageDao;
 import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
+import com.clx.performance.enums.PerformanceResultEnum;
 import com.clx.performance.enums.PowerTypeEnum;
 import com.clx.performance.enums.settle.SettlementDriverEnum;
 import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
@@ -84,6 +85,13 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
         brokerService.orderChildUpdate(transportParam);
     }
 
+    @Override
+    public void orderChildDriverPay(SettlementDriverDetail settlementDriverDetail) {
+
+        // 杩愬崟鏀粯
+        brokerService.orderChildPay(settlementDriverDetail.getChildNo());
+    }
+
     private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
                                    SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver){
         String host = documentFeign.getHost().getData();
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/child/OrderChildPostServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/child/OrderChildPostServiceImpl.java
index eaa4aa877..e3bd73d13 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/child/OrderChildPostServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/child/OrderChildPostServiceImpl.java
@@ -90,6 +90,9 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
         // 鍙戦€乵q 鍙告満纭鏀惰揣
         orderChildMqService.orderChildDriverConfirm(orderChild.getChildNo());
 
+        // 鍙戦€乵q (鍙告満浠樻鍚屾缃戠粶璐ц繍)
+        settlementMqService.settlementDriverConfirm(orderChild.getChildNo());
+
         // 鍙戦€乵q (鏇存柊鏃犺溅鎵胯繍)
         orderChildBrokerMqService.orderChildUpdate(orderChild.getChildNo());
     }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
index 07ab25ac4..f4441dcf4 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
@@ -40,10 +40,7 @@ import com.clx.performance.utils.LocalDateTimeUtils;
 import com.clx.performance.utils.RedisUtil;
 import com.clx.performance.utils.spring.ApplicationContextUtils;
 import com.clx.performance.vo.mq.*;
-import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
-import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
-import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
-import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
+import com.clx.performance.vo.mq.settle.*;
 import com.clx.performance.vo.pc.broker.TransportVO;
 import com.clx.user.vo.feign.DriverInfoFeignVo;
 import com.clx.user.vo.feign.OwnerInfoFeignVO;
@@ -244,7 +241,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
         }
 
         //鐢熸垚杞︿富缁撶畻鍗�
-        settlementDriverSave(settlementDriverDetail,settlementNo);
+//        settlementDriverSave(settlementDriverDetail,settlementNo);
         //杞︿富缁撶畻鍗曡嚜鍔ㄦ敮浠�
         log.info(" 杩愬崟鍙� {}, 鏄惁鏄櫘閫氬崟 {} ",settlementDriverDetail.getChildNo(),settlementDriverDetail.getInvoiceType());
         if (!settlementDriverDetail.getInvoiceType().equals(SettlementOwnerEnum.InvoiceType.ONLINE.getCode())) {
@@ -273,6 +270,55 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
         settlementDriverDetailDao.updateSettlementNo(settlementDriverDetail);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void settlementDriverSettlement(SettlementDriverSettleMqParam mq) {
+
+        SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
+                .getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+
+        SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(settlementDriverDetail.getChildNo()).orNull();
+        if (settlementDriver != null) {return;}
+
+        String settlementNo = settlementNoGenerate();
+
+        settlementDriver = new SettlementDriver();
+        settlementDriver.setDriverUserNo(settlementDriverDetail.getDriverUserNo());
+        settlementDriver.setDriverName(settlementDriverDetail.getDriverName());
+        settlementDriver.setSettlementNo(settlementNo);
+        settlementDriver.setChildNo(settlementDriverDetail.getChildNo());
+        settlementDriver.setOrderGoodsNo(settlementDriverDetail.getOrderGoodsNo());
+        settlementDriver.setOrderNo(settlementDriverDetail.getOrderNo());
+        settlementDriver.setGoodsId(settlementDriverDetail.getGoodsId());
+        settlementDriver.setGoodsName(settlementDriverDetail.getGoodsName());
+        settlementDriver.setTruckNo(settlementDriverDetail.getTruckNo());
+        settlementDriver.setFreightPrice(settlementDriverDetail.getFreightPrice());
+        settlementDriver.setWeight(settlementDriverDetail.getWeight());
+        settlementDriver.setFreight(settlementDriverDetail.getFreight());
+        settlementDriver.setLossPrice(settlementDriverDetail.getLossPrice());
+        settlementDriver.setLossWeight(settlementDriverDetail.getLossWeight());
+        settlementDriver.setLoanFlag(settlementDriverDetail.getLoanFlag());
+        settlementDriver.setLossFreight(settlementDriverDetail.getLossFreight());
+        settlementDriver.setPrepayFreightFlag(settlementDriverDetail.getPrepayFreightFlag());
+        settlementDriver.setSettlementFreight(settlementDriverDetail.getSettlementFreight());
+        settlementDriver.setInvoiceType(settlementDriverDetail.getInvoiceType());
+        settlementDriver.setSettlementPlatform(settlementDriverDetail.getInvoiceType() == 1 ?
+                String.valueOf(SettlementPlatformEnum.Platform.WY.getCode()):
+                String.valueOf(SettlementPlatformEnum.Platform.MSL.getCode()));
+
+        settlementDriver.setStatus(SettlementDriverEnum.Status.DRIVER_UNCONFIRMED.getCode());
+
+        settlementDriver.setInvoicingCompanyId(settlementDriverDetail.getInvoicingCompanyId());
+        settlementDriver.setInvoicingCompanyShorterName(settlementDriverDetail.getInvoicingCompanyShorterName());
+        settlementDriver.setInvoicingCompanyGroupCode(settlementDriverDetail.getInvoicingCompanyGroupCode());
+        settlementDriver.setPlatformServiceFeeRate(settlementDriverDetail.getPlatformServiceFeeRate());
+        settlementDriver.setPlatformServiceFee(settlementDriverDetail.getPlatformServiceFee());
+
+        settlementDriverDao.saveEntity(settlementDriver);
+
+        settlementPostService.driverSettle(settlementDriverDetail.getChildNo());
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void settle(SettlementSettleMqParam mq) {
@@ -358,6 +404,49 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
         }
     }
 
+    @Override
+    public void driverPayAcceptSync(SettlementDriverPayAcceptSyncMqParam mq) {
+        OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+        SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
+                .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+        if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){
+            return;
+        }
+        if (settlementOwnerDetail.getInvoiceType() == null) {return;}
+
+        SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
+                .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+        if (!Objects.equals(settlementDriverDetail.getPayAcceptStatus(), SettlementDriverDetailEnum.PayAcceptStatus.ACCEPTING.getCode())){
+            return;
+        }
+
+        SettlementDriver settlementDriver = settlementDriverDao
+                .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+
+        try {
+            // 鑾峰彇鐘舵€�
+            TransportVO result = brokerService.getOrderChildStatus(mq.getChildNo());
+            if (result == null){
+                log.info("杩愬崟鍙� {} 鏈壘鍒拌繍鍗曚俊鎭�",mq.getChildNo());
+                return;
+            }
+
+            if (Objects.equals(result.getSyncStatus(), 0)) {
+
+                return;
+            }
+
+            else if (Objects.equals(result.getThirdPartyChildStatus(), 30)) {
+                // 鏇存柊鐘舵€�
+                settlementDriverDetail.setPayAcceptStatus(SettlementDriverDetailEnum.PayAcceptStatus.ACCEPTED.getCode());
+                settlementDriverDetailDao.updatePayAcceptStatus(settlementDriverDetail);
+
+            }
+        }catch (Exception e){
+            log.info("缁撶畻鑾峰彇鏀粯鍙楃悊鐘舵€佸け璐ワ紝 杩愬崟鍙� {}",mq.getChildNo(),e);
+        }
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void invoiceStatusSync(SettlementInvoiceStatusSyncMqParam mq) {
@@ -606,45 +695,45 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
 //        settlementService.updateSettlementDetailInvoiceType(settlementOwnerDetail.getChildNo(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
     }
 
-    private void settlementDriverSave(SettlementDriverDetail detail,String settlementNo){
-        SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(detail.getChildNo()).orElse(new SettlementDriver());
-        settlementDriver.setDriverUserNo(detail.getDriverUserNo());
-        settlementDriver.setDriverName(detail.getDriverName());
-        settlementDriver.setSettlementNo(settlementNo);
-        settlementDriver.setChildNo(detail.getChildNo());
-        settlementDriver.setOrderGoodsNo(detail.getOrderGoodsNo());
-        settlementDriver.setOrderNo(detail.getOrderNo());
-        settlementDriver.setGoodsId(detail.getGoodsId());
-        settlementDriver.setGoodsName(detail.getGoodsName());
-        settlementDriver.setTruckNo(detail.getTruckNo());
-        settlementDriver.setFreightPrice(detail.getFreightPrice());
-        settlementDriver.setWeight(detail.getWeight());
-        settlementDriver.setFreight(detail.getFreight());
-        settlementDriver.setLossPrice(detail.getLossPrice());
-        settlementDriver.setLossWeight(detail.getLossWeight());
-        settlementDriver.setLoanFlag(detail.getLoanFlag());
-        settlementDriver.setLossFreight(detail.getLossFreight());
-        settlementDriver.setPrepayFreightFlag(detail.getPrepayFreightFlag());
-        settlementDriver.setSettlementFreight(detail.getSettlementFreight());
-        settlementDriver.setInvoiceType(detail.getInvoiceType());
-        settlementDriver.setSettlementPlatform(detail.getInvoiceType() == 1 ?
-                        String.valueOf(SettlementPlatformEnum.Platform.WY.getCode()):
-                String.valueOf(SettlementPlatformEnum.Platform.MSL.getCode()));
-
-        settlementDriver.setStatus(SettlementDriverEnum.Status.WAIT_SETTLEMENT.getCode());
-
-        settlementDriver.setInvoicingCompanyId(detail.getInvoicingCompanyId());
-        settlementDriver.setInvoicingCompanyShorterName(detail.getInvoicingCompanyShorterName());
-        settlementDriver.setInvoicingCompanyGroupCode(detail.getInvoicingCompanyGroupCode());
-        settlementDriver.setPlatformServiceFeeRate(detail.getPlatformServiceFeeRate());
-        settlementDriver.setPlatformServiceFee(detail.getPlatformServiceFee());
-
-        if (settlementDriver.getId() == null) {
-            settlementDriverDao.saveEntity(settlementDriver);
-        }else {
-            settlementDriverDao.updateEntityByKey(settlementDriver);
-        }
-    }
+//    private void settlementDriverSave(SettlementDriverDetail detail,String settlementNo){
+//        SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(detail.getChildNo()).orElse(new SettlementDriver());
+//        settlementDriver.setDriverUserNo(detail.getDriverUserNo());
+//        settlementDriver.setDriverName(detail.getDriverName());
+//        settlementDriver.setSettlementNo(settlementNo);
+//        settlementDriver.setChildNo(detail.getChildNo());
+//        settlementDriver.setOrderGoodsNo(detail.getOrderGoodsNo());
+//        settlementDriver.setOrderNo(detail.getOrderNo());
+//        settlementDriver.setGoodsId(detail.getGoodsId());
+//        settlementDriver.setGoodsName(detail.getGoodsName());
+//        settlementDriver.setTruckNo(detail.getTruckNo());
+//        settlementDriver.setFreightPrice(detail.getFreightPrice());
+//        settlementDriver.setWeight(detail.getWeight());
+//        settlementDriver.setFreight(detail.getFreight());
+//        settlementDriver.setLossPrice(detail.getLossPrice());
+//        settlementDriver.setLossWeight(detail.getLossWeight());
+//        settlementDriver.setLoanFlag(detail.getLoanFlag());
+//        settlementDriver.setLossFreight(detail.getLossFreight());
+//        settlementDriver.setPrepayFreightFlag(detail.getPrepayFreightFlag());
+//        settlementDriver.setSettlementFreight(detail.getSettlementFreight());
+//        settlementDriver.setInvoiceType(detail.getInvoiceType());
+//        settlementDriver.setSettlementPlatform(detail.getInvoiceType() == 1 ?
+//                        String.valueOf(SettlementPlatformEnum.Platform.WY.getCode()):
+//                String.valueOf(SettlementPlatformEnum.Platform.MSL.getCode()));
+//
+//        settlementDriver.setStatus(SettlementDriverEnum.Status.WAIT_SETTLEMENT.getCode());
+//
+//        settlementDriver.setInvoicingCompanyId(detail.getInvoicingCompanyId());
+//        settlementDriver.setInvoicingCompanyShorterName(detail.getInvoicingCompanyShorterName());
+//        settlementDriver.setInvoicingCompanyGroupCode(detail.getInvoicingCompanyGroupCode());
+//        settlementDriver.setPlatformServiceFeeRate(detail.getPlatformServiceFeeRate());
+//        settlementDriver.setPlatformServiceFee(detail.getPlatformServiceFee());
+//
+//        if (settlementDriver.getId() == null) {
+//            settlementDriverDao.saveEntity(settlementDriver);
+//        }else {
+//            settlementDriverDao.updateEntityByKey(settlementDriver);
+//        }
+//    }
 
     @Override
     public void settlementDriverNotify(String childNo,Integer payType,String payErrorMsg){
@@ -914,6 +1003,57 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
         return uniqueOrderNumService.getUniqueOrderNum(com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToString(LocalDateTime.now(), com.msl.common.utils.LocalDateTimeUtils.DATE_DAY));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void riskAdd(SettlementOrderChildRiskAddMqParam mq) {
+        SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao
+                .getById(mq.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
+        if (Objects.equals(settlementOrderChildRisk.getStatus(), SettlementOrderChildRiskEnum.Status.PROCESSED.getCode())) {
+            return;
+        }
+
+        OrderChild orderChild = orderChildDao
+                .getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
+
+        InvoicingCompanyVO invoicingCompanyByGroupCode = invoicingCompanyService
+                .getInvoicingCompanyByGroupCode(orderChild.getInvoicingCompanyGroupCode());
+        if (!Objects.equals(invoicingCompanyByGroupCode.getRiskProcessType(), InvoicingCompanyEnum.RiskProcessType.AUTO.getCode())) {
+            return;
+        }
+
+        // 杞櫘閫氬崟
+        SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
+                .getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
+        SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
+                .getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
+
+        settlementOrderChildRisk.setStatus(SettlementOrderChildRiskEnum.Status.PROCESSED.getCode());
+        settlementOrderChildRisk.setProcessMethod(SettlementOrderChildRiskEnum.ProcessMethod.CONVERT_ORDINARY.getCode());
+        settlementOrderChildRisk.setProcessBy("绯荤粺");
+        settlementOrderChildRisk.setProcessTime(LocalDateTime.now());
+
+        settlementOwnerDetail.setInvoiceType(SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
+        settlementOwnerDetail.setInvoicingCompanyId(null);
+        settlementOwnerDetail.setInvoicingCompanyShorterName(null);
+        settlementOwnerDetail.setInvoicingCompanyGroupCode(null);
+        settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode());
+        settlementOwnerDetail.setInvoiceTypeModifiedTime(LocalDateTime.now());
+        settlementOwnerDetailDao.updateConvertOrdinary(settlementOwnerDetail);
+
+        settlementDriverDetail.setInvoiceType(settlementOwnerDetail.getInvoiceType());
+        settlementDriverDetail.setInvoicingCompanyId(settlementOwnerDetail.getInvoicingCompanyId());
+        settlementDriverDetail.setInvoicingCompanyShorterName(settlementOwnerDetail.getInvoicingCompanyShorterName());
+        settlementDriverDetail.setInvoicingCompanyGroupCode(settlementOwnerDetail.getInvoicingCompanyGroupCode());
+        settlementDriverDetailDao.updateConvertOrdinary(settlementDriverDetail);
+
+        settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
+
+        settlementOrderChildRiskDao.updateProcess(settlementOrderChildRisk);
+
+        // 鍙戦€乵q (椋庢帶澶勭悊)
+        settlementMqService.riskProcess(settlementOrderChildRisk.getId());
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void riskProcess(SettlementOrderChildRiskProcessMqParam mq) {
@@ -1124,6 +1264,31 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
 
     }
 
+    @Override
+    public void settlementDriverConfirm(SettlementDriverConfirmMqParam mq) {
+
+        OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
+        if (orderChild.getConfirmTime() == null) {return;}
+
+        SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(orderChild.getChildNo()).orNull();
+        if (settlementDriver == null
+                || !Objects.equals(settlementDriver.getStatus(), SettlementDriverEnum.Status.DRIVER_UNCONFIRMED.getCode())
+        ) {
+            return;
+        }
+
+        settlementDriver.setStatus(SettlementDriverEnum.Status.WAIT_SETTLEMENT.getCode());
+        settlementDriverDao.updateSettleStatus(settlementDriver);
+
+        if (!Objects.equals(settlementDriver.getInvoiceType(), SettlementOwnerEnum.InvoiceType.ONLINE.getCode())){
+            return;
+        }
+
+        // 鍙戦€乵q (杩愬崟鍙告満鏀粯)
+        orderChildBrokerMqService.orderChildDriverPay(orderChild.getChildNo());
+
+    }
+
     private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) {
         if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //璁㈠崟缁撶畻鏂瑰紡涓衡€滆杞﹀噣閲嶁€濇椂锛屽紑绁ㄩ噾棰�=瀹為檯鍑€閲�*骞冲彴杩愯垂鎶ヤ环-璐ф崯閲戦銆�
             return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java
index 2f15cdf37..59a12672a 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java
@@ -6,10 +6,7 @@ import com.clx.performance.common.MqWrapper;
 import com.clx.performance.constant.RabbitKeySettlementConstants;
 import com.clx.performance.service.settle.SettlementMqService;
 import com.clx.performance.vo.mq.*;
-import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
-import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
-import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
-import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
+import com.clx.performance.vo.mq.settle.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.core.MessageBuilder;
@@ -75,6 +72,19 @@ public class SettlementMqServiceImpl implements SettlementMqService {
                 RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
     }
 
+    @Override
+    public void driverPayAcceptSync(String childNo) {
+        SettlementDriverPayAcceptSyncMqParam mq = new SettlementDriverPayAcceptSyncMqParam();
+        mq.setChildNo(childNo);
+        MqDelay delay =
+                new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
+                        RabbitKeySettlementConstants.SETTLEMENT_DRIVER_PAY_ACCEPT_SYNC_ROUTING_KEY, new MqWrapper<>(mq));
+        Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
+        message.getMessageProperties().setExpiration("5000");
+        rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
+                RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
+    }
+
     @Override
     public void settle(String childNo, Integer invoiceType, String remark) {
 
@@ -162,4 +172,16 @@ public class SettlementMqServiceImpl implements SettlementMqService {
                 RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
     }
 
+    @Override
+    public void settlementDriverConfirm(String childNo) {
+        SettlementDriverConfirmMqParam mq = new SettlementDriverConfirmMqParam();
+        mq.setChildNo(childNo);
+        MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
+                RabbitKeySettlementConstants.SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY, new MqWrapper<>(mq));
+        Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
+        message.getMessageProperties().setExpiration("5000");
+        rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
+                RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
+    }
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOrderChildRiskServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOrderChildRiskServiceImpl.java
index b9c0452a0..899b01120 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOrderChildRiskServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOrderChildRiskServiceImpl.java
@@ -8,10 +8,7 @@ import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
 import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
 import com.clx.performance.enums.PerformanceResultEnum;
 import com.clx.performance.enums.ResultEnum;
-import com.clx.performance.enums.settle.SettlementDriverEnum;
-import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
-import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
-import com.clx.performance.enums.settle.SettlementOwnerEnum;
+import com.clx.performance.enums.settle.*;
 import com.clx.performance.model.settle.SettlementDriver;
 import com.clx.performance.model.settle.SettlementDriverDetail;
 import com.clx.performance.model.settle.SettlementOrderChildRisk;
@@ -104,7 +101,13 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
             }
         }
         else {
-
+            // 鐘舵€佸洖婊�
+            if (settlementDriver != null){
+                settlementDriver.setStatus(SettlementDriverEnum.Status.DRIVER_UNCONFIRMED.getCode());
+                settlementDriverDao.updatePayStatus(settlementDriver);
+            }
+            settlementDriverDetail.setPayAcceptStatus(SettlementDriverDetailEnum.PayAcceptStatus.INIT.getCode());
+            settlementDriverDetailDao.updatePayAcceptStatus(settlementDriverDetail);
         }
 
         settlementOrderChildRiskDao.updateProcess(settlementOrderChildRisk);
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementPostServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementPostServiceImpl.java
index 5efc5c176..5f9796226 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementPostServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementPostServiceImpl.java
@@ -60,4 +60,10 @@ public class SettlementPostServiceImpl implements SettlementPostService {
         }
     }
 
+
+    @Override
+    public void driverSettle(String childNo) {
+        // 鍙戦€乵q (鍙告満纭鏀惰揣)
+        settlementMqService.settlementDriverConfirm(childNo);
+    }
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java b/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java
index c28c2fda9..7a5e199ad 100644
--- a/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java
@@ -2,10 +2,7 @@ package com.clx.performance.service.settle;
 
 import com.clx.performance.model.settle.SettlementDriverDetail;
 import com.clx.performance.vo.mq.*;
-import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
-import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
-import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
-import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
+import com.clx.performance.vo.mq.settle.*;
 
 public interface SettlementMqHandlerService {
 
@@ -13,9 +10,12 @@ public interface SettlementMqHandlerService {
 
     void settlementStatistics(SettlementStatisticsMqParam mq);
 
+    void settlementDriverSettlement(SettlementDriverSettleMqParam mq);
+
     void settle(SettlementSettleMqParam mq);
 
     void invoiceTypeSync(SettlementInvoiceTypeSyncMqParam mq);
+    void driverPayAcceptSync(SettlementDriverPayAcceptSyncMqParam mq);
 
     void invoiceStatusSync(SettlementInvoiceStatusSyncMqParam mq);
 
@@ -27,6 +27,7 @@ public interface SettlementMqHandlerService {
 
     String settlementNoGenerate();
 
+    void riskAdd(SettlementOrderChildRiskAddMqParam mq);
     void riskProcess(SettlementOrderChildRiskProcessMqParam mq);
 
     void invoiceCompanyUpdate(SettlementOwnerDetialInvoiceCompanyUpdateMqParam mq);
@@ -35,4 +36,6 @@ public interface SettlementMqHandlerService {
 
     void settlementInvoiceStatusUpdate(SettlementInvoiceStatusUpdateMqParam mq);
 
+    void settlementDriverConfirm(SettlementDriverConfirmMqParam mq);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java b/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java
index d800a96ae..7052e2e46 100644
--- a/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java
@@ -9,6 +9,8 @@ public interface SettlementMqService {
 
     void invoiceTypeSync(String childNo);
 
+    void driverPayAcceptSync(String childNo);
+
     void settle(String childNo, Integer invoiceType, String remark);
 
     void invoiceStatusSync(String childNo);
@@ -23,4 +25,6 @@ public interface SettlementMqService {
 
     void settlementInvoiceStatusUpdate(String settlementNo);
 
+    void settlementDriverConfirm(String childNo);
+
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/settle/SettlementPostService.java b/performance-web/src/main/java/com/clx/performance/service/settle/SettlementPostService.java
index 242ea63d1..f46b70605 100644
--- a/performance-web/src/main/java/com/clx/performance/service/settle/SettlementPostService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/settle/SettlementPostService.java
@@ -15,4 +15,5 @@ public interface SettlementPostService {
 
     void updateInvoice(List<String> childNoList);
 
+    void driverSettle(String childNo);
 }
-- 
2.17.1