From fb745c842df36edc5101291a7f239c11c97bcc2f Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 11 九月 2025 16:46:33 +0800
Subject: [PATCH] 最新代码更新,BST,MES部分

---
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderController.cs       |   19 
 项目代码/WMS/WMSServices/WIDESEA_DTO/ERP/BSTPurchaseOrderDTO.cs                                  |    2 
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs                |   38 
 项目代码/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderDetailRepository.cs             |   21 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs                         |    2 
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs                   |   37 +
 项目代码/WMS/WMSServices/WIDESEA_DTO/Basic/BSTSupplierDTO.cs                                     |    2 
 项目代码/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderDetailService.cs                   |   21 
 项目代码/WMS/WMSServices/WIDESEA_Common/StockEnum/StockStatusMenu.cs                             |    6 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrderDetail.cs                 |  101 +++
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs                               |    3 
 项目代码/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseBSTOrderService.cs                     |    2 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs                          |  124 ++-
 项目代码/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs                        |   71 ++
 项目代码/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs              |  194 +++---
 项目代码/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderService.cs                         |  164 ++++++
 项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs                                |   15 
 项目代码/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs                       |   65 +
 项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs                           |   56 +
 项目代码/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderDetailRepository.cs           |   17 
 项目资料/接口协议/博思通利拓接口.xlsx                                                                       |    0 
 项目代码/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs                             |   70 ++
 项目代码/WMS/WMSServices/WIDESEA_DTO/ERP/BSTOutOrderDTO.cs                                       |    2 
 项目代码/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderRepository.cs                   |   21 
 项目代码/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderService.cs                       |   23 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrderDetail.cs               |    2 
 项目代码/WMS/WMSServices/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs                       |    2 
 项目代码/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs                           |    8 
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderDetailController.cs |   19 
 项目资料/接口协议/龙利得MES接口.xlsx                                                                      |    0 
 项目代码/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs                                |    2 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrder.cs                       |   85 +++
 项目代码/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderRepository.cs                 |   17 
 项目代码/WMS/WMSServices/WIDESEA_External/ERPService/InvokeERPService.cs                         |    4 
 项目代码/WMS/WMSServices/WIDESEA_External/Model/BSTPurchaseUpModel.cs                            |   13 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrder.cs                     |    2 
 项目代码/WMS/WMSServices/WIDESEA_DTO/ERP/BSTReturnOrderDTO.cs                                    |  103 +++
 项目代码/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderDetailService.cs                 |   16 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs                         |  170 +++---
 39 files changed, 1,216 insertions(+), 303 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs"
index 2c00040..f65da62 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs"
@@ -40,19 +40,72 @@
             try
             {
                 List<Dt_MaterielInfo> OldMaterielInfos = BaseDal.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt());
-                //鍒ゆ柇閲嶅鎻掑叆
-                Dt_MaterielInfo? ExistMaterial = OldMaterielInfos.FirstOrDefault(x => bSTMaterialDTOs.Where(x => x.Way == 1).Select(x => x.MaterialId).Contains(x.MaterialSourceId));
-                if (ExistMaterial != null)
+                //鏂板
+                List<BSTMaterialDTO> bSTMaterialsDTOAdd = bSTMaterialDTOs.Where(x => x.Way == 1).ToList();
+                //淇敼
+                List<BSTMaterialDTO> bSTMaterialsDTOUpdate = bSTMaterialDTOs.Where(x => x.Way == 2).ToList();
+                //鍒犻櫎
+                List<BSTMaterialDTO> bSTMaterialsDTODel = bSTMaterialDTOs.Where(x => x.Way == 3).ToList();
+                List<Dt_MaterielInfo> materielInfosAdd = new List<Dt_MaterielInfo>();
+                List<Dt_MaterielInfo> materielInfosUpdate = new List<Dt_MaterielInfo>();
+                //鏂板
+                if (bSTMaterialsDTOAdd.Count>0)
                 {
-                    return content.Error($"鐗╂枡Id{nameof(BSTMaterialDTO.MaterialId)}:{ExistMaterial.MaterialSourceId}宸插瓨鍦�");
+                    //鍒ゆ柇閲嶅鎻掑叆
+                    Dt_MaterielInfo? ExistMaterial = OldMaterielInfos.FirstOrDefault(x => bSTMaterialsDTOAdd.Select(x => x.MaterialId).Contains(x.MaterialSourceId));
+                    if (ExistMaterial != null)
+                    {
+                        return content.Error($"鐗╂枡{nameof(BSTMaterialDTO.MaterialId)}:{ExistMaterial.MaterialSourceId}宸插瓨鍦�");
+                    }
+                    
+                    foreach (var item in bSTMaterialsDTOAdd)
+                    {
+                        if (bSTMaterialsDTOUpdate.FirstOrDefault(x=>x.MaterialId==item.MaterialId)!=null)
+                        {
+                            continue;
+                        }
+                        Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(item);
+                        materielInfosAdd.Add(materielInfo);
+                    }
                 }
-                List<Dt_MaterielInfo> materielInfos = new List<Dt_MaterielInfo>();
-                foreach (var item in bSTMaterialDTOs)
+                //鏇存柊
+                if (bSTMaterialsDTOUpdate.Count > 0)
                 {
-                    Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(item);
-                    materielInfos.Add(materielInfo);
+                    //鑾峰彇宸插瓨鍦ㄧ殑鐗╂枡
+                    List<Dt_MaterielInfo>? ExistbSTMaterialsUpdate = OldMaterielInfos.Where(x => bSTMaterialsDTOUpdate.Select(x => x.MaterialId).Contains(x.MaterialSourceId)).ToList();
+                    foreach (var item in bSTMaterialsDTOUpdate)
+                    {
+                        Dt_MaterielInfo? materielInfoUpdate = ExistbSTMaterialsUpdate.FirstOrDefault(x => x.MaterialSourceId == item.MaterialId);
+                        //濡傛灉鐗╂枡宸插瓨鍦ㄥ垯杩涜鏇存敼
+                        if (materielInfoUpdate!=null)
+                        {
+                            materielInfoUpdate.MaterielCode = item.MaterialNo;
+                            materielInfoUpdate.MaterielName = item.Name;
+                            materielInfoUpdate.MaterielSpec = item.Spec;
+                            materielInfoUpdate.MaterielWide = item.MaterielWide;
+                            materielInfoUpdate.MaterielThickness = item.MaterielThickness;
+                            materielInfoUpdate.MaterielLength = item.MaterielLength;
+                            materielInfoUpdate.MaterielWeight = item.Weight;
+                            materielInfoUpdate.MaterielUnit = item.Unit;
+                            materielInfosUpdate.Add(materielInfoUpdate);
+                        }
+                        else//濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板
+                        {
+                            Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(item);
+                            materielInfosAdd.Add(materielInfo);
+                        }
+                    }
                 }
-                BaseDal.AddData(materielInfos);
+                //鍒犻櫎
+                if (bSTMaterialsDTODel.Count > 0)
+                { 
+
+                }
+                //鏇存柊鏁版嵁
+                _unitOfWorkManage.CommitTran();
+                BaseDal.AddData(materielInfosAdd);
+                BaseDal.UpdateData(materielInfosUpdate);
+                _unitOfWorkManage.CommitTran();
                 return content.OK("鎺ユ敹鎴愬姛");
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
index c3e5351..4d4397a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
@@ -20,6 +20,7 @@
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.WareHouseEnum;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 
 namespace WIDESEA_BasicService
 {
@@ -35,33 +36,28 @@
             {
                 throw new Exception($"鏈壘鍒颁粨搴撲俊鎭�");
             }
-            //Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId);
-            //if (palletTypeInfo == null)
-            //{
-            //    if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
-            //    {
-            //        palletTypeInfo = new Dt_PalletTypeInfo()
-            //        {
-            //            LocaitonCount = 1,
-            //            PalletType = 0,
-            //            IsOdd = false,
-            //        };
-            //    }
-            //    else
-            //        throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
-            //}
+            Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId);
+            if (palletTypeInfo == null)
+            {
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString())
+                {
+                    throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
+                }
+            }
 
             return warehouse.WarehouseCode switch
             {
-                "LLDCP" or "LLDYL"=> AssignLocation(roadwayNo),
+                "LLDCP" or  "LLDFL" => AssignLocation(roadwayNo),
+                "LLDYL" => AssignLocationYL(roadwayNo, palletTypeInfo),
                 _ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
             };
         }
 
         private readonly static object _locker = new object();
+        private readonly static object _AssignLocationYL = new object();
         private static List<LocationCache> locationCaches = new List<LocationCache>();
         /// <summary>
-        /// 
+        /// 鍒嗛厤璐т綅
         /// </summary>
         /// <param name="roadwayNo"></param>
         /// <returns></returns>
@@ -78,11 +74,8 @@
 
                 List<string> lockLocations = locationCaches.Select(x => x.LocationCode).ToList();
 
-                List<Dt_LocationInfo> locationInfos = BaseDal.QueryData(x => x.RoadwayNo == roadwayNo);//鏌ヨ宸烽亾鎵�鏈夎揣浣嶄俊鎭�
-
                 Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>()
                 {
-
                     { nameof(Dt_LocationInfo.Column),OrderByType.Desc },
                     { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
                     { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
@@ -92,7 +85,62 @@
                 return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
             }
         }
+        public Dt_LocationInfo? AssignLocationYL(string roadwayNo, Dt_PalletTypeInfo palletTypeInfo)
+        {
+            lock (_AssignLocationYL)
+            {
+                List<LocationCache> removeItems = locationCaches.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();//鏌ヨ娣诲姞闈欐�佸彉閲忚秴杩�5鍒嗛挓鐨勮揣浣�
+                int count = removeItems.Count;
+                for (int i = 0; i < count; i++)
+                {
+                    locationCaches.Remove(removeItems[i]);//绉婚櫎鏌ヨ娣诲姞闈欐�佸彉閲忚秴杩�5鍒嗛挓鐨勮揣浣�
+                }
 
+                List<string> lockLocations = locationCaches.Select(x => x.LocationCode).ToList();
+
+                List<Dt_LocationInfo> locationInfos = BaseDal.QueryData(x => x.RoadwayNo == roadwayNo);//鏌ヨ宸烽亾鎵�鏈夎揣浣嶄俊鎭�
+                
+                Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>()
+                {
+                    { nameof(Dt_LocationInfo.Column),OrderByType.Desc },
+                    { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+                    { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
+                    { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
+                };
+                if (roadwayNo.Contains("YLDual"))
+                {
+                    if (palletTypeInfo.LocaitonCount==1)
+                    {
+                        return BaseDal.QueryFirst(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+                    }
+                    else
+                    {
+                        //鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+                        List<Dt_LocationInfo> locationInfosMedium = BaseDal.QueryData(x => x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() && x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);
+                        Dt_LocationInfo locationInfo = new Dt_LocationInfo();
+                        foreach (var item in locationInfosMedium)
+                        {
+                            //鑾峰彇鏇存敼搴撲綅
+                            Dt_LocationInfo? nearLocation1;
+                            Dt_LocationInfo? nearLocation2;
+
+                            nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Column == item.Column - 1);
+                            nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Column == item.Column + 1);
+                            if (nearLocation1!=null && nearLocation2!=null)
+                            {
+                                locationInfo = item;
+                            }
+                        }
+                        return locationInfo;
+                    }
+                }
+                else
+                {
+                    return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+                }
+                
+            }
+        }
         /// <summary>
         /// 淇敼璐т綅鐘舵�佸強绫诲瀷
         /// </summary>
@@ -263,27 +311,21 @@
         //    Repository.UpdateData(locations);
         //}
 
-        public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId)
+        public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehouseId)
         {
             List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
 
-            List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehousId);
-            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehousId);
-            //Dt_PalletTypeInfo? palletTypeInfo = palletTypeInfos.FirstOrDefault(x => x.PalletType == palletType && x.WarehouseId == warehousId);
-            //if (palletTypeInfo == null || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
-            //{
-            //    if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
-            //    {
-            //        palletTypeInfo = new Dt_PalletTypeInfo()
-            //        {
-            //            LocaitonCount = 1,
-            //            PalletType = 0,
-            //            IsOdd = false,
-            //        };
-            //    }
-            //    else
-            //        throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
-            //}
+            List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehouseId);
+            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
+
+            Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId);
+            if (palletTypeInfo == null)
+            {
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString())
+                {
+                    throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
+                }
+            }
             List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location);
             if (locationInfos.Max(x => x.Depth) < 3)
             {
@@ -327,76 +369,42 @@
 
                 if (palletTypeInfos.FirstOrDefault(x => x.LocaitonCount == 2) != null)
                 {
-                    Dt_LocationInfo? nearLocation;
-                    //if (palletTypeInfo.IsOdd)
-                    //{
-                    //    nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
-                    //}
-                    //else
-                    //{
-                        nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
-                    //}
+                    //鑾峰彇鏇存敼搴撲綅
+                    Dt_LocationInfo? nearLocation1;
+                    Dt_LocationInfo? nearLocation2;
 
-                    if (nearLocation!=null && location.RoadwayNo.Contains("BC"))
-                    {
-                        if (nearLocation?.LocationType == LocationTypeEnum.SmallPallet.ObjToInt())
-                        {
-                            nearLocation = null;
-                        }
-                    }
-                    if (location.RoadwayNo == "SC01_BC" && palletType != PalletTypeEnum.SmallPallet.ObjToInt())
-                    {
-                        nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
-                        if (nearLocation?.LocationType == LocationTypeEnum.SmallPallet.ObjToInt())
-                        {
-                            nearLocation = null;
-                        }
-                    }
+                    nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
+                    nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
 
-                    if (nearLocation != null)
+
+                    if (nearLocation1 != null && nearLocation2 != null)
                     {
-                        List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
+                        //鍙岃緟鏂�
+                        List<Dt_LocationInfo> nearLocations = new List<Dt_LocationInfo>()
+                        {
+                            nearLocation1,
+                            nearLocation2
+                        };
                         for (int i = 0; i < nearLocations.Count; i++)
                         {
-                            List<int> palletTypes = palletTypeInfos.Select(x => x.PalletType).ToList();
-                            palletTypes.Add(0);
-                            if (palletTypes.Contains(nearLocations[i].LocationType))
+                            if (locationStatus == LocationStatusEnum.Lock)
                             {
-                                if (nearLocations[i].LocationType != palletType)
+                                if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
                                 {
-                                    nearLocations[i].LocationType = palletType;
+                                    nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
                                 }
-
-                                if (locationStatus == LocationStatusEnum.Lock)
+                            }
+                            else if (locationStatus == LocationStatusEnum.Free)
+                            {
+                                if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
                                 {
-                                    if (nearLocations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
-                                    {
-                                        nearLocations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
-                                    }
-                                    else if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
-                                    {
-                                        nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
-                                    }
-                                }
-                                else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
-                                {
-                                    if (nearLocations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
-                                    {
-                                        nearLocations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
-                                    }
-                                    else if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
-                                    {
-                                        nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
-                                    }
+                                    nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
                                 }
                             }
                         }
                         locations.AddRange(nearLocations);
                     }
                 }
-
-
-
             }
             else
             {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs"
index b548127..02e7383 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs"
@@ -39,19 +39,71 @@
             try
             {
                 List<Dt_SupplierInfo> OldsupplierInfos = BaseDal.QueryData(x => x.InvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt());
-                //鍒ゆ柇閲嶅鎻掑叆
-                Dt_SupplierInfo? ExistSupplier = OldsupplierInfos.FirstOrDefault(x => bSTSupplierDTOs.Where(x => x.Way == 1).Select(x => x.VendId).Contains(x.SupplierSourceId));
-                if (ExistSupplier != null)
+                //鏂板
+                List<BSTSupplierDTO> bSTSupplierDTOsAdd = bSTSupplierDTOs.Where(x => x.Way == 1).ToList();
+                //淇敼
+                List<BSTSupplierDTO> bSTSupplierDTOsUpdate = bSTSupplierDTOs.Where(x => x.Way == 2).ToList();
+                //鍒犻櫎
+                List<BSTSupplierDTO> bSTSupplierDTOsDTODel = bSTSupplierDTOs.Where(x => x.Way == 3).ToList();
+                List<Dt_SupplierInfo> supplierInfosAdd = new List<Dt_SupplierInfo>();
+                List<Dt_SupplierInfo> supplierInfosUpdate = new List<Dt_SupplierInfo>();
+                //鏂板
+                if (bSTSupplierDTOsAdd.Count > 0)
                 {
-                    return content.Error($"鐗╂枡Id{nameof(BSTSupplierDTO.VendId)}:{ExistSupplier.SupplierSourceId}宸插瓨鍦�");
+                    //鍒ゆ柇閲嶅鎻掑叆
+                    Dt_SupplierInfo? ExistSupplier = OldsupplierInfos.FirstOrDefault(x => bSTSupplierDTOsAdd.Select(x => x.VendId).Contains(x.SupplierSourceId));
+                    if (ExistSupplier != null)
+                    {
+                        return content.Error($"渚涘簲鍟唟nameof(BSTSupplierDTO.VendId)}:{ExistSupplier.SupplierSourceId}宸插瓨鍦�");
+                    }
+
+                    foreach (var item in bSTSupplierDTOsAdd)
+                    {
+                        if (bSTSupplierDTOsUpdate.FirstOrDefault(x => x.VendId == item.VendId) != null)
+                        {
+                            continue;
+                        }
+                        Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(item);
+                        supplierInfosAdd.Add(supplierInfo);
+                    }
                 }
-                List<Dt_SupplierInfo> supplierInfos = new List<Dt_SupplierInfo>();
-                foreach (var item in bSTSupplierDTOs)
+                //鏇存柊
+                if (bSTSupplierDTOsUpdate.Count > 0)
                 {
-                    Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(item);
-                    supplierInfos.Add(supplierInfo);
+                    //鑾峰彇宸插瓨鍦ㄧ殑鐗╂枡
+                    List<Dt_SupplierInfo>? ExistbSTSuppliersUpdate = OldsupplierInfos.Where(x => bSTSupplierDTOsUpdate.Select(x => x.VendId).Contains(x.SupplierSourceId)).ToList();
+                    foreach (var item in bSTSupplierDTOsUpdate)
+                    {
+                        Dt_SupplierInfo? supplierInfoUpdate = ExistbSTSuppliersUpdate.FirstOrDefault(x => x.SupplierSourceId == item.VendId);
+                        //濡傛灉鐗╂枡宸插瓨鍦ㄥ垯杩涜鏇存敼
+                        if (supplierInfoUpdate != null)
+                        {
+                            supplierInfoUpdate.SupplierSourceId = item.VendId;
+                            supplierInfoUpdate.SupplierCode = item.VendNo;
+                            supplierInfoUpdate.SupplierShortName = item.ShortName;
+                            supplierInfoUpdate.SupplierName = item.ShortName;
+                            supplierInfoUpdate.Contacts = item.BusinessContact;
+                            supplierInfoUpdate.ContactNumber = item.Tel;
+                            supplierInfoUpdate.ContactAddress = item.Address;
+                            supplierInfosUpdate.Add(supplierInfoUpdate);
+                        }
+                        else//濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板
+                        {
+                            Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(item);
+                            supplierInfosAdd.Add(supplierInfo);
+                        }
+                    }
                 }
-                BaseDal.AddData(supplierInfos);
+                //鍒犻櫎
+                if (bSTSupplierDTOsDTODel.Count > 0)
+                {
+
+                }
+                //鏇存柊鏁版嵁
+                _unitOfWorkManage.CommitTran();
+                BaseDal.AddData(supplierInfosAdd);
+                BaseDal.UpdateData(supplierInfosUpdate);
+                _unitOfWorkManage.CommitTran();
                 content.OK("鎺ユ敹鎴愬姛");
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs"
index 220a508..d0c2417 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs"
@@ -30,7 +30,7 @@
         InStockLock = 10,
 
         /// <summary>
-        /// 鏈夎揣閿佸畾
+        /// 绌洪棽閿佸畾
         /// </summary>
         [Description("绌洪棽閿佸畾")]
         FreeLock = 20,
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/StockEnum/StockStatusMenu.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/StockEnum/StockStatusMenu.cs"
index 7654f86..6dd8f37 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/StockEnum/StockStatusMenu.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/StockEnum/StockStatusMenu.cs"
@@ -56,8 +56,10 @@
     /// <summary>
     /// 鎴愬搧搴撳瓨灞炴�э細<br/>
     /// 1:鎴愬搧<br/>
-    /// 2:灏炬暟<br/>
-    /// 3:鐮斿彂<br/>
+    /// 2:鍗婃垚鍝�<br/>
+    /// 3:鍘熸潗鏂�<br/>
+    /// 4:杈呮枡澶囦欢<br/>
+    /// 5:绌烘墭<br/>
     /// </summary>
     public enum ProStockAttributeEnum
     {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
index 0b0b7cc..f9fc847 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
@@ -28,7 +28,11 @@
         /// 杈呮枡搴�
         /// </summary>
         [Description("杈呮枡搴�")]
-        LLDFL = 3
-
+        LLDFL = 3,
+        /// <summary>
+        /// 鑰佸巶鏆傚瓨鍖�
+        /// </summary>
+        [Description("鑰佸巶鏆傚瓨鍖�")]
+        LLDOldCache = 4
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Basic/BSTSupplierDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Basic/BSTSupplierDTO.cs"
index f7cef41..a65d823 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Basic/BSTSupplierDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Basic/BSTSupplierDTO.cs"
@@ -41,7 +41,7 @@
         /// <summary>
         /// 鍟嗗姟鑱旂郴浜�
         /// </summary>
-        [PropertyValidate("渚涘簲鍟嗙畝绉�", NotNullAndEmpty = true)]
+        [PropertyValidate("summary", NotNullAndEmpty = true)]
         public string BusinessContact { get; set; }
 
         /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTOutOrderDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTOutOrderDTO.cs"
index 5c18821..fe16398 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTOutOrderDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTOutOrderDTO.cs"
@@ -6,7 +6,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Core.Attributes;
 
-namespace WIDESEA_DTO.Basic
+namespace WIDESEA_DTO.ERP
 {
     /// <summary>
     /// 鍗氭�濋�氶噰璐叆搴撳崟鎺ユ敹瀹炰綋
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTPurchaseOrderDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTPurchaseOrderDTO.cs"
index f35dc16..a0f9838 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTPurchaseOrderDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTPurchaseOrderDTO.cs"
@@ -6,7 +6,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Core.Attributes;
 
-namespace WIDESEA_DTO.Basic
+namespace WIDESEA_DTO.ERP
 {
     /// <summary>
     /// 鍗氭�濋�氶噰璐叆搴撳崟鎺ユ敹瀹炰綋
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTReturnOrderDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTReturnOrderDTO.cs"
new file mode 100644
index 0000000..d4647af
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/BSTReturnOrderDTO.cs"
@@ -0,0 +1,103 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.ERP
+{
+    /// <summary>
+    /// 鍗氭�濋�氶��鏂欐帴鏀跺疄浣�
+    /// </summary>
+    [ModelValidate]
+    public class BSTReturnOrderDTO
+    {
+        /// <summary>
+        /// 鏁版嵁鑾峰彇鏂瑰紡鏍囪瘑(1:鏂板 2:淇敼 3:鍒犻櫎)
+        /// </summary>
+        [PropertyValidate("鏁版嵁鑾峰彇鏂瑰紡鏍囪瘑(1:鏂板 2:淇敼 3:鍒犻櫎)", NotNullAndEmpty = true)]
+        public int Way { get; set; }
+        /// <summary>
+        /// 閫�鏂欏崟ID
+        /// </summary>
+        [PropertyValidate("閫�鏂欏崟ID", NotNullAndEmpty = true)]
+        public int PaperWreturnId { get; set; }
+        /// <summary>
+        /// 閫�鏂欏崟缂栧彿
+        /// </summary>
+        [PropertyValidate("閫�鏂欏崟缂栧彿", NotNullAndEmpty = true)]
+        public string PaperWreturnNo { get; set; }
+        /// <summary>
+        /// 閫�鏂欐棩鏈�
+        /// </summary>
+        [PropertyValidate("閫�鏂欐棩鏈�", NotNullAndEmpty = true)]
+        public long WreturnDate { get; set; }
+        /// <summary>
+        /// 閫�鏂欏憳宸�
+        /// </summary>
+        [PropertyValidate("閫�鏂欏憳宸�", NotNullAndEmpty = false)]
+        public string EmployeeName { get; set; }
+        /// <summary>
+        /// 閫�鏂欐槑缁�
+        /// </summary>
+        [PropertyValidate("閫�鏂欐槑缁�", NotNullAndEmpty = true)]
+        public List<BSTReturnOrderDTOItem> BstPaperWreturnDetails { get; set; }
+    }
+    /// <summary>
+    /// 閫�鏂欐槑缁�
+    /// </summary>
+    public class BSTReturnOrderDTOItem
+    {
+        /// <summary>
+        /// 閫�鏂橧D
+        /// </summary>
+        [PropertyValidate("閫�鏂橧D", NotNullAndEmpty = true)]
+        public int PaperWreturnId { get; set; }
+        /// <summary>
+        /// 鐗╂枡ID
+        /// </summary>
+        [PropertyValidate("鐗╂枡ID", NotNullAndEmpty = true)]
+        public int MaterialId { get; set; }
+        /// <summary>
+        /// 鐗╂枡鏉$爜
+        /// </summary>
+        [PropertyValidate("鐗╂枡鏉$爜", NotNullAndEmpty = true)]
+        public string Barcode { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
+        public string MaterialNo { get; set; }
+        /// <summary>
+        /// 鐗╂枡鎵规搴忓彿
+        /// </summary>
+        [PropertyValidate("鐗╂枡鎵规搴忓彿", NotNullAndEmpty = true)]
+        public int SeqNo { get; set; }
+        /// <summary>
+        /// 骞呭锛坢m锛�
+        /// </summary>
+        [PropertyValidate("骞呭锛坢m锛�", NotNullAndEmpty = true)]
+        public decimal W { get; set; }
+        /// <summary>
+        /// 鐩村緞
+        /// </summary>
+        [PropertyValidate("鐩村緞", NotNullAndEmpty = true)]
+        public decimal Thick { get; set; }
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        [PropertyValidate("闀垮害", NotNullAndEmpty = true)]
+        public decimal ProcurementLength { get; set; }
+        /// <summary>
+        /// 閫�璐ф暟閲�
+        /// </summary>
+        [PropertyValidate("閫�璐ф暟閲�", NotNullAndEmpty = true)]
+        public decimal Qty { get; set; }
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [PropertyValidate("鍗曚綅", NotNullAndEmpty = true)]
+        public string Unit { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/ERPService/InvokeERPService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/ERPService/InvokeERPService.cs"
index 1437228..a1fa83c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/ERPService/InvokeERPService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/ERPService/InvokeERPService.cs"
@@ -28,7 +28,9 @@
         {
             ContractResolver = new CamelCasePropertyNamesContractResolver()
         };
-
+        /// <summary>
+        /// 璋冪敤ERP鎺ュ彛
+        /// </summary>
         public string BSTPurchaseUp(BSTPurchaseUpModel bSTPurchaseUpModel)
         {
             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x=>x.ApiCode==APIEnum.BSTPurchaseUp.ToString());
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/Model/BSTPurchaseUpModel.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/Model/BSTPurchaseUpModel.cs"
index 988c272..522616c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/Model/BSTPurchaseUpModel.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_External/Model/BSTPurchaseUpModel.cs"
@@ -11,8 +11,21 @@
     /// </summary>
     public class BSTPurchaseUpModel
     {
+        /// <summary>
+        /// 鏉$爜
+        /// </summary>
         public string Barcode { get; set; }
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
         public int BarcodeQty { get; set;}
+        /// <summary>
+        /// RFID
+        /// </summary>
         public string Rfid { get; set; }
+        /// <summary>
+        /// 鍏ュ簱鏃堕棿
+        /// </summary>
+        public string RfidUpdateTime { get; set; }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderDetailRepository.cs"
new file mode 100644
index 0000000..2a772cd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderDetailRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundRepository
+{
+    /// <summary>
+    /// 閫�鏂欐槑缁嗕粨鍌ㄦ帴鍙e眰
+    /// </summary>
+    public interface IReturnBSTOrderDetailRepository : IRepository<Dt_ReturnBSTOrderDetail>
+    {
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderRepository.cs"
new file mode 100644
index 0000000..5295770
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundRepository/IReturnBSTOrderRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundRepository
+{
+    /// <summary>
+    /// 閫�鏂欏崟浠撳偍鎺ュ彛灞�
+    /// </summary>
+    public interface IReturnBSTOrderRepository : IRepository<Dt_ReturnBSTOrder>
+    {
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseBSTOrderService.cs"
index 8be3ca0..6b30d55 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseBSTOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseBSTOrderService.cs"
@@ -6,7 +6,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO;
-using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IInboundRepository;
 using WIDESEA_Model.Models;
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderDetailService.cs"
new file mode 100644
index 0000000..eff73ed
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderDetailService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IReturnBSTOrderDetailService : IService<Dt_ReturnBSTOrderDetail>
+    {
+        IReturnBSTOrderDetailRepository Repository { get; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderService.cs"
new file mode 100644
index 0000000..e35139b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IReturnBSTOrderService.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IReturnBSTOrderService : IService<Dt_ReturnBSTOrder>
+    {
+        IReturnBSTOrderRepository Repository { get; }
+        /// <summary>
+        /// 鎺ユ敹鍗氭�濋�氶��鏂欎俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent ReceiveReturnOrder(List<BSTReturnOrderDTO> bSTReturnOrderDTOs);
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
index de91dfc..798ecbc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -171,16 +171,15 @@
         /// <summary>
         /// 鎴愬搧鍑哄簱
         /// </summary>
-        /// <param name="Count"></param>
         /// <returns></returns>
-        WebResponseContent RequestCPWMSTaskOut(int Count);
+        WebResponseContent RequestCPWMSTaskOut(string materialCode, int Count,int targetId);
 
-        /// <summary>
-        /// 鏃犵汉甯冨嚭搴�
-        /// </summary>
-        /// <param name="Count"></param>
-        /// <returns></returns>
-        WebResponseContent RequestWFBWMSTaskOut(int Count);
+        ///// <summary>
+        ///// 鏃犵汉甯冨嚭搴�
+        ///// </summary>
+        ///// <param name="Count"></param>
+        ///// <returns></returns>
+        //WebResponseContent RequestWFBWMSTaskOut(int Count);
 
         /// <summary>
         /// 鍘熸枡鍑哄簱浠诲姟
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderDetailRepository.cs"
new file mode 100644
index 0000000..d55d842
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderDetailRepository.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundRepository
+{
+    /// <summary>
+    /// 閫�鏂欏崟鏄庣粏浠撳偍瀹炵幇灞�
+    /// </summary>
+    public class ReturnBSTOrderDetailRepository : RepositoryBase<Dt_ReturnBSTOrderDetail>, IReturnBSTOrderDetailRepository
+    {
+        public ReturnBSTOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderRepository.cs"
new file mode 100644
index 0000000..f6465d0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundRepository/ReturnBSTOrderRepository.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundRepository
+{
+    /// <summary>
+    /// 閫�鏂欏崟浠撳偍瀹炵幇灞�
+    /// </summary>
+    public class ReturnBSTOrderRepository : RepositoryBase<Dt_ReturnBSTOrder>, IReturnBSTOrderRepository
+    {
+        public ReturnBSTOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs"
index 0c37854..b5470ba 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs"
@@ -15,7 +15,7 @@
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_DTO;
-using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IInboundRepository;
 using WIDESEA_IInboundService;
@@ -67,6 +67,8 @@
                 List<Dt_PurchaseBSTOrder> purchaseAddBSTOrders = new List<Dt_PurchaseBSTOrder>();
                 List<Dt_PurchaseBSTOrder> purchaseUpdateBSTOrders = new List<Dt_PurchaseBSTOrder>();
                 List<Dt_PurchaseBSTOrder> purchaseDeleteBSTOrders = new List<Dt_PurchaseBSTOrder>();
+                List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetailsDel = new List<Dt_PurchaseBSTOrderDetail>();
+                //鏂板
                 if (bSTPurchaseOrderDTOsAdd.Count>0)
                 {
                     //鍒ゆ柇渚涘簲鍟�
@@ -83,41 +85,73 @@
                     }
                     //楠岃瘉鏉$爜閲嶅
                     List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetails = OldpurchaseBSTOrders.SelectMany(x => x.Details).ToList();
-                    List<PaperReceiptDetailsItem> paperReceiptDetailsItems = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList();
-                    var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItems.Select(x => x.Barcode).Contains(x.Barcode));
+                    List<PaperReceiptDetailsItem> paperReceiptDetailsItemsAdd = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList();
+                    var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItemsAdd.Select(x => x.Barcode).Contains(x.Barcode));
                     if (ExistDetail!=null)
                     {
                         return content.Error($"閲囪喘鏉$爜{nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}宸插瓨鍦�");
                     }
                     //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
-                    PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId));
+                    PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItemsAdd.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId));
                     if (paperReceiptDetailsItem!=null)
                     {
-                        return content.Error($"閲囪喘鏉$爜{nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}鐗╂枡Id:{paperReceiptDetailsItem.MaterialId}涓嶅瓨鍦�");
+                        return content.Error($"閲囪喘鏉$爜{nameof(paperReceiptDetailsItem.Barcode)}:{paperReceiptDetailsItem.Barcode}鐗╂枡Id:{paperReceiptDetailsItem.MaterialId}涓嶅瓨鍦�");
                     }
                     foreach (var item in bSTPurchaseOrderDTOsAdd)
                     {
+                        if (bSTPurchaseOrderDTOsUpdate.FirstOrDefault(x=>x.PaperReceiptId== item.PaperReceiptId)!=null)
+                        {
+                            continue;
+                        }
                         List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x=>_mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList();
                         Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item);
                         purchaseBSTOrder.Details = bSTOrderDetails;
                         purchaseAddBSTOrders.Add(purchaseBSTOrder);
                     }
                 }
-                
+                //鏇存柊
                 if (bSTPurchaseOrderDTOsUpdate.Count > 0)
                 {
-                    List<Dt_PurchaseBSTOrder>? ExistUpdatePurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsUpdate.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList();
-                    //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦�
-                    if (ExistUpdatePurchase.Count == bSTPurchaseOrderDTOsUpdate.Count)
-                    {
+                    //瀛樺湪鐨勯噰璐崟
+                    List<Dt_PurchaseBSTOrder>? ExistpurchaseBSTOrders = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsUpdate.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).Distinct().ToList();
 
-                    }
-                    else
+                    foreach (var item in bSTPurchaseOrderDTOsUpdate)
                     {
-                        BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdatePurchase.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId));
-                        return content.Error($"鏈壘鍒版寚瀹氶噰璐敹璐у崟{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}");
+                        Dt_PurchaseBSTOrder? purchaseBSTOrderUpdate = ExistpurchaseBSTOrders.FirstOrDefault(x => x.PaperReceiptId == item.PaperReceiptId);
+                        //濡傛灉璁㈠崟宸插瓨鍦ㄥ垯杩涜鏇存敼
+                        if (purchaseBSTOrderUpdate != null)
+                        {
+                            if (purchaseBSTOrderUpdate.PurchaseOrderStatus!=InOrderStatusEnum.鏈紑濮�.ObjToInt())
+                            {
+                                return content.Error($"閲囪喘{nameof(purchaseBSTOrderUpdate.PaperReceiptId)}:{purchaseBSTOrderUpdate.PaperReceiptId}璁㈠崟鍏ュ簱涓紝涓嶅彲鏇存敼");
+                            }
+                            purchaseBSTOrderDetailsDel.AddRange(purchaseBSTOrderUpdate.Details);
+                            
+                            //鏇存柊
+                            List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x => _mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList();
+                            bSTOrderDetails.ForEach(x =>
+                            {
+                                x.PurchaseBSTOrderId = purchaseBSTOrderUpdate.Id;
+                            });
+                            purchaseBSTOrderUpdate.Details = bSTOrderDetails;
+                            purchaseBSTOrderUpdate.PaperReceiptId = item.PaperReceiptId;
+                            purchaseBSTOrderUpdate.PaperReceiptNo = item.PaperReceiptNo;
+                            purchaseBSTOrderUpdate.VendNo = item.VendNo;
+                            purchaseBSTOrderUpdate.ReceiptDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ReceiptDate).DateTime;
+                            purchaseBSTOrderUpdate.TotalProcurementLength = item.TotalProcurementLength;
+                            purchaseUpdateBSTOrders.Add(purchaseBSTOrderUpdate);
+                        }
+                        else //濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板
+                        {
+                            List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x => _mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList();
+                            Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item);
+                            purchaseBSTOrder.Details = bSTOrderDetails;
+                            purchaseAddBSTOrders.Add(purchaseBSTOrder);
+                        }
                     }
+                    
                 }
+                //鍒犻櫎
                 if (bSTPurchaseOrderDTOsDel.Count>0)
                 {
                     List<Dt_PurchaseBSTOrder>? ExistDelPurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsDel.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList();
@@ -132,8 +166,11 @@
                         return content.Error($"鏈壘鍒版寚瀹氶噰璐敹璐у崟{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}");
                     }
                 }
+                //鏇存柊鏁版嵁
                 _unitOfWorkManage.BeginTran();
                 BaseDal.Db.InsertNav(purchaseAddBSTOrders).Include(x => x.Details).ExecuteCommand();
+                _purchaseBSTOrderDetailRepository.DeleteData(purchaseBSTOrderDetailsDel);
+                BaseDal.Db.UpdateNav(purchaseUpdateBSTOrders).Include(x => x.Details).ExecuteCommand();
                 _unitOfWorkManage.CommitTran();
                 content.OK("鎺ユ敹鎴愬姛");
             }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderDetailService.cs"
new file mode 100644
index 0000000..94bd890
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderDetailService.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class ReturnBSTOrderDetailService : ServiceBase<Dt_ReturnBSTOrderDetail, IReturnBSTOrderDetailRepository>, IReturnBSTOrderDetailService
+    {
+        public IReturnBSTOrderDetailRepository Repository => BaseDal;
+
+        public ReturnBSTOrderDetailService(IReturnBSTOrderDetailRepository BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderService.cs"
new file mode 100644
index 0000000..bfaba6f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/ReturnBSTOrderService.cs"
@@ -0,0 +1,164 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_InboundRepository;
+using WIDESEA_IStockRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class ReturnBSTOrderService : ServiceBase<Dt_ReturnBSTOrder, IReturnBSTOrderRepository>, IReturnBSTOrderService
+    {
+        public IReturnBSTOrderRepository Repository => BaseDal;
+        private IUnitOfWorkManage _unitOfWorkManage;
+        private IBasicRepository _basicRepository;
+        private IStockInfoRepository _stockInfoRepository;
+        private IReturnBSTOrderDetailRepository _returnBSTOrderDetailRepository;
+        private IMapper _mapper;
+
+        public ReturnBSTOrderService(IReturnBSTOrderRepository BaseDal,IUnitOfWorkManage unitOfWorkManage,IBasicRepository basicRepository, IStockInfoRepository stockInfoRepository, IReturnBSTOrderDetailRepository returnBSTOrderDetailRepository, IMapper mapper) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _basicRepository = basicRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _returnBSTOrderDetailRepository = returnBSTOrderDetailRepository;
+            _mapper = mapper;
+        }
+        /// <summary>
+        /// 鎺ユ敹鍗氭�濋�氶��鏂欎俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent ReceiveReturnOrder(List<BSTReturnOrderDTO> bSTReturnOrderDTOs)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                List<Dt_ReturnBSTOrder> OldreturnBSTOrders = BaseDal.Db.Queryable<Dt_ReturnBSTOrder>().Includes(x => x.Details).ToList();
+                List<Dt_StockInfo> ExiststockInfos = _stockInfoRepository.QueryData(x=>x.WarehouseId==WarehouseEnum.LLDOldCache.ObjToInt());
+                //鏂板
+                List<BSTReturnOrderDTO> bSTReturnOrderDTOsAdd = bSTReturnOrderDTOs.Where(x => x.Way == 1).ToList();
+                //淇敼
+                List<BSTReturnOrderDTO> bSTReturnOrderDTOsUpdate = bSTReturnOrderDTOs.Where(x => x.Way == 2).ToList();
+                //鍒犻櫎
+                List<BSTReturnOrderDTO> bSTReturnOrderDTOsDel = bSTReturnOrderDTOs.Where(x => x.Way == 3).ToList();
+                //鑾峰彇鎵�鏈夌墿鏂� 
+                List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt() && x.MaterialSourceId != 0);
+
+                List<Dt_ReturnBSTOrder> returnAddBSTOrders = new List<Dt_ReturnBSTOrder>();
+                List<Dt_ReturnBSTOrder> returnUpdateBSTOrders  = new List<Dt_ReturnBSTOrder>();
+                List<Dt_ReturnBSTOrder> returnDeleteBSTOrders = new List<Dt_ReturnBSTOrder>();
+                List<Dt_ReturnBSTOrderDetail> returnBSTOrderDetailsDel = new List<Dt_ReturnBSTOrderDetail>();
+                List<Dt_StockInfo> stockInfosUpdate = new List<Dt_StockInfo>();
+                //鏂板
+                if (bSTReturnOrderDTOsAdd.Count > 0)
+                {
+                    //鍒ゆ柇鍗曟嵁
+                    Dt_ReturnBSTOrder? ExistAddReturn = OldreturnBSTOrders.FirstOrDefault(x => bSTReturnOrderDTOsAdd.Select(x => x.PaperWreturnId).Contains(x.PaperWreturnId));
+                    if (ExistAddReturn != null)
+                    {
+                        return content.Error($"閫�鏂欏崟{nameof(BSTReturnOrderDTO.PaperWreturnId)}:{ExistAddReturn.PaperWreturnId}宸插瓨鍦�");
+                    }
+                    List<BSTReturnOrderDTOItem> bSTReturnOrderDTOItemsAdd = bSTReturnOrderDTOsAdd.SelectMany(x => x.BstPaperWreturnDetails).ToList();
+                    //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
+                    BSTReturnOrderDTOItem? bSTReturnOrderDTOItem = bSTReturnOrderDTOItemsAdd.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId));
+                    if (bSTReturnOrderDTOItem != null)
+                    {
+                        return content.Error($"閫�鏂檣nameof(bSTReturnOrderDTOItem.Barcode)}:{bSTReturnOrderDTOItem.Barcode}鐗╂枡{nameof(BSTReturnOrderDTOItem.MaterialId)}:{bSTReturnOrderDTOItem.MaterialId}涓嶅瓨鍦�");
+                    }
+                    //楠岃瘉閫�鏂欐潯鐮佹槸鍚﹀湪搴撳瓨涓�
+                    var ExiststockInfo = bSTReturnOrderDTOItemsAdd.FirstOrDefault(x => !ExiststockInfos.Select(x => x.PalletCode).Contains(x.Barcode));
+                    if (ExiststockInfo != null)
+                    {
+                        return content.Error($"閫�鏂欐潯鐮亄nameof(ExiststockInfo.Barcode)}:{ExiststockInfo.Barcode}鐗╂枡鏈湪鑰佸巶鏆傚瓨鍖�");
+                    }
+                    //鑾峰彇瀵瑰簲搴撳瓨淇搴撳瓨鏁伴噺
+                    List<Dt_StockInfo> returnStockinfos = ExiststockInfos.Where(x => bSTReturnOrderDTOItemsAdd.Select(x => x.Barcode).Contains(x.PalletCode)).ToList();
+                    foreach (var item in bSTReturnOrderDTOsAdd)
+                    {
+                        if (bSTReturnOrderDTOsUpdate.FirstOrDefault(x => x.PaperWreturnId == item.PaperWreturnId) != null)
+                        {
+                            continue;
+                        }
+                        List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList();
+                        Dt_ReturnBSTOrder returnBSTOrder = _mapper.Map<Dt_ReturnBSTOrder>(item);
+                        returnBSTOrder.Details = bSTOrderDetails;
+                        returnAddBSTOrders.Add(returnBSTOrder);
+                    }
+                }
+                //鏇存柊
+                if (bSTReturnOrderDTOsUpdate.Count > 0)
+                {
+                    //瀛樺湪鐨勯噰璐崟
+                    List<Dt_ReturnBSTOrder>? ExistreturnBSTOrders = OldreturnBSTOrders.Where(x => bSTReturnOrderDTOsUpdate.Select(x => x.PaperWreturnId).Contains(x.PaperWreturnId)).Distinct().ToList();
+
+                    foreach (var item in bSTReturnOrderDTOsUpdate)
+                    {
+                        Dt_ReturnBSTOrder? returnBSTOrderUpdate = ExistreturnBSTOrders.FirstOrDefault(x => x.PaperWreturnId == item.PaperWreturnId);
+                        //濡傛灉璁㈠崟宸插瓨鍦ㄥ垯杩涜鏇存敼
+                        if (returnBSTOrderUpdate != null)
+                        {
+                            if (returnBSTOrderUpdate.ReturnOrderStatus != InOrderStatusEnum.鏈紑濮�.ObjToInt())
+                            {
+                                return content.Error($"閫�鏂檣nameof(returnBSTOrderUpdate.PaperWreturnId)}:{returnBSTOrderUpdate.PaperWreturnId}璁㈠崟閫�鏂欏叆搴撲腑锛屼笉鍙洿鏀�");
+                            }
+                            returnBSTOrderDetailsDel.AddRange(returnBSTOrderUpdate.Details);
+
+                            //鏇存柊
+                            List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList();
+                            bSTOrderDetails.ForEach(x =>
+                            {
+                                x.ReturnBSTOrderId = returnBSTOrderUpdate.Id;
+                            });
+                            returnBSTOrderUpdate.Details = bSTOrderDetails;
+                            returnBSTOrderUpdate.PaperWreturnId = item.PaperWreturnId;
+                            returnBSTOrderUpdate.PaperWreturnNo = item.PaperWreturnNo;
+                            returnBSTOrderUpdate.EmployeeName = item.EmployeeName;
+                            returnBSTOrderUpdate.WreturnDate = DateTimeOffset.FromUnixTimeMilliseconds(item.WreturnDate).DateTime;
+                            returnUpdateBSTOrders.Add(returnBSTOrderUpdate);
+                        }
+                        else //濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板
+                        {
+                            List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList();
+                            Dt_ReturnBSTOrder returnBSTOrder = _mapper.Map<Dt_ReturnBSTOrder>(item);
+                            returnBSTOrder.Details = bSTOrderDetails;
+                            returnAddBSTOrders.Add(returnBSTOrder);
+                        }
+                    }
+
+                }
+                //鍒犻櫎
+                if (bSTReturnOrderDTOsDel.Count > 0)
+                {
+                    
+                }
+                //鏇存柊鏁版嵁
+                _unitOfWorkManage.BeginTran();
+                BaseDal.Db.InsertNav(returnAddBSTOrders).Include(x => x.Details).ExecuteCommand();
+                _returnBSTOrderDetailRepository.DeleteData(returnBSTOrderDetailsDel);
+                BaseDal.Db.UpdateNav(returnUpdateBSTOrders).Include(x => x.Details).ExecuteCommand();
+                _unitOfWorkManage.CommitTran();
+                content.OK("鎺ユ敹鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
index ae1dc37..dfa5d87 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
@@ -9,7 +9,7 @@
 namespace WIDESEA_Model.Models
 {
     /// <summary>
-    /// 鎺ュ彛淇℃伅
+    /// AGV绔欑偣淇℃伅琛�
     /// </summary>
     [SugarTable(nameof(Dt_AGVStationInfo), "AGV绔欑偣淇℃伅琛�")]
     public class Dt_AGVStationInfo : BaseEntity
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrder.cs"
index 587582a..821e6fd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrder.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrder.cs"
@@ -12,7 +12,7 @@
     /// <summary>
     /// BST閲囪喘鍏ュ簱鍗�
     /// </summary>
-    [SugarTable(nameof(Dt_PurchaseBSTOrder), "BST閲囪喘鍏ュ簱鍗�"), ModelValidate]
+    [SugarTable(nameof(Dt_PurchaseBSTOrder), "BST閲囪喘鍏ュ簱鍗�")]
     public class Dt_PurchaseBSTOrder : BaseEntity
     {
         /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrderDetail.cs"
index e02d88b..dc9920f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_PurchaseBSTOrderDetail.cs"
@@ -12,7 +12,7 @@
     /// <summary>
     /// BST閲囪喘鍏ュ簱鍗曟槑缁�
     /// </summary>
-    [SugarTable(nameof(Dt_PurchaseBSTOrderDetail), "BST閲囪喘鍏ュ簱鍗曟槑缁�"), ModelValidate]
+    [SugarTable(nameof(Dt_PurchaseBSTOrderDetail), "BST閲囪喘鍏ュ簱鍗曟槑缁�")]
     public class Dt_PurchaseBSTOrderDetail : BaseEntity
     {
         /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrder.cs"
new file mode 100644
index 0000000..be050f6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrder.cs"
@@ -0,0 +1,85 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// BST閫�鏂欏崟
+    /// </summary>
+    [SugarTable(nameof(Dt_ReturnBSTOrder), "BST閫�鏂欏崟")]
+    public class Dt_ReturnBSTOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟鏉ユ簮ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欏崟鏉ユ簮ID")]
+        public int PaperWreturnId { get; set; }
+        /// <summary>
+        /// WMS鍗曟嵁缂栧彿
+        /// </summary>
+        [CodeRule(RuleCodeEnum.TLCodeRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "WMS鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+        public string ReturnInboundNo { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟缂栧彿(涓婃父)
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "閫�鏂欏崟缂栧彿(涓婃父)")]
+        public string PaperWreturnNo { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏憳宸�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閫�鏂欏憳宸�")]
+        public string EmployeeName { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欐�婚暱搴�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欐�婚暱搴�")]
+        public decimal TotalPaperWreturnLength { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欏崟鍏ュ簱鐘舵��")]
+        public int ReturnOrderStatus { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欐棩鏈�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "閫�鏂欐棩鏈�")]
+        public DateTime WreturnDate { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍒楄〃
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_ReturnBSTOrderDetail.ReturnBSTOrderId), nameof(Id))]
+        public List<Dt_ReturnBSTOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrderDetail.cs"
new file mode 100644
index 0000000..cadc975
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_ReturnBSTOrderDetail.cs"
@@ -0,0 +1,101 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// BST閫�鏂欏崟鏄庣粏
+    /// </summary>
+    [SugarTable(nameof(Dt_ReturnBSTOrderDetail), "BST閫�鏂欏崟鏄庣粏")]
+    public class Dt_ReturnBSTOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 澶磋〃涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "澶磋〃涓婚敭")]
+        public int ReturnBSTOrderId { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欐潵婧怚D
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欐潵婧怚D")]
+        public int PaperWreturnId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鏉ユ簮ID(涓婃父)
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡鏉ユ簮ID(涓婃父)")]
+        public int MaterialId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鏉$爜
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡鏉$爜")]
+        public string Barcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鎵规搴忓垪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵规搴忓垪鍙�")]
+        public int SeqNo { get; set; }
+
+        /// <summary>
+        /// 骞呭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "骞呭")]
+        public decimal MaterialWide { get; set; }
+
+        /// <summary>
+        /// 鐩村緞
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐩村緞")]
+        public decimal MaterialThick { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欓暱搴�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欓暱搴�")]
+        public decimal ProcurementLength { get; set; }
+
+        /// <summary>
+        /// 閫�璐ф暟閲�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�璐ф暟閲�")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟鏄庣粏鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欏崟鏄庣粏鐘舵��")]
+        public int ReturnBSTOrderDetailStatus { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
index 4f27480..988d3c5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
@@ -5,12 +5,13 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Helper;
-using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IOutboundRepository;
 using WIDESEA_IOutboundService;
@@ -24,12 +25,14 @@
         private readonly IBasicRepository _basicRepository;
         private readonly IMapper _mapper;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IOutBSTOrderDetailRepository _outBSTOrderDetailRepository;
 
-        public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage,IOutBSTOrderDetailRepository outBSTOrderDetailRepository) : base(BaseDal)
         {
             _basicRepository = basicRepository;
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
+            _outBSTOrderDetailRepository = outBSTOrderDetailRepository;
         }
         /// <summary>
         /// 娣诲姞鍑哄簱鎺掔▼淇℃伅
@@ -53,6 +56,7 @@
                 List<Dt_OutBSTOrder> outBSTAddOrders = new List<Dt_OutBSTOrder>();
                 List<Dt_OutBSTOrder> outBSTUpOrders = new List<Dt_OutBSTOrder>();
                 List<Dt_OutBSTOrder> outBSTDelOrders = new List<Dt_OutBSTOrder>();
+                List<Dt_OutBSTOrderDetail> outBSTOrderDetailsDel = new List<Dt_OutBSTOrderDetail>();
                 //鏂板
                 if (outOrderDTOsAdd.Count>0)
                 {
@@ -62,8 +66,8 @@
                     {
                         return content.Error($"鍑哄簱鎺掔▼Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}宸插瓨鍦�");
                     }
-                    List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList();
                     //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
+                    List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList();
                     BstBoardMpsDetailItem? bstBoardMpsDetailItem = bstBoardMpsDetailItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId));
                     if (bstBoardMpsDetailItem != null)
                     {
@@ -71,6 +75,10 @@
                     }
                     foreach (var item in outOrderDTOsAdd)
                     {
+                        if (outOrderDTOsUpdate.FirstOrDefault(x => x.BoardMpsId == item.BoardMpsId) != null)
+                        {
+                            continue;
+                        }
                         List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList();
                         Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item);
                         outBSTOrder.Details=bSTOrderDetails;
@@ -80,16 +88,38 @@
                 //淇敼
                 if (outOrderDTOsUpdate.Count > 0)
                 {
-                    List<Dt_OutBSTOrder>? ExistUpdateoutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList();
-                    //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦�
-                    if (ExistUpdateoutBSTOrders.Count == outOrderDTOsUpdate.Count)
+                    List<Dt_OutBSTOrder>? ExistUpdateOutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList();
+                    
+                    foreach (var item in outOrderDTOsUpdate)
                     {
-
-                    }
-                    else
-                    {
-                        BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId));
-                        return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}");
+                        Dt_OutBSTOrder? outBSTOrderUpdate = ExistUpdateOutBSTOrders.FirstOrDefault(x=>x.BoardMpsId==item.BoardMpsId);
+                        //濡傛灉璁㈠崟宸插瓨鍦ㄥ垯杩涜鏇存敼
+                        if (outBSTOrderUpdate != null)
+                        {
+                            if (outBSTOrderUpdate.OutBSTOrderStatus != OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                            {
+                                return content.Error($"閲囪喘{nameof(outBSTOrderUpdate.BoardMpsId)}:{outBSTOrderUpdate.BoardMpsId}璁㈠崟鍑哄簱涓紝涓嶅彲鏇存敼");
+                            }
+                            //鏇存柊鏁版嵁
+                            outBSTOrderDetailsDel.AddRange(outBSTOrderUpdate.Details);
+                            List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList();
+                            bSTOrderDetails.ForEach(x =>
+                            {
+                                x.OutBSTOrderId = outBSTOrderUpdate.Id;
+                            });
+                            outBSTOrderUpdate.Details = bSTOrderDetails;
+                            outBSTOrderUpdate.BoardMpsId= item.BoardMpsId;
+                            outBSTOrderUpdate.BoardMpsNo= item.BoardMpsNo;
+                            outBSTOrderUpdate.ProductionDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ProductionDate).DateTime;
+                            outBSTUpOrders.Add(outBSTOrderUpdate);
+                        }
+                        else//濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板
+                        {
+                            List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList();
+                            Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item);
+                            outBSTOrder.Details = bSTOrderDetails;
+                            outBSTAddOrders.Add(outBSTOrder);
+                        }
                     }
                 }
                 //鍒犻櫎
@@ -109,6 +139,8 @@
                 }
                 _unitOfWorkManage.BeginTran();
                 BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand();
+                _outBSTOrderDetailRepository.DeleteData(outBSTOrderDetailsDel);
+                BaseDal.Db.UpdateNav(outBSTUpOrders).Include(x => x.Details).ExecuteCommand();
                 _unitOfWorkManage.CommitTran();
                 content.OK("鎺ユ敹鎴愬姛");
             }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
index 296426f..b4cc9c5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
@@ -71,7 +71,7 @@
                 var weight = saveModel.MainData["weight"].ObjToInt();
                 //骞呭
                 var wide = saveModel.MainData["wide"].ObjToInt();
-                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode== materSn);
+                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materSn);
                 if (materielInfo==null)
                 {
                     return content.Error("鏈壘鍒扮墿鏂欎俊鎭�");
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index 4c3a92f..ed643cb 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -277,28 +277,59 @@
                 }
 
                 string roadwayNo = "";
-                //闄愬埗鐩村緞
-                if (stockInfo.MaterielThickness > 800)
+                
+                if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.鏂板巶.ObjToInt())
                 {
-                    //鑾峰彇鍒嗛厤
-                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                    if (stockInfo.MaterielWide > 2200)
+                    //闄愬埗鐩村緞
+                    if (stockInfo.MaterielThickness <= 1200)
                     {
-                        locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo=="SC02_YL").GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                    }
-                    List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId
-                    && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway)
-                    && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
-                    foreach (var item in locationCounts)
-                    {
-                        LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo);
-                        if (count != null)
+                        //鑾峰彇鍒嗛厤
+                        List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YLDual")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+
+                        //宸烽亾浠诲姟鍒嗛厤鏁伴噺
+                        List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId
+                        && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway)
+                        && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
+
+                        foreach (var item in locationCounts)
                         {
-                            item.Count -= count.Count;
+                            LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo);
+                            if (count != null)
+                            {
+                                item.Count -= count.Count;
+                            }
                         }
+                        roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
                     }
-                    roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
                 }
+                else
+                {
+                    //闄愬埗鐩村緞
+                    if (stockInfo.MaterielThickness >= 800 && stockInfo.MaterielThickness <= 1500)
+                    {
+                        //鑾峰彇鍒嗛厤
+                        List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL") && !x.RoadwayNo.Contains("YLDual")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                        if (stockInfo.MaterielWide > 2200)
+                        {
+                            locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo == "SC02_YL").GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                        }
+
+                        //宸烽亾浠诲姟鍒嗛厤鏁伴噺
+                        List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId
+                        && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway)
+                        && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
+                        foreach (var item in locationCounts)
+                        {
+                            LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo);
+                            if (count != null)
+                            {
+                                item.Count -= count.Count;
+                            }
+                        }
+                        roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
+                    }
+                }
+                
                 return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("鏈壘鍒板彲鍒嗛厤宸烽亾");
             }
             catch (Exception ex)
@@ -316,7 +347,7 @@
             try
             {
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
-                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //鎴愬搧瀹屾垚
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString() || warehouse.WarehouseCode == WarehouseEnum.LLDFL.ToString()) //鎴愬搧/杈呮枡瀹屾垚
                 {
                     Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
                     if (locationInfoEnd == null)
@@ -396,21 +427,23 @@
                     _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                     _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
                     BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
-                    //if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.鑰佸巶.ObjToInt())
-                    //{
-                    //    int Qty = Convert.ToInt32(stockInfo.MaterielWeight);
-                    //    BSTPurchaseUpModel bSTPurchaseUpModel = new BSTPurchaseUpModel()
-                    //    {
-                    //        Barcode = stockInfo.PalletCode,
-                    //        BarcodeQty = Qty,
-                    //        Rfid = stockInfo.PalletCode
-                    //    };
-                    //    BSTResponse bSTResponse = _invokeERPService.BSTPurchaseUp(bSTPurchaseUpModel).DeserializeObject<BSTResponse>();
-                    //    if (bSTResponse.Code==500)
-                    //    {
-                    //        throw new Exception($"BST涓�鏈烢RP鍚屾鍏ュ簱淇℃伅澶辫触,閿欒淇℃伅{bSTResponse.Msg}");
-                    //    }
-                    //}
+                    //涓婃姤鑰佸巶ERP
+                    if (stockInfo.MaterielInvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt())
+                    {
+                        int Qty = Convert.ToInt32(stockInfo.MaterielWeight);
+                        BSTPurchaseUpModel bSTPurchaseUpModel = new BSTPurchaseUpModel()
+                        {
+                            Barcode = stockInfo.PalletCode,
+                            BarcodeQty = Qty,
+                            Rfid = stockInfo.PalletCode,
+                            RfidUpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                        };
+                        BSTResponse bSTResponse = _invokeERPService.BSTPurchaseUp(bSTPurchaseUpModel).DeserializeObject<BSTResponse>();
+                        if (bSTResponse.Code == 500)
+                        {
+                            throw new Exception($"BST涓�鏈烢RP鍚屾鍏ュ簱淇℃伅澶辫触,閿欒淇℃伅锛歿bSTResponse.Msg}");
+                        }
+                    }
                     _unitOfWorkManage.CommitTran();
                 }
                 return content.OK();
@@ -430,16 +463,11 @@
         {
             try
             {
-                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == 2);
-                if (warehouse == null)
-                {
-                    throw new Exception($"鏈壘鍒板贩閬撳搴斾粨搴撲俊鎭�");
-                }
-
                 string roadwayNo = "";
-                List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                //鑾峰彇宸烽亾鍙垎閰嶇殑璐т綅鏁伴噺
+                List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == WarehouseEnum.LLDCP.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
                 //绛涢�夊綋鍓嶅叆搴撲换鍔′腑宸插垎閰嶅贩閬撲换鍔℃暟閲�
-                List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId 
+                List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => (x.WarehouseId == WarehouseEnum.LLDCP.ObjToInt()|| x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt())
                 && locationCounts.Select(j=>j.RoadwayNo).Contains(x.Roadway)
                 && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
                 foreach (var item in locationCounts)
@@ -450,6 +478,7 @@
                         item.Count -= count.Count;
                     }
                 }
+                //閫氳繃鍙敤璐т綅鏁伴噺鎺掑簭锛屾渶澶氱殑浼樺厛鍒嗛厤
                 roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
                 return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("鏈壘鍒板彲鍒嗛厤宸烽亾");
             }
@@ -600,15 +629,13 @@
                 //鍒嗛厤宸烽亾
                 string roadWay=AssignCPRoadwayNo();
                 
-                //鑾峰彇鎴愬搧搴�
-                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.LLDCP.ToString());
                 Dt_ProStockInfo proStockInfo = new Dt_ProStockInfo()
                 {
                     PalletCode=barCode,
                     ProStockAttribute=ProStockAttributeEnum.绌烘墭.ObjToInt(),
                     PalletType=1,
                     LocationCode="",
-                    WarehouseId=warehouse.WarehouseId,
+                    WarehouseId= WarehouseEnum.LLDFL.ObjToInt(),
                     StockStatus=StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt()
                 }; 
 
@@ -623,7 +650,7 @@
                     TargetAddress = "",
                     TaskType = TaskTypeEnum.EmptyProductBack.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
-                    WarehouseId = warehouse.WarehouseId,
+                    WarehouseId = WarehouseEnum.LLDFL.ObjToInt(),
                     PalletType = 1
                 };
                 _unitOfWorkManage.BeginTran();
@@ -660,7 +687,8 @@
                     //{
                     //    return content.Error($"妗嗙爜鏍煎紡閿欒{barCode}");
                     //}
-                    Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == matCode && x.MaterielInvOrgId == MaterielInvOrgEnum.鏂板巶.ObjToInt() && x.WarehouseId==WarehouseEnum.LLDCP.ObjToInt());
+                    //鑾峰彇鐗╂枡
+                    Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == matCode && x.MaterielInvOrgId == MaterielInvOrgEnum.鏂板巶.ObjToInt() && (x.WarehouseId==WarehouseEnum.LLDCP.ObjToInt() || x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt()));
                     if (materielInfo == null)
                     {
                         return content.Error($"鏈壘鍒扮墿鏂欎俊鎭瘂matCode}");
@@ -690,7 +718,7 @@
                     string roadWay = AssignCPRoadwayNo();
 
                     //鑾峰彇鎴愬搧搴�
-                    Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.LLDCP.ToString());
+                    WarehouseEnum warehouseEnum = materielInfo.MaterielSourceType == MaterielTypeEnum.鎴愬搧.ObjToInt() ? WarehouseEnum.LLDCP : WarehouseEnum.LLDFL;
                     Dt_ProStockInfoDetail proStockInfoDetail = new Dt_ProStockInfoDetail()
                     {
                         ProductCode = materielInfo.MaterielCode,
@@ -706,7 +734,7 @@
                         ProStockAttribute = materielInfo.MaterielSourceType,
                         PalletType = 1,
                         LocationCode = "",
-                        WarehouseId = warehouse.WarehouseId,
+                        WarehouseId = warehouseEnum.ObjToInt(),
                         StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt(),
                         proStockInfoDetails = new List<Dt_ProStockInfoDetail> { proStockInfoDetail }
                     };
@@ -722,7 +750,7 @@
                         TargetAddress = "",
                         TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                         TaskStatus = TaskStatusEnum.New.ObjToInt(),
-                        WarehouseId = warehouse.WarehouseId,
+                        WarehouseId = warehouseEnum.ObjToInt(),
                         PalletType = 1
                     };
                     _unitOfWorkManage.BeginTran();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index 3c00276..ae4290d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -87,7 +87,7 @@
             try
             {
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
-                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //鎴愬搧瀹屾垚
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString() || warehouse.WarehouseCode == WarehouseEnum.LLDFL.ToString()) //鎴愬搧瀹屾垚
                 {
                     Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
                     if (locationInfoStart == null)
@@ -189,7 +189,7 @@
             }
             return tasks;
         }
-        public List<Dt_Task> GetTasks(List<Dt_ProStockInfo> stockInfos, TaskTypeEnum taskType)
+        public List<Dt_Task> GetTasks(List<Dt_ProStockInfo> stockInfos, TaskTypeEnum taskType,List<Dt_LocationInfo> locationInfos)
         {
             List<Dt_Task> tasks = new List<Dt_Task>();
             for (int i = 0; i < stockInfos.Count; i++)
@@ -198,7 +198,7 @@
 
                 if (stockInfo != null)
                 {
-                    Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
+                    Dt_LocationInfo locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == stockInfo.LocationCode);
                     if (!tasks.Exists(x => x.PalletCode == stockInfo.PalletCode))
                     {
                         Dt_Task task = new()
@@ -226,37 +226,48 @@
         /// <summary>
         /// 鎴愬搧鍑哄簱
         /// </summary>
-        /// <param name="Count"></param>
         /// <returns></returns>
-        public WebResponseContent RequestCPWMSTaskOut(int Count)
+        public WebResponseContent RequestCPWMSTaskOut(string materialCode,int Count, int targetId)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
-                List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x=>x.StationArea==AGVStationAreaEnum.AreaA.ObjToInt() && x.IsOccupied==WhetherEnum.False.ObjToInt());
+                List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x=>x.StationArea == targetId && x.IsOccupied==WhetherEnum.False.ObjToInt());
                 if (aGVStationInfos.Count< Count)
                 {
                     return content.Error($"鍙敤缂撳瓨鏁颁笉瓒�");
                 }
-                List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.鎴愬搧.ObjToInt() && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList();
-                List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
-                if (stockInfos.Count < Count)
+                //鑾峰彇璐т綅
+                List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDCP.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt());
+                
+                //鑾峰彇鍙敤搴撳瓨
+                List<Dt_ProStockInfo> stockInfos = BaseDal.Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Select(x => x.LocationCode).Contains(x.LocationCode) && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).Includes(x => x.proStockInfoDetails)
+                .Where(x => x.proStockInfoDetails
+                .Any(v =>
+                    v.ProductCode == materialCode)
+                ).ToList();
+
+                if (stockInfos.Count!=Count)
                 {
-                    return content.Error($"搴撳瓨鏁伴噺涓嶈冻");
+                    return content.Error($"搴撳瓨{materialCode}鏁伴噺涓嶈冻");
                 }
+                List<Dt_LocationInfo> AssignLocations = new List<Dt_LocationInfo>();
                 foreach (var item in stockInfos)
                 {
                     Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
-                    if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                    if (locationInfo != null)
                     {
+                        AssignLocations.Add(locationInfo);
                         item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
                     }
-                    else
-                    {
-                        return content.Error($"璐т綅鐘舵�佷笉姝g‘");
-                    }
                 }
-                List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutProduct);
+                TaskTypeEnum typeEnum = targetId switch
+                {
+                    (int)AGVStationAreaEnum.AreaA => TaskTypeEnum.OutProduct,
+                    (int)AGVStationAreaEnum.AreaC => TaskTypeEnum.OutWFB,
+                    _ => throw new Exception("鏈壘鍒板搴斾换鍔�")
+                };
+                List<Dt_Task> tasks = GetTasks(stockInfos, typeEnum, AssignLocations);
                 if (tasks == null || tasks.Count <= 0)
                 {
                     return content.Error($"鐢熸垚浠诲姟澶辫触");
@@ -272,9 +283,9 @@
                 _stockRepository.ProStockInfoRepository.UpdateData(stockInfos);
                 _agvStationInfoRepository.UpdateData(aGVStationInfos);
                 //鏇存柊璐т綅鐘舵��
-                _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+                _basicRepository.LocationInfoRepository.UpdateLocationStatus(AssignLocations, LocationStatusEnum.Lock);
                 //鍔犲叆璐т綅鍙樺姩璁板綍
-                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
+                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(AssignLocations, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
                 //鏂板缓浠诲姟
                 BaseDal.AddData(tasks);
                 _unitOfWorkManage.CommitTran();
@@ -292,65 +303,65 @@
         /// </summary>
         /// <param name="Count"></param>
         /// <returns></returns>
-        public WebResponseContent RequestWFBWMSTaskOut(int Count)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x => x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt() && x.IsOccupied == WhetherEnum.False.ObjToInt());
-                if (aGVStationInfos.Count < Count)
-                {
-                    return content.Error($"鍙敤缂撳瓨鏁颁笉瓒�");
-                }
-                List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.杈呮枡澶囦欢.ObjToInt() && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList();
-                List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
-                if (stockInfos.Count < Count)
-                {
-                    return content.Error($"搴撳瓨鏁伴噺涓嶈冻");
-                }
-                foreach (var item in stockInfos)
-                {
-                    Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
-                    if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
-                    {
-                        item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
-                    }
-                    else
-                    {
-                        return content.Error($"璐т綅鐘舵�佷笉姝g‘");
-                    }
-                }
-                List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutWFB);
-                if (tasks == null || tasks.Count <= 0)
-                {
-                    return content.Error($"鐢熸垚浠诲姟澶辫触");
-                }
-                for (int i = 0; i < tasks.Count; i++)
-                {
-                    aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt();
-                    tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode;
-                }
-                //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
-                _unitOfWorkManage.BeginTran();
-                //鏇存柊搴撳瓨鐘舵��
-                _stockRepository.ProStockInfoRepository.UpdateData(stockInfos);
-                _agvStationInfoRepository.UpdateData(aGVStationInfos);
-                //鏇存柊璐т綅鐘舵��
-                _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
-                //鍔犲叆璐т綅鍙樺姩璁板綍
-                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
-                //鏂板缓浠诲姟
-                BaseDal.AddData(tasks);
-                _unitOfWorkManage.CommitTran();
-                PushTasksToWCS(tasks);
-                content.OK();
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
+        //public WebResponseContent RequestWFBWMSTaskOut(int Count)
+        //{
+        //    WebResponseContent content = new WebResponseContent();
+        //    try
+        //    {
+        //        List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x => x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt() && x.IsOccupied == WhetherEnum.False.ObjToInt());
+        //        if (aGVStationInfos.Count < Count)
+        //        {
+        //            return content.Error($"鍙敤缂撳瓨鏁颁笉瓒�");
+        //        }
+        //        List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.杈呮枡澶囦欢.ObjToInt() && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList();
+        //        List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
+        //        if (stockInfos.Count < Count)
+        //        {
+        //            return content.Error($"搴撳瓨鏁伴噺涓嶈冻");
+        //        }
+        //        foreach (var item in stockInfos)
+        //        {
+        //            Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
+        //            if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+        //            {
+        //                item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+        //            }
+        //            else
+        //            {
+        //                return content.Error($"璐т綅鐘舵�佷笉姝g‘");
+        //            }
+        //        }
+        //        List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutWFB);
+        //        if (tasks == null || tasks.Count <= 0)
+        //        {
+        //            return content.Error($"鐢熸垚浠诲姟澶辫触");
+        //        }
+        //        for (int i = 0; i < tasks.Count; i++)
+        //        {
+        //            aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt();
+        //            tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode;
+        //        }
+        //        //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+        //        _unitOfWorkManage.BeginTran();
+        //        //鏇存柊搴撳瓨鐘舵��
+        //        _stockRepository.ProStockInfoRepository.UpdateData(stockInfos);
+        //        _agvStationInfoRepository.UpdateData(aGVStationInfos);
+        //        //鏇存柊璐т綅鐘舵��
+        //        _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+        //        //鍔犲叆璐т綅鍙樺姩璁板綍
+        //        _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
+        //        //鏂板缓浠诲姟
+        //        BaseDal.AddData(tasks);
+        //        _unitOfWorkManage.CommitTran();
+        //        PushTasksToWCS(tasks);
+        //        content.OK();
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        content.Error(ex.Message);
+        //    }
+        //    return content;
+        //}
         /// <summary>
         /// 鍘熸枡鍑哄簱浠诲姟
         /// </summary>
@@ -382,6 +393,7 @@
                         item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
                     }
                 }
+                //鍖哄垎浠诲姟
                 TaskTypeEnum taskTypeEnum = new();
                 if (stockInfos.FirstOrDefault()?.MaterielInvOrgId==MaterielInvOrgEnum.鑰佸巶.ObjToInt())
                 {
@@ -438,7 +450,7 @@
                 List<Dt_OutBSTOrderDetail> outBSTOrderDetails = new List<Dt_OutBSTOrderDetail>();
                 List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
                 List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
-
+                //鐢熸垚浠诲姟銆佸簱瀛樼瓑淇℃伅
                 (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutBSTOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(keys);
                 if (result.Item2 != null && result.Item2.Count > 0)
                 {
@@ -460,7 +472,7 @@
                 {
                     tasks.AddRange(result.Item1);
                 }
-
+                //澶勭悊鍑哄簱鏁版嵁
                 return GenerateOutboundTaskDataUpdate(tasks, stockInfos, outBSTOrderDetails, outStockLockInfos, locationInfos);
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs"
index a723b67..da8da61 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs"
@@ -33,13 +33,15 @@
         private readonly IInvokeERPService _invokeERPService;
         private readonly IPurchaseBSTOrderService _purchaseBSTOrderService;
         private readonly IOutBSTOrderService _outBSTOrderService;
+        private readonly IReturnBSTOrderService _returnBSTOrderService;
 
-        public ErpBSTController(IBasicService basicService, IInvokeERPService invokeERPService,IPurchaseBSTOrderService purchaseBSTOrderService,IOutBSTOrderService outBSTOrderService)
+        public ErpBSTController(IBasicService basicService, IInvokeERPService invokeERPService,IPurchaseBSTOrderService purchaseBSTOrderService,IOutBSTOrderService outBSTOrderService,IReturnBSTOrderService returnBSTOrderService)
         {
             _basicService = basicService;
             _invokeERPService = invokeERPService;
             _purchaseBSTOrderService = purchaseBSTOrderService;
             _outBSTOrderService = outBSTOrderService;
+            _returnBSTOrderService = returnBSTOrderService;
         }
         /// <summary>
         /// 娣诲姞鑰佸巶鐗╂枡
@@ -53,7 +55,7 @@
         }
 
         /// <summary>
-        /// 娣诲姞鑰佸巶渚涘簲鍟嗕俊鎭�
+        /// 鎺ユ敹鑰佸巶渚涘簲鍟嗕俊鎭�
         /// </summary>
         /// <returns></returns>
         [HttpPost, HttpGet, Route("ReceiveSupplier"), AllowAnonymous]
@@ -64,7 +66,7 @@
         }
 
         /// <summary>
-        /// 娣诲姞鑰佸巶閲囪喘鍗曚俊鎭�
+        /// 鎺ユ敹鑰佸巶閲囪喘鍗曚俊鎭�
         /// </summary>
         /// <returns></returns>
         [HttpPost, HttpGet, Route("ReceivePurchaseOrder"), AllowAnonymous]
@@ -74,7 +76,7 @@
         }
 
         /// <summary>
-        /// 娣诲姞鍑哄簱鎺掔▼淇℃伅
+        /// 鎺ユ敹鍑哄簱鎺掔▼淇℃伅
         /// </summary>
         /// <returns></returns>
         [HttpPost, HttpGet, Route("ReceiveOutOrder"), AllowAnonymous]
@@ -82,5 +84,32 @@
         {
             return _outBSTOrderService.AddOutBSTOrder(bSTOutOrderDTOs);
         }
+        /// <summary>
+        /// 鎺ユ敹鍗氭�濋�氶鏂欎俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("ReceivePicking"), AllowAnonymous]
+        public WebResponseContent ReceivePicking()
+        {
+            return WebResponseContent.Instance.Error("鏈壘鍒板搴斿簱瀛樹俊鎭�") ;
+        }
+        /// <summary>
+        /// 鎺ユ敹鍗氭�濋�氶��鏂欎俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("ReceiveReturnOrder"), AllowAnonymous]
+        public WebResponseContent ReceiveReturnOrder([FromBody] List<BSTReturnOrderDTO> bSTReturnOrderDTOs)
+        {
+            return _returnBSTOrderService.ReceiveReturnOrder(bSTReturnOrderDTOs);
+        }
+        /// <summary>
+        /// 鎺ユ敹鍗氭�濋�氱洏鐐逛俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("ReceiveStockCheckOrder"), AllowAnonymous]
+        public WebResponseContent ReceiveStockCheckOrder([FromBody] List<BSTOutOrderDTO> bSTOutOrderDTOs)
+        {
+            return _outBSTOrderService.AddOutBSTOrder(bSTOutOrderDTOs);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderController.cs"
new file mode 100644
index 0000000..e01a496
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderController.cs"
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// BST閫�鏂欏崟
+    /// </summary>
+    [Route("api/ReturnBSTOrder")]
+    [ApiController]
+    public class ReturnBSTOrderController : ApiBaseController<IReturnBSTOrderService, Dt_ReturnBSTOrder>
+    {
+        public ReturnBSTOrderController(IReturnBSTOrderService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderDetailController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderDetailController.cs"
new file mode 100644
index 0000000..43f76d8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/ReturnBSTOrderDetailController.cs"
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// BST閫�鏂欏崟鏄庣粏
+    /// </summary>
+    [Route("api/ReturnBSTOrderDetail")]
+    [ApiController]
+    public class ReturnBSTOrderDetailController : ApiBaseController<IReturnBSTOrderDetailService, Dt_ReturnBSTOrderDetail>
+    {
+        public ReturnBSTOrderDetailController(IReturnBSTOrderDetailService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index f6446dc..e3ea19a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -210,23 +210,37 @@
 
         /// <summary>
         /// 鎴愬搧鍑哄簱浠诲姟璇锋眰
+        /// <param name="targetId">
+        /// 1 鏈堝彴鍖�<br/>
+        /// 2 鍏ュ簱鍖�<br/>
+        /// 3 缁囧竷鍖�<br/>
+        /// 4 娣嬭啘鍖�<br/>
+        /// 5 鏆傚瓨鍖�<br/>
+        /// 6 鍗板埛鍖�<br/>
+        /// 7 鍐插垏鍖�<br/>
+        /// 8 鍘熸枡鍖�<br/>
+        /// 9 绾歌鍖�<br/>
+        /// 10 甯冭鍖�<br/>
+        /// 11 绾告澂鍖�<br/>
+        /// 12 闆惧寲鍖�<br/>
+        /// </param>
         /// </summary>
         /// <returns></returns>
         [HttpPost, HttpGet, Route("RequestCPWMSTaskOut"), AllowAnonymous]
-        public WebResponseContent RequestCPWMSTaskOut(int Count)
+        public WebResponseContent RequestCPWMSTaskOut(string materialCode,int Count, int targetId)
         {
-            return Service.RequestCPWMSTaskOut(Count);
+            return Service.RequestCPWMSTaskOut(materialCode, Count, targetId);
         }
 
-        /// <summary>
-        /// 鏃犵汉甯冨嚭搴�
-        /// </summary>
-        /// <returns></returns>
-        [HttpPost, HttpGet, Route("RequestWFBWMSTaskOut"), AllowAnonymous]
-        public WebResponseContent RequestWFBWMSTaskOut(int Count)
-        {
-            return Service.RequestWFBWMSTaskOut(Count);
-        }
+        ///// <summary>
+        ///// 鏃犵汉甯冨嚭搴�
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost, HttpGet, Route("RequestWFBWMSTaskOut"), AllowAnonymous]
+        //public WebResponseContent RequestWFBWMSTaskOut(int Count)
+        //{
+        //    return Service.RequestWFBWMSTaskOut(Count);
+        //}
 
         /// <summary>
         /// 鍘熸枡鍑哄簱浠诲姟
@@ -292,8 +306,6 @@
         /// <summary>
         /// 鍒涘缓鍘熺焊鐢熶骇鎺掔▼鍑哄簱浠诲姟
         /// </summary>
-        /// <param name="saveModel"></param>
-        /// <returns></returns>
         [HttpPost, HttpGet, Route("CreateBSTOutboundTasks"), AllowAnonymous]
         public WebResponseContent CreateBSTOutboundTasks([FromBody] int[] keys)
         {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs"
index 2f6f175..1d34367 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs"
@@ -40,6 +40,9 @@
             //BST鍑哄簱鎺掔▼瀹炰綋杞崲
             CreateMap<BSTOutOrderDTO, Dt_OutBSTOrder>().ForMember(x => x.OutBSTOrderStatus, b => b.MapFrom(b => OutOrderStatusEnum.鏈紑濮�.ObjToInt())).ForMember(x => x.ProductionDate, b => b.MapFrom(b => DateTimeOffset.FromUnixTimeMilliseconds(b.ProductionDate).DateTime)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt()));
             CreateMap<BstBoardMpsDetailItem, Dt_OutBSTOrderDetail>().ForMember(x => x.OutBSTOrderDetailStatus, b => b.MapFrom(b => OutOrderStatusEnum.鏈紑濮�.ObjToInt()));
+            //BST閫�鏂欏崟瀹炰綋杞崲
+            CreateMap<BSTReturnOrderDTO, Dt_ReturnBSTOrder>().ForMember(x => x.ReturnOrderStatus, b => b.MapFrom(b => InOrderStatusEnum.鏈紑濮�.ObjToInt())).ForMember(x => x.WreturnDate, b => b.MapFrom(b => DateTimeOffset.FromUnixTimeMilliseconds(b.WreturnDate).DateTime)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt()));
+            CreateMap<BSTReturnOrderDTOItem, Dt_ReturnBSTOrderDetail>().ForMember(x => x.ReturnBSTOrderDetailStatus, b => b.MapFrom(b => OutOrderStatusEnum.鏈紑濮�.ObjToInt())).ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.W)).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.Thick));
         }
     }
 }
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\200\235\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\200\235\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.xlsx"
index ddfeacf..24d8651 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\200\235\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\200\235\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227MES\346\216\245\345\217\243.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227MES\346\216\245\345\217\243.xlsx"
index 4c70f37..e2cb09c 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227MES\346\216\245\345\217\243.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227MES\346\216\245\345\217\243.xlsx"
Binary files differ

--
Gitblit v1.9.3