From 53c58be27bb9ba94ac46a46fb048b27d17ece925 Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期五, 29 八月 2025 10:30:40 +0800
Subject: [PATCH] Merge branch 'master' of http://git.gs-mes.com:8080/r/~cnf/JH/JH_WebApi

---
 MES.Service/Modes/MesDeliveryNoticeDetail.cs                      |  489 +++++++++++++++++++++
 MES.Service/Dto/webApi/DeliveryNoteWrapper.cs                     |   14 
 MES.Service/service/BasicData/MesRohInManager.cs                  |    8 
 MES.Service/service/BasicData/MesDeliveryNoteDetailManager.cs     |   12 
 MES.Service/Dto/webApi/deliveryNote.cs                            |   34 +
 MES.Service/Dto/webApi/deliveryNoteDetail.cs                      |   64 ++
 MES.Service/Modes/MesDeliveryNotice.cs                            |  313 +++++++++++++
 MESApplication/Controllers/BasicData/MesDeliveryNoteController.cs |  258 +++++++++++
 MES.Service/service/BasicData/MesDeliveryNoteManager.cs           |  166 +++++++
 9 files changed, 1,352 insertions(+), 6 deletions(-)

diff --git a/MES.Service/Dto/webApi/DeliveryNoteWrapper.cs b/MES.Service/Dto/webApi/DeliveryNoteWrapper.cs
new file mode 100644
index 0000000..afde527
--- /dev/null
+++ b/MES.Service/Dto/webApi/DeliveryNoteWrapper.cs
@@ -0,0 +1,14 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class DeliveryNoteWrapper
+{
+    /// <summary>
+    /// 閫佽揣鍗曚富淇℃伅
+    /// </summary>
+    public deliveryNote DeliveryNote { get; set; }
+
+    /// <summary>
+    /// 閫佽揣鍗曟槑缁嗗垪琛�
+    /// </summary>
+    public List<deliveryNoteDetail> DeliveryNoteDetails { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/Dto/webApi/deliveryNote.cs b/MES.Service/Dto/webApi/deliveryNote.cs
new file mode 100644
index 0000000..f678d4d
--- /dev/null
+++ b/MES.Service/Dto/webApi/deliveryNote.cs
@@ -0,0 +1,34 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class deliveryNote
+{
+    /// <summary>
+    /// 閫佽揣鍗曞彿
+    /// </summary>
+    public string DeliveryNo { get; set; } = string.Empty;
+
+    /// <summary>
+    /// 渚涘簲鍟嗭紙鍐呯爜锛�
+    /// </summary>
+    public string? SupplierId { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁鏃ユ湡
+    /// </summary>
+    public string? FDate { get; set; }
+
+    /// <summary>
+    /// 澶囨敞淇℃伅
+    /// </summary>
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 鏀舵枡缁勭粐
+    /// </summary>
+    public string? FReceiveOrgId { get; set; }
+
+    /// <summary>
+    /// 绫诲瀷
+    /// </summary>
+    public string? Type { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/Dto/webApi/deliveryNoteDetail.cs b/MES.Service/Dto/webApi/deliveryNoteDetail.cs
new file mode 100644
index 0000000..413df0b
--- /dev/null
+++ b/MES.Service/Dto/webApi/deliveryNoteDetail.cs
@@ -0,0 +1,64 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class deliveryNoteDetail
+{
+    /// <summary>
+    /// 閫佽揣鍗曞彿
+    /// </summary>
+    public string DeliveryNo { get; set; } = string.Empty;
+
+    /// <summary>
+    /// 鐗╂枡鍐呯爜
+    /// </summary>
+    public string? ProductCode { get; set; }
+
+    /// <summary>
+    /// 閲囪喘璁㈠崟鏁伴噺
+    /// </summary>
+    public decimal? PurchaseQty { get; set; }
+
+    /// <summary>
+    /// 鏈搴旀敹鏁伴噺
+    /// </summary>
+    public decimal? DeliveryQty { get; set; }
+
+    /// <summary>
+    /// 鏈浜よ揣鏁伴噺
+    /// </summary>
+    public decimal? IncludeQty { get; set; }
+
+    /// <summary>
+    /// 閲囪喘鍗曚綅锛堝唴鐮侊級
+    /// </summary>
+    public string? PurchaseUnit { get; set; }
+
+    /// <summary>
+    /// 搴撳瓨鍗曚綅锛堝唴鐮侊級
+    /// </summary>
+    public string? InventoryUnit { get; set; }
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 閲囪喘鍗曞彿
+    /// </summary>
+    public string? FBillNo { get; set; }
+
+    /// <summary>
+    /// 閲囪喘鍗曞垎褰曞唴鐮�
+    /// </summary>
+    public string? OrderlineId { get; set; }
+
+    /// <summary>
+    /// 鏄惁璧犲搧
+    /// </summary>
+    public bool? IsGift { get; set; }
+
+    /// <summary>
+    /// 閫佽揣鍗曡鍐呯爜
+    /// </summary>
+    public string? LineNo { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/Modes/MesDeliveryNotice.cs b/MES.Service/Modes/MesDeliveryNotice.cs
new file mode 100644
index 0000000..1f507b4
--- /dev/null
+++ b/MES.Service/Modes/MesDeliveryNotice.cs
@@ -0,0 +1,313 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     閫佽揣閫氱煡鍗曚富琛紙瀵瑰簲鏁版嵁搴撹〃锛欴ELIVERY_NOTICE锛�
+/// </summary>
+[SugarTable("DELIVERY_NOTICE")]
+public class MesDeliveryNotice
+{
+    /// <summary>
+    ///     涓婚敭锛堝敮涓�鏍囪瘑锛屽搴旀暟鎹簱 id 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
+    public Guid Id { get; set; }
+
+    /// <summary>
+    ///     閫佽揣鍗曞彿锛堝搴旀暟鎹簱 delivery_no 鍒楋紝鍞竴绾︽潫锛�
+    /// </summary>
+    // 鍏抽敭淇锛氱敤 IsUniqueConstraint=true 鏇夸唬 IsUnique=true锛屽吋瀹� SQL Server 2019 鍙婃棭鏈� SqlSugar 鐗堟湰
+    [SugarColumn(ColumnName = "delivery_no", IsPrimaryKey = true, IsNullable = false)]
+    public string DeliveryNo { get; set; } = string.Empty;
+
+  
+    /// <summary>
+    ///     渚涘簲鍟嗙紪鐮侊紙瀵瑰簲鏁版嵁搴� inner_vendor_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "org_id")]
+    public string? FReceiveOrgId { get; set; }
+    
+    
+    /// <summary>
+    ///     渚涘簲鍟嗙紪鐮侊紙瀵瑰簲鏁版嵁搴� inner_vendor_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "inner_vendor_code")]
+    public string? SupplierId { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟嗗悕绉帮紙瀵瑰簲鏁版嵁搴� inner_vendor_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "inner_vendor_name")]
+    public string? InnerVendorName { get; set; }
+
+    /// <summary>
+    ///     閫佽揣绫诲瀷锛�1-鏅�� 2-琛ヨ揣 3-澶囧搧 4-鏍峰搧 5-VMI锛堝搴旀暟鎹簱 delivery_type 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_type")]
+    public string? DeliveryType { get; set; }
+
+    /// <summary>
+    ///     閫佽揣鏃ユ湡(鏃堕棿鎴�)锛堝搴旀暟鎹簱 delivery_date 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_date")]
+    public string? DeliveryDate { get; set; }
+
+    /// <summary>
+    ///     棰勮閫佽揪鏃ユ湡(鏃堕棿鎴�)锛堝搴旀暟鎹簱 plan_arrived_date 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "plan_arrived_date")]
+    public string? PlanArrivedDate { get; set; }
+
+    /// <summary>
+    ///     閫佽揣鑱旂郴浜猴紙瀵瑰簲鏁版嵁搴� contact_persion 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "contact_persion")]
+    public string? ContactPersion { get; set; }
+
+    /// <summary>
+    ///     閫佽揣浜鸿仈绯荤數璇濓紙瀵瑰簲鏁版嵁搴� contact_mobile 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "contact_mobile")]
+    public string? ContactMobile { get; set; }
+
+    /// <summary>
+    ///     鍐呴儴鏀惰揣鍦扮偣缂栫爜锛堝搴旀暟鎹簱 address_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "address_code")]
+    public string? AddressCode { get; set; }
+
+    /// <summary>
+    ///     鏀惰揣鏄庣粏鍦板潃锛堝搴旀暟鎹簱 address_info 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "address_info")]
+    public string? AddressInfo { get; set; }
+
+    /// <summary>
+    ///     閫佽揣杞︾墝鍙凤紙瀵瑰簲鏁版嵁搴� delivery_car_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_car_no")]
+    public string? DeliveryCarNo { get; set; }
+
+    /// <summary>
+    ///     澶囨敞锛堝搴旀暟鎹簱 remark 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "remark")]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    ///     鐘舵��:1-寰呯鏀� 2-绛炬敹涓� 3-宸插畬鎴� 4-鎾ゅ洖 8-宸蹭綔搴� 5-鐢宠涓� 7-鍚屾剰 9-閮ㄥ垎鍚屾剰 10-宸插喕缁� 11-鐢宠鎾ゅ洖锛堝搴旀暟鎹簱 status 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "status")]
+    public string? Status { get; set; }
+
+    /// <summary>
+    ///     鐩磋繍鏍囪瘑:1-鏄� 0-鍚︼紙瀵瑰簲鏁版嵁搴� direct_delivery_flag 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "direct_delivery_flag")]
+    public string? DirectDeliveryFlag { get; set; }
+
+    /// <summary>
+    ///     鐗╂祦鐘舵��:0-鏈彂鍑� 1-宸插彂璐� 2-宸插埌璐э紙瀵瑰簲鏁版嵁搴� logistics_status 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "logistics_status")]
+    public string? LogisticsStatus { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庝竴娆″彂甯冩椂闂达紙瀵瑰簲鏁版嵁搴� publish_time 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "publish_time")]
+    public string? PublishTime { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庝竴娆℃洿鏂版椂闂达紙瀵瑰簲鏁版嵁搴� update_time 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "update_time")]
+    public string? UpdateTime { get; set; }
+
+    /// <summary>
+    ///     鍒╂鼎涓績缂栫爜锛堝搴旀暟鎹簱 profit_center_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "profit_center_code")]
+    public string? ProfitCenterCode { get; set; }
+
+    /// <summary>
+    ///     鏁村崟姣涢噸锛堝搴旀暟鎹簱 gross_weight 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "gross_weight")]
+    public string? GrossWeight { get; set; }
+
+    /// <summary>
+    ///     鏁村崟鍑�閲嶏紙瀵瑰簲鏁版嵁搴� net_weight 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "net_weight")]
+    public string? NetWeight { get; set; }
+
+    /// <summary>
+    ///     閲嶉噺鍗曚綅缂栫爜锛堝搴旀暟鎹簱 unit_weight_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "unit_weight_code")]
+    public string? UnitWeightCode { get; set; }
+
+    /// <summary>
+    ///     閲嶉噺鍗曚綅鍚嶇О锛堝搴旀暟鎹簱 unit_weight_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "unit_weight_name")]
+    public string? UnitWeightName { get; set; }
+
+    /// <summary>
+    ///     鎬诲寘瑁呮暟锛堝搴旀暟鎹簱 total_packing_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "total_packing_qty")]
+    public string? TotalPackingQty { get; set; }
+
+    /// <summary>
+    ///     鎵嬪伐濉啓鎬诲寘鏁帮紙瀵瑰簲鏁版嵁搴� total_package_quantity 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "total_package_quantity")]
+    public string? TotalPackageQuantity { get; set; }
+
+    /// <summary>
+    ///     杩愯緭鏂瑰紡缂栫爜锛堝搴旀暟鎹簱 transport_type_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "transport_type_code")]
+    public string? TransportTypeCode { get; set; }
+
+    /// <summary>
+    ///     杩愯緭鏂瑰紡鍚嶇О锛堝搴旀暟鎹簱 transport_type_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "transport_type_name")]
+    public string? TransportTypeName { get; set; }
+
+    /// <summary>
+    ///     鍖呰鏂瑰紡缂栫爜锛堝搴旀暟鎹簱 packing_way_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "packing_way_code")]
+    public string? PackingWayCode { get; set; }
+
+    /// <summary>
+    ///     鍖呰鏂瑰紡鍚嶇О锛堝搴旀暟鎹簱 packing_way_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "packing_way_name")]
+    public string? PackingWayName { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁1锛堝搴旀暟鎹簱 extend_n01 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n01")]
+    public string? ExtendN01 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁2锛堝搴旀暟鎹簱 extend_n02 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n02")]
+    public string? ExtendN02 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁3锛堝搴旀暟鎹簱 extend_n03 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n03")]
+    public string? ExtendN03 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁4锛堝搴旀暟鎹簱 platform_extend_n04 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "platform_extend_n04")]
+    public string? PlatformExtendN04 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁5锛堝搴旀暟鎹簱 platform_extend_n05 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "platform_extend_n05")]
+    public string? PlatformExtendN05 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁6锛堝搴旀暟鎹簱 platform_extend_n06 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "platform_extend_n06")]
+    public string? PlatformExtendN06 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁7锛堝搴旀暟鎹簱 platform_extend_n07 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "platform_extend_n07")]
+    public string? PlatformExtendN07 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁8锛堝搴旀暟鎹簱 platform_extend_n08 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "platform_extend_n08")]
+    public string? PlatformExtendN08 { get; set; }
+
+    /// <summary>
+    ///     璐х墿閫佽揪鏃ユ湡(鏃堕棿鎴�)锛堝搴旀暟鎹簱 cargo_delivery_time 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "cargo_delivery_time")]
+    public string? CargoDeliveryTime { get; set; }
+
+    /// <summary>
+    ///     鐗╂祦鏂瑰紡:1-渚涘簲鍟嗛�佽揣 2-蹇�� 3-閲囪喘鏂硅嚜鎻愶紙瀵瑰簲鏁版嵁搴� logistics_type 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "logistics_type")]
+    public string? LogisticsType { get; set; }
+
+    /// <summary>
+    ///     鐗╂祦鏂瑰紡涓枃灞曠ず锛堝搴旀暟鎹簱 logistics_type_show 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "logistics_type_show")]
+    public string? LogisticsTypeShow { get; set; }
+
+    /// <summary>
+    ///     鐗╂祦鍗曞彿锛堝搴旀暟鎹簱 logistics_number 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "logistics_number")]
+    public string? LogisticsNumber { get; set; }
+
+    /// <summary>
+    ///     浼樺厛妫�楠�:0-姝e父 1-浼樺厛 2-绱ф�ワ紙瀵瑰簲鏁版嵁搴� first_check 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "first_check")]
+    public string? FirstCheck { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃ユ湡锛堝搴旀暟鎹簱 create_date 鍒楋紝榛樿鍊� getdate()锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "create_date", IsNullable = false, DefaultValue = "getdate()")]
+    public DateTime CreateDate { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢搷浣滄椂闂存埑锛堝搴旀暟鎹簱 last_operate_time 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "last_operate_time")]
+    public string? LastOperateTime { get; set; }
+
+    /// <summary>
+    ///     鏄惁鍚屾鍒拌揣鏄庣粏锛�0锛氭湭鍚屾 1锛氬凡鍚屾锛夛紙瀵瑰簲鏁版嵁搴� is_get_detail 鍒楋紝榛樿鍊� 0锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "is_get_detail", IsNullable = false, DefaultValue = "0")]
+    public int IsGetDetail { get; set; } = 0;
+
+    /// <summary>
+    ///     鏄惁鍚屾鏉$爜鏄庣粏锛�0锛氭湭鍚屾 1锛氬凡鍚屾锛夛紙瀵瑰簲鏁版嵁搴� is_get_bar 鍒楋紝榛樿鍊� 0锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "is_get_bar", IsNullable = false, DefaultValue = "0")]
+    public int IsGetBar { get; set; } = 0;
+
+    /// <summary>
+    ///     鏄惁纭鍒拌揣锛�0锛氭湭纭 1锛氬凡纭锛夛紙瀵瑰簲鏁版嵁搴� is_CFR 鍒楋紝榛樿鍊� 0锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "is_CFR", IsNullable = false, DefaultValue = "0")]
+    public int IsCfr { get; set; } = 0;
+
+    /// <summary>
+    ///     璋冪敤鑾峰彇閫佽揣鍗曟鏁帮紙瀵瑰簲鏁版嵁搴� get_detail_times 鍒楋紝榛樿鍊� 0锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "get_detail_times", IsNullable = false, DefaultValue = "0")]
+    public int GetDetailTimes { get; set; } = 0;
+
+    /// <summary>
+    ///     璋冪敤鑾峰彇鏉$爜娆℃暟锛堝搴旀暟鎹簱 get_bar_times 鍒楋紝榛樿鍊� 0锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "get_bar_times", IsNullable = false, DefaultValue = "0")]
+    public int GetBarTimes { get; set; } = 0;
+}
\ No newline at end of file
diff --git a/MES.Service/Modes/MesDeliveryNoticeDetail.cs b/MES.Service/Modes/MesDeliveryNoticeDetail.cs
new file mode 100644
index 0000000..bc3ea83
--- /dev/null
+++ b/MES.Service/Modes/MesDeliveryNoticeDetail.cs
@@ -0,0 +1,489 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     閫佽揣閫氱煡鍗曟嵁鏄庣粏琛紙瀵瑰簲鏁版嵁搴擄細JH_MES.GS_MES.dbo.DELIVERY_NOTICE_DETAIL锛�
+/// </summary>
+[SugarTable("DELIVERY_NOTICE_DETAIL")]
+public class MesDeliveryNoticeDetail
+{
+    /// <summary>
+    ///     涓婚敭锛圫EQ_XKY锛屽搴旀暟鎹簱 id 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
+    public Guid Guid { get; set; }
+
+    /// <summary>
+    ///     椤规鍙凤紙瀵瑰簲鏁版嵁搴� line_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "line_no")]
+    public string? LineNo { get; set; }
+
+    /// <summary>
+    ///     ERP閲囪喘鍗曞彿锛堝搴旀暟鎹簱 po_erp_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "po_erp_no")]
+    public string? PoErpNo { get; set; }
+    
+
+    /// <summary>
+    ///     閲囪喘鍗曠被鍨� 1锛氫竴鑸噰璐紱2锛氬澶栭噰璐紙瀵瑰簲鏁版嵁搴� purchase_type 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "purchase_type")]
+    public string? PurchaseType { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曢」娆★紙瀵瑰簲鏁版嵁搴� po_line_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "po_line_no")]
+    public string? PoLineNo { get; set; }
+
+    /// <summary>
+    ///     浜у搧缂栫爜锛堝搴旀暟鎹簱 product_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "product_code")]
+    public string? ProductCode { get; set; }
+
+    /// <summary>
+    ///     浜у搧鍚嶇О锛堝搴旀暟鎹簱 product_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "product_name")]
+    public string? ProductName { get; set; }
+
+    /// <summary>
+    ///     浜у搧瑙勬牸锛堝搴旀暟鎹簱 product_scale 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "product_scale")]
+    public string? ProductScale { get; set; }
+
+    /// <summary>
+    ///     鍑鸿揣鍗曚綅缂栫爜锛堝搴旀暟鎹簱 delivery_unit_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_unit_code")]
+    public string? DeliveryUnitCode { get; set; }
+
+    /// <summary>
+    ///     鍑鸿揣鍗曚綅鍚嶇О锛堝搴旀暟鎹簱 delivery_unit_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_unit_name")]
+    public string? DeliveryUnitName { get; set; }
+
+    /// <summary>
+    ///     鍑鸿揣鏁伴噺锛堝搴旀暟鎹簱 delivery_qty 鍒楋紝decimal(18,10) 绫诲瀷锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_qty")]
+    public decimal? DeliveryQty { get; set; }
+
+    /// <summary>
+    ///     鍑鸿揣璁′环鏁伴噺锛堝搴旀暟鎹簱 delivery_valuation_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_valuation_qty")]
+    public string? DeliveryValuationQty { get; set; }
+
+    /// <summary>
+    ///     鍑鸿揣浜у搧鍗曚环锛堝搴旀暟鎹簱 price 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "price")]
+    public string? Price { get; set; }
+
+    /// <summary>
+    ///     鍑鸿揣浜у搧鍚◣鍗曚环锛堝搴旀暟鎹簱 tax_price 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "tax_price")]
+    public string? TaxPrice { get; set; }
+
+    /// <summary>
+    ///     鎺掔▼鑷畾涔夐」鐨勫�硷紙瀵瑰簲鏁版嵁搴� sch_dynamic_value 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "sch_dynamic_value")]
+    public string? SchDynamicValue { get; set; }
+
+    /// <summary>
+    ///     鎺掔▼鎵规鍙凤紙瀵瑰簲鏁版嵁搴� schedule_batch_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "schedule_batch_no")]
+    public string? ScheduleBatchNo { get; set; }
+
+    /// <summary>
+    ///     鎺掔▼鍗曞彿锛堝搴旀暟鎹簱 schedule_order_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "schedule_order_no")]
+    public string? ScheduleOrderNo { get; set; }
+
+    /// <summary>
+    ///     瀵瑰簲鎺掔▼ItemDetail鐨勪富閿垪锛堝搴旀暟鎹簱 schedule_detail_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "schedule_detail_no")]
+    public string? ScheduleDetailNo { get; set; }
+
+    /// <summary>
+    ///     鏄惁鎬ユ枡 0:鍚� ; 1锛氭槸锛堝搴旀暟鎹簱 urgent_flag 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "urgent_flag")]
+    public string? UrgentFlag { get; set; }
+
+    /// <summary>
+    ///     鍘熷鍗曟嵁绫诲瀷1锛氳鍗曪紱2锛氭帓绋�; 3:鎸夐��璐� 4:鎸夊鍝侊紙瀵瑰簲鏁版嵁搴� src_bill_type 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "src_bill_type")]
+    public string? SrcBillType { get; set; }
+
+    /// <summary>
+    ///     閲囪喘椤规鐨勯噰璐鏄庝俊鎭紙瀵瑰簲鏁版嵁搴� purchase_desc 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "purchase_desc")]
+    public string? PurchaseDesc { get; set; }
+
+    /// <summary>
+    ///     鍗曟嵁澶囨敞锛宻rcBillType=1 瀵瑰簲閲囪喘璁㈠崟鍗曡韩鐨勫娉�; srcBillType=2 瀵瑰簲鎺掔▼椤规鐨勫娉紙瀵瑰簲鏁版嵁搴� src_order_line_remark 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "src_order_line_remark")]
+    public string? SrcOrderLineRemark { get; set; }
+
+    /// <summary>
+    ///     鐘舵�侊紙1:寰呯鏀讹紱2:绛炬敹涓紱3: 宸插畬鎴愶紱锛夛紙瀵瑰簲鏁版嵁搴� status 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "status")]
+    public string? Status { get; set; }
+
+    /// <summary>
+    ///     鏀惰揣鐘舵�侊紙0-鏈敹璐�;1-閮ㄥ垎鏀惰揣;2-鍏ㄩ儴鏀惰揣锛夛紙瀵瑰簲鏁版嵁搴� receive_status 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "receive_status")]
+    public string? ReceiveStatus { get; set; }
+
+    /// <summary>
+    ///     鏁村崟姣涢噸锛堝搴旀暟鎹簱 gross_weight 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "gross_weight")]
+    public string? GrossWeight { get; set; }
+
+    /// <summary>
+    ///     鏁村崟鍑�閲嶏紙瀵瑰簲鏁版嵁搴� net_weight 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "net_weight")]
+    public string? NetWeight { get; set; }
+
+    /// <summary>
+    ///     閲嶉噺鍗曚綅缂栫爜锛堝搴旀暟鎹簱 unit_weight_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "unit_weight_code")]
+    public string? UnitWeightCode { get; set; }
+
+    /// <summary>
+    ///     閲嶉噺鍗曚綅鍚嶇О锛堝搴旀暟鎹簱 unit_weight_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "unit_weight_name")]
+    public string? UnitWeightName { get; set; }
+
+    /// <summary>
+    ///     鍖呰鏁帮紙瀵瑰簲鏁版嵁搴� packing_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "packing_qty")]
+    public string? PackingQty { get; set; }
+
+    /// <summary>
+    ///     鍝佺墝鍚嶇О锛堝搴旀暟鎹簱 brand_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "brand_name")]
+    public string? BrandName { get; set; }
+
+    /// <summary>
+    ///     鍏朵粬鎵╁睍瀛楁锛堝搴旀暟鎹簱 other_extend 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "other_extend")]
+    public string? OtherExtend { get; set; }
+
+    /// <summary>
+    ///     鍘熶骇鍥界紪鐮侊紙瀵瑰簲鏁版嵁搴� original_country_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "original_country_code")]
+    public string? OriginalCountryCode { get; set; }
+
+    /// <summary>
+    ///     鍘熶骇鍥藉悕绉帮紙瀵瑰簲鏁版嵁搴� original_country_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "original_country_name")]
+    public string? OriginalCountryName { get; set; }
+
+    /// <summary>
+    ///     澶囨敞锛堝搴旀暟鎹簱 remark 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "remark")]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁1锛堝搴旀暟鎹簱 extend_n01 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n01")]
+    public string? ExtendN01 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁2锛堝搴旀暟鎹簱 extend_n02 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n02")]
+    public string? ExtendN02 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁3锛堝搴旀暟鎹簱 extend_n03 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n03")]
+    public string? ExtendN03 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁4锛堝搴旀暟鎹簱 extend_n04 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n04")]
+    public string? ExtendN04 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁5锛堝搴旀暟鎹簱 extend_n05 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n05")]
+    public string? ExtendN05 { get; set; }
+
+    /// <summary>
+    ///     鎵╁睍瀛楁6锛堝搴旀暟鎹簱 extend_n06 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "extend_n06")]
+    public string? ExtendN06 { get; set; }
+
+    /// <summary>
+    ///     搴撳瓨鍦扮偣缂栫爜锛堝搴旀暟鎹簱 store_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "store_code")]
+    public string? StoreCode { get; set; }
+
+    /// <summary>
+    ///     搴撳瓨鍦扮偣鍚嶇О锛堝搴旀暟鎹簱 store_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "store_name")]
+    public string? StoreName { get; set; }
+
+    /// <summary>
+    ///     宸茬鏀舵暟閲忥紙瀵瑰簲鏁版嵁搴� verify_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "verify_qty")]
+    public string? VerifyQty { get; set; }
+
+    /// <summary>
+    ///     鍙叆搴撴暟閲忥紙瀵瑰簲鏁版嵁搴� allow_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "allow_qty")]
+    public string? AllowQty { get; set; }
+
+    /// <summary>
+    ///     璁╂鎺ユ敹鏁伴噺锛堝搴旀暟鎹簱 compromise_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "compromise_qty")]
+    public string? CompromiseQty { get; set; }
+
+    /// <summary>
+    ///     鎷掓敹鏁伴噺锛堝搴旀暟鎹簱 refused_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "refused_qty")]
+    public string? RefusedQty { get; set; }
+
+    /// <summary>
+    ///     閫�璐у崟ERP缂栧彿锛堝搴旀暟鎹簱 rto_erp_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "rto_erp_no")]
+    public string? RtoErpNo { get; set; }
+
+    /// <summary>
+    ///     閫�璐у崟椤规锛堝搴旀暟鎹簱 rto_line_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "rto_line_no")]
+    public string? RtoLineNo { get; set; }
+
+    /// <summary>
+    ///     浜у搧闀垮害锛堝搴旀暟鎹簱 prod_length 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "prod_length")]
+    public string? ProdLength { get; set; }
+
+    /// <summary>
+    ///     浜у搧瀹藉害锛堝搴旀暟鎹簱 prod_width 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "prod_width")]
+    public string? ProdWidth { get; set; }
+
+    /// <summary>
+    ///     浜у搧楂樺害锛堝搴旀暟鎹簱 prod_height 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "prod_height")]
+    public string? ProdHeight { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍛樺鍚嶏紙瀵瑰簲鏁版嵁搴� buyer_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "buyer_name")]
+    public string? BuyerName { get; set; }
+
+    /// <summary>
+    ///     棰勮浜ゆ湡锛堝搴旀暟鎹簱 expected_date 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "expected_date")]
+    public string? ExpectedDate { get; set; }
+
+    /// <summary>
+    ///     鍥炲浜ゆ湡锛堝搴旀暟鎹簱 answer_date 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "answer_date")]
+    public string? AnswerDate { get; set; }
+
+    /// <summary>
+    ///     甯佺缂栫爜锛堝搴旀暟鎹簱 currency_code 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "currency_code")]
+    public string? CurrencyCode { get; set; }
+
+    /// <summary>
+    ///     甯佺鍚嶇О锛堝搴旀暟鎹簱 currency_name 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "currency_name")]
+    public string? CurrencyName { get; set; }
+
+    /// <summary>
+    ///     鍙戦�佺鏀剁姸鎬侊紙瀵瑰簲鏁版嵁搴� send_verify_status 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "send_verify_status")]
+    public string? SendVerifyStatus { get; set; }
+
+    /// <summary>
+    ///     缁撴灉鏍囪瘑锛堝搴旀暟鎹簱 result_flag 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "result_flag")]
+    public string? ResultFlag { get; set; }
+
+    /// <summary>
+    ///     鐢宠鍑鸿揣鏁伴噺锛堝搴旀暟鎹簱 apply_delivery_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "apply_delivery_qty")]
+    public string? ApplyDeliveryQty { get; set; }
+
+    /// <summary>
+    ///     鐢宠鍑鸿揣璁′环鏁伴噺锛堝搴旀暟鎹簱 apply_delivery_valuation_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "apply_delivery_valuation_qty")]
+    public string? ApplyDeliveryValuationQty { get; set; }
+
+    /// <summary>
+    ///     鎵瑰彿锛堝搴旀暟鎹簱 batch_number 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "batch_number")]
+    public string? BatchNumber { get; set; }
+
+    /// <summary>
+    ///     宸叉敹璐ф暟閲忥紙瀵瑰簲鏁版嵁搴� receive_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "receive_qty")]
+    public string? ReceiveQty { get; set; }
+
+    /// <summary>
+    ///     宸插叆搴撴暟閲忥紙瀵瑰簲鏁版嵁搴� storage_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "storage_qty")]
+    public string? StorageQty { get; set; }
+
+    /// <summary>
+    ///     閫�璐ф暟閲忥紙瀵瑰簲鏁版嵁搴� return_qty 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "return_qty")]
+    public string? ReturnQty { get; set; }
+
+    /// <summary>
+    ///     浼樺厛妫�楠�:0-姝e父 1-浼樺厛 2-绱ф�ワ紙瀵瑰簲鏁版嵁搴� first_check 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "first_check")]
+    public string? FirstCheck { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曢」娆℃樉绀虹敤锛堝搴旀暟鎹簱 po_line_no_show 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "po_line_no_show")]
+    public string? PoLineNoShow { get; set; }
+
+    /// <summary>
+    ///     澶氳瑷�澶囨敞锛堝搴旀暟鎹簱 remarks 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "remarks")]
+    public string? Remarks { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿锛堝搴旀暟鎹簱 create_time 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "create_time")]
+    public string? CreateTime { get; set; }
+
+    /// <summary>
+    ///     鏇存柊鏃堕棿锛堝搴旀暟鎹簱 update_time 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "update_time")]
+    public string? UpdateTime { get; set; }
+
+    /// <summary>
+    ///     鍏宠仈涓昏〃ID锛堝搴旀暟鎹簱 pid 鍒楋紝鍏宠仈閫佽揣閫氱煡鍗曚富琛―ELIVERY_NOTICE鐨刬d锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "pid")]
+    public Guid? Pid { get; set; }
+
+    /// <summary>
+    ///     鎺掔▼椤规鍙凤紙瀵瑰簲鏁版嵁搴� plan_line_no 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "plan_line_no")]
+    public string? PlanLineNo { get; set; }
+
+    /// <summary>
+    ///     閫佽揣鍗曞彿锛堝搴旀暟鎹簱 delivery_no 鍒楋紝鍏宠仈涓昏〃DELIVERY_NOTICE鐨刣elivery_no锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "delivery_no")]
+    public string? DeliveryNo { get; set; }
+
+    /// <summary>
+    ///     鍚屾鏃堕棿锛堝搴旀暟鎹簱 SYNCHRONOUS_DATE 鍒楋級
+    /// </summary>
+    [SugarColumn(ColumnName = "SYNCHRONOUS_DATE")]
+    public DateTime? SynchronousDate { get; set; }
+    
+    
+    /// <summary>
+    ///     閲囪喘璁㈠崟鏁伴噺锛堝搴旀暟鎹簱 purchase_qty 鍒楋紝decimal(18,10) 绫诲瀷锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "purchase_qty")]
+    public decimal? PurchaseQty { get; set; }
+
+ 
+
+    /// <summary>
+    ///     鏈浜よ揣鏁伴噺锛堝搴旀暟鎹簱 include_qty 鍒楋紝decimal(18,10) 绫诲瀷锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "include_qty")]
+    public decimal? IncludeQty { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曚綅锛堝唴鐮侊級锛堝搴旀暟鎹簱 purchase_unit 鍒楋紝varchar(50) 绫诲瀷锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "purchase_unit")]
+    public string? PurchaseUnit { get; set; }
+
+    /// <summary>
+    ///     搴撳瓨鍗曚綅锛堝唴鐮侊級锛堝搴旀暟鎹簱 inventory_unit 鍒楋紝varchar(50) 绫诲瀷锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "inventory_unit")]
+    public string? InventoryUnit { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曞垎褰曞唴鐮侊紙瀵瑰簲鏁版嵁搴� erpline_id 鍒楋紝varchar(50) 绫诲瀷锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "erpline_id")]
+    public string? ErplineId { get; set; }
+
+    /// <summary>
+    ///     鏄惁璧犲搧锛堝搴旀暟鎹簱 is_gift 鍒楋紝bit 绫诲瀷锛�0=鍚︼紝1=鏄級
+    /// </summary>
+    [SugarColumn(ColumnName = "is_gift")]
+    public bool? IsGift { get; set; }
+    
+}
\ No newline at end of file
diff --git a/MES.Service/service/BasicData/MesDeliveryNoteDetailManager.cs b/MES.Service/service/BasicData/MesDeliveryNoteDetailManager.cs
new file mode 100644
index 0000000..ee9d1b2
--- /dev/null
+++ b/MES.Service/service/BasicData/MesDeliveryNoteDetailManager.cs
@@ -0,0 +1,12 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+
+namespace MES.Service.service.BasicData;
+
+
+public class MesDeliveryNoteDetailManager: Repository<MesDeliveryNoticeDetail>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesRohInDataManager.cs
+}
\ No newline at end of file
diff --git a/MES.Service/service/BasicData/MesDeliveryNoteManager.cs b/MES.Service/service/BasicData/MesDeliveryNoteManager.cs
new file mode 100644
index 0000000..54f1fe3
--- /dev/null
+++ b/MES.Service/service/BasicData/MesDeliveryNoteManager.cs
@@ -0,0 +1,166 @@
+锘縰sing Masuit.Tools;
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using SqlSugar;
+using System.Globalization;
+
+namespace MES.Service.service.BasicData;
+
+public class MesDeliveryNoteManager : Repository<MesDeliveryNotice>
+{
+    private readonly MesDeliveryNoteDetailManager deliveryNoteDetailManager = new();
+
+    /// <summary>
+    /// 淇濆瓨閫佽揣鍗曟暟鎹�
+    /// </summary>
+    /// <param name="deliveryNoteWrapper">閫佽揣鍗曞寘瑁呯被锛堝寘鍚富琛ㄥ拰鏄庣粏鏁版嵁锛�</param>
+    /// <returns>鏄惁淇濆瓨鎴愬姛</returns>
+    public bool Save(DeliveryNoteWrapper deliveryNoteWrapper)
+    {
+        var deliveryNote = deliveryNoteWrapper.DeliveryNote;
+        var mesDeliveryNote = GetMesDeliveryNote(deliveryNote);
+        var mesDeliveryNoteDetails =
+            GetMesDeliveryNoticeDetails(deliveryNoteWrapper.DeliveryNoteDetails, mesDeliveryNote.DeliveryNo);
+
+        return UseTransaction(db =>
+        {
+            return deliveryNote.Type switch
+            {
+                "1" => SaveOrUpdateData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1 : 0,
+                "2" => UpdateData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1 : 0,
+                _ => throw new NotImplementedException($"鏈疄鐜扮殑绫诲瀷锛歿deliveryNote.Type}")
+            };
+        }) > 0;
+    }
+
+    /// <summary>
+    /// 鏇存柊閫佽揣鍗曟暟鎹�
+    /// </summary>
+    private bool UpdateData(SqlSugarScope db, MesDeliveryNotice mesDeliveryNote,
+        List<MesDeliveryNoticeDetail> mesDeliveryNoteDetails)
+    {
+        var detailIds = mesDeliveryNoteDetails.Select(s => s.Guid).ToArray();
+
+        // 鍒犻櫎涓昏〃鏁版嵁
+        var deleteMain = db.Deleteable<MesDeliveryNotice>()
+            .Where(a => a.DeliveryNo == mesDeliveryNote.DeliveryNo)
+            .ExecuteCommand() > 0;
+
+        // 鍒犻櫎鏄庣粏鏁版嵁
+        var deleteDetails = db.Deleteable<MesDeliveryNoticeDetail>()
+            .Where(s => detailIds.Contains(s.Guid))
+            .ExecuteCommand() > 0;
+
+        if (deleteMain && deleteDetails) return true;
+        throw new NotImplementedException("閫佽揣鍗曟洿鏂板け璐�");
+    }
+
+    /// <summary>
+    /// 淇濆瓨鎴栨洿鏂伴�佽揣鍗曟暟鎹�
+    /// </summary>
+    private bool SaveOrUpdateData(SqlSugarScope db, MesDeliveryNotice mesDeliveryNote,
+        List<MesDeliveryNoticeDetail> mesDeliveryNoteDetails)
+    {
+        // 鑻ュ瓨鍦ㄥ垯鍏堝垹闄や富琛ㄦ暟鎹�
+        if (!mesDeliveryNote.DeliveryNo.IsNullOrEmpty())
+        {
+            db.Deleteable<MesDeliveryNotice>()
+                .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo)
+                .ExecuteCommand();
+        }
+
+        // 鍒犻櫎鍏宠仈鐨勬槑缁嗘暟鎹�
+        if (mesDeliveryNoteDetails.Count > 0)
+        {
+            db.Deleteable<MesDeliveryNoticeDetail>()
+                .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo)
+                .ExecuteCommand();
+        }
+
+        // 鎻掑叆涓昏〃鏁版嵁
+        var insertMain = db.Insertable(mesDeliveryNote)
+            .IgnoreColumns(true)
+            .ExecuteCommand() > 0;
+
+        // 鎻掑叆鏄庣粏鏁版嵁
+        var insertDetails = db.Insertable(mesDeliveryNoteDetails)
+            .PageSize(1)
+            .IgnoreColumnsNull()
+            .ExecuteCommand() > 0;
+
+        if (insertMain && insertDetails) return true;
+        throw new NotImplementedException("閫佽揣鍗曚繚瀛樺け璐�");
+    }
+
+    /// <summary>
+    /// 鎵归噺淇濆瓨閫佽揣鍗�
+    /// </summary>
+    public bool SaveList(List<DeliveryNoteWrapper> deliveryNoteWrappers)
+    {
+        var results = deliveryNoteWrappers.Select(Save).ToList();
+        return results.All(b => b);
+    }
+
+    /// <summary>
+    /// 杞崲閫佽揣鍗曚富琛ㄦ暟鎹�
+    /// </summary>
+    private MesDeliveryNotice GetMesDeliveryNote(deliveryNote deliveryNote)
+    {
+        // 鏌ユ壘宸叉湁璁板綍
+        var existing = base.GetSingle(it => it.DeliveryNo == deliveryNote.DeliveryNo);
+        var mesDeliveryNote = existing ?? new MesDeliveryNotice();
+
+        // 涓昏〃瀛楁鏄犲皠
+        mesDeliveryNote.DeliveryNo = deliveryNote.DeliveryNo;
+        mesDeliveryNote.SupplierId = deliveryNote.SupplierId;
+
+        // 澶勭悊鏃ユ湡瀛楁
+        // 澶勭悊鏃ユ湡瀛楁锛堟暟鎹簱瀛樺偍涓哄瓧绗︿覆绫诲瀷鐨勬椂闂存埑锛�
+        if (deliveryNote.FDate != null)
+        {
+            // 鐩存帴璧嬪�煎瓧绗︿覆锛屾棤闇�杞崲涓篋ateTime
+            mesDeliveryNote.DeliveryDate = deliveryNote.FDate;
+        }
+
+        mesDeliveryNote.Remark = deliveryNote.Remark;
+        mesDeliveryNote.FReceiveOrgId = deliveryNote.FReceiveOrgId;
+       
+        mesDeliveryNote.CreateDate = DateTime.Now;
+
+        return mesDeliveryNote;
+    }
+
+    /// <summary>
+    /// 杞崲閫佽揣鍗曟槑缁嗘暟鎹�
+    /// </summary>
+    private List<MesDeliveryNoticeDetail> GetMesDeliveryNoticeDetails(
+        List<deliveryNoteDetail> deliveryNoteDetails,
+        string deliveryNo)
+    {
+        return deliveryNoteDetails.Select(detail =>
+        {
+            // 鏌ユ壘宸叉湁鏄庣粏璁板綍
+            var existingDetail = deliveryNoteDetailManager.GetSingle(it =>
+                it.DeliveryNo == deliveryNo && it.LineNo == detail.LineNo);
+            var mesDetail = existingDetail ?? new MesDeliveryNoticeDetail();
+
+            // 鏄庣粏瀛楁鏄犲皠
+            mesDetail.DeliveryNo = deliveryNo;
+            mesDetail.ProductCode = detail.ProductCode;
+            mesDetail.PurchaseQty = detail.PurchaseQty.HasValue ? Convert.ToDecimal(detail.PurchaseQty) : 0;
+            mesDetail.DeliveryQty = detail.DeliveryQty.HasValue ? Convert.ToDecimal(detail.DeliveryQty) : 0;
+            mesDetail.IncludeQty = detail.IncludeQty.HasValue ? Convert.ToDecimal(detail.IncludeQty) : 0;
+            mesDetail.PurchaseUnit = detail.PurchaseUnit;
+            mesDetail.InventoryUnit = detail.InventoryUnit;
+            mesDetail.Remark = detail.Remark;
+            mesDetail.PoErpNo = detail.FBillNo;
+            mesDetail.ErplineId = detail.OrderlineId;
+            mesDetail.IsGift = detail.IsGift;
+            mesDetail.LineNo = detail.LineNo;
+            mesDetail.SynchronousDate = DateTime.Now;
+
+            return mesDetail;
+        }).ToList();
+    }
+}
\ No newline at end of file
diff --git a/MES.Service/service/BasicData/MesRohInManager.cs b/MES.Service/service/BasicData/MesRohInManager.cs
index 1260083..04fe4f0 100644
--- a/MES.Service/service/BasicData/MesRohInManager.cs
+++ b/MES.Service/service/BasicData/MesRohInManager.cs
@@ -23,12 +23,8 @@
         {
             return rohInErpRohIn.Type switch
             {
-                "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn,
-                    mesRohInDatas)
-                    ? 1
-                    : 0,
-                "3" => UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
-                _ => throw new NotImplementedException(
+                "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn,  mesRohInDatas)  ? 1   : 0,
+                "3" => UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0, _ => throw new NotImplementedException(
                     $"type娌℃湁{rohInErpRohIn.Type}杩欎釜绫诲瀷")
             };
         }) > 0;
diff --git a/MESApplication/Controllers/BasicData/MesDeliveryNoteController.cs b/MESApplication/Controllers/BasicData/MesDeliveryNoteController.cs
new file mode 100644
index 0000000..c7db727
--- /dev/null
+++ b/MESApplication/Controllers/BasicData/MesDeliveryNoteController.cs
@@ -0,0 +1,258 @@
+锘縰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 MesDeliveryNoteController : ControllerBase
+{
+    private readonly MessageCenterManager _manager = new();
+    private readonly MesDeliveryNoteManager m = new();
+
+    private readonly string METHOD = "POST";
+
+    private readonly string TableName = "MES_ROHIN";
+
+    private readonly string URL = "http://localhost:10054/api/MesRohIn/";
+
+    //
+    [HttpPost("Save")]
+    public ResponseResult Save(DeliveryNoteWrapper rohIn)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "Save";
+        entity.Method = METHOD;
+        entity.Data = JsonConvert.SerializeObject(rohIn);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        entity.Route = rohIn.DeliveryNote.DeliveryNo;
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.Save(rohIn);
+
+            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<DeliveryNoteWrapper> 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] MesRohIn 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] MesRohIn 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] MesRohIn 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

--
Gitblit v1.9.3