diff --git a/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java b/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java
index e14a7b5b56ba588575244599ad56fb0c92b3c9e1..b30b7e17244f1261794107ca75512713c2711896 100644
--- a/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java
+++ b/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java
@@ -4,9 +4,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 
 import java.util.Arrays;
-import java.util.List;
 import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
 
 public enum AppEnum {
     ;
@@ -15,7 +13,7 @@ public enum AppEnum {
     @AllArgsConstructor
     public enum UniqueIdentifier {
 
-        SMART_WEIGHT(1, "鍦虹珯-smart-weight"),
+        LMS_MANAGE(1, "鐗╂祦瀛愮郴缁�-lms-manage"),
         PURCHASE_MANAGE(2, "渚涘簲閾�-purchase-manage"),
 
         ;
diff --git a/performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java b/performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..cce0ceebf4a3dbae2fcd4570fc68e005cdc793c9
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java
@@ -0,0 +1,32 @@
+package com.clx.performance.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+public enum InputOutputEnum {
+    ;
+
+    @Getter
+    @AllArgsConstructor
+    public enum Type {
+        INPUT(1, "杩涘満"),
+        OUTPUT(2, "鍑哄満"),
+        ;
+
+        private final Integer code;
+        private final String msg;
+
+        public static Optional<Type> getByCode(int code) {
+            return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
+        }
+
+        public static String getMsgByCode(int code) {
+            return getByCode(code).map(Type::getMsg).orElse(null);
+        }
+    }
+
+
+}
diff --git a/performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java b/performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..7adddabc3e4be049c00b9febea40b6dc56194843
--- /dev/null
+++ b/performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java
@@ -0,0 +1,32 @@
+package com.clx.performance.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+public enum SaleBuyEnum {
+    ;
+
+    @Getter
+    @AllArgsConstructor
+    public enum Type {
+        SALE(1, "閿€鍞�"),
+        BUY(2, "閲囪喘"),
+        ;
+
+        private final Integer code;
+        private final String msg;
+
+        public static Optional<Type> getByCode(int code) {
+            return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
+        }
+
+        public static String getMsgByCode(int code) {
+            return getByCode(code).map(Type::getMsg).orElse(null);
+        }
+    }
+
+
+}
diff --git a/performance-web/pom.xml b/performance-web/pom.xml
index 1c40ea3c39220097eadbab8f0000207c3055be01..189c4dcdb97429f30d352ec682439de83631dc59 100644
--- a/performance-web/pom.xml
+++ b/performance-web/pom.xml
@@ -99,8 +99,8 @@
         </dependency>
 
         <dependency>
-            <groupId>com.smart</groupId>
-            <artifactId>smart-weight-sdk</artifactId>
+            <groupId>com.scm</groupId>
+            <artifactId>lms-manage-sdk</artifactId>
         </dependency>
 
 
diff --git a/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java b/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java
index 5ad6ae2e5efd052a58ef9af5690b9b4951c94c05..662513f844cb6beb0237fd1f1e2bb794df25e8ce 100644
--- a/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java
+++ b/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java
@@ -104,7 +104,11 @@ public class PushOrderChildExpectTimeJob {
                     }
                     if(Objects.equals(orderSourceMap.get(item.getOrderNo()),SyncPlatformEnum.Source.TRADE_PLATFORM.getCode())){
                         syncSmbExpectList.add(dto);
-                    }else{
+                        //闆嗙叅瀹濈殑杩愬崟棰勮鏃堕棿涔熻鍚屾缁欓┈涓婃潵渚涘簲閾撅紝椹笂鏉ヤ緵搴旈摼鍚屾缁欏満绔�
+                        syncNewOwnerClientExpectList.add(dto);
+
+                    }
+                    if(Objects.equals(orderSourceMap.get(item.getOrderNo()),SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode())){
                         syncNewOwnerClientExpectList.add(dto);
                     }
                 }
diff --git a/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java b/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java
index 0125cd028ef5b6d7e161252833317d888d1f5f12..2bca46d86c74500a5656702df7cdbf2702d289c8 100644
--- a/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java
+++ b/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java
@@ -1,21 +1,16 @@
 package com.clx.performance.job;
 
-import com.clx.performance.config.LoadAppConfig;
-import com.clx.performance.config.PerformanceSmartCompanyNoConfig;
 import com.clx.performance.dao.OrderChildDao;
 import com.clx.performance.dao.OrderChildWeighPictureDao;
-import com.clx.performance.enums.AppEnum;
 import com.clx.performance.enums.OrderChildEnum;
-import com.clx.performance.model.App;
+import com.clx.performance.enums.SaleBuyEnum;
 import com.clx.performance.model.OrderChild;
 import com.clx.performance.model.OrderChildWeighPicture;
+import com.clx.performance.service.OrderChildService;
 import com.clx.performance.struct.OrderChildWeighPictureStruct;
 import com.msl.common.job.JobLog;
-import com.msl.common.open.OpenClient;
-import com.msl.common.open.RequestConfig;
-import com.msl.common.result.Result;
-import com.smart.weight.action.WeighingSignatureAction;
-import com.smart.weight.dto.WeighingSignatureDto;
+import com.smart.business.sdk.request.dto.WeighingSignatureDto;
+import com.smart.business.sdk.request.dto.WeightChildSignatureDto;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -44,10 +39,7 @@ public class WeighingOderPictureJob{
     private OrderChildWeighPictureDao pictureDao;
 
     @Autowired
-    private PerformanceSmartCompanyNoConfig companyNoConfig;
-
-    @Autowired
-    private LoadAppConfig loadAppConfig;
+    private OrderChildService orderChildService;
 
 
     /**
@@ -78,34 +70,21 @@ public class WeighingOderPictureJob{
 
         //鏌ヨ杩愬崟涓嬬殑鐢靛瓙纾呭崟鏁版嵁
         if(CollectionUtils.isNotEmpty(orderChilds)){
-            App app = loadAppConfig.getApp(AppEnum.UniqueIdentifier.SMART_WEIGHT.getCode());//瀵规帴鍦虹珯閰嶇疆淇℃伅
-            //缁勮閰嶇疆淇℃伅
-            RequestConfig config = new RequestConfig()
-                    .setAppId(app.getAppNo())
-                    .setAppKey(app.getAppKey())
-                    .setGatewayUrl(app.getCallback());
 
             //闆嗗悎瀵硅薄
             List<OrderChildWeighPicture> pictures = new ArrayList<>();
             for(OrderChild orderChild:orderChilds){
-                //閫氳繃杩愬崟鍙风爜鏌ヨ鐢靛瓙纾呭崟鍥剧墖
-                WeighingSignatureAction weightAction = new WeighingSignatureAction();
-                weightAction.setChildNo(orderChild.getChildNo());
-                weightAction.setCustomerRelationNo(String.valueOf(companyNoConfig.getCompanyNo()));
-                log.info("job璇锋眰鐢靛瓙纾呭崟鍙傛暟,{}",weightAction);
-                Result<List<WeighingSignatureDto>> weighSignature = OpenClient.doAction(config, weightAction);
-                log.info("job璇锋眰鐢靛瓙纾呭崟杩斿洖缁撴灉,{}",weighSignature);
+                //閫氳繃杩愬崟鍙锋煡璇㈢數瀛愮鍗曞浘鐗�
+                WeightChildSignatureDto weighingSignature = orderChildService.getWeighingSignature(orderChild.getChildNo(), SaleBuyEnum.Type.BUY.getCode());
                 //鏁版嵁澶勭悊
-                if(!Objects.equals(weighSignature.getCode(),0)){
+                if(Objects.isNull(weighingSignature) || CollectionUtils.isEmpty(weighingSignature.getWeighingSignatureList())){
                     continue;
                 }
-                List<WeighingSignatureDto> weighSignatures = weighSignature.getData();
-                if (CollectionUtils.isNotEmpty(weighSignatures)) {
-                    for(WeighingSignatureDto weighingSignatureDto:weighSignatures){
-                        OrderChildWeighPicture picture = pictureStruct.convert(weighingSignatureDto);
-                        picture.setChildNo(orderChild.getChildNo());//瀵硅薄杞崲
-                        pictures.add(picture);
-                    }
+                List<WeighingSignatureDto> weighingSignatureList = weighingSignature.getWeighingSignatureList();
+                for(WeighingSignatureDto weighingSignatureDto:weighingSignatureList){
+                    OrderChildWeighPicture picture = pictureStruct.convert(weighingSignatureDto);
+                    picture.setChildNo(orderChild.getChildNo());//瀵硅薄杞崲
+                    pictures.add(picture);
                 }
 
             }
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 a65471fa783a4ae89f708fca078724caa5609e86..1c91a0fb2818e4c4a5aaeae2e1276cf04e7226a0 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
@@ -9,6 +9,7 @@ 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.service.broker.OrderChildBrokerMqService;
 import com.clx.performance.service.settle.SettlementMqService;
 import com.msl.common.job.JobLog;
 import com.xxl.job.core.context.XxlJobHelper;
@@ -36,6 +37,7 @@ public class SettlementJob {
     private final SettlementOwnerDetailDao settlementOwnerDetailDao;
     private final SettlementOwnerDao settlementOwnerDao;
     private final OrderChildSyncTransportRecordDao orderChildSyncTransportRecordDao;
+    private final OrderChildBrokerMqService orderChildBrokerMqService;
 
     /**
      * 鍚屾鏃犺溅鎵胯繍杩愬崟寮€绁ㄧ被鍨�
@@ -129,4 +131,61 @@ public class SettlementJob {
         }
     }
 
+
+    /**
+     * 缃戠粶璐ц繍杩愬崟鏇存柊(娴嬭瘯)
+     */
+    @XxlJob("settlementBrokerOrderChildUpdateTest")
+    public void settlementBrokerOrderChildUpdateTest() {
+        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.orderChildUpdate(childNo);
+            }
+        } catch (Exception e) {
+            log.warn("缃戠粶璐ц繍杩愬崟鏇存柊澶辫触锛宮sg:{}", ExceptionUtils.getStackTrace(e));
+            JobLog.error("缃戠粶璐ц繍杩愬崟鏇存柊澶辫触", e);
+        }
+    }
+
+    /**
+     * 缃戠粶璐ц繍杩愬崟鍚屾(娴嬭瘯)
+     */
+    @XxlJob("settlementBrokerOrderChildSyncTest")
+    public void settlementBrokerOrderChildSyncTest() {
+        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.orderChildSync(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/OrderGoodsDtsListener.java b/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java
index 5305eb0af5e0d2f79ce023dc5bf4f5f959695684..2c33a2ca6c9bb5e3d988e22aa74fcde9dee1690e 100644
--- a/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java
+++ b/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java
@@ -74,6 +74,7 @@ public class OrderGoodsDtsListener {
             if(Objects.equals(updateType,DtsOperationTypeEnum.UPDATE.getCode())
             && (!Objects.equals(before.getOrderGoodsStatus(),after.getOrderGoodsStatus())
                 || !Objects.equals(before.getSeniorLogisticsManagerId(),after.getSeniorLogisticsManagerId())
+                || !Objects.equals(before.getExtractWeight(),after.getExtractWeight())
                 || !Objects.equals(before.getPendingOrderFreight(),after.getPendingOrderFreight())
             )){
                 isSend = true;
diff --git a/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java b/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java
index ceb646f95ca8b7f77b2ae0974b58c2d235aee549..12c4a68f40abc2a0115b4eb89840c710707eab36 100644
--- a/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java
+++ b/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java
@@ -39,6 +39,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
 
     @Update(" update order_goods set " +
             " already_transport_weight = already_transport_weight - #{residueWeight}," +
+            " extract_weight = already_transport_weight," +
             "order_goods_status = #{orderGoodsStatus} " +
             " where id = #{id}")
     void updateOrderGoodsWeightAlreadyAndStatus(@Param("id") Integer id, @Param("residueWeight") BigDecimal residueWeight, @Param("orderGoodsStatus") Integer orderGoodsStatus);
diff --git a/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java b/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
index 2f2ac571d6fdbe3a86d3f15ff2cb05814b6009b3..4c4e83df053ff16ccfb9f8ce248d0d34a7fdc4e9 100644
--- a/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
+++ b/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
@@ -13,7 +13,7 @@ import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
 import com.clx.performance.vo.pc.*;
 import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO;
 import com.msl.common.base.PageParam;
-import com.smart.weight.dto.WeighingSignatureDto;
+import com.smart.business.sdk.request.dto.WeightChildSignatureDto;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 
 import java.math.BigDecimal;
@@ -121,5 +121,5 @@ public interface OrderChildService {
     UpdateCarrierBatchCancelVO updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param);
 
 
-    List<WeighingSignatureDto> getWeighingSignature(String childNo);
+    WeightChildSignatureDto getWeighingSignature(String childNo,Integer type);
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
index de434dd87965f3682dcee89551d93db050480398..f3d140966984b0103f35b0d1d3fc07eab32c1b67 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
@@ -93,8 +93,9 @@ import com.purchase.manage.action.SupplyChainSupervisionLoadAction;
 import com.purchase.manage.action.SupplyChainSupervisionLoadTruckAction;
 import com.purchase.manage.dto.SupervisionLoadInfoDto;
 import com.purchase.manage.dto.SupervisionLoadTruckInfoDto;
-import com.smart.weight.action.WeighingSignatureAction;
-import com.smart.weight.dto.WeighingSignatureDto;
+import com.scm.lms.manage.action.LmsWeighingSignatureAction;
+import com.smart.business.sdk.request.dto.WeighingSignatureDto;
+import com.smart.business.sdk.request.dto.WeightChildSignatureDto;
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import com.tencentcloudapi.ocr.v20181119.OcrClient;
@@ -2186,7 +2187,6 @@ public class OrderChildServiceImpl implements OrderChildService {
             result.setPoundRemark(orderChildPoundAuditDao.getPoundAuditDetail(childNo).orNull().getRemark());
         }
 
-        //棣栨鍥炴樉杩囩鐢靛瓙纾呭崟锛屽叾浠栨儏鍐靛洖鏄剧敤鎴蜂笂浼犵殑鍥剧墖
         List<OrderChildImage> imageList = orderChildImageDao.listLoadAndUnload(childNo).orElse(new ArrayList<>());
         result.setLoadImageList(imageList.stream().filter(
                 item -> Objects.equals(item.getType(), OrderChildImage.Type.LOAD.getCode())).map(
@@ -2195,11 +2195,6 @@ public class OrderChildServiceImpl implements OrderChildService {
                 item -> Objects.equals(item.getType(), OrderChildImage.Type.UNLOAD.getCode())).map(
                 item -> item.getImage()).collect(Collectors.toList()));
 
-        if(CollectionUtils.isEmpty(result.getUnloadImageList())){
-            result.setUnloadImageList(getWeighingSignature(childNo).stream().filter(
-                    item -> Objects.equals(item.getType(), 2)).map(
-                    item -> item.getOriginalImg()).collect(Collectors.toList()));//鑾峰彇鐢靛瓙纾呭崟鍥剧墖
-        }
 
         result.setArriveSendTime(orderChild.getArriveSendTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getArriveSendTime()));
         result.setFirstLoadTime(orderChild.getFirstLoadTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getFirstLoadTime()));
@@ -2208,6 +2203,32 @@ public class OrderChildServiceImpl implements OrderChildService {
         result.setLoadTime(orderChild.getLoadTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getLoadTime()));
         result.setUnloadTime(orderChild.getUnloadTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getUnloadTime()));
 
+        //棣栨鍥炴樉杩囩鐢靛瓙纾呭崟锛屽叾浠栨儏鍐靛洖鏄剧敤鎴蜂笂浼犵殑鍥剧墖
+        WeightChildSignatureDto weighingSignature = getWeighingSignature(childNo,SaleBuyEnum.Type.BUY.getCode());//鑾峰彇鐢靛瓙纾呭崟鍥剧墖  绫诲瀷锛�1-閿€鍞紝2-閲囪喘
+        if(Objects.nonNull(weighingSignature)){
+            if(CollectionUtils.isEmpty(result.getUnloadImageList())){//鍗歌溅鍥剧墖
+                if(CollectionUtils.isNotEmpty(weighingSignature.getWeighingSignatureList())){//鏈夌數瀛愮鍗�
+                    result.setUnloadImageList(weighingSignature.getWeighingSignatureList().stream().filter(
+                                    item -> Objects.equals(item.getType(), InputOutputEnum.Type.OUTPUT.getCode())).map(
+                                    item -> item.getOriginalImg())
+                            .collect(Collectors.toList()));//鑾峰彇鍑哄満鐢靛瓙纾呭崟鍥剧墖  鍚庢湡浼樺寲浼樺厛鑾峰彇鐩栫珷鍥剧墖 鐩墠鐢靛瓙绛剧珷鏄痯df
+                }
+
+            }
+            if(Objects.isNull(result.getUnloadTare())){//鍗歌溅鐨噸
+                result.setUnloadTare(weighingSignature.getTare());
+            }
+            if(Objects.isNull(result.getUnloadNet())){//鍗歌溅鍑€閲�
+                result.setUnloadNet(weighingSignature.getNet());
+            }
+            if(Objects.isNull(result.getUnloadRough())){//鍗歌溅姣涢噸
+                result.setUnloadRough(weighingSignature.getRough());
+            }
+            if(StringUtils.isBlank(result.getUnloadTime())){//鍗歌溅鏃堕棿
+                result.setUnloadTime(weighingSignature.getOutTime() ==null?null:convertLocalDateTimeToDefaultString(weighingSignature.getOutTime()));
+            }
+        }
+
         return result;
     }
 
@@ -2665,8 +2686,8 @@ public class OrderChildServiceImpl implements OrderChildService {
         FeignAddressVO data = addressFeign.getSendAndReceiveAddress(orderChild.getSendAddressId(), orderChild.getReceiveAddressId()).getData();
         FeignAddressVO.Address sendAddress = data.getSendAddress();
         FeignAddressVO.Address receiveAddress = data.getReceiveAddress();
-        carrierOrderChildDetailVO.setSendDetailAddress(sendAddress.getProvince()+sendAddress.getCity()+sendAddress.getCounty()+sendAddress.getAddress());
-        carrierOrderChildDetailVO.setReceiveDetailAddress(receiveAddress.getProvince()+receiveAddress.getCity()+receiveAddress.getCounty()+receiveAddress.getAddress());
+        carrierOrderChildDetailVO.setSendDetailAddress(sendAddress.getAddress());
+        carrierOrderChildDetailVO.setReceiveDetailAddress(receiveAddress.getAddress());
 
         return carrierOrderChildDetailVO;
     }
@@ -3506,11 +3527,15 @@ public class OrderChildServiceImpl implements OrderChildService {
             return null;
         }
 
-        List<String> images = getWeighingSignature(param.getChildNo()).stream().filter(
-                item -> Objects.equals(item.getType(), 2)).map(
-                item -> item.getOriginalImg()).collect(Collectors.toList());//鑾峰彇鐢靛瓙纾呭崟鍥剧墖
-        if(CollectionUtils.isNotEmpty(images)){
-            return null;
+        WeightChildSignatureDto weighingSignature = getWeighingSignature(param.getChildNo(),SaleBuyEnum.Type.BUY.getCode());//鑾峰彇鐢靛瓙纾呭崟鍥剧墖
+        if(Objects.nonNull(weighingSignature) && CollectionUtils.isNotEmpty(weighingSignature.getWeighingSignatureList())){//鍑哄満鍥剧墖
+            List<String> images =  weighingSignature.getWeighingSignatureList().stream().filter(
+                            item -> Objects.equals(item.getType(), InputOutputEnum.Type.OUTPUT.getCode())).map(
+                            item -> StringUtils.isNotBlank(item.getSignImg())? item.getSignImg():item.getOriginalImg())
+                    .collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(images)){
+                return null;
+            }
         }
 
         try{
@@ -3781,28 +3806,30 @@ public class OrderChildServiceImpl implements OrderChildService {
     /**
      * 閫氳繃杩愬崟鍙疯幏鍙栫數瀛愮鍗曠浉鍏充俊鎭�
      * @param childNo
+     * @param type 1 閿€鍞� 2 閲囪喘
      * @return
      */
-    public List<WeighingSignatureDto> getWeighingSignature(String childNo){
-        App app = loadAppConfig.getApp(AppEnum.UniqueIdentifier.SMART_WEIGHT.getCode());//瀵规帴鍦虹珯閰嶇疆淇℃伅
+    public WeightChildSignatureDto getWeighingSignature(String childNo,Integer type){
+        App app = loadAppConfig.getApp(AppEnum.UniqueIdentifier.LMS_MANAGE.getCode());//瀵规帴鐗╂祦瀛愮郴缁熼厤缃俊鎭�
         //缁勮閰嶇疆淇℃伅
         RequestConfig config = new RequestConfig()
                 .setAppId(app.getAppNo())
                 .setAppKey(app.getAppKey())
                 .setGatewayUrl(app.getCallback());
         //閫氳繃杩愬崟鍙风爜鏌ヨ鐢靛瓙纾呭崟鍥剧墖
-        WeighingSignatureAction weightAction = new WeighingSignatureAction();
+        LmsWeighingSignatureAction weightAction = new LmsWeighingSignatureAction();
         weightAction.setChildNo(childNo);
         weightAction.setCustomerRelationNo(String.valueOf(companyNoConfig.getCompanyNo()));
+        weightAction.setType(type);
         log.info("鎺ュ彛璇锋眰鐢靛瓙纾呭崟鍙傛暟,{}",weightAction);
-        Result<List<WeighingSignatureDto>> weighSignature = OpenClient.doAction(config, weightAction);
+        Result<WeightChildSignatureDto> weighSignature = OpenClient.doAction(config, weightAction);
         log.info("鎺ュ彛璇锋眰鐢靛瓙纾呭崟杩斿洖缁撴灉,{}",weighSignature);
         //鏁版嵁澶勭悊
         if(Objects.equals(weighSignature.getCode(),0)){
-            List<WeighingSignatureDto> weighSignatures = weighSignature.getData();
+            WeightChildSignatureDto weighSignatures = weighSignature.getData();
             return weighSignatures;
 
         }
-        return new ArrayList<>();
+        return new WeightChildSignatureDto();
     }
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java
index 060159835ecb45dd1ac152ca72d098e6aefa38ce..02907e6a2e9f0f88df3ac407308cabb241333f36 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java
@@ -1,14 +1,17 @@
 package com.clx.performance.service.impl;
 
+import com.clx.performance.enums.InputOutputEnum;
+import com.clx.performance.enums.SaleBuyEnum;
 import com.clx.performance.param.app.OrderChildWeighPictureParam;
 import com.clx.performance.service.OrderChildService;
 import com.clx.performance.service.OrderChildWeighPictureService;
 import com.clx.performance.vo.app.PictureVo;
-import com.smart.weight.dto.WeighingSignatureDto;
+import com.smart.business.sdk.request.dto.WeightChildSignatureDto;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -26,14 +29,15 @@ public class OrderChildWeighPictureServiceImpl  implements OrderChildWeighPictur
     @Override
     public PictureVo getWeighPictures(OrderChildWeighPictureParam param) {
         //鐢靛瓙纾呭崟鍥剧墖
-        List<WeighingSignatureDto> images = orderChildService.getWeighingSignature(param.getChildNo());
+        WeightChildSignatureDto unloadImages = orderChildService.getWeighingSignature(param.getChildNo(), SaleBuyEnum.Type.BUY.getCode());
         PictureVo vo = new PictureVo();
-        vo.setLoadImages(images.stream().filter(
-                item -> Objects.equals(item.getType(), 1)).map(
-                item -> item.getOriginalImg()).collect(Collectors.toList()));
-        vo.setUnloadImages(images.stream().filter(
-                item -> Objects.equals(item.getType(), 2)).map(
-                item -> item.getOriginalImg()).collect(Collectors.toList()));
+
+        if (Objects.nonNull(unloadImages) && CollectionUtils.isNotEmpty(unloadImages.getWeighingSignatureList())){
+            vo.setUnloadImages(unloadImages.getWeighingSignatureList().stream().filter(
+                    item -> Objects.equals(item.getType(), InputOutputEnum.Type.OUTPUT.getCode())).map(
+                    item -> StringUtils.isNotBlank(item.getSignImg())? item.getSignImg():item.getOriginalImg()).collect(Collectors.toList()));
+        }
+
         return vo;
     }
 }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
index 999cf0d47e9b01de576abfeccb0601e5bb191884..340b5dccc67d7fe1b3393ef0b7528912f2c3c7c8 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
@@ -211,8 +211,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
 
     @Override
     public IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param) {
-
+        long start2 = System.currentTimeMillis();
         IPage<OrderGoodsVO> page = orderGoodsDao.pageOrderGoodsList(param);
+        long start3 = System.currentTimeMillis();
+        log.info("鎵ц鑰楁椂2,{}",start3-start2);
         if(CollectionUtils.isNotEmpty(page.getRecords())){
             List<String> fleetNoList = new ArrayList<>();
             List<String> orderNoList = new ArrayList<>();
@@ -223,22 +225,27 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
                 }
                 orderNoList.add(record.getOrderNo());
             }
-            
+            long start5 = System.currentTimeMillis();
+            log.info("鎵ц鑰楁椂3,{}",start5-start3);
             if(CollectionUtils.isNotEmpty(fleetNoList)){
                 List<OrderGoodsBindTruckNumDTO> bindTruckNumList = orderGoodsTruckBindDao.queryOrderGoodsTruckNum(fleetNoList);
                 Map<String, Integer> map = bindTruckNumList.stream().collect(
                         Collectors.toMap(OrderGoodsBindTruckNumDTO::getOrderGoodsNo,OrderGoodsBindTruckNumDTO :: getTruckNum));
                 page.getRecords().forEach(item->item.setDispatchedOrders(map.get(item.getOrderGoodsNo())));
             }
+            long start6 = System.currentTimeMillis();
+            log.info("鎵ц鑰楁椂4,{}",start6-start5);
             Optional<Map<String, FeignOrderInfoVO>> orderListOption = orderService.queryListOrderByOrderNoList(orderNoList);
 
             if(!orderListOption.isPresent()){
                 log.warn("閫氳繃璁㈠崟鍙锋壒閲忔煡璇㈣鍗曚俊鎭け璐ワ紝澶辫触鍘熷洜");
                 throw new ServiceSystemException(ResultEnum.DATA_ERROR,"鏌ヨ璐у崟瀵瑰簲鐨勮鍗曚俊鎭け璐�");
             }
-
+            long start7 = System.currentTimeMillis();
+            log.info("鎵ц鑰楁椂5,{}",start7-start6);
             List<OrderGoods> orderGoods = orderGoodsDao.listInField(OrderGoods::getOrderNo, orderNoList);
-
+            long start8 = System.currentTimeMillis();
+            log.info("鎵ц鑰楁椂6,{}",start8-start7);
 
             Map<String, BigDecimal> orderExtractWeightMap = new HashMap<>();
             for (OrderGoods orderGood : orderGoods) {
@@ -248,6 +255,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
                 orderExtractWeightMap.put(orderNo,Objects.nonNull(orderExtractWeightMap.get(orderNo))?
                         orderExtractWeightMap.get(orderNo).add(weight): weight);
             }
+            long start9 = System.currentTimeMillis();
+            log.info("鎵ц鑰楁椂7,{}",start9-start8);
             Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get();
             page.getRecords().forEach(item->{
                 FeignOrderInfoVO orderInfo = orderInfoMap.get(item.getOrderNo());
@@ -259,6 +268,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
                 }
                 item.setResidueTransportWeight(calcOrderGoodsResidueWeight(item.getExtractWeight(),item.getAlreadyTransportWeight()));
             });
+            long start11 = System.currentTimeMillis();
+            log.info("鎵ц鑰楁椂8,{}",start11-start9);
         }
         return page;
     }
diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java
index e39cfd9d52b72483fcf52399cf46c979808df944..b2ee7912cdd41643ff9c1fafb9d7561c5c42d5a7 100644
--- a/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java
+++ b/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java
@@ -19,10 +19,7 @@ import com.clx.performance.dao.OrderGoodsDao;
 import com.clx.performance.dao.PerformanceProgressDao;
 import com.clx.performance.dao.PerformanceProgressLogDao;
 import com.clx.performance.dto.gd.GdRouteDTO;
-import com.clx.performance.enums.OrderChildEnum;
-import com.clx.performance.enums.OrderEnum;
-import com.clx.performance.enums.PerformanceProgressEnum;
-import com.clx.performance.enums.ResultEnum;
+import com.clx.performance.enums.*;
 import com.clx.performance.extranal.user.AddressService;
 import com.clx.performance.extranal.user.OrderService;
 import com.clx.performance.model.OrderChild;
@@ -452,7 +449,7 @@ public class PerformanceProgressServiceImpl  implements PerformanceProgressServi
             //鏈€鍚庝竴涓寕鍗曚腑鐨勮揣鍗曠殑鎸傚崟鏃堕棿涓烘渶鏃╃殑鎸傚崟鏃堕棿
             firstPendingTime = item.getPendingOrderTime();
 
-            pendingWeight = pendingWeight.add(item.getExtractWeight());
+            pendingWeight = pendingWeight.add(calcPendingWeight(item));
 
         }
         PerformanceProgress update = new PerformanceProgress();
@@ -463,6 +460,17 @@ public class PerformanceProgressServiceImpl  implements PerformanceProgressServi
         update.setPendingWeight(pendingWeight);
         performanceProgressDao.updateEntityByKey(update);
     }
+
+    //璁$畻灞ョ害杩涘害琛ㄨ揣鍗曠殑鎸傚崟鍚ㄦ暟
+    private BigDecimal calcPendingWeight(OrderGoods item){
+        if(Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CANCEL.getCode())){
+            return Objects.nonNull(item.getAlreadyTransportWeight())?item.getAlreadyTransportWeight():BigDecimal.ZERO;
+        }
+        return item.getExtractWeight();
+    }
+
+
+
     //灞ョ害杩涘害琛�----杩愬崟閮ㄥ垎
     @Override
     public void dealPerformanceProgress4OrderChild(OrderChild data) {
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 29e6546f038f4f58342b161931e1b20e35d8390f..42fac6f03d79d34409e7ab44d284cd041fbb9c6f 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
@@ -252,7 +252,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
         orderChildInfo.setSourceOrderNo(orderChild.getOrderNo());
         orderChildInfo.setSourceSettlementNo(settlementOwnerDetail.getSettlementNo());
 
-        orderChildInfo.setFreight(orderChild.getFreightPrice().multiply(orderChild.getUnloadNet())
+        orderChildInfo.setFreight(orderChild.getFreightPrice()
+                .multiply(orderChild.getUnloadNet().min(orderChild.getLoadNet()))
                 .setScale(0, RoundingMode.HALF_UP).intValue());
         orderChildInfo.setDriverFreight(orderChild.getFreight().intValue());
         orderChildInfo.setDriverFreightPrice(orderChild.getFreightPrice().intValue());
diff --git a/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java b/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java
index bab3ad43cd48f05d5eeb3507f6c5a96bb07801a5..8c46868a8bcd69e75237c8fa888632176b088281 100644
--- a/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java
+++ b/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java
@@ -3,7 +3,7 @@ package com.clx.performance.struct;
 import com.clx.performance.model.OrderChildWeighPicture;
 import com.msl.common.utils.DateStructUtil;
 import com.msl.common.utils.DateUtils;
-import com.smart.weight.dto.WeighingSignatureDto;
+import com.smart.business.sdk.request.dto.WeighingSignatureDto;
 import org.mapstruct.Mapper;
 
 @Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
diff --git a/performance-web/src/main/java/com/msl/common/open/OpenClient.java b/performance-web/src/main/java/com/msl/common/open/OpenClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..0aef6345c3bb8334303f8089f55a66a6f5bd1297
--- /dev/null
+++ b/performance-web/src/main/java/com/msl/common/open/OpenClient.java
@@ -0,0 +1,123 @@
+package com.msl.common.open;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.*;
+import com.msl.common.open.action.Action;
+import com.msl.common.open.message.Message;
+import com.msl.common.result.Result;
+import com.msl.common.utils.EncryptUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.lang.reflect.Type;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+
+/**
+ * @author wanglq
+ * Date 2024/4/25
+ * Time 20:31
+ */
+@Slf4j
+@SuppressWarnings("all")
+public class OpenClient {
+
+    /**
+     * 鎵цaction
+     *
+     * @param action action
+     * @param <T>    杩斿洖绫诲瀷
+     * @return 缁撴灉
+     */
+    public static <T> Result<T> doAction(RequestConfig config, Action<T> action) {
+        return doPost(config, action, "Action");
+    }
+
+    /**
+     * 鍙戦€佹秷鎭�
+     *
+     * @param message 娑堟伅
+     * @param <T>     杩斿洖绫诲瀷
+     * @return 缁撴灉
+     */
+    public static <T> Result<T> sendMessage(RequestConfig config, Message<T> message) {
+        return doPost(config, message, "Message");
+    }
+
+    /**
+     * 杩斿洖涓氬姟缁撴灉杞崲
+     *
+     * @param result      涓氬姟缁撴灉
+     * @param targetClass 鐩爣绫诲瀷
+     * @param <T>         鐩爣绫诲瀷
+     * @return 缁撴灉瀹炰綋
+     */
+    private static <T> Result<T> covertResult(String result, Type targetClass) {
+        Gson gson = new GsonBuilder()
+                .registerTypeAdapter(LocalDateTime.class, new CustomLocalDateTimeDeserializer())
+                .create();
+        // 浣跨敤TypeToken鏉ヨ幏鍙栧甫鏈夋硾鍨嬩俊鎭殑Type
+        Type type = new TypeToken<Result<T>>() {
+        }.getType();
+        Result<T> resultObject = gson.fromJson(result, type);
+
+        // 濡傛灉鐩爣绫诲瀷涓嶄负绌猴紝鍒欏皾璇曞皢data灞炴€ц浆鎹负鐩爣绫诲瀷
+        if (targetClass != null && resultObject.getData() != null) {
+            T dataObject = gson.fromJson(gson.toJson(resultObject.getData()), targetClass);
+            resultObject.setData(dataObject);
+        }
+        return resultObject;
+    }
+
+    /**
+     * 鎵цpost璇锋眰
+     *
+     * @param openDto 璇锋眰鍙傛暟
+     * @since 1.1.0
+     */
+    private static <T> Result<T> doPost(RequestConfig config, Process<T> process, String type) {
+        try {
+            String str = JSON.toJSONString(process);
+            ProcessId processId = process.processId();
+            log.info("OpenClient鍙戦€� {}<{}> 璇锋眰鍙傛暟锛歿}", type, processId.show(), str);
+
+            //鏋勯€犲姞瀵嗗疄浣�
+            OpenDto openDto = OpenDto.buildEncrypt(config.getAppId(), str, config.getAppKey(), System.currentTimeMillis())
+                    .setNamespace(processId.namespace())
+                    .setOperate(processId.identity());
+
+            //鎵ц璇锋眰
+            return HttpExecutor.post(config.getGatewayUrl(), null,
+                            openDto)
+                    //鍙嶅簭鍖�
+                    .map(r -> JSON.parseObject(r, new TypeReference<OpenDto>() {
+                    }))
+                    //鏁版嵁瑙e瘑
+                    .mapTry(dto -> EncryptUtil.decrypt(dto.getData(), config.getAppKey()))
+                    .peek(s -> log.info("{}<{}> 杩斿洖缁撴灉锛歿}", type, processId.show(), s))
+                    //涓氬姟缁撴灉瀹炰綋杞崲
+                    .map(s -> {
+                        Result<T> r = covertResult(s, process.returnType());
+                        return r;
+                    }).orElse(Result.fail());
+        } catch (Exception e) {
+            throw new RuntimeException("OpenClient璇锋眰澶辫触", e);
+        }
+    }
+
+    public static class CustomLocalDateTimeDeserializer implements JsonDeserializer<LocalDateTime> {
+        private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        @Override
+        public LocalDateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+            try {
+                return LocalDateTime.parse(json.getAsString(), formatter);
+            } catch (DateTimeParseException e) {
+                throw new JsonParseException("Date parse error", e);
+            }
+        }
+    }
+
+}