From 41411519f05116167adb749a5f1b73ba96f5b5b1 Mon Sep 17 00:00:00 2001
From: wbc <2597324127@qq.com>
Date: 星期五, 15 八月 2025 15:00:09 +0800
Subject: [PATCH] Merge branch 'master' of http://43.142.96.171:8080/r/~tjx/XB_MES_API

---
 StandardPda/MES.Service/service/QC/SJService.cs                                   |   43 
 StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs              |  115 +
 StandardPda/MES.Service/Modes/SalesOrderDetail.cs                                 |  371 +++
 StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeDetailManager.cs     |   78 
 StandardPda/MESApplication/Controllers/BasicData/SalesOrderController.cs          |  263 ++
 StandardPda/MES.Service/Modes/SalesDeliveryNotice.cs                              |  324 +++
 StandardPda/MES.Service/Modes/SalesReturnNotice.cs                                |  297 ++
 StandardPda/MES.Service/Modes/SalesOrder.cs                                       |  306 ++
 StandardPda/MES.Service/Dto/webApi/ErpSalesOrdeDetailDto.cs                       |  108 +
 StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs                     |    8 
 StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDetailDto.cs                   |  225 ++
 StandardPda/MES.Service/Modes/SalesReturnNoticeDetail.cs                          |  236 +
 StandardPda/MES.Service/Dto/service/SJPageResult.cs                               |   24 
 StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDto.cs                           |  128 +
 StandardPda/MES.Service/Dto/service/MesPalletBinding.cs                           |   50 
 StandardPda/MES.Service/DB/OracleSQLHelper.cs                                     |   33 
 StandardPda/MES.Service/Dto/webApi/ErpSalesDelivery.cs                            |   10 
 StandardPda/MES.Service/Modes/QsItemIpiReq.cs                                     |  220 +-
 StandardPda/MES.Service/Modes/SalesDeliveryNoticeDetail.cs                        |  382 ++++
 StandardPda/MES.Service/Modes/MesItemQtDatall.cs                                  |    3 
 StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDetailDto.cs                     |  148 +
 StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs           |  306 +++
 StandardPda/MESApplication/Controllers/QC/SJController.cs                         |   31 
 StandardPda/MES.Service/Dto/webApi/ErpSalesOrder.cs                               |    8 
 StandardPda/MES.Service/Dto/service/MesMiddleBox.cs                               |   43 
 StandardPda/MES.Service/Dto/webApi/ErpSalesOrderDto.cs                            |   78 
 StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDto.cs                         |  153 +
 StandardPda/MESApplication/Controllers/QC/XJController.cs                         |   29 
 StandardPda/MES.Service/service/BasicData/SalesOrderManager.cs                    |  226 +
 StandardPda/MES.Service/Dto/service/AsnInfo.cs                                    |   70 
 StandardPda/MES.Service/Dto/webApi/ErpSalesReturn.cs                              |   10 
 StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs             |  217 ++
 StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs                        |  433 ++++
 StandardPda/MESApplication/Controllers/BasicData/SalesDeliveryNoticeController.cs |  276 ++
 StandardPda/MES.Service/service/QC/XJService.cs                                   |   55 
 StandardPda/MES.Service/Dto/service/MesItemQtList.cs                              |   12 
 StandardPda/MESApplication/Controllers/BasicData/SalesReturnNoticeController.cs   |  272 ++
 37 files changed, 5,035 insertions(+), 556 deletions(-)

diff --git a/StandardPda/MES.Service/DB/OracleSQLHelper.cs b/StandardPda/MES.Service/DB/OracleSQLHelper.cs
index 9a36dba..fea808c 100644
--- a/StandardPda/MES.Service/DB/OracleSQLHelper.cs
+++ b/StandardPda/MES.Service/DB/OracleSQLHelper.cs
@@ -228,4 +228,37 @@
     //     }
     //     return result;
     // }
+    // 鎵撳紑杩炴帴骞跺紑鍚簨鍔�
+    public (OracleConnection, OracleTransaction) BeginTransaction()
+    {
+        var connection = new OracleConnection(_connectionString);
+        connection.Open();
+        var transaction = connection.BeginTransaction();
+        return (connection, transaction);
+    }
+
+    // 鍏抽棴杩炴帴锛堟彁浜ゆ垨鍥炴粴鍚庣敤锛�
+    public void CloseConnection(OracleConnection connection)
+    {
+        if (connection != null && connection.State != ConnectionState.Closed)
+        {
+            connection.Close();
+            connection.Dispose();
+        }
+    }
+    public object ExecuteScalarWithTransaction(OracleConnection conn, OracleTransaction tran, string sql, params OracleParameter[] parameters)
+    {
+        using (var cmd = conn.CreateCommand())
+        {
+            cmd.Transaction = tran;
+            cmd.CommandText = sql;
+            if (parameters != null)
+            {
+                cmd.Parameters.AddRange(parameters);
+            }
+            return cmd.ExecuteScalar();
+        }
+    }
+
+
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/service/AsnInfo.cs b/StandardPda/MES.Service/Dto/service/AsnInfo.cs
index f21dd93..f4947c0 100644
--- a/StandardPda/MES.Service/Dto/service/AsnInfo.cs
+++ b/StandardPda/MES.Service/Dto/service/AsnInfo.cs
@@ -19,6 +19,76 @@
         /// </summary>
         public string snState { get; set; }
 
+        /// <summary>
+        /// 浜ф祴鐧婚檰鍙�
+        /// </summary>
+        public string loginId { get; set; }
+        /// <summary>
+        /// 澶辫触椤圭洰
+        /// </summary>
+        public List<CcFailItems>? failItems { get; set; }
+
+
+        /// <summary>
+        /// 閰嶄欢缁戝畾
+        /// </summary>
+        public List<AccessoryList>? accessoryList { get; set; }
+
 
     }
+    /// <summary>
+    /// 浜ф祴SN澶辫触椤规槑缁嗚〃
+    /// </summary>
+    public class CcFailItems
+    {
+       
+        /// <summary>
+        /// 涓嶈壇闂
+        /// </summary>
+        public string? DefectIssue { get; set; }
+
+        /// <summary>
+        /// 鍒濇鍘熷洜
+        /// </summary>
+        public string? RootCause { get; set; }
+
+        /// <summary>
+        /// 缁翠慨鏂规/鏂规硶
+        /// </summary>
+        public string? RepairMethod { get; set; }
+
+        /// <summary>
+        /// 涓嶈壇鐗╂枡澶勭悊
+        /// </summary>
+        public string? MaterialHandling { get; set; }
+
+      
+    }
+
+    /// <summary>
+    /// 閰嶄欢鏄庣粏
+    /// </summary>
+    public class AccessoryList
+    {
+
+        /// <summary>
+        /// 缁戝畾鐘舵�侊紙(0:缁戝畾, 1:瑙g粦锛�
+        /// </summary>
+        public string? bindingState { get; set; }
+
+        /// <summary>
+        /// 閰嶄欢SN鍙�
+        /// </summary>
+        public string? accessorySn { get; set; }
+
+        /// <summary>
+        ///閰嶄欢涓枃鍚箟
+        /// </summary>
+        public string? accessoryName { get; set; }
+
+    
+
+
+    }
+
 }
diff --git a/StandardPda/MES.Service/Dto/service/MesItemQtList.cs b/StandardPda/MES.Service/Dto/service/MesItemQtList.cs
index a6a4cf9..278ef10 100644
--- a/StandardPda/MES.Service/Dto/service/MesItemQtList.cs
+++ b/StandardPda/MES.Service/Dto/service/MesItemQtList.cs
@@ -2,15 +2,12 @@
 {
     public class MesItemQtList
     {
-        /// <summary>
-        /// 宸ュ崟鍙�
-        /// </summary>
-        public string WorkOrderNumber { get; set; }
+        
 
         /// <summary>
         /// 鐗╂枡缂栧彿
         /// </summary>
-        public string Itemld { get; set; }
+        public string ItemId { get; set; }
 
         /// <summary>
         /// 璁″垝鏁伴噺
@@ -93,5 +90,10 @@
         /// 浜ф垚鍝佺紪鐮�
         /// </summary>
         public string FinishedProduct { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡鐢ㄩ��
+        /// </summary>
+        public string PickingUsage { get; set; }
     }
 }
diff --git a/StandardPda/MES.Service/Dto/service/MesMiddleBox.cs b/StandardPda/MES.Service/Dto/service/MesMiddleBox.cs
new file mode 100644
index 0000000..0f00368
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/MesMiddleBox.cs
@@ -0,0 +1,43 @@
+锘縩amespace MES.Service.Dto.service
+{
+    /// <summary>
+    /// 涓鐮佽〃
+    /// </summary>
+    public class MesMiddleBox
+    {
+
+        /// <summary>
+        /// 绫诲瀷锛堟搷浣滐細A缁戝畾锛孎瑙g粦锛�
+        /// </summary>
+        public string type { get; set; }
+        /// <summary>
+        /// 涓鐮�
+        /// </summary>
+        public string MediumBoxCode { get; set; }
+
+        /// <summary>
+        /// 鐧诲綍鍙�
+        /// </summary>
+        public string LoginId { get; set; }
+        /// <summary>
+        /// sn鍒楄〃
+        /// </summary>
+       public List<snList> SnList { get; set; }
+
+        public class snList
+        {
+            /// <summary>
+            /// SN鍙�
+            /// </summary>
+            public string SnNo { get; set; }
+
+            /// <summary>
+            /// 宸ュ崟鍗曞彿
+            /// </summary>
+            public string TicketNo { get; set; }
+        }
+
+    }
+
+  
+}
diff --git a/StandardPda/MES.Service/Dto/service/MesPalletBinding.cs b/StandardPda/MES.Service/Dto/service/MesPalletBinding.cs
new file mode 100644
index 0000000..a3facc5
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/MesPalletBinding.cs
@@ -0,0 +1,50 @@
+锘縩amespace MES.Service.Dto.service
+{
+    /// <summary>
+    /// 鏍堟澘缁戝畾琛�
+    /// </summary>
+    public class MesPalletBinding
+    {
+
+        /// <summary>
+        /// 鎿嶄綔锛欰缁戝畾锛孎瑙g粦
+        /// </summary>
+        public string Type { get; set; }
+        /// <summary>
+        /// 鏍堟澘鐮�
+        /// </summary>
+        public string StackCode { get; set; }
+
+        /// <summary>
+        /// 鐧诲綍鍙�
+        /// </summary>
+        public string LoginId { get; set; }
+
+        /// <summary>
+        /// sn鍒楄〃
+        /// </summary>
+        public List<snList1> SnList { get; set; }
+        public class snList1
+        {
+            /// <summary>
+            /// SN鍙�
+            /// </summary>
+            public string SnNo { get; set; }
+
+            /// <summary>
+            /// 宸ュ崟鍗曞彿
+            /// </summary>
+            public string TicketNo { get; set; }
+
+            /// <summary>
+            /// 涓鐮�
+            /// </summary>
+            public string? MediumBoxCode { get; set; }
+        }
+
+
+    }
+
+  
+
+}
diff --git a/StandardPda/MES.Service/Dto/service/SJPageResult.cs b/StandardPda/MES.Service/Dto/service/SJPageResult.cs
index 0064430..3d59644 100644
--- a/StandardPda/MES.Service/Dto/service/SJPageResult.cs
+++ b/StandardPda/MES.Service/Dto/service/SJPageResult.cs
@@ -82,4 +82,28 @@
     /// </summary>
     [SugarColumn(ColumnName = "DAA008")]
     public decimal? Daa008 { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "FSUBMIT")]
+    public decimal? FSubmit { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "FSUBMIT_BY")]
+    public string? FSubmitBy { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "FSUBMIT_DATE")]
+    public DateTime? FSubmitDate { get; set; }
+
+    /// <summary>
+    ///     宸ュ崟缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "MOID_NUM")]
+    public string? MoidNum { get; set; }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesDelivery.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesDelivery.cs
new file mode 100644
index 0000000..a6559c8
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesDelivery.cs
@@ -0,0 +1,10 @@
+锘縰sing MES.Service.Modes;
+
+namespace MES.Service.Dto.webApi;
+
+public class ErpSalesDelivery
+{
+    public ErpSalesDeliveryDto OrderDto { get; set; }
+
+    public List<ErpSalesDeliveryDetailDto> Items { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDetailDto.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDetailDto.cs
new file mode 100644
index 0000000..5b8aae6
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDetailDto.cs
@@ -0,0 +1,225 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpSalesDeliveryDetailDto
+{
+    /// <summary>
+    /// 鐗╂枡缂栫爜
+    /// </summary>
+    public string? FMaterialId { get; set; }
+
+    /// <summary>
+    /// 閿�鍞崟浣�
+    /// </summary>
+    public string? FUnitID { get; set; }
+
+    /// <summary>
+    /// 閿�鍞暟閲�
+    /// </summary>
+    public string? FQty { get; set; }
+
+    /// <summary>
+    /// 瑕佽揣鏃ユ湡
+    /// </summary>
+    public string? FDeliveryDate { get; set; }
+
+    /// <summary>
+    /// 婧愬崟鍗曞彿
+    /// </summary>
+    public string? FSrcBillNo { get; set; }
+
+    /// <summary>
+    /// ERPID
+    /// </summary>
+    public string? ErpID { get; set; }
+
+    /// <summary>
+    /// ERP澶碔D
+    /// </summary>
+    public string? EHID { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛鐗╂枡缂栫爜1
+    /// </summary>
+    public string? FMapId { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛鐗╂枡鍚嶇О
+    /// </summary>
+    public string? FMapName { get; set; }
+
+    // /// <summary>
+    // /// 瀹㈡埛鐗╂枡瑙勬牸鍨嬪彿
+    // /// </summary>
+    // public string? FMapSpec { get; set; }  // 娉ㄩ噴鎺夌殑瀛楁
+
+    /// <summary>
+    /// 浜よ揣鍦扮偣
+    /// </summary>
+    public string? FDeliveryLoc { get; set; }
+
+    /// <summary>
+    /// 浜よ揣鍦板潃
+    /// </summary>
+    public string? FDeliveryLAddress { get; set; }
+
+    /// <summary>
+    /// 璁″垝鍑鸿揣鏃�
+    /// </summary>
+    public string? FPlanDeliveryDate { get; set; }
+
+    /// <summary>
+    /// 璐т富缁勭粐
+    /// </summary>
+    public string? FOwnerIdHead { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛鏂欏彿2
+    /// </summary>
+    public string? FMapId2 { get; set; }
+
+    /// <summary>
+    /// 椤圭洰
+    /// </summary>
+    public string? FProject { get; set; }
+
+    /// <summary>
+    /// 瀛樺偍鍦扮偣
+    /// </summary>
+    public string? FStorageLocation { get; set; }
+
+    /// <summary>
+    /// 鍏嶈垂鍝佺被鍨�
+    /// </summary>
+    public string? FFreeItemType { get; set; }
+
+    /// <summary>
+    /// 琛ㄤ綋澶囨敞
+    /// </summary>
+    public string? FBodyNote { get; set; }
+
+    /// <summary>
+    /// 搴撳瓨鍙敤閲�
+    /// </summary>
+    public decimal? FAvailableStock { get; set; }
+
+    /// <summary>
+    /// 鏌ヨ搴撳瓨鏃堕棿
+    /// </summary>
+    public string? FInventoryQueryTime { get; set; }
+
+    /// <summary>
+    /// 琛岀姸鎬�
+    /// </summary>
+    public string? FLineStatus { get; set; }
+
+    /// <summary>
+    /// 鏀惰揣鍦板潃鍏ㄧО
+    /// </summary>
+    public string? FReceiveAddressFull { get; set; }
+
+    /// <summary>
+    /// 鏀惰揣鑱旂郴浜�
+    /// </summary>
+    public string? FReceiverContact { get; set; }
+
+    /// <summary>
+    /// 鍙��鎹�
+    /// </summary>
+    public string? FReturnExchangeAllowed { get; set; }
+
+    /// <summary>
+    /// 濮斿鍔犲伐浠舵暟閲�
+    /// </summary>
+    public decimal? FOutsourcedProcessQty { get; set; }
+
+    /// <summary>
+    /// 鍙敤鏃ユ湡
+    /// </summary>
+    public string? FAvailableDate { get; set; }
+
+    /// <summary>
+    /// 鎵胯鏃ユ湡
+    /// </summary>
+    public string? FCommitmentDate { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛纭鍑鸿揣鏃�
+    /// </summary>
+    public string? FCustomerConfirmShipDate { get; set; }
+
+    /// <summary>
+    /// 璁″垝缁勭粐
+    /// </summary>
+    public string? FPlannedOrg { get; set; }
+
+    /// <summary>
+    /// 渚涘簲鍟嗙洿杩�
+    /// </summary>
+    public string? FVendorDirectShip { get; set; }
+
+    /// <summary>
+    /// 渚涘簲鏉ユ簮
+    /// </summary>
+    public string? FSupplySource { get; set; }
+
+    /// <summary>
+    /// 渚涘簲绫诲瀷
+    /// </summary>
+    public string? FSupplyType { get; set; }
+
+    /// <summary>
+    /// 渚涘簲缁勭粐
+    /// </summary>
+    public string? FSupplyOrg { get; set; }
+
+    /// <summary>
+    /// 渚涘簲鍟�
+    /// </summary>
+    public string? FSupplier { get; set; }
+
+    /// <summary>
+    /// 鍑鸿揣鏂瑰紡
+    /// </summary>
+    public string? FShippingMethod { get; set; }
+
+    /// <summary>
+    /// MRP/DRP闇�姹�
+    /// </summary>
+    public string? FMRPDR { get; set; }
+
+    /// <summary>
+    /// 闇�姹傚垎绫�
+    /// </summary>
+    public string? FDemandCategory { get; set; }
+
+    /// <summary>
+    /// 搴撳瓨瑙勫垝
+    /// </summary>
+    public string? FInventoryPlanning { get; set; }
+
+    /// <summary>
+    /// 琛屽娉�
+    /// </summary>
+    public string? FLineRemark { get; set; }
+
+    /// <summary>
+    /// 鏉ユ簮鍗曟嵁绫诲埆
+    /// </summary>
+    public string? FSourceDocCategory { get; set; }
+
+    /// <summary>
+    /// 鏉ユ簮鍗曞彿
+    /// </summary>
+    public string? FSourceDocNo { get; set; }
+
+    /// <summary>
+    /// 鏉ユ簮鍗曡鍙�
+    /// </summary>
+    public decimal? FSourceDocLineNo { get; set; }
+
+    /// <summary>
+    /// 琛屽彿
+    /// </summary>
+    public string? FLINE_NO { get; set; }
+
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDto.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDto.cs
new file mode 100644
index 0000000..29259bd
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesDeliveryDto.cs
@@ -0,0 +1,153 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpSalesDeliveryDto
+{
+    /// <summary>
+    /// 鎺ュ彛绫诲瀷
+    /// </summary>
+    public string? Type { get; set; }
+
+    /// <summary>
+    /// ERPID
+    /// </summary>
+    public string? ErpID { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁缂栧彿
+    /// </summary>
+    public string? FBillNo { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷
+    /// </summary>
+    public string? FBillTypeID { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁鐘舵��
+    /// </summary>
+    public string? FDocumentStatus { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁鏃ユ湡
+    /// </summary>
+    public string? FDate { get; set; }
+
+    /// <summary>
+    /// 闇�姹傚垎绫�
+    /// </summary>
+    public string? FBusinessType { get; set; }
+
+    /// <summary>
+    /// 浜よ揣鏂瑰紡
+    /// </summary>
+    public string? FHeadDeliveryWay { get; set; }
+
+    /// <summary>
+    /// 浜よ揣鍦扮偣
+    /// </summary>
+    public string? FHEADLOCID { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛
+    /// </summary>
+    public string? FCustId { get; set; }
+
+    /// <summary>
+    /// 閿�鍞儴闂�
+    /// </summary>
+    public string? FSaleDeptId { get; set; }
+
+    /// <summary>
+    /// 閿�鍞憳
+    /// </summary>
+    public string? FSalerId { get; set; }
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    public string? FNote { get; set; }
+
+    /// <summary>
+    /// 瀹℃牳浜�
+    /// </summary>
+    public string? FApproverId { get; set; }
+
+    /// <summary>
+    /// 鍒涘缓鏃ユ湡
+    /// </summary>
+    public string? FCreateDate { get; set; }
+
+    /// <summary>
+    /// 瀹℃牳鏃ユ湡
+    /// </summary>
+    public string? FApproveDate { get; set; }
+
+    /// <summary>
+    /// 鐗堟湰鍙�
+    /// </summary>
+    public string? FVersionNo { get; set; }
+
+    /// <summary>
+    /// 琛ㄥご澶囨敞
+    /// </summary>
+    public string? FEntryNote { get; set; }
+
+    /// <summary>
+    /// 鏀惰揣鏂瑰湴鍧�
+    /// </summary>
+    public string? FReceiveAddress { get; set; }
+
+    /// <summary>
+    /// 鏀惰揣鑱旂郴浜�
+    /// </summary>
+    public string? FReceiverContactID { get; set; }
+
+    /// <summary>
+    /// 鍙戣揣缁勭粐
+    /// </summary>
+    public string? FDeliveryOrgID { get; set; }
+
+    //----------------浠ヤ笅涓烘柊澧炲瓧娈�---------------------------------
+
+    /// <summary>
+    /// 鏉ユ簮绫诲埆
+    /// </summary>
+    public string FSourceCategory { get; set; }
+
+    /// <summary>
+    /// 鏉ユ簮鍗曟嵁
+    /// </summary>
+    public string FSourceDocument { get; set; }
+
+    /// <summary>
+    /// 浜ゆ湡
+    /// </summary>
+    public string? FDeliveryDate { get; set; }
+
+    /// <summary>
+    /// 椤圭洰
+    /// </summary>
+    public string FProject { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛閲囪喘璁㈠崟
+    /// </summary>
+    public string FCustomerPo { get; set; }
+
+    /// <summary>
+    /// 鍑鸿揣鍘熷垯
+    /// </summary>
+    public string FShippingPolicy { get; set; }
+
+    /// <summary>
+    /// 瑁呰繍娓�
+    /// </summary>
+    public string FShippingPort { get; set; }
+
+    /// <summary>
+    /// 鐩殑娓�
+    /// </summary>
+    public string FDestinationPort { get; set; }
+
+
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesOrdeDetailDto.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesOrdeDetailDto.cs
new file mode 100644
index 0000000..3e6a40e
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesOrdeDetailDto.cs
@@ -0,0 +1,108 @@
+锘縩amespace MES.Service.Dto.webApi
+{
+    /// <summary>
+    /// ERP 閿�鍞鍗曟槑缁嗕紶杈撳璞�
+    /// </summary>
+    public class ErpSalesOrderDetailDto
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string? FMaterialId { get; set; }
+
+        /// <summary>
+        /// 閿�鍞暟閲�
+        /// </summary>
+        public string? FQty { get; set; }
+
+        /// <summary>
+        /// 璁′环鍗曚綅
+        /// </summary>
+        public string? FPriceUnitId { get; set; }
+
+        /// <summary>
+        /// 瑕佽揣鏃ユ湡
+        /// </summary>
+        public string? FDeliveryDate { get; set; }
+
+        /// <summary>
+        /// 璐т富
+        /// </summary>
+        public string? FOwnerId { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string? FEntryNote { get; set; }
+
+        /// <summary>
+        /// 鎵瑰彿
+        /// </summary>
+        public string? FLot { get; set; }
+
+        /// <summary>
+        /// ERP ID
+        /// </summary>
+        public string? ErpID { get; set; }
+
+        /// <summary>
+        /// ERP 澶� ID
+        /// </summary>
+        public string? EHID { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鐗╂枡缂栫爜
+        /// </summary>
+        public string? FMapId { get; set; }
+
+        /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        public string? FLineNo { get; set; }
+
+        /// <summary>
+        /// 琛岀姸鎬�
+        /// </summary>
+        public string? FLineStatus { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁
+        /// </summary>
+        public string? FExtendField { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string? FCustomer { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣浣嶇疆
+        /// </summary>
+        public string? FReceiveLocation { get; set; }
+
+        /// <summary>
+        /// 渚涘簲缁勭粐
+        /// </summary>
+        public string? FSupplyOrg { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬
+        /// </summary>
+        public string? FDepartment { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍛�
+        /// </summary>
+        public string? FSalesPerson { get; set; }
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        public string? FProject { get; set; }
+
+        /// <summary>
+        /// 闇�姹傚垎绫�
+        /// </summary>
+        public string? FDemandCategory { get; set; }
+    }
+}
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesOrder.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesOrder.cs
new file mode 100644
index 0000000..c9849e6
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesOrder.cs
@@ -0,0 +1,8 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpSalesOrder
+{
+    public ErpSalesOrderDto OrderDto { get; set; }
+
+    public List<ErpSalesOrderDetailDto> Items { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesOrderDto.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesOrderDto.cs
new file mode 100644
index 0000000..044c427
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesOrderDto.cs
@@ -0,0 +1,78 @@
+锘縩amespace MES.Service.Dto.webApi
+{
+    /// <summary>
+    /// ERP 閿�鍞鍗曚紶杈撳璞�
+    /// </summary>
+    public class ErpSalesOrderDto
+    {
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public string? Type { get; set; }
+
+        /// <summary>
+        /// ERP ID
+        /// </summary>
+        public string? ErpID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string? FBillNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        public string? FBillTypeID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public string? FDocumentStatus { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏃ユ湡
+        /// </summary>
+        public string? FDate { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string? FCustId { get; set; }
+
+        /// <summary>
+        /// 閿�鍞儴闂�
+        /// </summary>
+        public string? FSaleDeptId { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string? FEntryNote { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍛�
+        /// </summary>
+        public string? FSalesPerson { get; set; }
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        public string? FProject { get; set; }
+
+        /// <summary>
+        /// 闇�姹傚垎绫�
+        /// </summary>
+        public string? FDemandCategory { get; set; }
+
+        /// <summary>
+        /// 璧峰鏃ユ湡
+        /// </summary>
+        public string? FStartDate { get; set; }
+
+        /// <summary>
+        /// 鎴鏃ユ湡
+        /// </summary>
+        public string? FEndDate { get; set; }
+    }
+}
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesReturn.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesReturn.cs
new file mode 100644
index 0000000..9a03469
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesReturn.cs
@@ -0,0 +1,10 @@
+锘縰sing MES.Service.Modes;
+
+namespace MES.Service.Dto.webApi;
+
+public class ErpSalesRerurn
+{
+    public ErpSalesReturnDto OrderDto { get; set; }
+
+    public List<ErpSalesReturnDetailDto> Items { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDetailDto.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDetailDto.cs
new file mode 100644
index 0000000..e7c66ca
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDetailDto.cs
@@ -0,0 +1,148 @@
+锘縩amespace MES.Service.Dto.webApi
+{
+    /// <summary>
+    /// ERP閿�鍞��璐ф槑缁咲TO
+    /// </summary>
+    public class ErpSalesReturnDetailDto
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string? FMaterialId { get; set; }
+
+        /// <summary>
+        /// 閿�鍞暟閲�
+        /// </summary>
+        public string? FQty { get; set; }
+
+        /// <summary>
+        /// 浠撳簱锛堝瓨鍌ㄥ湴鐐癸級
+        /// </summary>
+        public string? FStockId { get; set; }
+
+        /// <summary>
+        /// 鎵瑰彿
+        /// </summary>
+        public string? FLot { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string? FEntryDescription { get; set; }
+
+        /// <summary>
+        /// 璐т富
+        /// </summary>
+        public string? FOwnerId { get; set; }
+
+        /// <summary>
+        /// 婧愬崟绫诲瀷
+        /// </summary>
+        public string? FSrcType { get; set; }
+
+        /// <summary>
+        /// 婧愬崟缂栧彿
+        /// </summary>
+        public string? FSrcBillNo { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟鍗曞彿
+        /// </summary>
+        public string? FOrderNo { get; set; }
+
+        /// <summary>
+        /// ERP ID
+        /// </summary>
+        public string? ErpID { get; set; }
+
+        /// <summary>
+        /// ERP澶碔D
+        /// </summary>
+        public string? EHID { get; set; }
+
+        /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        public int? FLineNumber { get; set; }
+
+        /// <summary>
+        /// 琛岀姸鎬�
+        /// </summary>
+        public string FLineStatus { get; set; }
+
+        /// <summary>
+        /// 閫�娆惧鎴�
+        /// </summary>
+        public string FRefundCustomer { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟�
+        /// </summary>
+        public string FSupplier { get; set; }
+
+        /// <summary>
+        /// 鍏嶈垂鍝佺被鍨�
+        /// </summary>
+        public string FFreebieType { get; set; }
+
+        /// <summary>
+        /// 鍏嶈垂鍝佸師鍥�
+        /// </summary>
+        public string FFreebieReason { get; set; }
+
+        /// <summary>
+        /// 婧愬ご鍗曟嵁琛屽彿
+        /// </summary>
+        public int? FSourceDocLineNo { get; set; }
+
+        /// <summary>
+        /// 婧愬ご鍗曟嵁瀛愯鍙�
+        /// </summary>
+        public int? FSourceDocSubLineNo { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曟嵁绫诲埆
+        /// </summary>
+        public string FSourceDocType { get; set; }
+
+        /// <summary>
+        /// 婧愬崟鎹鍙�
+        /// </summary>
+        public int? FOriginalDocLineNo { get; set; }
+
+        /// <summary>
+        /// 琛ヨ揣缁勭粐
+        /// </summary>
+        public string FReplenishOrg { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣缁勭粐
+        /// </summary>
+        public string FReceivingOrg { get; set; }
+
+        /// <summary>
+        /// 鍘熶笟鍔″憳
+        /// </summary>
+        public string FOriginalSalesman { get; set; }
+
+        /// <summary>
+        /// 鍘熼儴闂�
+        /// </summary>
+        public string FOriginalDept { get; set; }
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        public string FProject { get; set; }
+
+        /// <summary>
+        /// 閫�璐у師鍥�
+        /// </summary>
+        public string FReturnReason { get; set; }
+
+        /// <summary>
+        /// 閫�璐ц鏄�
+        /// </summary>
+        public string FReturnDescription { get; set; }
+    }
+}
diff --git a/StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDto.cs b/StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDto.cs
new file mode 100644
index 0000000..bc3acca
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ErpSalesReturnDto.cs
@@ -0,0 +1,128 @@
+锘縩amespace MES.Service.Dto.webApi
+{
+    /// <summary>
+    /// ERP閿�鍞��璐TO
+    /// </summary>
+    public class ErpSalesReturnDto
+    {
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public string? Type { get; set; }
+
+        /// <summary>
+        /// ERP ID
+        /// </summary>
+        public string? ErpID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        public string? FBillTypeID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string? FBillNo { get; set; }
+
+        /// <summary>
+        /// 鏃ユ湡
+        /// </summary>
+        public string? FDate { get; set; }
+
+        /// <summary>
+        /// 閫�璐у鎴�
+        /// </summary>
+        public string? FRetcustId { get; set; }
+
+        /// <summary>
+        /// 閫�璐у師鍥�
+        /// </summary>
+        public string? FRetcustReason { get; set; }
+
+        /// <summary>
+        /// 浜よ揣鍦扮偣
+        /// </summary>
+        public string? FHeadLocId { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏂硅仈绯讳汉
+        /// </summary>
+        public string? FReceiveCusContact { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏂瑰湴鍧�
+        /// </summary>
+        public string? FReceiveAddress { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string? FCreatorId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public string? FCreateDate { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳浜�
+        /// </summary>
+        public string? FApproverId { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳鏃ユ湡
+        /// </summary>
+        public string? FApproveDate { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public string? FDocumentStatus { get; set; }
+
+        /// <summary>
+        /// 閫�鍥炵被鍨�
+        /// </summary>
+        public string ReturnType { get; set; }
+
+        /// <summary>
+        /// 鎬绘暟閲�
+        /// </summary>
+        public decimal TotalQuantity { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曟嵁绫诲埆
+        /// </summary>
+        public string SourceDocumentCategory { get; set; }
+
+        /// <summary>
+        /// 婧愬崟鎹�
+        /// </summary>
+        public string SourceDocument { get; set; }
+
+        /// <summary>
+        /// 琛ヨ揣缁勭粐
+        /// </summary>
+        public string ReplenishmentOrganization { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛瑕佹眰鏃ユ湡
+        /// </summary>
+        public DateTime CustomerRequestDate { get; set; }
+
+        /// <summary>
+        /// 閫�璐т笟鍔″憳
+        /// </summary>
+        public string ReturnSalesman { get; set; }
+
+        /// <summary>
+        /// 閫�璐ч儴闂�
+        /// </summary>
+        public string ReturnDepartment { get; set; }
+
+        /// <summary>
+        /// 閫�璐ц鏄�
+        /// </summary>
+        public string ReturnDescription { get; set; }
+    }
+}
diff --git a/StandardPda/MES.Service/Modes/MesItemQtDatall.cs b/StandardPda/MES.Service/Modes/MesItemQtDatall.cs
index 2447ff3..a9e9f10 100644
--- a/StandardPda/MES.Service/Modes/MesItemQtDatall.cs
+++ b/StandardPda/MES.Service/Modes/MesItemQtDatall.cs
@@ -115,5 +115,8 @@
         [SugarColumn(ColumnName = "FINISHED_PRODUCT")]
         [Description("浜ф垚鍝佺紪鐮�")]
         public string FinishedProduct { get; set; }
+        [SugarColumn(ColumnName = "PICKING_USAGE")]
+        [Description("棰嗘枡鐢ㄩ��")]
+        public string PickingUsage { get; set; }
     }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/QsItemIpiReq.cs b/StandardPda/MES.Service/Modes/QsItemIpiReq.cs
index 0daac60..028b009 100644
--- a/StandardPda/MES.Service/Modes/QsItemIpiReq.cs
+++ b/StandardPda/MES.Service/Modes/QsItemIpiReq.cs
@@ -12,139 +12,147 @@
 public class QsItemIpiReq
 {
     /// <summary>
-    ///     棣栨鍗曞彿
-    /// </summary>
-    [Column("BILL_NO")]
-    [SugarColumn(ColumnName = "BILL_NO")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "棣栨鍗曞彿闀垮害涓嶈兘瓒呭嚭50")]
-    public string? BillNo { get; set; }
-
-    /// <summary>
-    ///     澶囨敞
-    /// </summary>
-    [Column("COMMENTS")]
-    [SugarColumn(ColumnName = "COMMENTS")] //鐢ㄤ簬SqlSugar
-    [StringLength(500, ErrorMessage = "澶囨敞闀垮害涓嶈兘瓒呭嚭500")]
-    public string? Comments { get; set; }
-
-    /// <summary>
-    ///     瀹屾垚鏃堕棿
-    /// </summary>
-    [Column("COMPLETE_TIME")]
-    [SugarColumn(ColumnName = "COMPLETE_TIME")] //鐢ㄤ簬SqlSugar
-    public DateTime? CompleteTime { get; set; }
-
-    /// <summary>
-    ///     鍒涘缓鏃堕棿
-    /// </summary>
-    [Column("CREATE_TIME")]
-    [SugarColumn(ColumnName = "CREATE_TIME")] //鐢ㄤ簬SqlSugar
-    public DateTime? CreateTime { get; set; }
-
-    /// <summary>
-    ///     搴忓垪SEQ_QS_IPI
-    /// </summary>
-    [Column("ID")]
+    ///  
+    ///</summary>
     [SugarColumn(IsPrimaryKey = true, OracleSequenceName = "SEQ_QS_IPI",
         ColumnName = "ID")]
     public decimal? Id { get; set; }
 
     /// <summary>
-    ///     0琛ㄧず涓嶅悎鏍�,1琛ㄧず鍚堟牸
-    /// </summary>
-    [Column("IS_PASS")]
-    [SugarColumn(ColumnName = "IS_PASS")] //鐢ㄤ簬SqlSugar
-    public decimal? IsPass { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "BILL_NO")]
+    public string BillNo { get; set; }
 
     /// <summary>
-    ///     浜у搧瑙勬牸
-    /// </summary>
-    [Column("ITEM_MOD")]
-    [SugarColumn(ColumnName = "ITEM_MOD")] //鐢ㄤ簬SqlSugar
-    [StringLength(1000, ErrorMessage = "浜у搧瑙勬牸闀垮害涓嶈兘瓒呭嚭1000")]
-    public string? ItemMod { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string ItemNo { get; set; }
 
     /// <summary>
-    ///     浜у搧鍚�
-    /// </summary>
-    [Column("ITEM_NAME")]
-    [SugarColumn(ColumnName = "ITEM_NAME")] //鐢ㄤ簬SqlSugar
-    [StringLength(200, ErrorMessage = "浜у搧鍚嶉暱搴︿笉鑳借秴鍑�200")]
-    public string? ItemName { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "ITEM_NAME")]
+    public string ItemName { get; set; }
 
     /// <summary>
-    ///     浜у搧缂栧彿
-    /// </summary>
-    [Column("ITEM_NO")]
-    [SugarColumn(ColumnName = "ITEM_NO")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "浜у搧缂栧彿闀垮害涓嶈兘瓒呭嚭50")]
-    public string? ItemNo { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "ITEM_MOD")]
+    public string ItemMod { get; set; }
 
     /// <summary>
-    ///     浜х嚎
-    /// </summary>
-    [Column("LINE")]
-    [SugarColumn(ColumnName = "LINE")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "浜х嚎闀垮害涓嶈兘瓒呭嚭50")]
-    public string? Line { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "LINE")]
+    public string Line { get; set; }
 
     /// <summary>
-    ///     浜х嚎鍚�
-    /// </summary>
-    [Column("LINE_NAME")]
-    [SugarColumn(ColumnName = "LINE_NAME")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "浜х嚎鍚嶉暱搴︿笉鑳借秴鍑�50")]
-    public string? LineName { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "LINE_NAME")]
+    public string LineName { get; set; }
 
     /// <summary>
-    ///     鎺掍骇鍗曞彿
-    /// </summary>
-    [Column("PBAID")]
-    [SugarColumn(ColumnName = "PBAID")] //鐢ㄤ簬SqlSugar
-    public decimal? Pbaid { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "WORKSHOP_CODE")]
+    public string WorkshopCode { get; set; }
 
     /// <summary>
-    ///     瀹℃牳鏃ユ湡
-    /// </summary>
-    [Column("STATUS_DATE")]
-    [SugarColumn(ColumnName = "STATUS_DATE")] //鐢ㄤ簬SqlSugar
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "WORKSHOP_NAME")]
+    public string WorkshopName { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "STATUS_USER")]
+    public string StatusUser { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "STATUS_DATE")]
     public DateTime? StatusDate { get; set; }
 
     /// <summary>
-    ///     瀹℃牳浜�
-    /// </summary>
-    [Column("STATUS_USER")]
-    [SugarColumn(ColumnName = "STATUS_USER")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "瀹℃牳浜洪暱搴︿笉鑳借秴鍑�50")]
-    public string? StatusUser { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "COMMENTS")]
+    public string Comments { get; set; }
 
     /// <summary>
-    ///     杞﹂棿缂栫爜
-    /// </summary>
-    [Column("WORKSHOP_CODE")]
-    [SugarColumn(ColumnName = "WORKSHOP_CODE")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "杞﹂棿缂栫爜闀垮害涓嶈兘瓒呭嚭50")]
-    public string? WorkshopCode { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "IS_PASS")]
+    public short? IsPass { get; set; }
 
     /// <summary>
-    ///     杞﹂棿鍚�
-    /// </summary>
-    [Column("WORKSHOP_NAME")]
-    [SugarColumn(ColumnName = "WORKSHOP_NAME")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "杞﹂棿鍚嶉暱搴︿笉鑳借秴鍑�50")]
-    public string? WorkshopName { get; set; }
-
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "CREATE_TIME")]
+    public DateTime? CreateTime { get; set; }
 
     /// <summary>
-    ///     妯″叿鍙�
-    /// </summary>
-    [Column("MOID_NUM")]
-    [SugarColumn(ColumnName = "MOID_NUM")] //鐢ㄤ簬SqlSugar
-    [StringLength(50, ErrorMessage = "妯″叿鍙烽暱搴︿笉鑳借秴鍑�50")]
-    public string? MoidNum { get; set; }
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "COMPLETE_TIME")]
+    public DateTime? CompleteTime { get; set; }
 
-    [Column("Remarks")]
-    [SugarColumn(ColumnName = "Remarks")] //鐢ㄤ簬SqlSugar
-    [StringLength(200, ErrorMessage = "澶囨敞涓嶈兘瓒呭嚭200")]
-    public string? Remarks { get; set; }
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "PBAID")]
+    public decimal? Pbaid { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "MOID_NUM")]
+    public string MoidNum { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "FSUBMIT_BY")]
+    public string FsubmitBy { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "FSUBMIT_DATE")]
+    public DateTime? FsubmitDate { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "FSUBMIT")]
+    public decimal? Fsubmit { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "STATUS")]
+    public short? Status { get; set; }
+
+    /// <summary>
+    ///  
+    ///</summary>
+    [SugarColumn(ColumnName = "REMARKS")]
+    public string Remarks { get; set; }
+
+    /// <summary>
+    /// 鐗╂枡ID 
+    ///</summary>
+    [SugarColumn(ColumnName = "ITEM_ID")]
+    public decimal? ItemId { get; set; }
+
+    /// <summary>
+    /// 鍒涘缓浜� 
+    ///</summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string CreateBy { get; set; }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/SalesDeliveryNotice.cs b/StandardPda/MES.Service/Modes/SalesDeliveryNotice.cs
new file mode 100644
index 0000000..65e2e46
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/SalesDeliveryNotice.cs
@@ -0,0 +1,324 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 閿�鍞彂璐ч�氱煡鍗�
+    ///</summary>
+    [SugarTable("SALES_DELIVERY_NOTICE")]
+    public class SalesDeliveryNotice
+    {
+        /// <summary>
+        ///  
+        ///</summary>
+         [SugarColumn(ColumnName="ID", OracleSequenceName = "SALES_DELIVERY_NOTICE_ID", IsPrimaryKey = true)]
+         public decimal? Id { get; set; }
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷 
+        ///</summary>
+         [SugarColumn(ColumnName="BILL_TYPE"    )]
+         public string BillType { get; set; }
+        /// <summary>
+        /// 鍗曟嵁缂栧彿 
+        ///</summary>
+         [SugarColumn(ColumnName="BILL_NO"    )]
+         public string BillNo { get; set; }
+        /// <summary>
+        /// 鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="F_DATE"    )]
+         public DateTime? FDate { get; set; }
+        /// <summary>
+        /// 缁撶畻甯佸埆 
+        ///</summary>
+         [SugarColumn(ColumnName="CURRENCY"    )]
+         public string? Currency { get; set; }
+        /// <summary>
+        /// 閿�鍞粍缁� 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_ORG"    )]
+         public string? SalesOrg { get; set; }
+        /// <summary>
+        /// 閿�鍞儴闂� 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_DEPT"    )]
+         public string? SalesDept { get; set; }
+        /// <summary>
+        /// 瀹㈡埛璁㈠崟 
+        ///</summary>
+         [SugarColumn(ColumnName="CUSTOMER_ORDER_NO"    )]
+         public string? CustomerOrderNo { get; set; }
+        /// <summary>
+        /// 瀹㈡埛 
+        ///</summary>
+         [SugarColumn(ColumnName="CUSTOMER"    )]
+         public string? Customer { get; set; }
+       
+        /// <summary>
+        /// 浜よ揣鏂瑰紡 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERY_METHOD"    )]
+         public string? DeliveryMethod { get; set; }
+        /// <summary>
+        /// 浜よ揣鍦扮偣 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERY_LOCATION"    )]
+         public string? DeliveryLocation { get; set; }
+        /// <summary>
+        /// 鎵胯繍鍟� 
+        ///</summary>
+         [SugarColumn(ColumnName="CARRIER"    )]
+         public string? Carrier { get; set; }
+        /// <summary>
+        /// 杩愯緭鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="TRANSPORT_NO"    )]
+         public string? TransportNo { get; set; }
+        /// <summary>
+        /// 鍗曟嵁鐘舵�� 
+        ///</summary>
+         [SugarColumn(ColumnName="BILL_NO_TYPE"    )]
+         public string? BillNoType { get; set; }
+        /// <summary>
+        /// 鍙戣揣缁勭粐 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERY_ORG"    )]
+         public string? DeliveryOrg { get; set; }
+        /// <summary>
+        /// 鍙戣揣閮ㄩ棬 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERY_DEPT"    )]
+         public string? DeliveryDept { get; set; }
+        /// <summary>
+        /// 搴撳瓨缁� 
+        ///</summary>
+         [SugarColumn(ColumnName="INVENTORY_GROUP"    )]
+         public string? InventoryGroup { get; set; }
+        /// <summary>
+        /// 浠撶鍛� 
+        ///</summary>
+         [SugarColumn(ColumnName="WAREHOUSE_MANAGER"    )]
+         public string? WarehouseManager { get; set; }
+        /// <summary>
+        /// 閿�鍞粍 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_GROUP"    )]
+         public string? SalesGroup { get; set; }
+        /// <summary>
+        /// 閿�鍞憳 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_PERSON"    )]
+         public string? SalesPerson { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂� 
+        ///</summary>
+         [SugarColumn(ColumnName="RECEIVER"    )]
+         public string? Receiver { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂硅仈绯讳汉 
+        ///</summary>
+         [SugarColumn(ColumnName="RECEIVER_CONTACT"    )]
+         public string? ReceiverContact { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂瑰湴鍧� 
+        ///</summary>
+         [SugarColumn(ColumnName="RECEIVER_ADDRESS"    )]
+         public string? ReceiverAddress { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂瑰鍚� 
+        ///</summary>
+         [SugarColumn(ColumnName="RECEIVER_NAME"    )]
+         public string? ReceiverName { get; set; }
+        /// <summary>
+        /// 鑱旂郴鐢佃瘽 
+        ///</summary>
+         [SugarColumn(ColumnName="LINK_PHONE"    )]
+         public string? LinkPhone { get; set; }
+        /// <summary>
+        /// 缁撶畻鏂� 
+        ///</summary>
+         [SugarColumn(ColumnName="SETTLE_PARTY"    )]
+         public string? SettleParty { get; set; }
+        /// <summary>
+        /// 浠樻鏂� 
+        ///</summary>
+         [SugarColumn(ColumnName="PAYER_PARTY"    )]
+         public string? PayerParty { get; set; }
+        /// <summary>
+        /// 鍒涘缓浜� 
+        ///</summary>
+         [SugarColumn(ColumnName="CREATED_BY"    )]
+         public string? CreatedBy { get; set; }
+        /// <summary>
+        /// 鍒涘缓鏃堕棿 
+        ///</summary>
+         [SugarColumn(ColumnName="CREATED_DATE"    )]
+         public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 淇敼浜� 
+        ///</summary>
+         [SugarColumn(ColumnName="MODIFIED_BY"    )]
+         public string? ModifiedBy { get; set; }
+        /// <summary>
+        /// 淇敼鏃堕棿 
+        ///</summary>
+         [SugarColumn(ColumnName="MODIFIED_DATE"    )]
+         public DateTime? ModifiedDate { get; set; }
+        /// <summary>
+        /// 鍏抽棴浜� 
+        ///</summary>
+         [SugarColumn(ColumnName="CLOSED_BY"    )]
+         public string? ClosedBy { get; set; }
+        /// <summary>
+        /// 鍏抽棴鍘熷洜 
+        ///</summary>
+         [SugarColumn(ColumnName="CLOSE_REASON"    )]
+         public string? CloseReason { get; set; }
+        /// <summary>
+        /// 鍏抽棴鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="CLOSE_DATE"    )]
+         public DateTime? CloseDate { get; set; }
+        /// <summary>
+        /// 瀹℃牳浜� 
+        ///</summary>
+         [SugarColumn(ColumnName="APPROVED_BY"    )]
+         public string? ApprovedBy { get; set; }
+        /// <summary>
+        /// 瀹℃牳鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="APPROVED_DATE"    )]
+         public DateTime? ApprovedDate { get; set; }
+        /// <summary>
+        /// 浣滃簾鐘舵�� 
+        ///</summary>
+         [SugarColumn(ColumnName="CANCEL_STATUS"    )]
+         public string? CancelStatus { get; set; }
+        /// <summary>
+        /// 浣滃簾浜� 
+        ///</summary>
+         [SugarColumn(ColumnName="CANCELLED_BY"    )]
+         public string? CancelledBy { get; set; }
+        /// <summary>
+        /// 浣滃簾鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="CANCEL_DATE"    )]
+         public DateTime? CancelDate { get; set; }
+        /// <summary>
+        /// 鍏抽棴鐘舵�� 
+        ///</summary>
+         [SugarColumn(ColumnName="CLOSE_STATUS"    )]
+         public string? CloseStatus { get; set; }
+        /// <summary>
+        /// 鏄惁鎵嬪姩鍏抽棴 
+        ///</summary>
+         [SugarColumn(ColumnName="MANUAL_CLOSE_FLAG"    )]
+         public string? ManualCloseFlag { get; set; }
+        /// <summary>
+        /// ERP澶碔D 
+        ///</summary>
+         [SugarColumn(ColumnName="ERP_ID"    )]
+         public string? ErpId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵�� 
+        ///</summary>
+        [SugarColumn(ColumnName = "BILL_STATUS")]
+        public string? BillStatus { get; set; }
+
+        //-----------------鏂板瀛楁---------------------------------
+        /// <summary>
+        /// 鏉ユ簮绫诲埆
+        /// </summary>
+        [SugarColumn(ColumnName = "FSourceCategory", IsNullable = false)]
+        public string FSourceCategory { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曟嵁
+        /// </summary>
+        [SugarColumn(ColumnName = "FSourceDocument", IsNullable = false)]
+        public string FSourceDocument { get; set; }
+
+        /// <summary>
+        /// 浜ゆ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "FDeliveryDate", IsNullable = true)]
+        public string? FDeliveryDate { get; set; }
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        [SugarColumn(ColumnName = "FProject", IsNullable = false)]
+        public string FProject { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛閲囪喘璁㈠崟
+        /// </summary>
+        [SugarColumn(ColumnName = "FCustomerPo", IsNullable = false)]
+        public string FCustomerPo { get; set; }
+
+        /// <summary>
+        /// 鍑鸿揣鍘熷垯
+        /// </summary>
+        [SugarColumn(ColumnName = "FShippingPolicy", IsNullable = false)]
+        public string FShippingPolicy { get; set; }
+
+        /// <summary>
+        /// 瑁呰繍娓�
+        /// </summary>
+        [SugarColumn(ColumnName = "FShippingPort", IsNullable = false)]
+        public string FShippingPort { get; set; }
+
+        /// <summary>
+        /// 鐩殑娓�
+        /// </summary>
+        [SugarColumn(ColumnName = "FDestinationPort", IsNullable = false)]
+        public string FDestinationPort { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鑱旂郴浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "FReceiverContactID", IsNullable = true)]
+        public string? FReceiverContactID { get; set; }
+
+        /// <summary>
+        /// 琛ㄥご澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "FEntryNote", IsNullable = true)]
+        public string? FEntryNote { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰鍙�
+        /// </summary>
+        [SugarColumn(ColumnName = "FVersionNo", IsNullable = true)]
+        public string? FVersionNo { get; set; }
+
+        /// <summary>
+        /// 闇�姹傚垎绫�
+        /// </summary>
+        [SugarColumn(ColumnName = "FBusinessType", IsNullable = true)]
+        public string? FBusinessType { get; set; }
+
+        /// <summary>
+        /// 浜よ揣鍦扮偣
+        /// </summary>
+        [SugarColumn(ColumnName = "FHEADLOCID", IsNullable = true)]
+        public string? FHEADLOCID { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        [SugarColumn(ColumnName = "FCustId", IsNullable = true)]
+        public string? FCustId { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "FNote", IsNullable = true)]
+        public string? FNote { get; set; }
+
+
+    }
+}
diff --git a/StandardPda/MES.Service/Modes/SalesDeliveryNoticeDetail.cs b/StandardPda/MES.Service/Modes/SalesDeliveryNoticeDetail.cs
new file mode 100644
index 0000000..30799be
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/SalesDeliveryNoticeDetail.cs
@@ -0,0 +1,382 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 閿�鍞彂璐ч�氱煡鍗曟槑缁嗚〃
+    ///</summary>
+    [SugarTable("SALES_DELIVERY_NOTICE_DETAIL")]
+    public class SalesDeliveryNoticeDetail
+    {
+        /// <summary>
+        ///  
+        ///</summary>
+         [SugarColumn(ColumnName="ID", OracleSequenceName = "SEQ_DELIVERY_NOTICE_DETAIL", IsPrimaryKey = true)]
+         public decimal? Id { get; set; }
+        /// <summary>
+        /// 閿�鍞鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_ORDER_ID"    )]
+         public string SalesOrderId { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜 
+        ///</summary>
+         [SugarColumn(ColumnName="MATERIAL_ID"    )]
+         public string MaterialId { get; set; }
+        /// <summary>
+        /// 鐗╂枡鍚嶇О 
+        ///</summary>
+         [SugarColumn(ColumnName="MATERIAL_NAME"    )]
+         public string MaterialName { get; set; }
+        /// <summary>
+        /// 鐗╂枡瑙勬牸 
+        ///</summary>
+         [SugarColumn(ColumnName="MATERIAL_SPECIFICATION"    )]
+         public string MaterialSpecification { get; set; }
+        /// <summary>
+        /// 閿�鍞崟浣� 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_UNIT_ID"    )]
+         public string SalesUnitId { get; set; }
+        /// <summary>
+        /// 閿�鍞暟閲� 
+        ///</summary>
+         [SugarColumn(ColumnName="SALES_QUANTITY"    )]
+         public decimal? SalesQuantity { get; set; }
+        /// <summary>
+        /// 鏄惁璧犲搧 
+        ///</summary>
+         [SugarColumn(ColumnName="IS_FREE"    )]
+         public string IsFree { get; set; }
+        /// <summary>
+        /// 瑕佽揣鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERY_DATE"    )]
+         public DateTime? DeliveryDate { get; set; }
+        /// <summary>
+        /// 鍑鸿揣浠撳簱 
+        ///</summary>
+         [SugarColumn(ColumnName="WAREHOUSE"    )]
+         public string Warehouse { get; set; }
+        /// <summary>
+        /// 璁″垝璺熻釜鍙� 
+        ///</summary>
+         [SugarColumn(ColumnName="PLAN_TRACKING_NUMBER"    )]
+         public string PlanTrackingNumber { get; set; }
+        /// <summary>
+        /// 鎵瑰彿 
+        ///</summary>
+         [SugarColumn(ColumnName="LOT_NUMBER"    )]
+         public string LotNumber { get; set; }
+        /// <summary>
+        /// 婧愬崟缂栧彿 
+        ///</summary>
+         [SugarColumn(ColumnName="SRC_BILL_NO"    )]
+         public string SrcBillNo { get; set; }
+        /// <summary>
+        /// 璁′环鏁伴噺 
+        ///</summary>
+         [SugarColumn(ColumnName="PRICE_QTY"    )]
+         public decimal? PriceQty { get; set; }
+        /// <summary>
+        /// 璐т富 
+        ///</summary>
+         [SugarColumn(ColumnName="OWNER_ID"    )]
+         public string OwnerId { get; set; }
+        /// <summary>
+        /// 搴撳瓨鍗曚綅 
+        ///</summary>
+         [SugarColumn(ColumnName="INVENTORY_UNIT"    )]
+         public string InventoryUnit { get; set; }
+        /// <summary>
+        /// 搴撳瓨鏁伴噺 
+        ///</summary>
+         [SugarColumn(ColumnName="INVENTORY_QUANTITY"    )]
+         public decimal? InventoryQuantity { get; set; }
+        /// <summary>
+        /// 鐗╂枡绫诲埆 
+        ///</summary>
+         [SugarColumn(ColumnName="MATERIAL_CATEGORY"    )]
+         public string MaterialCategory { get; set; }
+        /// <summary>
+        /// 璁″垝鍙戣揣鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="PLAN_DELIVERY_DATE"    )]
+         public DateTime? PlanDeliveryDate { get; set; }
+        /// <summary>
+        /// 瓒呭彂鎺у埗鍗曚綅 
+        ///</summary>
+         [SugarColumn(ColumnName="OUT_LMT_UNIT"    )]
+         public string OutLmtUnit { get; set; }
+        /// <summary>
+        /// 鍑哄簱涓婇檺 
+        ///</summary>
+         [SugarColumn(ColumnName="OUT_MAX_QTY"    )]
+         public decimal? OutMaxQty { get; set; }
+        /// <summary>
+        /// 鍑哄簱涓嬮檺 
+        ///</summary>
+         [SugarColumn(ColumnName="OUT_MIN_QTY"    )]
+         public decimal? OutMinQty { get; set; }
+        /// <summary>
+        /// 浜よ揣鍦扮偣 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERY_LOC"    )]
+         public string DeliveryLoc { get; set; }
+        /// <summary>
+        /// 浜よ揣鍦板潃 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERYL_ADDRESS"    )]
+         public string DeliverylAddress { get; set; }
+        /// <summary>
+        /// 婧愬崟鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="SOURCE_BILL_NO"    )]
+         public string SourceBillNo { get; set; }
+        /// <summary>
+        /// 璁㈠崟鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="ORDER_BILL_NO"    )]
+         public string OrderBillNo { get; set; }
+        /// <summary>
+        /// 缁堟鐘舵�� 
+        ///</summary>
+         [SugarColumn(ColumnName="TERMINATION_STATUS"    )]
+         public string TerminationStatus { get; set; }
+        /// <summary>
+        /// 缁堟鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="TERMINATION_DATE"    )]
+         public DateTime? TerminationDate { get; set; }
+        /// <summary>
+        /// 绱鍑哄簱鏁伴噺 
+        ///</summary>
+         [SugarColumn(ColumnName="SUM_OUT_QTY"    )]
+         public decimal? SumOutQty { get; set; }
+        /// <summary>
+        /// 鏈嚭搴撴暟閲� 
+        ///</summary>
+         [SugarColumn(ColumnName="REMAIN_OUT_QTY"    )]
+         public decimal? RemainOutQty { get; set; }
+        /// <summary>
+        /// ERP琛孖D 
+        ///</summary>
+         [SugarColumn(ColumnName="ERP_LINE_ID"    )]
+         public string ErpLineId { get; set; }
+        /// <summary>
+        /// ERP澶碔D 
+        ///</summary>
+         [SugarColumn(ColumnName="ERP_HEAD_ID"    )]
+         public string ErpHeadId { get; set; }
+        /// <summary>
+        /// ERP澶碔D 
+        ///</summary>
+        //[SugarColumn(ColumnName = "f_UNW_Base_GDY")]
+        //public string GDY { get; set; }
+        ///// <summary>
+        ///// 澶囨敞
+        /////</summary>
+        //[SugarColumn(ColumnName = "FEntrynote")]
+        //public string NOTE { get; set; }
+        /// <summary>
+        /// 瑕佽揣鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "FDELIVERYDATE", IsNullable = true)]
+        public string? FDeliveryDate { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鐗╂枡缂栫爜1
+        /// </summary>
+        [SugarColumn(ColumnName = "FMAPID", IsNullable = true)]
+        public string? FMapId { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(ColumnName = "FMAPNAME", IsNullable = true)]
+        public string? FMapName { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鏂欏彿2
+        /// </summary>
+        [SugarColumn(ColumnName = "FMAPID2", IsNullable = true)]
+        public string? FMapId2 { get; set; }
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        [SugarColumn(ColumnName = "FPROJECT", IsNullable = true)]
+        public string? FProject { get; set; }
+
+        /// <summary>
+        /// 瀛樺偍鍦扮偣
+        /// </summary>
+        [SugarColumn(ColumnName = "FSTORAGELOCATION", IsNullable = true)]
+        public string? FStorageLocation { get; set; }
+
+        /// <summary>
+        /// 鍏嶈垂鍝佺被鍨�
+        /// </summary>
+        [SugarColumn(ColumnName = "FFREEITEMTYPE", IsNullable = true)]
+        public string? FFreeItemType { get; set; }
+
+        /// <summary>
+        /// 琛ㄤ綋澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "FBODYNOTE", IsNullable = true)]
+        public string? FBodyNote { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鍙敤閲�
+        /// </summary>
+        [SugarColumn(ColumnName = "FAVAILABLESTOCK", IsNullable = true)]
+        public decimal? FAvailableStock { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ搴撳瓨鏃堕棿
+        /// </summary>
+        [SugarColumn(ColumnName = "FINVENTORYQUERYTIME", IsNullable = true)]
+        public string? FInventoryQueryTime { get; set; }
+
+        /// <summary>
+        /// 琛岀姸鎬�
+        /// </summary>
+        [SugarColumn(ColumnName = "FLINESTATUS", IsNullable = true)]
+        public string? FLineStatus { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍦板潃鍏ㄧО
+        /// </summary>
+        [SugarColumn(ColumnName = "FRECEIVEADDRESSFULL", IsNullable = true)]
+        public string? FReceiveAddressFull { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鑱旂郴浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "FRECEIVERCONTACT", IsNullable = true)]
+        public string? FReceiverContact { get; set; }
+
+        /// <summary>
+        /// 鍙��鎹�
+        /// </summary>
+        [SugarColumn(ColumnName = "FRETURNEXCHANGEALLOWED", IsNullable = true)]
+        public string? FReturnExchangeAllowed { get; set; }
+
+        /// <summary>
+        /// 濮斿鍔犲伐浠舵暟閲�
+        /// </summary>
+        [SugarColumn(ColumnName = "FOUTSOURCEDPROCESSQTY", IsNullable = true)]
+        public decimal? FOutsourcedProcessQty { get; set; }
+
+        /// <summary>
+        /// 鍙敤鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "FAVAILABLEDATE", IsNullable = true)]
+        public string? FAvailableDate { get; set; }
+
+        /// <summary>
+        /// 鎵胯鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "FCOMMITMENTDATE", IsNullable = true)]
+        public string? FCommitmentDate { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛纭鍑鸿揣鏃�
+        /// </summary>
+        [SugarColumn(ColumnName = "FCUSTOMERCONFIRMSHIPDATE", IsNullable = true)]
+        public string? FCustomerConfirmShipDate { get; set; }
+
+        /// <summary>
+        /// 璁″垝缁勭粐
+        /// </summary>
+        [SugarColumn(ColumnName = "FPLANNEDORG", IsNullable = true)]
+        public string? FPlannedOrg { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙洿杩�
+        /// </summary>
+        [SugarColumn(ColumnName = "FVENDORDIRECTSHIP", IsNullable = true)]
+        public string? FVendorDirectShip { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鏉ユ簮
+        /// </summary>
+        [SugarColumn(ColumnName = "FSUPPLYSOURCE", IsNullable = true)]
+        public string? FSupplySource { get; set; }
+
+        /// <summary>
+        /// 渚涘簲绫诲瀷
+        /// </summary>
+        [SugarColumn(ColumnName = "FSUPPLYTYPE", IsNullable = true)]
+        public string? FSupplyType { get; set; }
+
+        /// <summary>
+        /// 渚涘簲缁勭粐
+        /// </summary>
+        [SugarColumn(ColumnName = "FSUPPLYORG", IsNullable = true)]
+        public string? FSupplyOrg { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟�
+        /// </summary>
+        [SugarColumn(ColumnName = "FSUPPLIER", IsNullable = true)]
+        public string? FSupplier { get; set; }
+
+        /// <summary>
+        /// 鍑鸿揣鏂瑰紡
+        /// </summary>
+        [SugarColumn(ColumnName = "FSHIPPINGMETHOD", IsNullable = true)]
+        public string? FShippingMethod { get; set; }
+
+        /// <summary>
+        /// MRP/DRP闇�姹�
+        /// </summary>
+        [SugarColumn(ColumnName = "FMRPDR", IsNullable = true)]
+        public string? FMRPDR { get; set; }
+
+        /// <summary>
+        /// 闇�姹傚垎绫�
+        /// </summary>
+        [SugarColumn(ColumnName = "FDEMANDCATEGORY", IsNullable = true)]
+        public string? FDemandCategory { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨瑙勫垝
+        /// </summary>
+        [SugarColumn(ColumnName = "FINVENTORYPLANNING", IsNullable = true)]
+        public string? FInventoryPlanning { get; set; }
+
+        /// <summary>
+        /// 琛屽娉�
+        /// </summary>
+        [SugarColumn(ColumnName = "FLINEREMARK", IsNullable = true)]
+        public string? FLineRemark { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曟嵁绫诲埆
+        /// </summary>
+        [SugarColumn(ColumnName = "FSOURCEDOCCATEGORY", IsNullable = true)]
+        public string? FSourceDocCategory { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        [SugarColumn(ColumnName = "FSOURCEDOCNO", IsNullable = true)]
+        public string? FSourceDocNo { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曡鍙�
+        /// </summary>
+        [SugarColumn(ColumnName = "FSOURCEDOCLINENO", IsNullable = true)]
+        public decimal? FSourceDocLineNo { get; set; }
+
+        /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        [SugarColumn(ColumnName = "FLINE_NO", IsNullable = true)]
+        public string? FLINE_NO { get; set; }
+
+    }
+}
diff --git a/StandardPda/MES.Service/Modes/SalesOrder.cs b/StandardPda/MES.Service/Modes/SalesOrder.cs
index 304b4ec..596d5d8 100644
--- a/StandardPda/MES.Service/Modes/SalesOrder.cs
+++ b/StandardPda/MES.Service/Modes/SalesOrder.cs
@@ -1,113 +1,235 @@
 锘縰sing SqlSugar;
 
-namespace MES.Service.Modes;
-
-/// <summary>
-///     閿�鍞鍗曡〃
-/// </summary>
-[SugarTable("SALES_ORDER")]
-public class SalesOrder
+namespace MES.Service.Modes
 {
     /// <summary>
-    ///     SEQ_sales搴忓垪
+    /// 閿�鍞鍗曡〃
     /// </summary>
-    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_sales",
-        IsPrimaryKey = true)]
-    public decimal Id { get; set; }
+    [SugarTable("SALES_ORDER")]
+    public class SalesOrder
+    {
+        /// <summary>
+        /// SEQ_sales搴忓垪
+        /// </summary>
+        [SugarColumn(ColumnName = "ID", OracleSequenceName = "SALES_ORDER_ID", IsPrimaryKey = true)]
+        public decimal? Id { get; set; }
 
-    /// <summary>
-    ///     璁㈠崟鍗曞彿
-    /// </summary>
-    [SugarColumn(ColumnName = "ORDER_ID")]
-    public string OrderId { get; set; }
+        /// <summary>
+        /// ERPID
+        /// </summary>
+        [SugarColumn(ColumnName = "ERP_ID")]
+        public decimal? ErpID { get; set; }
 
-    /// <summary>
-    ///     璁㈠崟鍗曞埆
-    /// </summary>
-    [SugarColumn(ColumnName = "ORDER_TYPE")]
-    public string OrderType { get; set; }
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "BILL_NO")]
+        public string? BillNo { get; set; }
 
-    /// <summary>
-    ///     鍙楄鏃ユ湡
-    /// </summary>
-    [SugarColumn(ColumnName = "ORDER_DATE")]
-    public DateTime? OrderDate { get; set; }
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(ColumnName = "BILL_TYPE_ID")]
+        public string? BillTypeId { get; set; }
 
-    /// <summary>
-    ///     鍗曟嵁鐗堟湰
-    /// </summary>
-    [SugarColumn(ColumnName = "DOCUMENT_VERSION")]
-    public long? DocumentVersion { get; set; }
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "DOCUMENT_STATUS")]
+        public string? DocumentStatus { get; set; }
 
-    /// <summary>
-    ///     鍗曟嵁鏃ユ湡
-    /// </summary>
-    [SugarColumn(ColumnName = "DOCUMENT_DATE")]
-    public DateTime? DocumentDate { get; set; }
+        /// <summary>
+        /// 鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "F_DATE")]
+        public DateTime? FDate { get; set; }
 
-    /// <summary>
-    ///     宸ュ巶缂栧彿
-    /// </summary>
-    [SugarColumn(ColumnName = "FACTORY_ID")]
-    public string FactoryId { get; set; }
+        /// <summary>
+        /// 涓氬姟绫诲瀷
+        /// </summary>
+        [SugarColumn(ColumnName = "BUSINESS_TYPE")]
+        public string? BusinessType { get; set; }
 
-    /// <summary>
-    ///     宸ュ巶绠�绉�
-    /// </summary>
-    [SugarColumn(ColumnName = "FACTORY_NAME")]
-    public string FactoryName { get; set; }
+        /// <summary>
+        /// 浜よ揣鏂瑰紡
+        /// </summary>
+        [SugarColumn(ColumnName = "HEAD_DELIVERY_WAY")]
+        public string? HeadDeliveryWay { get; set; }
 
-    /// <summary>
-    ///     瀹㈡埛缂栧彿
-    /// </summary>
-    [SugarColumn(ColumnName = "CUSTOMER_ID")]
-    public string CustomerId { get; set; }
+        /// <summary>
+        /// 浜よ揣鍦扮偣
+        /// </summary>
+        [SugarColumn(ColumnName = "HEAD_LOC_ID")]
+        public string? HeadLocId { get; set; }
 
-    /// <summary>
-    ///     瀹㈡埛绠�绉�
-    /// </summary>
-    [SugarColumn(ColumnName = "CUSTOMER_NAME")]
-    public string CustomerName { get; set; }
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        [SugarColumn(ColumnName = "CUST_ID")]
+        public string? CustId { get; set; }
 
-    /// <summary>
-    ///     瀹㈡埛鍗曞彿
-    /// </summary>
-    [SugarColumn(ColumnName = "CUSTOMER_ORDER_ID")]
-    public string CustomerOrderId { get; set; }
+        /// <summary>
+        /// 鍏抽棴鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "CLOSE_STATUS")]
+        public string? CloseStatus { get; set; }
 
-    /// <summary>
-    ///     閮ㄩ棬缂栧彿
-    /// </summary>
-    [SugarColumn(ColumnName = "DEPARTMENT_ID")]
-    public string DepartmentId { get; set; }
+        /// <summary>
+        /// 閿�鍞儴闂�
+        /// </summary>
+        [SugarColumn(ColumnName = "SALE_DEPT_ID")]
+        public string? SaleDeptId { get; set; }
 
-    /// <summary>
-    ///     鎬绘暟閲�
-    /// </summary>
-    [SugarColumn(ColumnName = "TOTAL_QUANTITY")]
-    public decimal? TotalQuantity { get; set; }
+        /// <summary>
+        /// 閿�鍞憳
+        /// </summary>
+        [SugarColumn(ColumnName = "SALER_ID")]
+        public string? SalerId { get; set; }
 
-    /// <summary>
-    ///     澶囨敞
-    /// </summary>
-    [SugarColumn(ColumnName = "REMARKS")]
-    public string Remarks { get; set; }
+        /// <summary>
+        /// 鍙樻洿鍘熷洜
+        /// </summary>
+        [SugarColumn(ColumnName = "CHANGE_REASON")]
+        public string? ChangeReason { get; set; }
 
-    /// <summary>
-    ///     erp瀹℃牳鏃ユ湡
-    /// </summary>
-    [SugarColumn(ColumnName = "APPROVAL_DATE")]
-    public DateTime? ApprovalDate { get; set; }
+        /// <summary>
+        /// 缁撶畻鏂�
+        /// </summary>
+        [SugarColumn(ColumnName = "SETTLE_ID")]
+        public string? SettleId { get; set; }
 
-    /// <summary>
-    ///     erp瀹℃牳鑰�
-    /// </summary>
-    [SugarColumn(ColumnName = "APPROVER")]
-    public string Approver { get; set; }
+        /// <summary>
+        /// 瀹℃牳浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "APPROVER_ID")]
+        public string? ApproverId { get; set; }
 
-    /// <summary>
-    ///     ERPID
-    /// </summary>
-    [SugarColumn(ColumnName = "ERP_ID")]
-    public string ErpId { get; set; }
-}
\ No newline at end of file
+        /// <summary>
+        /// 鏀惰揣浜哄鍚�
+        /// </summary>
+        [SugarColumn(ColumnName = "LINK_MAN")]
+        public string? LinkMan { get; set; }
+
+        /// <summary>
+        /// 浠樻鏂�
+        /// </summary>
+        [SugarColumn(ColumnName = "CHARGE_ID")]
+        public string? ChargeId { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鐢佃瘽
+        /// </summary>
+        [SugarColumn(ColumnName = "LINK_PHONE")]
+        public string? LinkPhone { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "CREATOR_ID")]
+        public string? CreatorId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "CREATE_DATE")]
+        public DateTime? CreateDate { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庝慨鏀逛汉
+        /// </summary>
+        [SugarColumn(ColumnName = "MODIFIER_ID")]
+        public string? ModifierId { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庝慨鏀规棩鏈�
+        /// </summary>
+        [SugarColumn(ColumnName = "MODIFY_DATE")]
+        public DateTime? ModifyDate { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "APPROVE_DATE")]
+        public DateTime? ApproveDate { get; set; }
+
+        /// <summary>
+        /// 鍏抽棴浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "CLOSER_ID")]
+        public string? CloserId { get; set; }
+
+        /// <summary>
+        /// 鍏抽棴鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "CLOSE_DATE")]
+        public DateTime? CloseDate { get; set; }
+
+        /// <summary>
+        /// 鍙樻洿鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "CHANGE_DATE")]
+        public DateTime? ChangeDate { get; set; }
+
+        /// <summary>
+        /// 浣滃簾鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "CANCEL_STATUS")]
+        public string? CancelStatus { get; set; }
+
+        /// <summary>
+        /// 浣滃簾浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "CANCELLER_ID")]
+        public string? CancellerId { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰鍙�
+        /// </summary>
+        [SugarColumn(ColumnName = "VERSION_NO")]
+        public double? VersionNo { get; set; }
+
+        /// <summary>
+        /// 鍙樻洿浜�
+        /// </summary>
+        [SugarColumn(ColumnName = "CHANGER_ID")]
+        public string? ChangerId { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "ENTRY_NOTE")]
+        public string? EntryNote { get; set; }
+
+        //--------------鏂板瀛楁---------------------------------
+
+        /// <summary>
+        /// 涓氬姟鍛�
+        /// </summary>
+        [SugarColumn(ColumnName = "FSALES_PERSON", IsNullable = true)]
+        public string? FSalesPerson { get; set; }
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        [SugarColumn(ColumnName = "FPROJECT", IsNullable = true)]
+        public string? FProject { get; set; }
+
+        /// <summary>
+        /// 闇�姹傚垎绫�
+        /// </summary>
+        [SugarColumn(ColumnName = "FDEMANDCATEGORY", IsNullable = true)]
+        public string? FDemandCategory { get; set; }
+
+        /// <summary>
+        /// 璧峰鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "FSTART_DATE", IsNullable = true)]
+        public string? FStartDate { get; set; }
+
+        /// <summary>
+        /// 鎴鏃ユ湡
+        /// </summary>
+        [SugarColumn(ColumnName = "FEND_DATE", IsNullable = true)]
+        public string? FEndDate { get; set; }
+    }
+}
diff --git a/StandardPda/MES.Service/Modes/SalesOrderDetail.cs b/StandardPda/MES.Service/Modes/SalesOrderDetail.cs
index 0dd800e..ab20294 100644
--- a/StandardPda/MES.Service/Modes/SalesOrderDetail.cs
+++ b/StandardPda/MES.Service/Modes/SalesOrderDetail.cs
@@ -11,103 +11,296 @@
     /// <summary>
     ///     SEQ_sales搴忓垪
     /// </summary>
-    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_sales",
-        IsPrimaryKey = true)]
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SALES_ORDER_DETAIL_ID", IsPrimaryKey = true)]
     public decimal Id { get; set; }
-
-    /// <summary>
-    ///     璁㈠崟鍗曞彿
-    /// </summary>
-    [SugarColumn(ColumnName = "ORDER_ID")]
-    public string OrderId { get; set; }
-
-    /// <summary>
-    ///     搴忓彿
-    /// </summary>
-    [SugarColumn(ColumnName = "LINE_NUMBER")]
-    public long? LineNumber { get; set; }
-
-    /// <summary>
-    ///     浜у搧缂栫爜
-    /// </summary>
-    [SugarColumn(ColumnName = "PRODUCT_CODE")]
-    public string ProductCode { get; set; }
-
-    /// <summary>
-    ///     浜у搧鍚嶇О
-    /// </summary>
-    [SugarColumn(ColumnName = "PRODUCT_NAME")]
-    public string ProductName { get; set; }
-
-    /// <summary>
-    ///     浜у搧瑙勬牸
-    /// </summary>
-    [SugarColumn(ColumnName = "PRODUCT_SPEC")]
-    public string ProductSpec { get; set; }
-
-    /// <summary>
-    ///     棰勪氦璐ф棩鏈�
-    /// </summary>
-    [SugarColumn(ColumnName = "SCHEDULED_DELIVERY_DATE")]
-    public DateTime? ScheduledDeliveryDate { get; set; }
-
-    /// <summary>
-    ///     璁㈠崟鏁伴噺
-    /// </summary>
-    [SugarColumn(ColumnName = "ORDER_QUANTITY")]
-    public decimal? OrderQuantity { get; set; }
-
-    /// <summary>
-    ///     鍗曚綅
-    /// </summary>
-    [SugarColumn(ColumnName = "UNIT")]
-    public string Unit { get; set; }
-
-    /// <summary>
-    ///     鍗曚环
-    /// </summary>
-    [SugarColumn(ColumnName = "UNIT_PRICE")]
-    public decimal? UnitPrice { get; set; }
-
-    /// <summary>
-    ///     閲戦
-    /// </summary>
-    [SugarColumn(ColumnName = "AMOUNT")]
-    public decimal? Amount { get; set; }
-
-    /// <summary>
-    ///     瀹㈡埛浜у搧缂栫爜
-    /// </summary>
-    [SugarColumn(ColumnName = "CUSTOMER_PRODUCT_CODE")]
-    public string CustomerProductCode { get; set; }
-
-    /// <summary>
-    ///     宸蹭氦璐ф暟
-    /// </summary>
-    [SugarColumn(ColumnName = "DELIVERED_QUANTITY")]
-    public decimal? DeliveredQuantity { get; set; }
-
-    /// <summary>
-    ///     缁撴潫
-    /// </summary>
-    [SugarColumn(ColumnName = "IS_CLOSED")]
-    public string IsClosed { get; set; }
-
-    /// <summary>
-    ///     澶囨敞
-    /// </summary>
-    [SugarColumn(ColumnName = "REMARKS")]
-    public string Remarks { get; set; }
 
     /// <summary>
     ///     ERPID
     /// </summary>
     [SugarColumn(ColumnName = "ERP_ID")]
-    public string ErpId { get; set; }
+    public decimal? ErpID { get; set; }
 
     /// <summary>
     ///     ERP澶碔D
     /// </summary>
-    [SugarColumn(ColumnName = "ERP_HEAD_ID")]
-    public string ErpHeadId { get; set; }
+    [SugarColumn(ColumnName = "E_HID")]
+    public decimal? EHID { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "MATERIAL_ID")]
+    public string? MaterialId { get; set; }
+
+    /// <summary>
+    ///     閿�鍞崟浣�
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT_ID")]
+    public string? UnitId { get; set; }
+
+    /// <summary>
+    ///     閿�鍞暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "QTY")]
+    public decimal? Qty { get; set; }
+
+    /// <summary>
+    ///     璁′环鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "PRICE_UNIT_ID")]
+    public string? PriceUnitId { get; set; }
+
+    /// <summary>
+    ///     璁′环鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "PRICE_UNIT_QTY")]
+    public decimal? PriceUnitQty { get; set; }
+
+    /// <summary>
+    ///     瑕佽揣鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "DELIVERY_DATE")]
+    public DateTime? DeliveryDate { get; set; }
+
+    /// <summary>
+    ///     鏄惁璧犲搧
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_FREE")]
+    public decimal? IsFree { get; set; }
+
+    /// <summary>
+    ///     璐т富绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "OWNER_TYPE_ID")]
+    public string? OwnerTypeId { get; set; }
+
+    /// <summary>
+    ///     璐т富
+    /// </summary>
+    [SugarColumn(ColumnName = "OWNER_ID")]
+    public string? OwnerId { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "ENTRY_NOTE")]
+    public string? EntryNote { get; set; }
+
+    /// <summary>
+    ///     璁″垝璺熻釜鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "MTO_NO")]
+    public string? MtoNo { get; set; }
+
+    /// <summary>
+    ///     鎵瑰彿
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT")]
+    public string? Lot { get; set; }
+
+    /// <summary>
+    ///     鍙戣揣涓婇檺
+    /// </summary>
+    [SugarColumn(ColumnName = "DELIVERY_MAX_QTY")]
+    public decimal? DeliveryMaxQty { get; set; }
+
+    /// <summary>
+    ///     鍙戣揣涓嬮檺
+    /// </summary>
+    [SugarColumn(ColumnName = "DELIVERY_MIN_QTY")]
+    public decimal? DeliveryMinQty { get; set; }
+
+    /// <summary>
+    ///     瓒呭彂鎺у埗鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "OUT_LMT_UNIT_ID")]
+    public string? OutLmtUnitId { get; set; }
+
+    /// <summary>
+    ///     涓氬姟鍏抽棴
+    /// </summary>
+    [SugarColumn(ColumnName = "MRP_CLOSE_STATUS")]
+    public string? MrpCloseStatus { get; set; }
+
+    /// <summary>
+    ///     涓氬姟缁堟
+    /// </summary>
+    [SugarColumn(ColumnName = "MRP_TERMINATE_STATUS")]
+    public string? MrpTerminateStatus { get; set; }
+
+    /// <summary>
+    ///     缁堟鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "TERMINATE_DATE")]
+    public DateTime? TerminateDate { get; set; }
+
+    /// <summary>
+    ///     缁堟浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "TERMINATER_ID")]
+    public string? TerminaterId { get; set; }
+
+    /// <summary>
+    ///     婧愬崟绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "SRC_TYPE")]
+    public string? SrcType { get; set; }
+
+    /// <summary>
+    ///     婧愬崟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SRC_BILL_NO")]
+    public string? SrcBillNo { get; set; }
+
+    /// <summary>
+    ///     绱鍙戣揣閫氱煡鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "DELI_QTY")]
+    public decimal? DeliQty { get; set; }
+
+    /// <summary>
+    ///     绱鍑哄簱鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "STOCK_OUT_QTY")]
+    public decimal? StockOutQty { get; set; }
+
+    /// <summary>
+    ///     绱閫�璐ч�氱煡鏁伴噺锛堥攢鍞熀鏈級
+    /// </summary>
+    [SugarColumn(ColumnName = "BASE_RET_NOTICE_QTY")]
+    public decimal? BaseRetNoticeQty { get; set; }
+
+    /// <summary>
+    ///     绱閫�璐ф暟閲忥紙閿�鍞熀鏈級
+    /// </summary>
+    [SugarColumn(ColumnName = "BASE_RETURN_QTY")]
+    public decimal? BaseReturnQty { get; set; }
+
+    /// <summary>
+    ///     鍓╀綑鏈嚭鏁伴噺锛堥攢鍞熀鏈級
+    /// </summary>
+    [SugarColumn(ColumnName = "BASE_REMAIN_OUT_QTY")]
+    public decimal? BaseRemainOutQty { get; set; }
+
+    /// <summary>
+    ///     绱搴旀敹鏁伴噺锛堥攢鍞熀鏈級
+    /// </summary>
+    [SugarColumn(ColumnName = "BASEARQTY")]
+    public decimal? BASEARQTY { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SALES_ORDER")]
+    public string? SalesOrder { get; set; }
+
+    /// <summary>
+    ///    瀹㈡埛璁㈠崟鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "CUST_ORDER")]
+    public string? CustOrder { get; set; }
+
+    /// <summary>
+    ///    閿�鍞悎鍚岀紪鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "SALES_CONTRACT_NO")]
+    public string? SalesContractNo { get; set; }
+
+    /// <summary>
+    ///    鎴愬搧鏂欏彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///    鎴愬搧鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NAME")]
+    public string? ItemName { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛
+    /// </summary>
+    [SugarColumn(ColumnName = "CUST_ID")]
+    public string? CustId { get; set; }
+
+    /// <summary>
+    ///    閲囪喘鍒拌揣鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "ARRIVAL_DATE")]
+
+    public DateTime? ArrivalDate { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鐗╂枡瑙勬牸鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_MODEL")]
+    public string? ItemModel { get; set; }
+
+    /// <summary>
+    ///     璁㈠崟鏉ユ簮
+    /// </summary>
+    [SugarColumn(ColumnName = "DDLY")]
+    public string? Ddly { get; set; }
+
+    /// <summary>
+    /// 琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "FLINE_NO", IsNullable = true)]
+    public string? FLineNo { get; set; }
+
+    /// <summary>
+    /// 琛岀姸鎬�
+    /// </summary>
+    [SugarColumn(ColumnName = "FLINE_STATUS", IsNullable = true)]
+    public string? FLineStatus { get; set; }
+
+    /// <summary>
+    /// 鎵╁睍瀛楁
+    /// </summary>
+    [SugarColumn(ColumnName = "FEXTEND_FIELD", IsNullable = true)]
+    public string? FExtendField { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛
+    /// </summary>
+    [SugarColumn(ColumnName = "FCUSTOMER", IsNullable = true)]
+    public string? FCustomer { get; set; }
+
+    /// <summary>
+    /// 鏀惰揣浣嶇疆
+    /// </summary>
+    [SugarColumn(ColumnName = "FRECEIVE_LOCATION", IsNullable = true)]
+    public string? FReceiveLocation { get; set; }
+
+    /// <summary>
+    /// 渚涘簲缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "FSUPPLY_ORG", IsNullable = true)]
+    public string? FSupplyOrg { get; set; }
+
+    /// <summary>
+    /// 閮ㄩ棬
+    /// </summary>
+    [SugarColumn(ColumnName = "FDEPARTMENT", IsNullable = true)]
+    public string? FDepartment { get; set; }
+
+    /// <summary>
+    /// 涓氬姟鍛�
+    /// </summary>
+    [SugarColumn(ColumnName = "FSALES_PERSON", IsNullable = true)]
+    public string? FSalesPerson { get; set; }
+
+    /// <summary>
+    /// 椤圭洰
+    /// </summary>
+    [SugarColumn(ColumnName = "FPROJECT", IsNullable = true)]
+    public string? FProject { get; set; }
+
+    /// <summary>
+    /// 闇�姹傚垎绫�
+    /// </summary>
+    [SugarColumn(ColumnName = "FDEMAND_CATEGORY", IsNullable = true)]
+    public string? FDemandCategory { get; set; }
+
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/SalesReturnNotice.cs b/StandardPda/MES.Service/Modes/SalesReturnNotice.cs
index f3c462d..db6c500 100644
--- a/StandardPda/MES.Service/Modes/SalesReturnNotice.cs
+++ b/StandardPda/MES.Service/Modes/SalesReturnNotice.cs
@@ -1,83 +1,240 @@
-锘縰sing SqlSugar;
-
-namespace MES.Service.Modes;
-
-/// <summary>
-///     閿�鍞��璐ч�氱煡鍗曡〃
-/// </summary>
-[SugarTable("SALES_RETURN_NOTICE")]
-public class SalesReturnNotice
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+namespace MES.Service.Modes
 {
     /// <summary>
-    ///     SEQ_sales
-    /// </summary>
-    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_sales",
-        IsPrimaryKey = true)]
-    public decimal Id { get; set; }
+    /// 閿�鍞��璐ч�氱煡鍗曡〃
+    ///</summary>
+    [SugarTable("SALES_RETURN_NOTICE")]
+    public class SalesReturnNotice
+    {
+        /// <summary>
+        ///  
+        ///</summary>
+        [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_SALES_RETURN_NOTICE", IsPrimaryKey = true)]
+        public decimal? Id { get; set; }
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷 
+        ///</summary>
+        [SugarColumn(ColumnName = "BILL_TYPE")]
+        public string BillType { get; set; }
+        /// <summary>
+        /// 鍗曟嵁缂栧彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "BILL_NO")]
+        public string BillNo { get; set; }
+        /// <summary>
+        /// 鏃ユ湡 
+        ///</summary>
+        [SugarColumn(ColumnName = "F_DATE")]
+        public DateTime? FDate { get; set; }
+        /// <summary>
+        /// 缁撶畻甯佸埆 
+        ///</summary>
+        [SugarColumn(ColumnName = "CURRENCY")]
+        public string Currency { get; set; }
+        /// <summary>
+        /// 閿�鍞儴闂� 
+        ///</summary>
+        [SugarColumn(ColumnName = "SALES_DEPT")]
+        public string SalesDept { get; set; }
+        /// <summary>
+        /// 閫�璐у鎴� 
+        ///</summary>
+        [SugarColumn(ColumnName = "RETURN_CUSTOMER")]
+        public string ReturnCustomer { get; set; }
+        /// <summary>
+        /// 閫�璐у師鍥� 
+        ///</summary>
+        [SugarColumn(ColumnName = "RETURN_REASON")]
+        public string ReturnReason { get; set; }
+        /// <summary>
+        /// 浜よ揣鍦扮偣 
+        ///</summary>
+        [SugarColumn(ColumnName = "DELIVERY_LOCATION")]
+        public string DeliveryLocation { get; set; }
+        /// <summary>
+        /// 搴撳瓨閮ㄩ棬 
+        ///</summary>
+        [SugarColumn(ColumnName = "INVENTORY_DEPT")]
+        public string InventoryDept { get; set; }
+        /// <summary>
+        /// 搴撳瓨缁� 
+        ///</summary>
+        [SugarColumn(ColumnName = "INVENTORY_GROUP")]
+        public string InventoryGroup { get; set; }
+        /// <summary>
+        /// 浠撶鍛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "WAREHOUSE_MANAGER")]
+        public string WarehouseManager { get; set; }
+        /// <summary>
+        /// 閿�鍞粍 
+        ///</summary>
+        [SugarColumn(ColumnName = "SALES_GROUP")]
+        public string SalesGroup { get; set; }
+        /// <summary>
+        /// 閿�鍞憳 
+        ///</summary>
+        [SugarColumn(ColumnName = "SALES_PERSON")]
+        public string SalesPerson { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂� 
+        ///</summary>
+        [SugarColumn(ColumnName = "RECEIVER")]
+        public string Receiver { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂硅仈绯讳汉 
+        ///</summary>
+        [SugarColumn(ColumnName = "RECEIVER_CONTACT")]
+        public string ReceiverContact { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂瑰湴鍧� 
+        ///</summary>
+        [SugarColumn(ColumnName = "RECEIVER_ADDRESS")]
+        public string ReceiverAddress { get; set; }
+        /// <summary>
+        /// 鏀惰揣鏂瑰鍚� 
+        ///</summary>
+        [SugarColumn(ColumnName = "RECEIVER_NAME")]
+        public string ReceiverName { get; set; }
+        /// <summary>
+        /// 缁撶畻鏂� 
+        ///</summary>
+        [SugarColumn(ColumnName = "SETTLE_PARTY")]
+        public string SettleParty { get; set; }
+        /// <summary>
+        /// 鍒涘缓浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATED_BY")]
+        public string CreatedBy { get; set; }
+        /// <summary>
+        /// 鍒涘缓鏃堕棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATED_DATE")]
+        public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 淇敼浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "MODIFIED_BY")]
+        public string ModifiedBy { get; set; }
+        /// <summary>
+        /// 淇敼鏃堕棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "MODIFIED_DATE")]
+        public DateTime? ModifiedDate { get; set; }
+        /// <summary>
+        /// 鍏抽棴浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CLOSED_BY")]
+        public string ClosedBy { get; set; }
+        /// <summary>
+        /// 鍏抽棴鍘熷洜 
+        ///</summary>
+        [SugarColumn(ColumnName = "CLOSE_REASON")]
+        public string CloseReason { get; set; }
+        /// <summary>
+        /// 鍏抽棴鏃ユ湡 
+        ///</summary>
+        [SugarColumn(ColumnName = "CLOSE_DATE")]
+        public DateTime? CloseDate { get; set; }
+        /// <summary>
+        /// 瀹℃牳浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "APPROVED_BY")]
+        public string ApprovedBy { get; set; }
+        /// <summary>
+        /// 瀹℃牳鏃ユ湡 
+        ///</summary>
+        [SugarColumn(ColumnName = "APPROVED_DATE")]
+        public DateTime? ApprovedDate { get; set; }
+        /// <summary>
+        /// 浣滃簾鐘舵�� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CANCEL_STATUS")]
+        public string CancelStatus { get; set; }
+        /// <summary>
+        /// 浣滃簾浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CANCELLED_BY")]
+        public string CancelledBy { get; set; }
+        /// <summary>
+        /// 浣滃簾鏃ユ湡 
+        ///</summary>
+        [SugarColumn(ColumnName = "CANCEL_DATE")]
+        public DateTime? CancelDate { get; set; }
+        /// <summary>
+        /// 鍏抽棴鐘舵�� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CLOSE_STATUS")]
+        public string CloseStatus { get; set; }
+        /// <summary>
+        /// ERP澶碔D 
+        ///</summary>
+        [SugarColumn(ColumnName = "ERP_ID")]
+        public string ErpId { get; set; }
+        /// <summary>
+        /// 鍗曟嵁鐘舵�� 
+        ///</summary>
+        [SugarColumn(ColumnName = "BILL_STATUS")]
+        public string BillStatus { get; set; }
 
-    /// <summary>
-    ///     鍒跺崟浜�
-    /// </summary>
-    [SugarColumn(ColumnName = "CREATED_BY")]
-    public string CreatedBy { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃��鍥炵被鍨�
+        /// </summary>
+        [SugarColumn(ColumnName = "RETURN_TYPE")]
+        public string ReturnType { get; set; }
 
-    /// <summary>
-    ///     鍗曟嵁缂栧彿
-    /// </summary>
-    [SugarColumn(ColumnName = "DOCUMENT_ID")]
-    public string DocumentId { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃�绘暟閲�
+        /// </summary>
+        [SugarColumn(ColumnName = "TOTAL_QUANTITY")]
+        public decimal TotalQuantity { get; set; }
 
-    /// <summary>
-    ///     瀹℃牳浜哄悕绉�
-    /// </summary>
-    [SugarColumn(ColumnName = "APPROVED_BY")]
-    public string ApprovedBy { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃潵婧愬崟鎹被鍒�
+        /// </summary>
+        [SugarColumn(ColumnName = "SOURCE_DOCUMENT_CATEGORY")]
+        public string SourceDocumentCategory { get; set; }
 
-    /// <summary>
-    ///     鍒跺崟/瀹℃牳鏃ユ湡
-    /// </summary>
-    [SugarColumn(ColumnName = "CREATED_OR_APPROVED_DATE")]
-    public DateTime? CreatedOrApprovedDate { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃簮鍗曟嵁
+        /// </summary>
+        [SugarColumn(ColumnName = "SOURCE_DOCUMENT")]
+        public string SourceDocument { get; set; }
 
-    /// <summary>
-    ///     閮ㄩ棬浠g爜
-    /// </summary>
-    [SugarColumn(ColumnName = "DEPARTMENT_CODE")]
-    public string DepartmentCode { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃ˉ璐х粍缁�
+        /// </summary>
+        [SugarColumn(ColumnName = "REPLENISHMENT_ORGANIZATION")]
+        public string ReplenishmentOrganization { get; set; }
 
-    /// <summary>
-    ///     閮ㄩ棬鍚嶇О
-    /// </summary>
-    [SugarColumn(ColumnName = "DEPARTMENT_NAME")]
-    public string DepartmentName { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃鎴疯姹傛棩鏈�
+        /// </summary>
+        [SugarColumn(ColumnName = "CUSTOMER_REQUEST_DATE")]
+        public DateTime CustomerRequestDate { get; set; }
 
-    /// <summary>
-    ///     璐揣鍗曚綅浠g爜
-    /// </summary>
-    [SugarColumn(ColumnName = "PURCHASER_CODE")]
-    public string PurchaserCode { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃��璐т笟鍔″憳
+        /// </summary>
+        [SugarColumn(ColumnName = "RETURN_SALESMAN")]
+        public string ReturnSalesman { get; set; }
 
-    /// <summary>
-    ///     璐揣鍗曚綅鍚嶇О
-    /// </summary>
-    [SugarColumn(ColumnName = "PURCHASER_NAME")]
-    public string PurchaserName { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃��璐ч儴闂�
+        /// </summary>
+        [SugarColumn(ColumnName = "RETURN_DEPARTMENT")]
+        public string ReturnDepartment { get; set; }
 
-    /// <summary>
-    ///     涓氬姟鍛樹唬鐮�
-    /// </summary>
-    [SugarColumn(ColumnName = "SALESPERSON_CODE")]
-    public string SalespersonCode { get; set; }
+        /// <summary>
+        /// 鑾峰彇鎴栬缃��璐ц鏄�
+        /// </summary>
+        [SugarColumn(ColumnName = "RETURN_DESCRIPTION")]
+        public string ReturnDescription { get; set; }
 
-    /// <summary>
-    ///     涓氬姟鍛樺悕绉�
-    /// </summary>
-    [SugarColumn(ColumnName = "SALESPERSON_NAME")]
-    public string SalespersonName { get; set; }
 
-    /// <summary>
-    ///     ERPID
-    /// </summary>
-    [SugarColumn(ColumnName = "ERP_ID")]
-    public string ErpId { get; set; }
-}
\ No newline at end of file
+    }
+}
diff --git a/StandardPda/MES.Service/Modes/SalesReturnNoticeDetail.cs b/StandardPda/MES.Service/Modes/SalesReturnNoticeDetail.cs
index 3d64ef4..e6db49d 100644
--- a/StandardPda/MES.Service/Modes/SalesReturnNoticeDetail.cs
+++ b/StandardPda/MES.Service/Modes/SalesReturnNoticeDetail.cs
@@ -11,145 +11,225 @@
     /// <summary>
     ///     SEQ_sales
     /// </summary>
-    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_sales",
-        IsPrimaryKey = true)]
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_SALES_RETURN_NOTICE_DETAIL", IsPrimaryKey = true)]
     public decimal Id { get; set; }
 
     /// <summary>
-    ///     鍗曟嵁琛屽彿
+    ///     鐗╂枡缂栫爜
     /// </summary>
-    [SugarColumn(ColumnName = "LINE_NUMBER")]
-    public long? LineNumber { get; set; }
+    [SugarColumn(ColumnName = "MATERIAL_ID")]
+    public string MaterialId { get; set; }
 
     /// <summary>
-    ///     浜у搧浠g爜
+    ///     閿�鍞崟浣�
     /// </summary>
-    [SugarColumn(ColumnName = "PRODUCT_CODE")]
-    public string ProductCode { get; set; }
+    [SugarColumn(ColumnName = "SALES_UNIT_ID")]
+    public string SalesUnitId { get; set; }
 
     /// <summary>
-    ///     浜у搧鍚嶇О
+    ///     閿�鍞暟閲�
     /// </summary>
-    [SugarColumn(ColumnName = "PRODUCT_NAME")]
-    public string ProductName { get; set; }
+    [SugarColumn(ColumnName = "SALES_QUANTITY")]
+    public decimal SalesQuantity { get; set; }
 
     /// <summary>
-    ///     浜у搧瑙勬牸
+    ///     鏄惁璧犲搧
     /// </summary>
-    [SugarColumn(ColumnName = "PRODUCT_SPEC")]
-    public string ProductSpec { get; set; }
+    [SugarColumn(ColumnName = "IS_FREE")]
+    public string IsFree { get; set; }
 
     /// <summary>
-    ///     閲戦
+    ///     閫�璐ф棩鏈�
     /// </summary>
-    [SugarColumn(ColumnName = "AMOUNT")]
-    public decimal? Amount { get; set; }
+    [SugarColumn(ColumnName = "RETURN_DATE")]
+    public DateTime? ReturnDate { get; set; }
 
     /// <summary>
-    ///     鍗曚环
+    ///     浠撳簱
     /// </summary>
-    [SugarColumn(ColumnName = "UNIT_PRICE")]
-    public decimal? UnitPrice { get; set; }
+    [SugarColumn(ColumnName = "WAREHOUSE")]
+    public string Warehouse { get; set; }
 
     /// <summary>
-    ///     鏁伴噺
+    ///     璁″垝璺熻釜鍙�
     /// </summary>
-    [SugarColumn(ColumnName = "QUANTITY")]
-    public decimal? Quantity { get; set; }
-
-    /// <summary>
-    ///     鍑哄簱鏁伴噺
-    /// </summary>
-    [SugarColumn(ColumnName = "OUT_QUANTITY")]
-    public decimal? OutQuantity { get; set; }
+    [SugarColumn(ColumnName = "PLAN_TRACKING_NUMBER")]
+    public string PlanTrackingNumber { get; set; }
 
     /// <summary>
     ///     鎵瑰彿
     /// </summary>
-    [SugarColumn(ColumnName = "BATCH_NUMBER")]
-    public string BatchNumber { get; set; }
-
-    /// <summary>
-    ///     閫�璐ф暟閲�
-    /// </summary>
-    [SugarColumn(ColumnName = "RETURN_QUANTITY")]
-    public decimal? ReturnQuantity { get; set; }
-
-    /// <summary>
-    ///     鍙戣揣鏁伴噺
-    /// </summary>
-    [SugarColumn(ColumnName = "DELIVERY_QUANTITY")]
-    public decimal? DeliveryQuantity { get; set; }
+    [SugarColumn(ColumnName = "LOT_NUMBER")]
+    public string LotNumber { get; set; }
 
     /// <summary>
     ///     澶囨敞
     /// </summary>
-    [SugarColumn(ColumnName = "REMARKS")]
-    public string Remarks { get; set; }
+    [SugarColumn(ColumnName = "NOTE")]
+    public string Note { get; set; }
 
     /// <summary>
-    ///     閿�鍞鍗曞崟鍙�
+    ///     閫�璐х被鍨�
     /// </summary>
-    [SugarColumn(ColumnName = "SALES_ORDER_ID")]
-    public string SalesOrderId { get; set; }
+    [SugarColumn(ColumnName = "RETURN_TYPE")]
+    public string ReturnType { get; set; }
 
     /// <summary>
-    ///     閿�鍞鍗曞垎褰�
+    ///     搴撳瓨鍗曚綅
     /// </summary>
-    [SugarColumn(ColumnName = "SALES_ORDER_ENTRY")]
-    public string SalesOrderEntry { get; set; }
+    [SugarColumn(ColumnName = "INVENTORY_UNIT")]
+    public string InventoryUnit { get; set; }
 
     /// <summary>
-    ///     閿�鍞鍗旾D
+    ///     搴撳瓨鏁伴噺
     /// </summary>
-    [SugarColumn(ColumnName = "SALES_ORDER_DETAIL_ID")]
-    public string SalesOrderDetailId { get; set; }
+    [SugarColumn(ColumnName = "INVENTORY_QUANTITY")]
+    public decimal InventoryQuantity { get; set; }
 
     /// <summary>
-    ///     鍩烘湰鍗曚环
+    ///     璐т富绫诲瀷
     /// </summary>
-    [SugarColumn(ColumnName = "BASE_UNIT_PRICE")]
-    public decimal? BaseUnitPrice { get; set; }
+    [SugarColumn(ColumnName = "OWNER_TYPE_ID")]
+    public string OwnerTypeId { get; set; }
 
     /// <summary>
-    ///     鍩烘湰鍗曚綅鏁伴噺
+    ///     璐т富
     /// </summary>
-    [SugarColumn(ColumnName = "BASE_UNIT_QUANTITY")]
-    public decimal? BaseUnitQuantity { get; set; }
+    [SugarColumn(ColumnName = "OWNER_ID")]
+    public string OwnerId { get; set; }
 
     /// <summary>
-    ///     浠撳簱浠g爜
+    ///     婧愬崟绫诲瀷
     /// </summary>
-    [SugarColumn(ColumnName = "WAREHOUSE_CODE")]
-    public string WarehouseCode { get; set; }
+    [SugarColumn(ColumnName = "SOURCE_BILL_TYPE")]
+    public string SourceBillType { get; set; }
 
     /// <summary>
-    ///     浠撳簱鍚嶇О
+    ///     婧愬崟鍗曞彿
     /// </summary>
-    [SugarColumn(ColumnName = "WAREHOUSE_NAME")]
-    public string WarehouseName { get; set; }
+    [SugarColumn(ColumnName = "SOURCE_BILL_NO")]
+    public string SourceBillNo { get; set; }
 
     /// <summary>
-    ///     鍩烘湰鍗曚綅鍑哄簱鏁伴噺
+    ///     璁㈠崟鍗曞彿
     /// </summary>
-    [SugarColumn(ColumnName = "BASE_UNIT_OUT_QUANTITY")]
-    public decimal? BaseUnitOutQuantity { get; set; }
+    [SugarColumn(ColumnName = "ORDER_BILL_NO")]
+    public string OrderBillNo { get; set; }
 
     /// <summary>
-    ///     鍗曚綅
+    ///     ERP琛孖D
     /// </summary>
-    [SugarColumn(ColumnName = "UNIT")]
-    public string Unit { get; set; }
-
-    /// <summary>
-    ///     ERPID
-    /// </summary>
-    [SugarColumn(ColumnName = "ERP_ID")]
-    public string ErpId { get; set; }
+    [SugarColumn(ColumnName = "ERP_LINE_ID")]
+    public string ErpLineId { get; set; }
 
     /// <summary>
     ///     ERP澶碔D
     /// </summary>
     [SugarColumn(ColumnName = "ERP_HEAD_ID")]
     public string ErpHeadId { get; set; }
+
+    /// <summary>
+    /// 琛屽彿 / Line number
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NUMBER", SqlParameterDbType = System.Data.DbType.Int32)]
+    public int? FLineNumber { get; set; }
+
+    /// <summary>
+    /// 琛岀姸鎬� / Line status (e.g. 'Active','Cancelled')
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_STATUS", Length = 50)]
+    public string FLineStatus { get; set; }
+
+    /// <summary>
+    /// 閫�娆惧鎴风紪鍙� / Refund customer ID
+    /// </summary>
+    [SugarColumn(ColumnName = "REFUND_CUSTOMER", Length = 100)]
+    public string FRefundCustomer { get; set; }
+
+    /// <summary>
+    /// 渚涘簲鍟嗙紪鐮� / Supplier code
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPPLIER", Length = 100)]
+    public string FSupplier { get; set; }
+
+    /// <summary>
+    /// 鍏嶈垂鍝佺被鍨� / Freebie type (Sample/Gift etc.)
+    /// </summary>
+    [SugarColumn(ColumnName = "FREEBIE_TYPE", Length = 50)]
+    public string FFreebieType { get; set; }
+
+    /// <summary>
+    /// 鍏嶈垂鍝佸師鍥� / Freebie reason description
+    /// </summary>
+    [SugarColumn(ColumnName = "FREEBIE_REASON", Length = 200)]
+    public string FFreebieReason { get; set; }
+
+    /// <summary>
+    /// 婧愬ご鍗曟嵁琛屽彿 / Source document line number
+    /// </summary>
+    [SugarColumn(ColumnName = "SOURCE_DOC_LINE_NO", SqlParameterDbType = System.Data.DbType.Int32)]
+    public int? FSourceDocLineNo { get; set; }
+
+    /// <summary>
+    /// 婧愬ご鍗曟嵁瀛愯鍙� / Source document sub-line number
+    /// </summary>
+    [SugarColumn(ColumnName = "SOURCE_DOC_SUB_LINE_NO", SqlParameterDbType = System.Data.DbType.Int32)]
+    public int? FSourceDocSubLineNo { get; set; }
+
+    /// <summary>
+    /// 鏉ユ簮鍗曟嵁绫诲瀷 / Source document type (PO/SO/Invoice etc.)
+    /// </summary>
+    [SugarColumn(ColumnName = "SOURCE_DOC_TYPE", Length = 50)]
+    public string FSourceDocType { get; set; }
+
+    /// <summary>
+    /// 鍘熷鍗曟嵁琛屽彿 / Original document line number
+    /// </summary>
+    [SugarColumn(ColumnName = "ORIGINAL_DOC_LINE_NO", SqlParameterDbType = System.Data.DbType.Int32)]
+    public int? FOriginalDocLineNo { get; set; }
+
+    /// <summary>
+    /// 琛ヨ揣缁勭粐浠g爜 / Replenishment organization code
+    /// </summary>
+    [SugarColumn(ColumnName = "REPLENISH_ORG", Length = 50)]
+    public string FReplenishOrg { get; set; }
+
+    /// <summary>
+    /// 鏀惰揣缁勭粐浠g爜 / Receiving organization code
+    /// </summary>
+    [SugarColumn(ColumnName = "RECEIVING_ORG", Length = 50)]
+    public string FReceivingOrg { get; set; }
+
+    /// <summary>
+    /// 鍘熶笟鍔″憳ID / Original salesman ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ORIGINAL_SALESMAN", Length = 50)]
+    public string FOriginalSalesman { get; set; }
+
+    /// <summary>
+    /// 鍘熼儴闂ㄤ唬鐮� / Original department code
+    /// </summary>
+    [SugarColumn(ColumnName = "ORIGINAL_DEPT", Length = 50)]
+    public string FOriginalDept { get; set; }
+
+    /// <summary>
+    /// 椤圭洰缂栧彿 / Project number
+    /// </summary>
+    [SugarColumn(ColumnName = "PROJECT", Length = 100)]
+    public string FProject { get; set; }
+
+    /// <summary>
+    /// 閫�璐у師鍥犲垎绫� / Return reason category
+    /// </summary>
+    [SugarColumn(ColumnName = "RETURN_REASON", Length = 200)]
+    public string FReturnReason { get; set; }
+
+    /// <summary>
+    /// 閫�璐ц缁嗚鏄� / Detailed return description
+    /// <example>璐х墿鍦ㄨ繍杈撹繃绋嬩腑鍙戠敓鐮存崯</example>
+    /// </summary>
+    [SugarColumn(ColumnName = "RETURN_DESCRIPTION", Length = 4000)]
+    public string FReturnDescription { get; set; }
+
+
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeDetailManager.cs b/StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeDetailManager.cs
new file mode 100644
index 0000000..d083dde
--- /dev/null
+++ b/StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeDetailManager.cs
@@ -0,0 +1,78 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using MES.Service.DB;
+using MES.Service.Modes;
+
+namespace MES.Service.service
+{
+public class SalesDeliveryNoticeDetailManager : Repository<SalesDeliveryNoticeDetail>
+{
+ 
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 SalesDeliveryNoticeDetailManager.cs
+
+
+    #region 鏁欏鏂规硶
+    /// <summary>
+    /// 浠撳偍鏂规硶婊¤冻涓嶄簡澶嶆潅涓氬姟闇�姹傦紝涓氬姟浠g爜璇峰湪杩欓噷闈㈠畾涔夋柟娉�
+    /// </summary>
+    public void Study()
+    {
+	     
+	   /*********鏌ヨ*********/
+
+        var data1 = base.GetById(1);//鏍规嵁ID鏌ヨ
+        var data2 = base.GetList();//鏌ヨ鎵�鏈�
+        var data3 = base.GetList(it => 1 == 1);  //鏍规嵁鏉′欢鏌ヨ  
+        //var data4 = base.GetSingle(it => 1 == 1);//鏍规嵁鏉′欢鏌ヨ涓�鏉�,濡傛灉瓒呰繃涓�鏉′細鎶ラ敊
+
+        var p = new PageModel() { PageIndex = 1, PageSize = 2 };// 鍒嗛〉鏌ヨ
+        var data5 = base.GetPageList(it => 1 == 1, p);
+        Console.Write(p.TotalCount);//杩斿洖鎬绘暟
+
+        var data6 = base.GetPageList(it => 1 == 1, p, it => SqlFunc.GetRandom(), OrderByType.Asc);// 鍒嗛〉鏌ヨ鍔犳帓搴�
+        Console.Write(p.TotalCount);//杩斿洖鎬绘暟
+     
+        List<IConditionalModel> conModels = new List<IConditionalModel>(); //缁勮鏉′欢鏌ヨ浣滀负鏉′欢瀹炵幇 鍒嗛〉鏌ヨ鍔犳帓搴�
+        conModels.Add(new ConditionalModel() { FieldName= typeof(SalesDeliveryNoticeDetail).GetProperties()[0].Name, ConditionalType = ConditionalType.Equal, FieldValue = "1" });//id=1
+        var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom(), OrderByType.Asc);
+
+        base.AsQueryable().Where(x => 1 == 1).ToList();//鏀寔浜嗚浆鎹㈡垚queryable,鎴戜滑鍙互鐢╭ueryable瀹炵幇澶嶆潅鍔熻兘
+
+ 
+
+        /*********鎻掑叆*********/
+        var insertData = new SalesDeliveryNoticeDetail() { };//娴嬭瘯鍙傛暟
+        var insertArray = new SalesDeliveryNoticeDetail[] { insertData };
+        base.Insert(insertData);//鎻掑叆
+        base.InsertRange(insertArray);//鎵归噺鎻掑叆
+        var id = base.InsertReturnIdentity(insertData);//鎻掑叆杩斿洖鑷鍒�
+        base.AsInsertable(insertData).ExecuteCommand();//鎴戜滑鍙互杞垚 Insertable瀹炵幇澶嶆潅鎻掑叆
+
+
+
+		/*********鏇存柊*********/
+	    var updateData = new SalesDeliveryNoticeDetail() {  };//娴嬭瘯鍙傛暟
+        var updateArray = new SalesDeliveryNoticeDetail[] { updateData };//娴嬭瘯鍙傛暟
+        base.Update(updateData);//鏍规嵁瀹炰綋鏇存柊
+        base.UpdateRange(updateArray);//鎵归噺鏇存柊
+        //base.Update(it => new SalesDeliveryNoticeDetail() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// 鍙洿鏂癈lassName鍒楀拰CreateTime鍒楋紝鍏跺畠鍒椾笉鏇存柊锛屾潯浠秈d=1
+        base.AsUpdateable(updateData).ExecuteCommand();  //杞垚Updateable鍙互瀹炵幇澶嶆潅鐨勬彃鍏�
+
+
+
+		/*********鍒犻櫎*********/
+	    var deldata = new SalesDeliveryNoticeDetail() {  };//娴嬭瘯鍙傛暟
+        base.Delete(deldata);//鏍规嵁瀹炰綋鍒犻櫎
+        base.DeleteById(1);//鏍规嵁涓婚敭鍒犻櫎
+        base.DeleteById(new int[] { 1,2});//鏍规嵁涓婚敭鏁扮粍鍒犻櫎
+        base.Delete(it=>1==2);//鏍规嵁鏉′欢鍒犻櫎
+        base.AsDeleteable().Where(it=>1==2).ExecuteCommand();//杞垚Deleteable瀹炵幇澶嶆潅鐨勬搷浣�
+    } 
+    #endregion
+
+ 
+ }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs b/StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs
new file mode 100644
index 0000000..34d57b6
--- /dev/null
+++ b/StandardPda/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs
@@ -0,0 +1,306 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using MES.Service.DB;
+using MES.Service.Modes;
+using MES.Service.Dto.webApi;
+using MES.Service.service.BasicData;
+using System.Globalization;
+
+namespace MES.Service.service
+{
+    public class SalesDeliveryNoticeManager : Repository<SalesDeliveryNotice>
+    {
+
+        //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+        private readonly SalesDeliveryNoticeDetailManager _SalesDeliveryDetailManager =
+            new();
+        //ErpSalesRerurn
+        public bool Save(ErpSalesDelivery SalesDelivery)
+        {
+            var erpSalesDeliveryDto = SalesDelivery.OrderDto;
+            var mesSalesDelivery = ConvertErpToSalesDelivery(SalesDelivery.OrderDto);
+            var mesSalesDeliveryDatas = ConvertErpToSalesDeliveryDetail(SalesDelivery.Items);
+
+            return UseTransaction(db =>
+            {
+                switch (erpSalesDeliveryDto.Type)
+                {
+                    // case "2":
+                    //     return InsertData(db, mesSalesReturn, mesSalesReturnDatas,
+                    //         rohInErpRohIn.FBILLTYPE)
+                    //         ? 1
+                    //         : 0;
+                    case "3":
+                        return UpdateData(db, mesSalesDelivery, mesSalesDeliveryDatas) ? 1 : 0;
+                    case "2":
+                    case "4":
+                        return SaveOrUpdateData(db, mesSalesDelivery, mesSalesDeliveryDatas, erpSalesDeliveryDto.Type)
+                            ? 1
+                            : 0;
+                    default:
+                        throw new NotImplementedException(
+                            $"type娌℃湁{erpSalesDeliveryDto.Type}杩欎釜绫诲瀷");
+                }
+            }) > 0;
+        }
+
+        private bool UpdateData(SqlSugarScope db, SalesDeliveryNotice mesSalesDelivery,
+            List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas)
+        {
+            var decimals = mesSalesDeliveryDatas.Select(s => s.Id).ToArray();
+            var update = base.DeleteById(mesSalesDelivery.Id);
+            var insertOrUpdate = db
+                .Deleteable<SalesDeliveryNoticeDetail>().In(decimals)
+                .ExecuteCommand() > 0;
+
+            if (update && insertOrUpdate) return true;
+            throw new NotImplementedException("鏇存柊澶辫触");
+        }
+
+        // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+        private bool SaveOrUpdateData(SqlSugarScope db, SalesDeliveryNotice mesSalesDelivery,
+            List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas, string type)
+        {
+            if (mesSalesDelivery.Id != null) base.DeleteById(mesSalesDelivery.Id);
+
+            if (mesSalesDeliveryDatas.Count > 0)
+                db.Deleteable<SalesDeliveryNoticeDetail>()
+                    .Where(s => s.ErpHeadId == mesSalesDelivery.ErpId).ExecuteCommand();
+
+            var orUpdate = base.Insert(mesSalesDelivery);
+            //var baOrUpdate = _SalesDeliveryDetailManager.InsertRange(mesSalesDeliveryDatas);
+            foreach (var item in mesSalesDeliveryDatas)
+            {
+                _SalesDeliveryDetailManager.Insert(item);
+            }
+
+            //if (orUpdate && baOrUpdate) return true;
+            return orUpdate;
+
+
+            throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+        }
+
+        // 鎵归噺淇濆瓨璁板綍鐨勬柟娉�
+        public bool SaveList(List<ErpSalesDelivery> salesOrder)
+        {
+            var result = salesOrder.Select(Save).ToList();
+            return result.All(b => b);
+        }
+
+        private SalesDeliveryNotice ConvertErpToSalesDelivery(
+            ErpSalesDeliveryDto erpDto)
+        {
+            DateTime parsedDate;
+
+            // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"
+            DateTime? ParseDateTime(string dateStr)
+            {
+                if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
+                        CultureInfo.InvariantCulture,
+                        DateTimeStyles.None,
+                        out parsedDate))
+                    return parsedDate;
+
+                return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+            }
+
+            var salesOrder = new SalesDeliveryNotice
+            {
+                BillNo = erpDto.FBillNo,
+                ErpId = erpDto.ErpID,
+                FDate = ParseDateTime(erpDto.FDate) ?? null,
+                BillType = erpDto.FBillTypeID, // 鍗曟嵁绫诲瀷
+                //Currency = erpDto.FSettleCurrld, // 缁撶畻甯佸埆
+                SalesDept = erpDto.FSaleDeptId, //閿�鍞儴闂�
+                //Customer = erpDto.FCustomerID, // 瀹㈡埛
+                DeliveryMethod = erpDto.FHeadDeliveryWay, // 浜よ揣鏂瑰紡
+                //DeliveryLocation = erpDto.FHeadLocId, // 浜よ揣鍦扮偣
+                //Carrier = erpDto.FCarrierID, // 鎵胯繍鍟�
+                //TransportNo = erpDto.FCarriageNO, // 杩愯緭鍗曞彿
+                //BillNoType = erpDto.FCarriageNO, // 鍗曟嵁鐘舵��
+                //DeliveryDept = erpDto.FDeliveryDeptID, // 鍙戣揣閮ㄩ棬
+                //InventoryGroup = erpDto.FStockerGroupId, // 搴撳瓨缁�
+                //WarehouseManager = erpDto.FStockerId, // 浠撶鍛�
+                //SalesGroup = erpDto.FSaleGroupId, // 閿�鍞粍
+                SalesPerson = erpDto.FSalerId,//閿�鍞憳
+                //Receiver = erpDto.FReceiveCusId, // 鏀惰揣鏂�
+                //ReceiverContact = erpDto.FReceiveCusContact, // 鏀惰揣鏂硅仈绯讳汉
+                ReceiverAddress = erpDto.FReceiveAddress, // 鏀惰揣鏂瑰湴鍧�
+                //ReceiverName = erpDto.FLinkMan, // 鏀惰揣鏂瑰鍚�
+                //LinkPhone    = erpDto.FLinkPhone,//鑱旂郴鐢佃瘽
+                //SettleParty = erpDto.FSettleID, // 缁撶畻鏂�
+                //PayerParty = erpDto.FPayerID,//浠樻鏂�
+                //CreatedBy = erpDto.FCreatorId, // 鍒涘缓浜�
+                CreatedDate = ParseDateTime(erpDto.FCreateDate) ?? null, // 鍒涘缓鏃堕棿
+                                                                         //ModifiedBy = erpDto.FModifierId, // 淇敼浜�
+                                                                         //ModifiedDate = ParseDateTime(erpDto.FModifyDate) ?? null, // 淇敼鏃堕棿
+                                                                         //ClosedBy = erpDto.FCloserId, // 鍏抽棴浜�
+                                                                         //CloseReason = erpDto.FCloseReason, // 鍏抽棴鍘熷洜
+                                                                         // CloseDate = ParseDateTime(erpDto.FCloseDate) ?? null, // 鍏抽棴鏃ユ湡
+                ApprovedBy = erpDto.FApproverId, // 瀹℃牳浜�
+                ApprovedDate = ParseDateTime(erpDto.FApproveDate) ?? null, // 瀹℃牳鏃ユ湡
+                //CancelStatus = erpDto.FCancelStatus, // 浣滃簾鐘舵��
+                //CancelledBy = erpDto.FCancellerId, // 浣滃簾浜�
+                //CancelDate = ParseDateTime(erpDto.FCancelDate) ?? null, // 浣滃簾鏃ユ湡
+                //CloseStatus = erpDto.FBillCloseStatus, // 鍏抽棴鐘舵��
+                BillStatus = erpDto.FDocumentStatus, //鍗曟嵁鐘舵��
+                DeliveryOrg = erpDto.FDeliveryOrgID, //鍙戣揣缁勭粐
+                //SalesOrg    = erpDto.FSaleOrgId //閿�鍞粍缁�
+                FSourceCategory = erpDto.FSourceCategory,
+                FSourceDocument = erpDto.FSourceDocument,
+                FDeliveryDate = erpDto.FDeliveryDate,
+                FProject = erpDto.FProject,
+                FCustomerPo = erpDto.FCustomerPo,
+                FShippingPolicy = erpDto.FShippingPolicy,
+                FShippingPort = erpDto.FShippingPort,
+                FDestinationPort = erpDto.FDestinationPort,
+                FReceiverContactID = erpDto.FReceiverContactID,
+                FEntryNote = erpDto.FEntryNote,
+                FVersionNo = erpDto.FVersionNo,
+                FBusinessType = erpDto.FBusinessType,
+                FHEADLOCID = erpDto.FHEADLOCID,
+                FCustId = erpDto.FCustId,
+                FNote = erpDto.FNote
+            };
+
+            var single = base.GetSingle(it => it.ErpId == erpDto.ErpID);
+            if (single != null) salesOrder.Id = single.Id;
+
+            if (salesOrder.ErpId is null || salesOrder.ErpId=="")
+            {
+                throw new NotImplementedException(
+    $"琛ㄥごErpID涓嶈兘涓虹┖");
+            }
+            return salesOrder;
+        }
+
+        private List<SalesDeliveryNoticeDetail> ConvertErpToSalesDeliveryDetail(
+            List<ErpSalesDeliveryDetailDto> erpDtoList)
+
+        {
+            var salesOrderSubList =
+                new List<SalesDeliveryNoticeDetail>();
+
+            DateTime parsedDate;
+            // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"
+            DateTime? ParseDateTime(string dateStr)
+            {
+                if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
+                        CultureInfo.InvariantCulture,
+                        DateTimeStyles.None,
+                        out parsedDate))
+                    return parsedDate;
+
+                return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+            }
+
+
+
+            foreach (var erpDto in erpDtoList)
+            {
+                var salesOrderSub = new SalesDeliveryNoticeDetail
+                {
+                    ErpLineId = erpDto.ErpID,//ERP琛孖D
+                    ErpHeadId = erpDto.EHID,//ERP澶碔D
+                    MaterialId = erpDto.FMaterialId,//鐗╂枡缂栧彿
+                    //MaterialName = erpDto.FMaterialName,// 鐗╂枡鍚嶇О
+                    //MaterialSpecification = erpDto.FMaterialModel,//瑙勬牸鍨嬪彿
+                    SalesUnitId = erpDto.FUnitID,//閿�鍞崟浣�
+                    SalesQuantity = Convert.ToDecimal(erpDto.FQty),//閿�鍞暟閲�
+                    //IsFree = erpDto.FIsFree,//鏄惁璧犲搧
+                    //DeliveryDate = ParseDateTime(erpDto.FDeliverydate),//瑕佽揣鏃ユ湡
+                    //Warehouse = erpDto.FStockId,//鍑鸿揣浠撳簱
+                    //PlanTrackingNumber = erpDto.FMtoNo,//璁″垝璺熻釜鍙�
+                    //LotNumber = erpDto.FLot,//鎵瑰彿
+                    SrcBillNo = erpDto.FSrcBillNo,//婧愬崟缂栧彿
+                    //PriceQty = erpDto.FPriceUnitQty,//璁′环鏁伴噺
+                    OwnerId = erpDto.FOwnerIdHead,//璐т富
+                    //InventoryUnit = erpDto.FStockUnitID,//搴撳瓨鍗曚綅
+                    //InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty),//搴撳瓨鏁伴噺
+                    //MaterialCategory = erpDto.FMaterialType,//鐗╂枡绫诲埆
+                    PlanDeliveryDate = ParseDateTime(erpDto.FPlanDeliveryDate),//璁″垝鍙戣揣鏃ユ湡
+                    //OutLmtUnit = erpDto.FOutLmtUnit,//瓒呭彂鎺у埗鍗曚綅
+                    //OutMaxQty = erpDto.FOutMaxQty,//鍑哄簱涓婇檺
+                    //OutMinQty = erpDto.FOutMinQty,//鍑哄簱涓嬮檺
+                    DeliveryLoc = erpDto.FDeliveryLoc,//浜よ揣鍦扮偣
+                    DeliverylAddress = erpDto.FDeliveryLAddress,//浜よ揣鍦板潃
+                    SourceBillNo = erpDto.FSrcBillNo,//鍘熷崟鍗曞彿
+                    //OrderBillNo = erpDto.FOrderNo,//璁㈠崟鍗曞彿
+                    //TerminationStatus = erpDto.FTerminationStatus,//缁堟鐘舵��
+                    //TerminationDate = ParseDateTime(erpDto.FTerminateDate),//涓氬姟缁堟鏃ユ湡
+                    //SumOutQty = erpDto.FSumOutQty,//绱鍑哄簱鏁伴噺
+                    //RemainOutQty = erpDto.FRemainOutQty,//鏈嚭搴撴暟閲�
+                    //NOTE = erpDto.FEntrynote//澶囨敞
+                    FDeliveryDate = erpDto.FDeliveryDate,
+                    FMapId = erpDto.FMapId,
+                    FMapName = erpDto.FMapName,
+                    FMapId2 = erpDto.FMapId2,
+                    FProject = erpDto.FProject,
+                    FStorageLocation = erpDto.FStorageLocation,
+                    FFreeItemType = erpDto.FFreeItemType,
+                    FBodyNote = erpDto.FBodyNote,
+                    FAvailableStock = erpDto.FAvailableStock,
+                    FInventoryQueryTime = erpDto.FInventoryQueryTime,
+                    FLineStatus = erpDto.FLineStatus,
+                    FReceiveAddressFull = erpDto.FReceiveAddressFull,
+                    FReceiverContact = erpDto.FReceiverContact,
+                    FReturnExchangeAllowed = erpDto.FReturnExchangeAllowed,
+                    FOutsourcedProcessQty = erpDto.FOutsourcedProcessQty,
+                    FAvailableDate = erpDto.FAvailableDate,
+                    FCommitmentDate = erpDto.FCommitmentDate,
+                    FCustomerConfirmShipDate = erpDto.FCustomerConfirmShipDate,
+                    FPlannedOrg = erpDto.FPlannedOrg,
+                    FVendorDirectShip = erpDto.FVendorDirectShip,
+                    FSupplySource = erpDto.FSupplySource,
+                    FSupplyType = erpDto.FSupplyType,
+                    FSupplyOrg = erpDto.FSupplyOrg,
+                    FSupplier = erpDto.FSupplier,
+                    FShippingMethod = erpDto.FShippingMethod,
+                    FMRPDR = erpDto.FMRPDR,
+                    FDemandCategory = erpDto.FDemandCategory,
+                    FInventoryPlanning = erpDto.FInventoryPlanning,
+                    FLineRemark = erpDto.FLineRemark,
+                    FSourceDocCategory = erpDto.FSourceDocCategory,
+                    FSourceDocNo = erpDto.FSourceDocNo,
+                    FSourceDocLineNo = erpDto.FSourceDocLineNo,
+                    FLINE_NO = erpDto.FLINE_NO
+
+                };
+                if (salesOrderSub.ErpLineId is null || salesOrderSub.ErpLineId=="")
+                {
+                    throw new NotImplementedException(
+    $"鏄庣粏琛孍rpID锛圗RP琛孖D锛変笉鑳戒负绌�");
+                }
+                if (salesOrderSub.ErpHeadId is null || salesOrderSub.ErpHeadId == "")
+                {
+                    throw new NotImplementedException(
+    $"鏄庣粏琛孍HID锛圗RP澶碔D锛変笉鑳戒负绌�");
+                }
+                var single = _SalesDeliveryDetailManager.GetSingle(it =>
+                    it.ErpLineId == salesOrderSub.ErpLineId);
+                if (single != null) salesOrderSub.Id = single.Id;
+                var mesLinkU9 = Db.Queryable<MesLinkU9>()
+.Where(x => x.U9Id == erpDto.FMaterialId
+    && x.OrgId == erpDto.FSupplyOrg
+    && x.TableType == "MES_ITEMS").First();
+
+                if (mesLinkU9 != null) salesOrderSub.MaterialId = mesLinkU9.MesId;
+
+
+                var mesLinkU92 = Db.Queryable<MesLinkU9>()
+                    .Where(x => x.U9Id == erpDto.FProject
+                                && x.OrgId == erpDto.FSupplyOrg
+                                && x.TableType == "MES_PROJECT").First();
+
+                if (mesLinkU92 != null) salesOrderSub.FProject = mesLinkU92.MesId;
+                salesOrderSubList.Add(salesOrderSub);
+            }
+
+            return salesOrderSubList;
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/BasicData/SalesOrderManager.cs b/StandardPda/MES.Service/service/BasicData/SalesOrderManager.cs
index 7017bb6..dfe1746 100644
--- a/StandardPda/MES.Service/service/BasicData/SalesOrderManager.cs
+++ b/StandardPda/MES.Service/service/BasicData/SalesOrderManager.cs
@@ -1,6 +1,10 @@
-锘縰sing MES.Service.DB;
+锘縰sing AngleSharp.Dom;
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
 using MES.Service.Modes;
 using SqlSugar;
+using System.Data;
+using System.Globalization;
 
 namespace MES.Service.service.BasicData;
 
@@ -8,72 +12,166 @@
 {
     //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
 
-    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 SalesOrderManager.cs
-
-
-    #region 鏁欏鏂规硶
-
-    /// <summary>
-    ///     浠撳偍鏂规硶婊¤冻涓嶄簡澶嶆潅涓氬姟闇�姹傦紝涓氬姟浠g爜璇峰湪杩欓噷闈㈠畾涔夋柟娉�
-    /// </summary>
-    public void Study()
+    private readonly SalesOrderDetailManager _SalesOrderDetailManager = new();
+    //ErpSalesOrder
+    public bool Save(ErpSalesOrder SalesOrder)
     {
-        /*********鏌ヨ*********/
+        var erpSalesOrderDto = SalesOrder.OrderDto;
+        var mesSalesOrder = ConvertErpToSalesOrder(SalesOrder.OrderDto);
+        var mesSalesOrderDatas = ConvertErpToSalesOrderDetail(SalesOrder.Items);
 
-        var data1 = base.GetById(1); //鏍规嵁ID鏌ヨ
-        var data2 = base.GetList(); //鏌ヨ鎵�鏈�
-        var data3 = base.GetList(it => 1 == 1); //鏍规嵁鏉′欢鏌ヨ  
-        //var data4 = base.GetSingle(it => 1 == 1);//鏍规嵁鏉′欢鏌ヨ涓�鏉�,濡傛灉瓒呰繃涓�鏉′細鎶ラ敊
-
-        var p = new PageModel { PageIndex = 1, PageSize = 2 }; // 鍒嗛〉鏌ヨ
-        var data5 = base.GetPageList(it => 1 == 1, p);
-        Console.Write(p.TotalCount); //杩斿洖鎬绘暟
-
-        var data6 =
-            base.GetPageList(it => 1 == 1, p,
-                it => SqlFunc.GetRandom()); // 鍒嗛〉鏌ヨ鍔犳帓搴�
-        Console.Write(p.TotalCount); //杩斿洖鎬绘暟
-
-        var conModels = new List<IConditionalModel>(); //缁勮鏉′欢鏌ヨ浣滀负鏉′欢瀹炵幇 鍒嗛〉鏌ヨ鍔犳帓搴�
-        conModels.Add(new ConditionalModel
+        return UseTransaction(db =>
         {
-            FieldName = typeof(SalesOrder).GetProperties()[0].Name,
-            ConditionalType = ConditionalType.Equal,
-            FieldValue = "1"
-        }); //id=1
-        var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom());
-
-        AsQueryable().Where(x => 1 == 1)
-            .ToList(); //鏀寔浜嗚浆鎹㈡垚queryable,鎴戜滑鍙互鐢╭ueryable瀹炵幇澶嶆潅鍔熻兘
-
-
-        /*********鎻掑叆*********/
-        var insertData = new SalesOrder(); //娴嬭瘯鍙傛暟
-        var insertArray = new[] { insertData };
-        base.Insert(insertData); //鎻掑叆
-        base.InsertRange(insertArray); //鎵归噺鎻掑叆
-        var id = base.InsertReturnIdentity(insertData); //鎻掑叆杩斿洖鑷鍒�
-        AsInsertable(insertData).ExecuteCommand(); //鎴戜滑鍙互杞垚 Insertable瀹炵幇澶嶆潅鎻掑叆
-
-
-        /*********鏇存柊*********/
-        var updateData = new SalesOrder(); //娴嬭瘯鍙傛暟
-        var updateArray = new[] { updateData }; //娴嬭瘯鍙傛暟
-        base.Update(updateData); //鏍规嵁瀹炰綋鏇存柊
-        base.UpdateRange(updateArray); //鎵归噺鏇存柊
-        //base.Update(it => new SalesOrder() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// 鍙洿鏂癈lassName鍒楀拰CreateTime鍒楋紝鍏跺畠鍒椾笉鏇存柊锛屾潯浠秈d=1
-        AsUpdateable(updateData).ExecuteCommand(); //杞垚Updateable鍙互瀹炵幇澶嶆潅鐨勬彃鍏�
-
-
-        /*********鍒犻櫎*********/
-        var deldata = new SalesOrder(); //娴嬭瘯鍙傛暟
-        base.Delete(deldata); //鏍规嵁瀹炰綋鍒犻櫎
-        base.DeleteById(1); //鏍规嵁涓婚敭鍒犻櫎
-        base.DeleteById(new[] { 1, 2 }); //鏍规嵁涓婚敭鏁扮粍鍒犻櫎
-        base.Delete(it => 1 == 2); //鏍规嵁鏉′欢鍒犻櫎
-        AsDeleteable().Where(it => 1 == 2)
-            .ExecuteCommand(); //杞垚Deleteable瀹炵幇澶嶆潅鐨勬搷浣�
+            switch (erpSalesOrderDto.Type)
+            {
+                case "3":
+                    return DeleteData(db, mesSalesOrder, mesSalesOrderDatas) ? 1 : 0;
+                case "2":
+                case "4":
+                case "5":
+                    return SaveOrUpdateData(db, mesSalesOrder, mesSalesOrderDatas, erpSalesOrderDto.Type)  ? 1: 0;
+                default:
+                    throw new NotImplementedException( $"type娌℃湁{erpSalesOrderDto.Type}杩欎釜绫诲瀷");
+            }
+        }) > 0;
     }
 
-    #endregion
+    private bool DeleteData(SqlSugarScope db, SalesOrder mesSalesOrder,List<SalesOrderDetail> mesSalesOrderDatas)
+    {
+        var decimals = mesSalesOrderDatas.Select(s => s.Id).ToArray();
+        var update = base.DeleteById(mesSalesOrder.Id);
+        var insertOrUpdate = db.Deleteable<SalesOrderDetail>().In(decimals).ExecuteCommand() > 0;
+
+        if (update && insertOrUpdate)
+        {
+            return true;
+        }
+        throw new NotImplementedException("鏇存柊澶辫触");
+    }
+
+    // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+    private bool SaveOrUpdateData(SqlSugarScope db, SalesOrder mesSalesOrder,List<SalesOrderDetail> mesSalesOrderDatas,string type)
+    {
+        if (mesSalesOrder.Id != null)
+        {
+            base.DeleteById(mesSalesOrder.Id);
+        }
+
+        if (mesSalesOrderDatas.Count > 0)
+        {
+            db.Deleteable<SalesOrderDetail>().Where(s => s.EHID == mesSalesOrder.ErpID).ExecuteCommand();
+        }
+
+        var orUpdate = base.Insert(mesSalesOrder);
+        var baOrUpdate = _SalesOrderDetailManager.InsertRange(mesSalesOrderDatas);
+        if (orUpdate && baOrUpdate)
+        {
+            return true;
+        }
+
+        throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+    }
+
+    // 鎵归噺淇濆瓨璁板綍鐨勬柟娉�
+    public bool SaveList(List<ErpSalesOrder> salesOrder)
+    {
+        var result = salesOrder.Select(Save).ToList();
+        return result.All(b => b);
+    }
+
+    private SalesOrder ConvertErpToSalesOrder(ErpSalesOrderDto erpDto)
+    {
+        DateTime parsedDate;
+
+        // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"
+        DateTime? ParseDateTime(string dateStr)
+        {
+            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None,out parsedDate))
+            {
+                return parsedDate;
+            }
+            return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+        }
+
+        var salesOrder = new SalesOrder
+        {
+            BillNo = erpDto.FBillNo,
+            ErpID = Convert.ToDecimal(erpDto.ErpID),
+            FDate = ParseDateTime(erpDto.FDate) ?? null,
+            BillTypeId = erpDto.FBillTypeID, // 鍗曟嵁绫诲瀷
+            DocumentStatus = erpDto.FDocumentStatus, // 鍗曟嵁鐘舵��
+            CustId = erpDto.FCustId, // 瀹㈡埛
+            SaleDeptId = erpDto.FSaleDeptId, // 閿�鍞儴闂�
+            EntryNote = erpDto.FEntryNote, // 澶囨敞
+            FSalesPerson= erpDto.FSalesPerson,
+            FProject= erpDto.FProject,
+            FDemandCategory = erpDto.FDemandCategory,
+            FStartDate = erpDto.FStartDate,
+            FEndDate = erpDto.FEndDate
+        };
+
+        var single = base.GetSingle(it => it.ErpID == Convert.ToDecimal(erpDto.ErpID));
+        if (single != null)
+        {
+            salesOrder.Id = single.Id;
+        }
+
+        return salesOrder;
+    }
+
+    private List<SalesOrderDetail> ConvertErpToSalesOrderDetail(List<ErpSalesOrderDetailDto> erpDtoList)
+    {
+        var salesOrderSubList = new List<SalesOrderDetail>();
+
+        foreach (var erpDto in erpDtoList)
+        {
+            var salesOrderSub = new SalesOrderDetail
+            {
+                ErpID = Convert.ToDecimal(erpDto.ErpID),
+                EHID = Convert.ToDecimal(erpDto.EHID),
+                MaterialId = erpDto.FMaterialId,
+                Qty = Convert.ToDecimal(erpDto.FQty),
+                PriceUnitId = erpDto.FPriceUnitId,
+                DeliveryDate = Convert.ToDateTime(erpDto.FDeliveryDate),
+                OwnerId = erpDto.FOwnerId,
+                EntryNote = erpDto.FEntryNote,
+                Lot = erpDto.FLot,
+                ItemNo = erpDto.FMapId,
+                FLineNo= erpDto.FLineNo,
+                FLineStatus = erpDto.FLineStatus,
+                FExtendField = erpDto.FExtendField,
+                FCustomer = erpDto.FCustomer,
+                FReceiveLocation= erpDto.FReceiveLocation,
+                FSupplyOrg= erpDto.FSupplyOrg,
+                FDepartment = erpDto.FDepartment,
+                FSalesPerson = erpDto.FSalesPerson,
+                FProject = erpDto.FProject,
+                FDemandCategory = erpDto.FDemandCategory
+            };
+
+            var single = _SalesOrderDetailManager.GetSingle(it =>it.ErpID == Convert.ToDecimal(salesOrderSub.ErpID));
+            if (single != null)
+            {
+                salesOrderSub.Id = single.Id;
+            }
+            var mesLinkU9 = Db.Queryable<MesLinkU9>()
+    .Where(x => x.U9Id == erpDto.FMaterialId
+                && x.OrgId == erpDto.FSupplyOrg
+                && x.TableType == "MES_ITEMS").First();
+
+            if (mesLinkU9 != null) salesOrderSub.MaterialId = mesLinkU9.MesId;
+
+
+            var mesLinkU92 = Db.Queryable<MesLinkU9>()
+                .Where(x => x.U9Id == erpDto.FProject
+                            && x.OrgId == erpDto.FSupplyOrg
+                            && x.TableType == "MES_PROJECT").First();
+
+            if (mesLinkU92 != null) salesOrderSub.FProject = mesLinkU92.MesId;
+
+            salesOrderSubList.Add(salesOrderSub);
+        }
+
+        return salesOrderSubList;
+    }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs b/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
index 90ef3df..fb640be 100644
--- a/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
+++ b/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
@@ -1,5 +1,10 @@
 锘縰sing MES.Service.DB;
+using System.Data;
+using System.Globalization;
+using MES.Service.Dto.webApi;
 using MES.Service.Modes;
+using SqlSugar;
+using DbType = System.Data.DbType;
 
 namespace MES.Service.service.BasicData;
 
@@ -7,5 +12,215 @@
 {
     //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
 
-    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 SalesReturnNoticeManager.cs
+    private readonly SalesReturnNoticeDetailManager _SalesReturnDetailManager =
+        new();
+    //ErpSalesRerurn
+    public bool Save(ErpSalesRerurn SalesReturn)
+    {
+        var erpSalesReturnDto = SalesReturn.OrderDto;
+        var mesSalesReturn = ConvertErpToSalesReturn(SalesReturn.OrderDto);
+        var mesSalesReturnDatas = ConvertErpToSalesReturnDetail(SalesReturn.Items);
+
+        return UseTransaction(db =>
+        {
+            switch (erpSalesReturnDto.Type)
+            {
+                // case "2":
+                //     return InsertData(db, mesSalesReturn, mesSalesReturnDatas,
+                //         rohInErpRohIn.FBILLTYPE)
+                //         ? 1
+                //         : 0;
+                case "3":
+                    return UpdateData(db, mesSalesReturn, mesSalesReturnDatas) ? 1 : 0;
+                case "2":
+                case "4":
+                    return SaveOrUpdateData(db, mesSalesReturn, mesSalesReturnDatas, erpSalesReturnDto.Type)
+                        ? 1
+                        : 0;
+                default:
+                    throw new NotImplementedException(
+                        $"type娌℃湁{erpSalesReturnDto.Type}杩欎釜绫诲瀷");
+            }
+        }) > 0;
+    }
+
+    private bool UpdateData(SqlSugarScope db, SalesReturnNotice mesSalesReturn,
+        List<SalesReturnNoticeDetail> mesSalesReturnDatas)
+    {
+        var decimals = mesSalesReturnDatas.Select(s => s.Id).ToArray();
+        var update = base.DeleteById(mesSalesReturn.Id);
+        var insertOrUpdate = db
+            .Deleteable<SalesReturnNoticeDetail>().In(decimals)
+            .ExecuteCommand() > 0;
+
+        if (update && insertOrUpdate) return true;
+        throw new NotImplementedException("鏇存柊澶辫触");
+    }
+
+    // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+    private bool SaveOrUpdateData(SqlSugarScope db, SalesReturnNotice mesSalesReturn,
+        List<SalesReturnNoticeDetail> mesSalesReturnDatas, string type)
+    {
+        if (mesSalesReturn.Id != null) base.DeleteById(mesSalesReturn.Id);
+
+        if (mesSalesReturnDatas.Count > 0)
+            db.Deleteable<SalesReturnNoticeDetail>()
+                .Where(s => s.ErpHeadId == mesSalesReturn.ErpId).ExecuteCommand();
+
+        var orUpdate = base.Insert(mesSalesReturn);
+        var baOrUpdate = _SalesReturnDetailManager.InsertRange(mesSalesReturnDatas);
+        if (orUpdate && baOrUpdate) return true;
+
+
+        throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+    }
+
+    // 鎵归噺淇濆瓨璁板綍鐨勬柟娉�
+    public bool SaveList(List<ErpSalesRerurn> salesOrder)
+    {
+        var result = salesOrder.Select(Save).ToList();
+        return result.All(b => b);
+    }
+
+    private SalesReturnNotice ConvertErpToSalesReturn(
+        ErpSalesReturnDto erpDto)
+    {
+        DateTime parsedDate;
+
+        // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"
+        DateTime? ParseDateTime(string dateStr)
+        {
+            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
+                    CultureInfo.InvariantCulture,
+                    DateTimeStyles.None,
+                    out parsedDate))
+                return parsedDate;
+
+            return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+        }
+
+        var salesOrder = new SalesReturnNotice
+        {
+            BillNo = erpDto.FBillNo,
+            ErpId = erpDto.ErpID,
+            FDate = ParseDateTime(erpDto.FDate) ?? null,
+            BillType = erpDto.FBillTypeID, // 鍗曟嵁绫诲瀷
+            ReturnCustomer = erpDto.FRetcustId, // 閫�璐у鎴�
+            ReturnReason = erpDto.FRetcustReason, // 閫�璐у師鍥�
+            DeliveryLocation = erpDto.FHeadLocId, // 浜よ揣鍦扮偣
+            ReceiverContact = erpDto.FReceiveCusContact, // 鏀惰揣鏂硅仈绯讳汉
+            ReceiverAddress = erpDto.FReceiveAddress, // 鏀惰揣鏂瑰湴鍧�
+            CreatedBy = erpDto.FCreatorId, // 鍒涘缓浜�
+            CreatedDate = ParseDateTime(erpDto.FCreateDate) ?? null, // 鍒涘缓鏃堕棿
+            ApprovedBy = erpDto.FApproverId, // 瀹℃牳浜�
+            ApprovedDate = ParseDateTime(erpDto.FApproveDate) ?? null, // 瀹℃牳鏃ユ湡
+            BillStatus = erpDto.FDocumentStatus, //鍗曟嵁鐘舵��
+            ReturnType= erpDto.ReturnType, // 閫�鍥炵被鍨�
+            TotalQuantity = erpDto.TotalQuantity, // 鎬绘暟閲�
+            SourceDocumentCategory = erpDto.SourceDocumentCategory, // 鏉ユ簮鍗曟嵁绫诲埆
+            SourceDocument = erpDto.SourceDocument, // 婧愬崟鎹�
+            ReplenishmentOrganization= erpDto.ReplenishmentOrganization, // 琛ヨ揣缁勭粐
+            CustomerRequestDate = erpDto.CustomerRequestDate,  // 瀹㈡埛瑕佹眰鏃ユ湡
+            ReturnSalesman= erpDto.ReturnSalesman, // 閫�璐ч攢鍞憳
+            ReturnDescription = erpDto.ReturnDescription, // 閫�璐ц鏄�
+            ReturnDepartment = erpDto.ReturnDepartment // 閫�璐ч儴闂�
+
+        };
+
+        var single = base.GetSingle(it => it.ErpId == erpDto.ErpID);
+        if (single != null) salesOrder.Id = single.Id;
+
+        return salesOrder;
+    }
+
+    private List<SalesReturnNoticeDetail> ConvertErpToSalesReturnDetail(
+        List<ErpSalesReturnDetailDto> erpDtoList)
+
+    {
+        var salesOrderSubList =
+            new List<SalesReturnNoticeDetail>();
+
+        DateTime parsedDate;
+        // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"
+        DateTime? ParseDateTime(string dateStr)
+        {
+            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
+                    CultureInfo.InvariantCulture,
+                    DateTimeStyles.None,
+                    out parsedDate))
+                return parsedDate;
+
+            return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+        }
+
+
+
+        foreach (var erpDto in erpDtoList)
+        {
+            var salesOrderSub = new SalesReturnNoticeDetail
+            {
+                ErpLineId = erpDto.ErpID,//ERP琛孖D
+                ErpHeadId = erpDto.EHID,//ERP澶碔D
+                MaterialId = erpDto.FMaterialId,//鐗╂枡缂栧彿
+                //SalesUnitId = erpDto.FUnitID,//閿�鍞崟浣�
+                SalesQuantity = Convert.ToDecimal(erpDto.FQty),//閿�鍞暟閲�
+                //IsFree = erpDto.FIsFree,//鏄惁璧犲搧
+                //ReturnDate = ParseDateTime(erpDto.FDeliverydate),//閫�璐ф棩鏈�
+                Warehouse = erpDto.FStockId,//浠撳簱
+                //PlanTrackingNumber = erpDto.FMtoNo,//璁″垝璺熻釜鍙�
+                LotNumber = erpDto.FLot,//鎵瑰彿
+                Note = erpDto.FEntryDescription,//澶囨敞
+                //ReturnType = erpDto.FRmType,//閫�璐х被鍨�
+                //InventoryUnit = erpDto.FStockUnitID,//搴撳瓨鍗曚綅
+                //InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty),//搴撳瓨鏁伴噺
+                //OwnerTypeId = erpDto.FOwnerTypeID,//璐т富绫诲瀷
+                OwnerId = erpDto.FOwnerId,//璐т富
+                SourceBillType = erpDto.FSrcType,
+                SourceBillNo = erpDto.FSrcBillNo,
+                OrderBillNo = erpDto.FOrderNo,
+                FLineNumber= erpDto.FLineNumber, // 琛屽彿
+                FLineStatus= erpDto.FLineStatus, // 琛岀姸鎬�
+                FRefundCustomer = erpDto.FRefundCustomer, // 閫�娆惧鎴�
+                FSupplier = erpDto.FSupplier, // 渚涘簲鍟�
+                FFreebieType = erpDto.FFreebieType, // 鍏嶈垂鍝佺被鍨�
+                FFreebieReason = erpDto.FFreebieReason, // 鍏嶈垂鍝佸師鍥�
+                FSourceDocLineNo = erpDto.FSourceDocLineNo, // 婧愬ご鍗曟嵁琛屽彿
+                FSourceDocSubLineNo = erpDto.FSourceDocSubLineNo, // 婧愬ご鍗曟嵁瀛愯鍙�
+                FSourceDocType = erpDto.FSourceDocType,// 婧愬ご鍗曟嵁绫诲瀷
+                FOriginalDocLineNo = erpDto.FOriginalDocLineNo,// 鍘熷鍗曟嵁琛屽彿
+                FReplenishOrg = erpDto.FReplenishOrg,// 琛ヨ揣缁勭粐
+                FReceivingOrg = erpDto.FReceivingOrg,// 鏀惰揣缁勭粐
+                FOriginalSalesman = erpDto.FOriginalSalesman,// 鍘熷閿�鍞憳
+                FOriginalDept = erpDto.FOriginalDept,// 鍘熷閮ㄩ棬
+                FProject = erpDto.FProject, // 椤圭洰
+                FReturnReason = erpDto.FReturnReason,// 閫�璐у師鍥�
+                FReturnDescription = erpDto.FReturnDescription,// 閫�璐ц鏄�
+
+            };
+
+            var single = _SalesReturnDetailManager.GetSingle(it =>
+                it.ErpLineId == salesOrderSub.ErpLineId);
+            if (single != null) salesOrderSub.Id = single.Id;
+            var mesLinkU9 = Db.Queryable<MesLinkU9>()
+.Where(x => x.U9Id == erpDto.FMaterialId
+    && x.OrgId == erpDto.FReceivingOrg
+    && x.TableType == "MES_ITEMS").First();
+
+            if (mesLinkU9 != null) salesOrderSub.MaterialId = mesLinkU9.MesId;
+
+
+            var mesLinkU92 = Db.Queryable<MesLinkU9>()
+                .Where(x => x.U9Id == erpDto.FProject
+                            && x.OrgId == erpDto.FReceivingOrg
+                            && x.TableType == "MES_PROJECT").First();
+
+            if (mesLinkU92 != null) salesOrderSub.FProject = mesLinkU92.MesId;
+
+            salesOrderSubList.Add(salesOrderSub);
+        }
+
+        return salesOrderSubList;
+    }
+
+
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/QC/SJService.cs b/StandardPda/MES.Service/service/QC/SJService.cs
index fcc93ec..639ef64 100644
--- a/StandardPda/MES.Service/service/QC/SJService.cs
+++ b/StandardPda/MES.Service/service/QC/SJService.cs
@@ -34,14 +34,16 @@
     }
 
     //鑾峰彇鎵�鏈夋暟鎹垎椤�
-    public List<SJPageResult> getPage(SJPageResult queryObj)
+    public (List<SJPageResult> item, int TotalCount) getPage(SJPageResult queryObj)
     {
         var db = SqlSugarHelper.GetInstance();
 
         string[]? lineNo = null;
 
-        if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser))
-            lineNo = _baseService.getUserLineNo(queryObj.StatusUser);
+        // if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser))
+        //     lineNo = _baseService.getUserLineNo(queryObj.StatusUser);
+
+        var totalCount = 0;
 
         var data = db.Queryable<SJPageResult>()
             .WhereIF(lineNo != null && lineNo.Length > 0,
@@ -49,18 +51,26 @@
             .WhereIF(queryObj.Id != null, a => a.Id == queryObj.Id)
             .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.BillNo),
                 a => a.BillNo == queryObj.BillNo)
+            // .WhereIF(
+            //     StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
+            //     "鏈畬鎴�".Equals(queryObj.Result),
+            //     a => a.Result == queryObj.Result && (a.FSubmit == 0 || a.FSubmit == null))
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
                 "鏈畬鎴�".Equals(queryObj.Result),
-                a => a.Result == queryObj.Result)
+                a => a.FSubmit == 0 || a.FSubmit == null)
+            // .WhereIF(
+            //     StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
+            //     !"鏈畬鎴�".Equals(queryObj.Result),
+            //     a => a.Result != "鏈畬鎴�" && a.FSubmit == 1)
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
                 !"鏈畬鎴�".Equals(queryObj.Result),
-                a => a.Result != "鏈畬鎴�")
+                a =>   a.FSubmit == 1)
             .OrderBy(a => a.BillNo, OrderByType.Desc)
-            .ToPageList(queryObj.PageIndex, queryObj.Limit);
+            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
 
-        return data;
+        return (data, totalCount);
     }
 
 
@@ -222,7 +232,8 @@
         item.Items = getQSItems(qsItemIpiReq.Id, null);
         var sjPageResult = new SJPageResult
             { Id = item.From.Id, Limit = 1, PageIndex = 1 };
-        item.Result = getPage(sjPageResult)[0];
+        var pageResult = getPage(sjPageResult);
+        item.Result = pageResult.item[0];
 
         return item;
     }
@@ -453,4 +464,20 @@
 
         return withOracle;
     }
+    
+    public bool SJQaSubmit(LLJDto rkjDto)
+    {
+        var useTransactionWithOracle =
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                return db.Updateable<QsItemIpiReq>()
+                    .SetColumns(s => s.Fsubmit == 1)
+                    .SetColumns(s => s.FsubmitBy == rkjDto.userNo)
+                    .SetColumns(s => s.FsubmitDate == DateTime.Now)
+                    .Where(s => s.Id == rkjDto.gid)
+                    .ExecuteCommand();
+            });
+
+        return useTransactionWithOracle > 0;
+    }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/QC/XJService.cs b/StandardPda/MES.Service/service/QC/XJService.cs
index 1d78f60..c01fc0b 100644
--- a/StandardPda/MES.Service/service/QC/XJService.cs
+++ b/StandardPda/MES.Service/service/QC/XJService.cs
@@ -107,40 +107,43 @@
                 }).ToList();
     }
 
-    public List<QsQaItemXj> getPage(XJPageResult queryObj)
+    public (List<QsQaItemXj> item, int TotalCount) getPage(XJPageResult queryObj)
     {
         var db = SqlSugarHelper.GetInstance();
 
         var id = Convert.ToDecimal(queryObj.id);
 
+        var totalCount = 0;
+
         string[]? lineNo = null;
 
-        if (StringUtil.IsNotNullOrEmpty(queryObj.createUser))
-            lineNo = _baseService.getUserLineNo(queryObj.createUser);
+        // if (StringUtil.IsNotNullOrEmpty(queryObj.createUser))
+        //     lineNo = _baseService.getUserLineNo(queryObj.createUser);
 
-        return db
-            .Queryable<QsQaItemXj, Womdaa, MesLine,
-                MesItems>((s, a, c, b) =>
+        var pageList = db
+            .Queryable<QsQaItemXj, Womdaa,
+                MesItems>((s, a,  b) =>
                 new JoinQueryInfos(
                     JoinType.Inner, s.BillNo == a.Daa001,
-                    JoinType.Left, a.Daa015 == c.LineNo,
                     JoinType.Left, s.ItemId == b.Id
                 )
             )
-            .WhereIF(lineNo != null && lineNo.Length > 0,
-                (s, a, c, b) => lineNo.Contains(c.LineNo))
+            
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                 "鏈畬鎴�".Equals(queryObj.result),
-                (s, a, c, b) => s.FcheckResu == null)
+                (s, a,  b) => s.Fsubmit == null || s.Fsubmit == 0)
+            // .WhereIF(
+            //     StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+            //     !"鏈畬鎴�".Equals(queryObj.result),
+            //     (s, a,  b) => s.FcheckResu != null)
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                 !"鏈畬鎴�".Equals(queryObj.result),
-                (s, a, c, b) => s.FcheckResu != null)
-            .WhereIF(id > 0, (s, a, c, b) => s.Id == id)
-            .Select((s, a, c, b) => new QsQaItemXj
+                (s, a,  b) => s.Fsubmit == 1)
+            .WhereIF(id > 0, (s, a, b) => s.Id == id)
+            .Select((s, a,  b) => new QsQaItemXj
             {
-                Daa020 = c.LineNo,
                 Id = s.Id,
                 PlanQty = a.Daa008,
                 CreateBy = s.CreateBy,
@@ -152,11 +155,31 @@
                 ItemModel = b.ItemModel,
                 FcheckBy = s.FcheckBy,
                 FcheckResu = s.FcheckResu,
-                Remarks = s.Remarks
+                Remarks = s.Remarks,
+                Fsubmit = s.Fsubmit,
+                FcheckDate = s.FcheckDate,
+                FsubmitBy = s.FsubmitBy
             }).OrderBy(s => s.CreateDate, OrderByType.Desc)
-            .ToPageList(queryObj.PageIndex, queryObj.Limit);
+            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
+
+        return (pageList, totalCount);
     }
 
+    public bool XJQaSubmit(LLJDto rkjDto)
+    {
+        var useTransactionWithOracle =
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                return db.Updateable<QsQaItemXj>()
+                    .SetColumns(s => s.Fsubmit == 1)
+                    .SetColumns(s => s.FsubmitBy == rkjDto.userNo)
+                    .SetColumns(s => s.FsubmitDate == DateTime.Now)
+                    .Where(s => s.Id == rkjDto.gid)
+                    .ExecuteCommand();
+            });
+
+        return useTransactionWithOracle > 0;
+    }
 
     public List<QsQaItemXj01> setJYItem(string itemNo)
     {
diff --git a/StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs b/StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs
index 2fefcf4..958c3ec 100644
--- a/StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs
@@ -247,7 +247,7 @@
 
                 var itemIdLinkU9 = Db.Queryable<MesLinkU9>()
                     .Where(s => s.TableType == "MES_ITEMS"
-                                && s.U9Id == ItemQtRKList.Itemld).First();
+                                && s.U9Id == ItemQtRKList.ItemId).First();
 
                 if (itemIdLinkU9 == null)
                 {
@@ -260,7 +260,7 @@
 
                 if (mesItems == null)
                 {
-                    throw new NotImplementedException("[" + ItemQtRKList.Itemld +
+                    throw new NotImplementedException("[" + ItemQtRKList.ItemId +
                                                       "]鐗╂枡涓嶅瓨鍦紝璇峰悓姝ョ粰MES");
                 }
                 var mesDepot = "";
@@ -346,7 +346,9 @@
                     ProductionOrder = ItemQtRKList.ProductionOrder,
                     DailyPlan = ItemQtRKList.DailyPlan,
                     ProductionActivity = ItemQtRKList.ProductionActivity,
-                    FinishedProduct = ItemQtRKList.FinishedProduct
+                    FinishedProduct = ItemQtRKList.FinishedProduct,
+                    PickingUsage= ItemQtRKList.PickingUsage
+
 
                 });
             }
diff --git a/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs b/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
index 88d6769..7b4fa5f 100644
--- a/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
@@ -2,12 +2,13 @@
 using MES.Service.DB;
 using MES.Service.Dto.service;
 using MES.Service.Modes;
+using MES.Service.service.BasicData;
 using System;
 using System.Collections.Generic;
+using System.Data;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
-using System.Data;
 
 namespace MES.Service.service.Warehouse
 {
@@ -26,17 +27,24 @@
             //            join MES_LINE b on A.LINEID=b.ID
             //            left join WOMDAA C on C.DAA015=B.LINE_NO
             //            left join mes_items s on s.id = C.daa002
-            //            where LOGINID='" + id+ "' and DAA018='宸插紑宸�'  order by DAA016 asc";
-
+            //            where LOGINID='" + id + "' and DAA018='宸插紑宸�'  order by DAA016 asc";
 
             //鏀逛负鎸夌珯浣嶅彿鍙嶆煡浜х嚎锛屽啀閫氳繃浜х嚎鏌ュ嚭宸ュ崟淇℃伅
-            var sql1 = @"select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from MESLINE_LIKE_CCLOGIN A
-                        left join MESLINE_LIKE_CCLOGIN_WORKS A1 on A.id=a1.LOGINID
-                        join MES_LINE b on A.LINEID=b.ID
-                        left join WOMDAA C on C.DAA015=B.LINE_NO
-                        left join mes_items s on s.id = C.daa002
-                       where WORKSNO='" + id + "' and DAA018='宸插紑宸�'  order by DAA016 asc";
+            //var sql1 = @"select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from MESLINE_LIKE_CCLOGIN A
+            //            left join MESLINE_LIKE_CCLOGIN_WORKS A1 on A.id=a1.LOGINID
+            //            join MES_LINE b on A.LINEID=b.ID
+            //            left join WOMDAA C on C.DAA015=B.LINE_NO
+            //            left join mes_items s on s.id = C.daa002
+            //           where WORKSNO='" + id + "' and DAA018='宸插紑宸�'  order by DAA016 asc";
 
+
+            //鍙栫洿鎺ュ叧鑱旂嚎浣撶殑浜ф祴鐧诲綍鍙锋暟鎹紝鍘诲彇鑾峰彇宸ュ崟
+            var sql1 = "select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from " +
+                "MESLINE_LIKE_CCLOGIN_WORKS A1" +
+                "                        join MES_LINE b on A1.LOGINID=b.ID" +
+                "                        left join WOMDAA C on C.DAA015=B.LINE_NO" +
+                "                        left join mes_items s on s.id = C.daa002" +
+                "                       where WORKSNO='" + id + "' and DAA018='宸插紑宸�'  order by DAA016 asc";
             return SQLHelper.ExecuteQuery(sql1);
         }
 
@@ -46,19 +54,414 @@
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
+        //public bool AddAsnInfo(AsnInfo asnInfo)
+        //{
+        //    OracleSQLHelper SQLHelper = new();
+        //    //璁板綍浜ф祴杩囩珯淇℃伅
+        //    var sql1 = @"INSERT  INTO MES_SN_STATUS_DETAILS (ID,TICKET_NO,SN_NO,WORKSTATION_NO,SN_STATE,LOGIN_ID) VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,'" + asnInfo.tickeNo+ "','"+ asnInfo.snNo+ "','"+ asnInfo.workstationNo+ "','"+ asnInfo.snState+ "','"+asnInfo.loginId+"')";
+        //    bool result = true;
+        //    int i= SQLHelper.ExecuteNonQuery(sql1);
+        //    //涓昏〃淇℃伅鎻掑叆鎴愬姛锛岀户缁彃鍏ラ」鐩�
+        //    if (i > 0) {
+        //        //鍒ゆ柇椤圭洰鏄惁涓虹┖锛屼负绌轰笉鎻掑叆
+        //        if (asnInfo.failItems.Count>0)
+        //        {
+        //            //鎻掑叆閫昏緫
+
+        //        }
+        //        else
+        //        {
+        //            result = true;
+        //        }
+
+
+        //    } else { result = false; }
+
+        //    return result;
+        //}
         public bool AddAsnInfo(AsnInfo asnInfo)
         {
-            OracleSQLHelper SQLHelper = new();
-            //璁板綍浜ф祴杩囩珯淇℃伅
-            var sql1 = @"INSERT  INTO MES_SN_STATUS_DETAILS (ID,TICKET_NO,SN_NO,WORKSTATION_NO,SN_STATE) VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,'"+ asnInfo.tickeNo+ "','"+ asnInfo.snNo+ "','"+ asnInfo.workstationNo+ "','"+ asnInfo.snState+ "')";
+            var sqlHelper = new OracleSQLHelper();
             bool result = true;
-            int i= SQLHelper.ExecuteNonQuery(sql1);
-            if (i > 0) {result = true;} else { result = false; }
-            
+
+            var (connection, transaction) = sqlHelper.BeginTransaction();
+
+            try
+            {
+                // 1. 涓昏〃鎻掑叆
+                var sql1 = $@"
+            INSERT INTO MES_SN_STATUS_DETAILS
+              (ID, TICKET_NO, SN_NO, WORKSTATION_NO, SN_STATE, LOGIN_ID)
+              VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,
+                      '{asnInfo.tickeNo}',
+                      '{asnInfo.snNo}',
+                      '{asnInfo.workstationNo}',
+                      '{asnInfo.snState}',
+                      '{asnInfo.loginId}')";
+                int i = sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql1);
+
+                // 2. 澶辫触椤规彃鍏�
+                if (i > 0 && asnInfo.failItems?.Count > 0)
+                {
+                    foreach (var item in asnInfo.failItems)
+                    {
+                        var sql2 = $@"
+                    INSERT INTO CC_FAIL_ITEMS
+                      (ID, MID, DEFECT_ISSUE, ROOT_CAUSE, REPAIR_METHOD, MATERIAL_HANDLING, CREATE_DATE, CREATED_BY)
+                      VALUES (SEQ_CC_FAIL_ITEMS.NEXTVAL,
+                              SEQ_MES_SN_STATUS_DETAILS_ID.CURRVAL,
+                              '{item.DefectIssue}',
+                              '{item.RootCause}',
+                              '{item.RepairMethod}',
+                              '{item.MaterialHandling}',
+                              SYSDATE,
+                              '{asnInfo.loginId}')";
+                        sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql2);
+                    }
+                }
+
+                // 3. 閰嶄欢缁戝畾/瑙g粦 & 鏃ュ織璁板綍
+                if (asnInfo.accessoryList?.Count > 0)
+                {
+                    foreach (var accessory in asnInfo.accessoryList)
+                    {
+                        var now = "SYSDATE";
+                        var user = asnInfo.loginId;
+                        var snNo = asnInfo.snNo;
+                        var partSn = accessory.accessorySn;
+                        var partName = accessory.accessoryName;
+
+                        if (accessory.bindingState == "0")
+                        {
+                            // ====== 鏍¢獙锛氬悓涓�涓厤浠禨N鏄惁宸茬粦瀹� ======
+                            var checkSql = $@"
+                        SELECT COUNT(1) FROM MES_SN_PART_BINDING 
+                         WHERE PART_SN_NO = '{partSn}'";
+                            var exists = Convert.ToInt32(sqlHelper.ExecuteScalarWithTransaction(connection, transaction, checkSql));
+                            if (exists > 0)
+                            {
+                                throw new Exception($"閰嶄欢SN[{partSn}]宸茬粦瀹氾紝璇峰厛瑙g粦鍐嶇粦瀹氾紒");
+                            }
+
+                            // 缁戝畾
+                            var sqlBind = $@"
+                        INSERT INTO MES_SN_PART_BINDING
+                          (ID, SN_NO, PART_SN_NO, PART_NAME_CN, CREATE_DATE, CREATE_USER)
+                          VALUES (SEQ_MES_SN_PART_BINDING.NEXTVAL,
+                                  '{snNo}',
+                                  '{partSn}',
+                                  '{partName}',
+                                  {now},
+                                  '{user}')";
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlBind);
+
+                            // 鏃ュ織
+                            var sqlLog = $@"
+                        INSERT INTO MES_SN_PART_BINDING_LOG
+                          (ID, SN_NO, PART_SN_NO, PART_NAME_CN, CREATE_DATE, CREATE_USER, OP_TYPE)
+                          VALUES (SEQ_MES_SN_PART_BINDING_LOG.NEXTVAL,
+                                  '{snNo}',
+                                  '{partSn}',
+                                  '{partName}',
+                                  {now},
+                                  '{user}',
+                                  0)";
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlLog);
+                        }
+                        else if (accessory.bindingState == "1")
+                        {
+                            // 瑙g粦
+                            var sqlUnbind = $@"
+                        DELETE FROM MES_SN_PART_BINDING
+                         WHERE SN_NO = '{snNo}'
+                           AND PART_SN_NO = '{partSn}'";
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlUnbind);
+
+                            // 鏃ュ織
+                            var sqlLog = $@"
+                        INSERT INTO MES_SN_PART_BINDING_LOG
+                          (ID, SN_NO, PART_SN_NO, PART_NAME_CN, CREATE_DATE, CREATE_USER, OP_TYPE)
+                          VALUES (SEQ_MES_SN_PART_BINDING_LOG.NEXTVAL,
+                                  '{snNo}',
+                                  '{partSn}',
+                                  '{partName}',
+                                  {now},
+                                  '{user}',
+                                  1)";
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlLog);
+                        }
+                    }
+                }
+
+                transaction.Commit();
+            }
+            catch (Exception)
+            {
+                transaction.Rollback();
+                result = false;
+                throw;
+            }
+            finally
+            {
+                sqlHelper.CloseConnection(connection);
+            }
+
             return result;
         }
 
 
 
+        /// <summary>
+        /// 璁剧疆涓鐮侊紙缁戝畾/瑙g粦 SN锛�
+        /// </summary>
+        /// <param name="mesMiddleBox">涓鐮佸強SN鏁版嵁</param>
+        /// <returns>杩斿洖鎵ц鐘舵��</returns>
+        public string[] SetMediumBoxCode(MesMiddleBox mesMiddleBox)
+        {
+            var sqlHelper = new OracleSQLHelper();
+            string[] msg = new string[2];
+            msg[0] = "true";
+
+            var (connection, transaction) = sqlHelper.BeginTransaction();
+
+            try
+            {
+                if (mesMiddleBox.type.ToUpper() == "A") // 缁戝畾
+                {
+                    if (mesMiddleBox.SnList.Count > 0)
+                    {
+                        string sql1 = $"select count(*) count from MES_MIDDLE_BOX where MEDIUMBOXCODE = '{mesMiddleBox.MediumBoxCode}'";
+                        DataTable data = sqlHelper.ExecuteQuery(sql1);
+
+                        if (data.Rows[0]["COUNT"].ToString() != "0")
+                        {
+                            msg[0] = "false";
+                            msg[1] = "璇ヤ腑绠辩爜宸茬粡缁戝畾SN鏁版嵁锛屽闇�鍐嶆缁戝畾璇峰厛瑙g粦锛佷腑绠辩爜锛�" + mesMiddleBox.MediumBoxCode;
+                            transaction.Rollback();
+                            return msg;
+                        }
+
+                        foreach (var item in mesMiddleBox.SnList)
+                        {
+                            string sqlInsert = $@"
+                        INSERT INTO MES_MIDDLE_BOX (
+                            ID, MEDIUMBOXCODE, LOGIN_ID, SN_NO, TICKET_NO, CREATE_DATE, CREATED_BY
+                        ) VALUES (
+                            SEQ_MES_MIDDLE_BOX_ID.NEXTVAL,
+                            '{mesMiddleBox.MediumBoxCode}',
+                            '{mesMiddleBox.LoginId}',
+                            '{item.SnNo}',
+                            '{item.TicketNo}',
+                            SYSDATE,
+                            '{mesMiddleBox.LoginId}'
+                        )";
+
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlInsert);
+
+                            // 鏃ュ織璁板綍鎻掑叆锛氭搷浣滅被鍨� 0锛堢粦瀹氾級
+                            string logInsert = $@"
+                        INSERT INTO MES_MIDDLE_BOX_LOG (
+                            ID, MEDIUMBOXCODE, LOGIN_ID, SN_NO, TICKET_NO, CREATE_DATE, CREATED_BY, OPERATION_TYPE
+                        ) VALUES (
+                            MES_MIDDLE_BOX_LOG_ID.NEXTVAL,
+                            '{mesMiddleBox.MediumBoxCode}',
+                            '{mesMiddleBox.LoginId}',
+                            '{item.SnNo}',
+                            '{item.TicketNo}',
+                            SYSDATE,
+                            '{mesMiddleBox.LoginId}',
+                            '0'
+                        )";
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, logInsert);
+                        }
+                    }
+                    else
+                    {
+                        msg[0] = "false";
+                        msg[1] = "SN鏄庣粏涓虹┖锛屾棤娉曠粦瀹氾紒";
+                    }
+                }
+                else if (mesMiddleBox.type.ToUpper() == "F") // 瑙g粦
+                {
+                    // 鏌ヨ瑕佽В缁戠殑璁板綍
+                    string sqlSelect = $@"
+                SELECT * FROM MES_MIDDLE_BOX WHERE MEDIUMBOXCODE = '{mesMiddleBox.MediumBoxCode}'";
+
+                    DataTable dt = sqlHelper.ExecuteQuery(sqlSelect);
+
+                    foreach (DataRow row in dt.Rows)
+                    {
+                        // 鎻掑叆瑙g粦鏃ュ織锛氭搷浣滅被鍨� 1锛堣В缁戯級
+                        string logInsert = $@"
+                    INSERT INTO MES_MIDDLE_BOX_LOG (
+                        ID, MEDIUMBOXCODE, LOGIN_ID, SN_NO, TICKET_NO, CREATE_DATE, CREATED_BY, OPERATION_TYPE
+                    ) VALUES (
+                        MES_MIDDLE_BOX_LOG_ID.NEXTVAL,
+                        '{row["MEDIUMBOXCODE"]}',
+                        '{row["LOGIN_ID"]}',
+                        '{row["SN_NO"]}',
+                        '{row["TICKET_NO"]}',
+                        SYSDATE,
+                        '{mesMiddleBox.LoginId}',
+                        '1'
+                    )";
+                        sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, logInsert);
+                    }
+
+                    // 鎵ц瑙g粦锛堝垹闄わ級
+                    string sqlDelete = $@"DELETE FROM MES_MIDDLE_BOX WHERE MEDIUMBOXCODE = '{mesMiddleBox.MediumBoxCode}'";
+                    sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlDelete);
+                }
+                else
+                {
+                    msg[0] = "false";
+                    msg[1] = "鏃犳晥鐨勬搷浣滅被鍨嬶紒";
+                }
+
+                transaction.Commit();
+            }
+            catch (Exception ex)
+            {
+                transaction.Rollback();
+                msg[0] = "false";
+                msg[1] = ex.Message;
+                throw; // 寤鸿璁板綍鏃ュ織
+            }
+            finally
+            {
+                sqlHelper.CloseConnection(connection);
+            }
+
+            return msg;
+        }
+
+
+
+        /// <summary>
+        /// 璁剧疆鏍堟澘鐮侊紙缁戝畾/瑙g粦 SN锛�
+        /// </summary>
+        /// <param name="mesPalletBinding">缁戝畾鍙傛暟</param>
+        /// <returns>杩斿洖缁戝畾缁撴灉</returns>
+        public string[] SetStackCode(MesPalletBinding mesPalletBinding)
+        {
+            var sqlHelper = new OracleSQLHelper();
+            string[] msg = new string[2];
+            msg[0] = "true";
+
+            var (connection, transaction) = sqlHelper.BeginTransaction();
+
+            try
+            {
+                // 缁戝畾
+                if (mesPalletBinding.Type.ToUpper() == "A")
+                {
+                    if (mesPalletBinding.SnList.Count > 0)
+                    {
+                        string sql1 = $"SELECT COUNT(*) COUNT FROM MES_PALLET_BINDING WHERE STACKCODE = '{mesPalletBinding.StackCode}'";
+                        DataTable data = sqlHelper.ExecuteQuery(sql1);
+
+                        if (data.Rows[0]["COUNT"].ToString() != "0")
+                        {
+                            msg[0] = "false";
+                            msg[1] = "璇ユ爤鏉跨爜宸茬粡缁戝畾SN鏁版嵁锛屽闇�鍐嶆缁戝畾璇峰厛瑙g粦锛佹爤鏉跨爜锛�" + mesPalletBinding.StackCode;
+                            transaction.Rollback();
+                            return msg;
+                        }
+
+                        foreach (var item in mesPalletBinding.SnList)
+                        {
+                            string sqlInsert = $@"
+                        INSERT INTO MES_PALLET_BINDING (
+                            ID, STACKCODE, LOGIN_ID, SN_NO, TICKET_NO, MEDIUMBOXCODE, CREATE_DATE, CREATED_BY
+                        ) VALUES (
+                            SEQ_MES_PALLET_BINDING_ID.NEXTVAL,
+                            '{mesPalletBinding.StackCode}',
+                            '{mesPalletBinding.LoginId}',
+                            '{item.SnNo}',
+                            '{item.TicketNo}',
+                            '{item.MediumBoxCode}',
+                            SYSDATE,
+                            '{mesPalletBinding.LoginId}'
+                        )";
+
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlInsert);
+
+                            // 鎻掑叆缁戝畾鏃ュ織锛堟搷浣滅被鍨� 0锛�
+                            string logInsert = $@"
+                        INSERT INTO MES_PALLET_BINDING_LOG (
+                            ID, STACKCODE, LOGIN_ID, SN_NO, TICKET_NO, MEDIUMBOXCODE, CREATE_DATE, CREATED_BY, OPERATION_TYPE
+                        ) VALUES (
+                            MES_PALLET_BINDING_LOG_ID.NEXTVAL,
+                            '{mesPalletBinding.StackCode}',
+                            '{mesPalletBinding.LoginId}',
+                            '{item.SnNo}',
+                            '{item.TicketNo}',
+                            '{item.MediumBoxCode}',
+                            SYSDATE,
+                            '{mesPalletBinding.LoginId}',
+                            '0'
+                        )";
+
+                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, logInsert);
+                        }
+                    }
+                    else
+                    {
+                        msg[0] = "false";
+                        msg[1] = "SN鏄庣粏涓虹┖锛岃纭锛�";
+                    }
+                }
+                // 瑙g粦
+                else if (mesPalletBinding.Type.ToUpper() == "F")
+                {
+                    // 鍏堟煡璇㈢粦瀹氱殑璁板綍
+                    string sqlSelect = $"SELECT * FROM MES_PALLET_BINDING WHERE STACKCODE = '{mesPalletBinding.StackCode}'";
+                    DataTable dt = sqlHelper.ExecuteQuery( sqlSelect);
+
+                    foreach (DataRow row in dt.Rows)
+                    {
+                        // 鎻掑叆瑙g粦鏃ュ織锛堟搷浣滅被鍨� 1锛�
+                        string logInsert = $@"
+                    INSERT INTO MES_PALLET_BINDING_LOG (
+                        ID, STACKCODE, LOGIN_ID, SN_NO, TICKET_NO, MEDIUMBOXCODE, CREATE_DATE, CREATED_BY, OPERATION_TYPE
+                    ) VALUES (
+                        MES_PALLET_BINDING_LOG_ID.NEXTVAL,
+                        '{row["STACKCODE"]}',
+                        '{row["LOGIN_ID"]}',
+                        '{row["SN_NO"]}',
+                        '{row["TICKET_NO"]}',
+                        '{row["MEDIUMBOXCODE"]}',
+                        SYSDATE,
+                        '{mesPalletBinding.LoginId}',
+                        '1'
+                    )";
+
+                        sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, logInsert);
+                    }
+
+                    // 鍒犻櫎缁戝畾璁板綍
+                    string sqlDelete = $"DELETE FROM MES_PALLET_BINDING WHERE STACKCODE = '{mesPalletBinding.StackCode}'";
+                    sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sqlDelete);
+                }
+
+                // 鎻愪氦浜嬪姟
+                transaction.Commit();
+            }
+            catch (Exception ex)
+            {
+                transaction.Rollback();
+                msg[0] = "false";
+                msg[1] = ex.Message;
+                throw; // 寤鸿璁板綍鏃ュ織
+            }
+            finally
+            {
+                sqlHelper.CloseConnection(connection);
+            }
+
+            return msg;
+        }
+
+
     }
 }
diff --git a/StandardPda/MESApplication/Controllers/BasicData/SalesDeliveryNoticeController.cs b/StandardPda/MESApplication/Controllers/BasicData/SalesDeliveryNoticeController.cs
new file mode 100644
index 0000000..44f7d43
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/BasicData/SalesDeliveryNoticeController.cs
@@ -0,0 +1,276 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Dynamic;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.util;
+using MES.Service.service.BasicData;
+using MES.Service.Dto.webApi;
+using Newtonsoft.Json;
+
+namespace MESApplication.Controllers
+{
+    [ApiController]
+    [Route("api/[controller]")]
+    public class SalesDeliveryNoticeController : ControllerBase
+    {
+        
+       
+
+        private readonly MessageCenterManager _manager = new();
+
+        private SalesDeliveryNoticeManager m = new SalesDeliveryNoticeManager();
+
+        private readonly string METHOD = "POST";
+
+        private readonly string TableName = "SALES_DELIVERY_NOTICE";
+
+        private readonly string URL = "http://localhost:10054/api/SalesDeliveryNotice/";
+
+
+        /// <summary>
+        /// 閿�鍞氦浠橀�氱煡锛圲9鏍囧噯閿�鍞級
+        /// </summary>
+        /// <param name="salesOrder"></param>
+        /// <returns></returns>
+        [HttpPost("Save")]
+        public ResponseResult Save(ErpSalesDelivery salesOrder)
+        {
+            var entity = new MessageCenter();
+            entity.TableName = TableName;
+            entity.Url = URL + "Save";
+            entity.Method = METHOD;
+            entity.Route = salesOrder.OrderDto.FBillNo;
+            entity.Data = JsonConvert.SerializeObject(salesOrder);
+            entity.Status = 1;
+            entity.CreateBy = "PL017";
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var save = m.Save(salesOrder);
+
+                resultInfos.tbBillList = save;
+
+                entity.Result = 0;
+                if (save) entity.Result = 1;
+
+                entity.DealWith = 1;
+                _manager.save(entity);
+
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                entity.Result = 0;
+
+                entity.DealWith = 0;
+
+                entity.ResultData = ex.Message;
+
+                _manager.save(entity);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        [HttpPost("SaveList")]
+        public ResponseResult SaveList(List<ErpSalesDelivery> units)
+        {
+            var entity = new MessageCenter();
+            entity.TableName = TableName;
+            entity.Url = URL + "SaveList";
+            entity.Method = METHOD;
+            entity.Data = JsonConvert.SerializeObject(units);
+            entity.Status = 1;
+            entity.CreateBy = "PL017";
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var save = m.SaveList(units);
+                resultInfos.tbBillList = save;
+
+                entity.Result = 0;
+                if (save) entity.Result = 1;
+
+                entity.DealWith = 1;
+                _manager.save(entity);
+
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                entity.Result = 0;
+
+                entity.DealWith = 0;
+
+                entity.ResultData = ex.Message;
+
+                _manager.save(entity);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+
+        /***杩涘叆妯$増绠$悊鍙互淇敼妯$増***/
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("GetList")]
+        public ResponseResult GetList()
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.GetList();
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁涓婚敭鑾峰彇
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("GetById")]
+        public ResponseResult GetById(int id)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.GetById(id);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁涓婚敭鍒犻櫎
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("DeleteByIds")]
+        public ResponseResult DeleteByIds([FromBody] object[] ids)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.DeleteByIds(ids);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞 
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("Insert")]
+        public ResponseResult Add([FromBody] SalesDeliveryNotice data)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.Insert(data);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+        /// <summary>
+        /// 娣诲姞杩斿洖鑷
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("InsertReturnIdentity")]
+        public ResponseResult InsertReturnIdentity([FromBody] SalesDeliveryNotice data)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.InsertReturnIdentity(data);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 淇敼
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("Update")]
+        public ResponseResult Update([FromBody] SalesDeliveryNotice data)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.Update(data);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+    }
+}
diff --git a/StandardPda/MESApplication/Controllers/BasicData/SalesOrderController.cs b/StandardPda/MESApplication/Controllers/BasicData/SalesOrderController.cs
new file mode 100644
index 0000000..e7a88b7
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/BasicData/SalesOrderController.cs
@@ -0,0 +1,263 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.webApi;
+using Newtonsoft.Json;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.BasicData;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+
+namespace MESApplication.Controllers.BasicData;
+
+[ApiController]
+[Route("api/[controller]")]
+public class SalesOrderController : ControllerBase
+{
+    private readonly MessageCenterManager _manager = new();
+
+    private readonly SalesOrderManager m = new();
+
+    private readonly string METHOD = "POST";
+
+    private readonly string TableName = "SALES_ORDER";
+
+    private readonly string URL = "http://localhost:10054/api/SalesOrder/";
+
+    /// <summary>
+    /// 閿�鍞鍗曪紙U9棰勬祴璁㈠崟锛�
+    /// </summary>
+    /// <param name="salesOrder"></param>
+    /// <returns></returns>
+    [HttpPost("Save")]
+    public ResponseResult Save(ErpSalesOrder salesOrder)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "Save";
+        entity.Method = METHOD;
+        entity.Route = salesOrder.OrderDto.FBillNo;
+        entity.Data = JsonConvert.SerializeObject(salesOrder);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.Save(salesOrder);
+
+            resultInfos.tbBillList = save;
+
+            entity.Result = 0;
+            if (save) entity.Result = 1;
+
+            entity.DealWith = 1;
+            _manager.save(entity);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            entity.Result = 0;
+
+            entity.DealWith = 0;
+
+            entity.ResultData = ex.Message;
+
+            _manager.save(entity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SaveList")]
+    public ResponseResult SaveList(List<ErpSalesOrder> units)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "SaveList";
+        entity.Method = METHOD;
+        entity.Data = JsonConvert.SerializeObject(units);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.SaveList(units);
+            resultInfos.tbBillList = save;
+
+            entity.Result = 0;
+            if (save) entity.Result = 1;
+
+            entity.DealWith = 1;
+            _manager.save(entity);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            entity.Result = 0;
+
+            entity.DealWith = 0;
+
+            entity.ResultData = ex.Message;
+
+            _manager.save(entity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇鎵�鏈�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetList")]
+    public ResponseResult GetList()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetList();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鑾峰彇
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetById")]
+    public ResponseResult GetById(int id)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetById(id);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鍒犻櫎
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("DeleteByIds")]
+    public ResponseResult DeleteByIds([FromBody] object[] ids)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.DeleteByIds(ids);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Insert")]
+    public ResponseResult Add([FromBody] SalesOrder data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Insert(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞杩斿洖鑷
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("InsertReturnIdentity")]
+    public ResponseResult InsertReturnIdentity([FromBody] SalesOrder data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.InsertReturnIdentity(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     淇敼
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Update")]
+    public ResponseResult Update([FromBody] SalesOrder data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Update(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/BasicData/SalesReturnNoticeController.cs b/StandardPda/MESApplication/Controllers/BasicData/SalesReturnNoticeController.cs
new file mode 100644
index 0000000..f3717be
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/BasicData/SalesReturnNoticeController.cs
@@ -0,0 +1,272 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.BasicData;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace MESApplication.Controllers.BasicData;
+
+[ApiController]
+[Route("api/[controller]")]
+public class SalesReturnNoticeController : ControllerBase
+{
+   private readonly MessageCenterManager _manager = new();
+
+    private readonly SalesReturnNoticeManager m = new();
+
+    private readonly string METHOD = "POST";
+
+    private readonly string TableName = "SALES_RETURN_NOTICE";
+
+    private readonly string URL = "http://localhost:10054/api/SalesReturnNotice/";
+
+
+    /// <summary>
+    /// 閫�璐ч�氱煡鍗�
+    /// </summary>
+    /// <param name="salesOrder"></param>
+    /// <returns></returns>
+    [HttpPost("Save")]
+    public ResponseResult Save(ErpSalesRerurn salesOrder)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "Save";
+        entity.Method = METHOD;
+        entity.Route = salesOrder.OrderDto.FBillNo;
+        entity.Data = JsonConvert.SerializeObject(salesOrder);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.Save(salesOrder);
+
+            resultInfos.tbBillList = save;
+
+            entity.Result = 0;
+            if (save) entity.Result = 1;
+
+            entity.DealWith = 1;
+            _manager.save(entity);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            entity.Result = 0;
+
+            entity.DealWith = 0;
+
+            entity.ResultData = ex.Message;
+
+            _manager.save(entity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SaveList")]
+    public ResponseResult SaveList(List<ErpSalesRerurn> units)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "SaveList";
+        entity.Method = METHOD;
+        entity.Data = JsonConvert.SerializeObject(units);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.SaveList(units);
+            resultInfos.tbBillList = save;
+
+            entity.Result = 0;
+            if (save) entity.Result = 1;
+
+            entity.DealWith = 1;
+            _manager.save(entity);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            entity.Result = 0;
+
+            entity.DealWith = 0;
+
+            entity.ResultData = ex.Message;
+
+            _manager.save(entity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+
+
+
+
+    /***杩涘叆妯$増绠$悊鍙互淇敼妯$増***/
+
+    /// <summary>
+    ///     鑾峰彇鎵�鏈�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetList")]
+    public ResponseResult GetList()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetList();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鑾峰彇
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetById")]
+    public ResponseResult GetById(int id)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetById(id);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鍒犻櫎
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("DeleteByIds")]
+    public ResponseResult DeleteByIds([FromBody] object[] ids)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.DeleteByIds(ids);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Insert")]
+    public ResponseResult Add([FromBody] SalesReturnNotice data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Insert(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞杩斿洖鑷
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("InsertReturnIdentity")]
+    public ResponseResult InsertReturnIdentity(
+        [FromBody] SalesReturnNotice data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.InsertReturnIdentity(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     淇敼
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Update")]
+    public ResponseResult Update([FromBody] SalesReturnNotice data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Update(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/QC/SJController.cs b/StandardPda/MESApplication/Controllers/QC/SJController.cs
index 107d6b9..d970890 100644
--- a/StandardPda/MESApplication/Controllers/QC/SJController.cs
+++ b/StandardPda/MESApplication/Controllers/QC/SJController.cs
@@ -41,14 +41,14 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var tbBillList =
-                new SJService().getPage(queryObj);
-            resultInfos.tbBillList = tbBillList;
+            var (item, totalCount) = new SJService().getPage(queryObj);
+            resultInfos.tbBillList = item;
             return new ResponseResult
             {
                 status = 0,
                 message = "OK",
-                data = resultInfos
+                data = resultInfos,
+                TotalCount = totalCount
             };
         }
         catch (Exception ex)
@@ -319,4 +319,27 @@
             return ResponseResult.ResponseError(ex);
         }
     }
+    
+    //IqcQaSubmit
+    [HttpPost("SJQaSubmit")]
+    public ResponseResult SJQaSubmit(LLJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().SJQaSubmit(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
 }
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/QC/XJController.cs b/StandardPda/MESApplication/Controllers/QC/XJController.cs
index ef25d6b..0ddd9d0 100644
--- a/StandardPda/MESApplication/Controllers/QC/XJController.cs
+++ b/StandardPda/MESApplication/Controllers/QC/XJController.cs
@@ -159,6 +159,28 @@
             return ResponseResult.ResponseError(ex);
         }
     }
+    
+    [HttpPost("XJQaSubmit")]
+    public ResponseResult XJQaSubmit(LLJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().XJQaSubmit(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
 
     //setJYItem
     [HttpPost("setJYItem")]
@@ -236,14 +258,15 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
+            var (item, totalCount) = new XJService().getPage(queryObj);
             var tbBillList =
-                new XJService().getPage(queryObj);
-            resultInfos.tbBillList = tbBillList;
+                resultInfos.tbBillList = item;
             return new ResponseResult
             {
                 status = 0,
                 message = "OK",
-                data = resultInfos
+                data = resultInfos,
+                TotalCount = totalCount
             };
         }
         catch (Exception ex)
diff --git a/StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs b/StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs
index c0f541e..dfdcdd9 100644
--- a/StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs
+++ b/StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs
@@ -1,4 +1,5 @@
-锘縰sing MES.Service.Dto.service;
+锘縰sing AngleSharp.Text;
+using MES.Service.Dto.service;
 using MES.Service.Modes;
 using MES.Service.service;
 using MES.Service.service.Warehouse;
@@ -18,7 +19,7 @@
         private readonly WomdaaManager m = new();
 
         private readonly MessageCenterManager _manager = new();
-
+        
         private readonly string METHOD = "POST";
 
         private readonly string TableName = "womdaa";
@@ -111,6 +112,116 @@
             }
         }
 
+        /// <summary>
+        ///璁剧疆涓鐮�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("SetMediumBoxCode")]
+        public ResponseResult SetMediumBoxCode(MesMiddleBox MesMiddleBox)
+        {
+            var entity = new MessageCenter();
+            entity.TableName = TableName;
+            entity.Url = URL + "SetMediumBoxCode";
+            entity.Method = METHOD;
+            entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(MesMiddleBox);
+            entity.Status = 1;
+            entity.CreateBy = "PL017";
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var result = m.SetMediumBoxCode(MesMiddleBox);
+                resultInfos.tbBillList = result;
+
+                entity.Result = 0;
+                if (result[0].ToBoolean()) entity.Result = 1;
+                entity.DealWith = 1;
+                _manager.save(entity);
+
+                if (result[0].ToBoolean())
+                {
+                    return new ResponseResult
+                    {
+                        status = 0,
+                        message = "OK",
+                        data = resultInfos
+                    };
+                }
+                else {
+                    return new ResponseResult
+                    {
+                        status = 1,
+                        message = result[1],
+                        data = resultInfos
+                    };
+                }
+               
+            }
+            catch (Exception ex)
+            {
+                entity.Result = 0;
+                entity.DealWith = 0;
+                entity.ResultData = ex.Message;
+                _manager.save(entity);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        ///璁剧疆鏍堟澘鐮�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("SetStackCode")]
+        public ResponseResult SetStackCode(MesPalletBinding mesPalletBinding)
+        {
+            var entity = new MessageCenter();
+            entity.TableName = TableName;
+            entity.Url = URL + "SetStackCode";
+            entity.Method = METHOD;
+            entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(mesPalletBinding);
+            entity.Status = 1;
+            entity.CreateBy = "PL017";
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var result = m.SetStackCode(mesPalletBinding);
+                resultInfos.tbBillList = result;
+
+                entity.Result = 0;
+                if (result[0].ToBoolean()) entity.Result = 1;
+                entity.DealWith = 1;
+                _manager.save(entity);
+
+                if (result[0].ToBoolean())
+                {
+                    return new ResponseResult
+                    {
+                        status = 0,
+                        message = "OK",
+                        data = resultInfos
+                    };
+                }
+                else
+                {
+                    return new ResponseResult
+                    {
+                        status = 1,
+                        message = result[1],
+                        data = resultInfos
+                    };
+                }
+            }
+            catch (Exception ex)
+            {
+                entity.Result = 0;
+                entity.DealWith = 0;
+                entity.ResultData = ex.Message;
+                _manager.save(entity);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
 
     }
 }

--
Gitblit v1.9.3