From da3b2cfb3a34a7b1f83dcd9fc762b1d2459547dc Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期四, 26 六月 2025 20:47:11 +0800
Subject: [PATCH] 添加退货申请单接口

---
 StandardPda/MES.Service/Modes/MesInvItemArnDetail.cs                         |  291 +++++++++
 StandardPda/MES.Service/service/Warehouse/MesInvItemInsManager.cs            |    8 
 StandardPda/MES.Service/Modes/DeliveryDetail.cs                              |  230 +++++++
 StandardPda/MES.Service/Modes/MesInvItemIns.cs                               |    4 
 StandardPda/MES.Service/service/Warehouse/MesInvItemArnManager.cs            |    8 
 StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs           |  369 ++++++++++++
 StandardPda/MES.Service/service/Warehouse/MesInvItemOutItemsManager.cs       |    8 
 StandardPda/MES.Service/Dto/service/ItemOutList.cs                           |   13 
 StandardPda/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs      |    8 
 StandardPda/MES.Service/Modes/MesInvItemOutItems.cs                          |  259 ++++++++
 StandardPda/MES.Service/Dto/service/ItemOut.cs                               |    8 
 StandardPda/MESApplication/MESApplication.csproj                             |    8 
 StandardPda/MES.Service/Modes/MesInvItemOuts.cs                              |  305 ++++++++++
 StandardPda/MES.Service/Dto/service/ItemOutFrom.cs                           |   19 
 StandardPda/MESApplication/Controllers/Warehouse/MesInvItemOutsController.cs |  213 +++++++
 15 files changed, 1,745 insertions(+), 6 deletions(-)

diff --git a/StandardPda/MES.Service/Dto/service/ItemOut.cs b/StandardPda/MES.Service/Dto/service/ItemOut.cs
new file mode 100644
index 0000000..3aa14ed
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/ItemOut.cs
@@ -0,0 +1,8 @@
+锘縩amespace MES.Service.Dto.service;
+
+public class ItemOut
+{
+    public ItemOutFrom from { get; set; }
+
+    public List<ItemOutList> items { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/service/ItemOutFrom.cs b/StandardPda/MES.Service/Dto/service/ItemOutFrom.cs
new file mode 100644
index 0000000..da121d6
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/ItemOutFrom.cs
@@ -0,0 +1,19 @@
+锘縩amespace MES.Service.Dto.service;
+
+public class ItemOutFrom
+{
+    public string Type { get; set; }
+    
+    public string? CreateBy { get; set; }
+    public string? FMRMODE { get; set; }
+    public string? RtnNo{ get; set; }
+   
+    public string DepotId { get; set; }
+    
+    public string SupperId { get; set; }
+
+    //public string? AsnNo { get; set; }
+    public string? MesNo { get; set; }
+    
+    public string? SqNo { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/service/ItemOutList.cs b/StandardPda/MES.Service/Dto/service/ItemOutList.cs
new file mode 100644
index 0000000..f0d86f8
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/ItemOutList.cs
@@ -0,0 +1,13 @@
+锘縩amespace MES.Service.Dto.service;
+
+public class ItemOutList
+{
+    public string SrcDocNo { get; set; }
+    public string SrcDocLineNo { get; set; }
+    public string AsnLineNo { get; set; }
+    public string itemId { get; set; }
+    public string qty { get; set; }
+    public string SqNo { get; set; }
+    public string MesNo { get; set; }
+    //public string? AsnNo { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/DeliveryDetail.cs b/StandardPda/MES.Service/Modes/DeliveryDetail.cs
new file mode 100644
index 0000000..7ff69e7
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/DeliveryDetail.cs
@@ -0,0 +1,230 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 
+    ///</summary>
+    [SugarTable("DELIVERY_DETAIL")]
+    public class DeliveryDetail
+    {
+        /// <summary>
+        /// SEQ_DELIVERY_DETAIL 
+        ///</summary>
+        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+        public decimal Id { get; set; }
+
+        /// <summary>
+        /// DELIVERY_MAIN鐨刬d 
+        ///</summary>
+        [SugarColumn(ColumnName = "PID")]
+        public decimal? Pid { get; set; }
+
+        /// <summary>
+        /// 閫佽揣鍗曞彿锛堜富涓氬姟鏍囪瘑锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZASN")]
+        public string? Zzasn { get; set; }
+
+        /// <summary>
+        /// 閫佽揣鍗曡鍙� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZITEM_ID")]
+        public string? ZzitemId { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍑瘉鍙凤紙PO鍗曞彿锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZPO_NO")]
+        public string? ZzpoNo { get; set; }
+
+        /// <summary>
+        /// 閲囪喘璁㈠崟琛岄」鐩� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZPO_ITEM_ID")]
+        public string? ZzpoItemId { get; set; }
+
+        /// <summary>
+        /// 灏忕背閫�鎹㈣揣鍗曞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZREQNR")]
+        public string? Zzreqnr { get; set; }
+
+        /// <summary>
+        /// 閫�鎹㈣揣鐢宠鍗曡鍙� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZREQLN")]
+        public string? Zzreqln { get; set; }
+
+        /// <summary>
+        /// 灏忕背鍐呴儴鐗╂枡缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZPRODUCT_ID")]
+        public string? ZzproductId { get; set; }
+
+        /// <summary>
+        /// 宸ュ巶瀹為檯浣跨敤鏂欏彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZVPRODUCT_ID")]
+        public string? ZzvproductId { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鍗曚綅缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZSKU")]
+        public string? Zzsku { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎻忚堪锛堝锛氭墜鏈哄睆骞曠粍浠讹級 
+        ///</summary>
+        [SugarColumn(ColumnName = "MAKTX")]
+        public string? Maktx { get; set; }
+
+        /// <summary>
+        /// 浜у搧鍨嬪彿锛堢ず渚嬶細Xiaomi 14 Ultra锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "MODELNUMBER")]
+        public string? Modelnumber { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟闇�姹傛暟閲� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZQUANTITY")]
+        public string? Zzquantity { get; set; }
+
+        /// <summary>
+        /// 璁¢噺鍗曚綅锛堝锛氫釜/绠憋級 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZUNIT")]
+        public string? Zzunit { get; set; }
+
+        /// <summary>
+        /// 鏈畬鎴愭暟閲忥紙寰呰ˉ璐ч噺锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZZOPEN_QTY")]
+        public string? ZzopenQty { get; set; }
+
+        /// <summary>
+        /// 瀹為檯鏀惰揣鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "ACT_GR_QTY")]
+        public string? ActGrQty { get; set; }
+
+        /// <summary>
+        /// Shipment鎵规鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "SHIPMENTID_NUM")]
+        public string? ShipmentidNum { get; set; }
+
+        /// <summary>
+        /// 鍝佺墝鍚嶇О锛堝锛歑iaomi锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "BRAND")]
+        public string? Brand { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鍦帮紙绀轰緥锛氫腑鍥芥繁鍦筹級 
+        ///</summary>
+        [SugarColumn(ColumnName = "PLACE")]
+        public string? Place { get; set; }
+
+        /// <summary>
+        /// 鍝佺墝绫诲瀷锛堣嚜鏈�/ODM/OEM锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "BRAND_TYPE")]
+        public string? BrandType { get; set; }
+
+        /// <summary>
+        /// 鐗╂祦鎵规鍞竴鏍囪瘑 
+        ///</summary>
+        [SugarColumn(ColumnName = "ZSHIPMENT_ID")]
+        public string? ZshipmentId { get; set; }
+
+        /// <summary>
+        /// 璇︾粏閰嶉�佸湴鍧�锛堢渷甯傚尯琛楅亾闂ㄧ墝鍙凤級 
+        ///</summary>
+        [SugarColumn(ColumnName = "ADDRESS_DETAIL")]
+        public string? AddressDetail { get; set; }
+
+        /// <summary>
+        /// 璋冨嚭椤圭洰鍙凤紙璋冩嫧鏉ユ簮鏍囪瘑锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "BEDNR")]
+        public string? Bednr { get; set; }
+
+        /// <summary>
+        /// 璋冨嚭浠撶被鍨嬶紙鎴愬搧浠�/鍘熸枡浠擄級 
+        ///</summary>
+        [SugarColumn(ColumnName = "WARE_TYPE_FROM")]
+        public string? WareTypeFrom { get; set; }
+
+        /// <summary>
+        /// 璋冨叆浠撶被鍨� 
+        ///</summary>
+        [SugarColumn(ColumnName = "WARE_TYPE_TO")]
+        public string? WareTypeTo { get; set; }
+
+        /// <summary>
+        /// 鐗╂帶璋冩嫧鍗曞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "XMSTO_NO")]
+        public string? XmstoNo { get; set; }
+
+        /// <summary>
+        /// 璋冩嫧鍗曡椤� 
+        ///</summary>
+        [SugarColumn(ColumnName = "XMSTO_ITEM_NO")]
+        public string? XmstoItemNo { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庝慨鏀规椂闂达紙鏍煎紡锛歽yyyMMddHHmmss锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CHANGED_AT")]
+        public string? ChangedAt { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鍒涘缓鏃堕棿锛堟牸寮忥細yyyyMMddHHmmss锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATED_AT")]
+        public string? CreatedAt { get; set; }
+
+        /// <summary>
+        /// 鍏宠仈椤圭洰鏈哄瀷锛堝鍊奸�楀彿鍒嗛殧锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "APP_MODELS")]
+        public string? AppModels { get; set; }
+
+        /// <summary>
+        /// 澶栭儴绯荤粺鍑瘉鍙凤紙濡侲RP鍗曞彿锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "EXT_DOC_NO")]
+        public string? ExtDocNo { get; set; }
+
+        /// <summary>
+        /// 澶栭儴鍑瘉琛岄」鐩� 
+        ///</summary>
+        [SugarColumn(ColumnName = "EXT_DOC_ITEM")]
+        public string? ExtDocItem { get; set; }
+
+        /// <summary>
+        /// 娴峰叧HS缂栫爜锛堣繘鍑哄彛鎶ュ叧鐢級 
+        ///</summary>
+        [SugarColumn(ColumnName = "BATCH_ID")]
+        public string? BatchId { get; set; }
+
+        /// <summary>
+        /// 浼樺厛閲囪喘鏍囪瘑锛堢揣鎬ュ鏂欐爣璁帮級 
+        ///</summary>
+        [SugarColumn(ColumnName = "BATCH_ROW")]
+        public string? BatchRow { get; set; }
+
+        /// <summary>
+        /// 涓插彿绠$悊鏍囪瘑锛圷/N锛屾帶鍒跺簭鍒楀彿閲囬泦锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "IS_IDENTIFICATION")]
+        public string? IsIdentification { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemArnDetail.cs b/StandardPda/MES.Service/Modes/MesInvItemArnDetail.cs
new file mode 100644
index 0000000..984683f
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemArnDetail.cs
@@ -0,0 +1,291 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+/// </summary>
+[SugarTable("MES_INV_ITEM_ARN_DETAIL")]
+public class MesInvItemArnDetail
+{
+    /// <summary>
+    ///     SEQ_INV_ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     涓昏〃ID
+    /// </summary>
+    [SugarColumn(ColumnName = "MID")]
+    public decimal? Mid { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN")]
+    public string? Ebeln { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_LINE")]
+    public decimal? EbelnLine { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_QTY")]
+    public decimal? EbelnQty { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     鏀惰揣鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "QUANTITY")]
+    public decimal? Quantity { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string? CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂颁汉
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string? LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂版椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     鍒嗗巶缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string? Factory { get; set; }
+
+    /// <summary>
+    ///     鍏徃浠g爜
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string? Company { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗旾D
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_K3ID")]
+    public string? EbelnK3id { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曡ID
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_K3ID")]
+    public string? LineK3id { get; set; }
+
+    /// <summary>
+    ///     鏈搴旀敹鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "SUB_QTY")]
+    public decimal? SubQty { get; set; }
+
+    /// <summary>
+    ///     浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "MARGIN_QTY")]
+    public decimal? MarginQty { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string? WorkNo { get; set; }
+
+    /// <summary>
+    ///     鎬ユ枡鏍囪瘑
+    /// </summary>
+    [SugarColumn(ColumnName = "URGENT_FLAG")]
+    public decimal? UrgentFlag { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "MEMO")]
+    public string? Memo { get; set; }
+
+    /// <summary>
+    ///     妫�楠岀粨鏋�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_RES")]
+    public string? CheckRes { get; set; }
+
+    /// <summary>
+    ///     妫�楠岀姸鎬�  锛堝緟妫�銆佸垎閫夈�佺壒閲囥�佸凡妫�锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_STATES")]
+    public string? CheckStates { get; set; }
+
+    /// <summary>
+    ///     鏀惰揣浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "QUANTITY_M")]
+    public decimal? QuantityM { get; set; }
+
+    /// <summary>
+    ///     鏈搴旀敹浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "SUB_MQTY")]
+    public decimal? SubMqty { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾棩鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_DATE")]
+    public DateTime? CheckDate { get; set; }
+
+    /// <summary>
+    ///     鏄惁妫�楠�
+    /// </summary>
+    [SugarColumn(ColumnName = "ISCHECK")]
+    public short? Ischeck { get; set; }
+
+    /// <summary>
+    ///     宸叉敹鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "OK_QTY")]
+    public decimal? OkQty { get; set; }
+
+    /// <summary>
+    ///     宸叉敹浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "OK_MQTY")]
+    public decimal? OkMqty { get; set; }
+
+    /// <summary>
+    ///     浜у搧鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_STYLE")]
+    public string? BoardStyle { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LINE")]
+    public decimal? WorkLine { get; set; }
+
+    /// <summary>
+    ///     0銆侀噰璐崟锛�1銆佸澶栧崟
+    /// </summary>
+    [SugarColumn(ColumnName = "F_TYPE")]
+    public decimal? FType { get; set; }
+
+    /// <summary>
+    ///     鏄惁鍏ュ簱
+    /// </summary>
+    [SugarColumn(ColumnName = "ISDEPS_IN")]
+    public short? IsdepsIn { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "DHA001")]
+    public string? Dha001 { get; set; }
+
+    /// <summary>
+    ///     宸插叆搴撴暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "OK_RKQTY")]
+    public decimal? OkRkqty { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "CBILL_NO")]
+    public string? CbillNo { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍏ュ簱鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "CG_RKQTY")]
+    public decimal? CgRkqty { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_ID")]
+    public decimal? ItemId { get; set; }
+
+    /// <summary>
+    ///     閫�璐ф爣璇�
+    /// </summary>
+    [SugarColumn(ColumnName = "RETURN_FLAG")]
+    public decimal? ReturnFlag { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SALES_ORDER")]
+    public string? SalesOrder { get; set; }
+
+    /// <summary>
+    ///     涓撶敤鐗╂枡鏍囪瘑
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_ZY")]
+    public decimal? IsZy { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱瀹屾垚鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_DATE")]
+    public DateTime? RkDate { get; set; }
+
+    /// <summary>
+    ///     璁″垝璺熻釜鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "FMTONO")]
+    public string? Fmtono { get; set; }
+
+    /// <summary>
+    ///     渚涘崗鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "DELIVERY_NO")]
+    public string? DeliveryNo { get; set; }
+
+    /// <summary>
+    ///     渚涘崗鍒嗗綍鍐呯爜
+    /// </summary>
+    [SugarColumn(ColumnName = "DELIVERY_LINE")]
+    public decimal? DeliveryLine { get; set; }
+
+    /// <summary>
+    ///     鎵瑰彿
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT_NO")]
+    public string? LotNo { get; set; }
+
+    /// <summary>
+    ///     鏍囪瘑璇ョ墿鏂欐槸鍚﹀凡瀹屾垚閫�琛ユ帹閫佹搷浣滐紝N-鏈帹閫侊紝Y-宸叉帹閫�
+    /// </summary>
+    [SugarColumn(ColumnName = "REPLENISHMENT_FLAG")]
+    public string? ReplenishmentFlag { get; set; }
+
+    /// <summary>
+    ///     璁″垝琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "PLAN_LINE_NO")]
+    public string? PlanLineNo { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemIns.cs b/StandardPda/MES.Service/Modes/MesInvItemIns.cs
index f88c333..537e055 100644
--- a/StandardPda/MES.Service/Modes/MesInvItemIns.cs
+++ b/StandardPda/MES.Service/Modes/MesInvItemIns.cs
@@ -312,8 +312,8 @@
     /// <summary>
     ///     鎶ュ伐浜�
     /// </summary>
-    [SugarColumn(ColumnName = "BGR")]
-    public string Bgr { get; set; }
+    //[SugarColumn(ColumnName = "BGR")]
+    //public string Bgr { get; set; }
 
     //鍦ㄦ暟鎹簱鏌ヨ鏃跺拷鐣ヨ繖涓瓧娈�
     [SugarColumn(IsIgnore = true)] public string? DepotName { get; set; }
diff --git a/StandardPda/MES.Service/Modes/MesInvItemOutItems.cs b/StandardPda/MES.Service/Modes/MesInvItemOutItems.cs
new file mode 100644
index 0000000..66da2f5
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemOutItems.cs
@@ -0,0 +1,259 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鍑哄簱鐢宠鐗╂枡琛�
+/// </summary>
+[SugarTable("MES_INV_ITEM_OUT_ITEMS")]
+public class MesInvItemOutItems
+{
+    /// <summary>
+    ///     SEQ_ITEM_ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_OUT_ID",
+        IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鍑哄簱ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_OUT_ID")]
+    public decimal? ItemOutId { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     鐢宠鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "QUANTITY")]
+    public decimal? Quantity { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string? CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     淇敼浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string? LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     淇敼鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     澶囨敞淇℃伅
+    /// </summary>
+    [SugarColumn(ColumnName = "REMARK")]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    ///     宸ュ巶
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string? Factory { get; set; }
+
+    /// <summary>
+    ///     鍏徃
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string? Company { get; set; }
+
+    /// <summary>
+    ///     鎺ㄤ粙浠撳簱
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_CODE")]
+    public string? DepotCode { get; set; }
+
+    /// <summary>
+    ///     鎺ㄤ粙搴撲綅
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
+    public string? DepotSectionCode { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "TASK_NO")]
+    public string? TaskNo { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string? WorkNo { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LINE")]
+    public decimal? WorkLine { get; set; }
+
+    /// <summary>
+    ///     ERP 涓昏〃ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_ID")]
+    public decimal? ErpId { get; set; }
+
+    /// <summary>
+    ///     ERP 浠庤〃ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_AUTOID")]
+    public decimal? ErpAutoid { get; set; }
+
+    /// <summary>
+    ///     ERP_鏂欏彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_ITEM_NO")]
+    public string? ErpItemNo { get; set; }
+
+    /// <summary>
+    ///     棰滆壊
+    /// </summary>
+    [SugarColumn(ColumnName = "COLOR_NAME")]
+    public string? ColorName { get; set; }
+
+    /// <summary>
+    ///     鏈�鏂颁笅杞芥洿鏂版爣璇�
+    /// </summary>
+    [SugarColumn(ColumnName = "UPDATE_FLG")]
+    public decimal? UpdateFlg { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗旾D
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_K3ID")]
+    public decimal? EbelnK3id { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曡ID
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_K3ID")]
+    public decimal? LineK3id { get; set; }
+
+    /// <summary>
+    ///     閲囪喘鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN")]
+    public string? Ebeln { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_LINE")]
+    public decimal? EbelnLine { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_QTY")]
+    public decimal? EbelnQty { get; set; }
+
+    /// <summary>
+    ///     浜у搧缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_ITEM")]
+    public string? BoardItem { get; set; }
+
+    /// <summary>
+    ///     鏄惁濮斿
+    /// </summary>
+    [SugarColumn(ColumnName = "F_TYPE")]
+    public decimal? FType { get; set; }
+
+    /// <summary>
+    ///     鏄惁瀹岀粨
+    /// </summary>
+    [SugarColumn(ColumnName = "STATUS")]
+    public decimal? Status { get; set; }
+
+    /// <summary>
+    ///     瀛愬瓙琛↖D
+    /// </summary>
+    [SugarColumn(ColumnName = "ALLOCATEID")]
+    public decimal? Allocateid { get; set; }
+
+    /// <summary>
+    ///     棰嗘枡缂栧彿/鐢熶骇宸ュ崟
+    /// </summary>
+    [SugarColumn(ColumnName = "PBILL_NO")]
+    public string? PbillNo { get; set; }
+
+    /// <summary>
+    ///     erp鎺ュ彛杩斿洖
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_MARK")]
+    public string? ErpMark { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_NO")]
+    public string? RkNo { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鍗曟暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_QTY")]
+    public decimal? RkQty { get; set; }
+
+    /// <summary>
+    ///     宸叉壂鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "TL_QTY")]
+    public decimal? TlQty { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_ID")]
+    public decimal? ItemId { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鎶曟枡鍗旾D(鍙戞枡鎵爜浣跨敤)
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_DABID")]
+    public decimal? ItemDabid { get; set; }
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT")]
+    public string? Unit { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鍗曡鍐呯爜
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_LINE")]
+    public decimal? RkLine { get; set; }
+
+    /// <summary>
+    ///     璁″垝璺熻釜鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "FMTONO")]
+    public string? Fmtono { get; set; }
+    
+    // <summary>
+    ///     鐢宠琛屽彿
+    /// </summary>
+    //[SugarColumn(ColumnName = "SQ_NO")]
+    //public string? SqNo { get; set; }
+    
+    //[SugarColumn(ColumnName = "ZZITEM_ID")]
+    //public string? ZzitemId{ get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemOuts.cs b/StandardPda/MES.Service/Modes/MesInvItemOuts.cs
new file mode 100644
index 0000000..3540736
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemOuts.cs
@@ -0,0 +1,305 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐗╂枡鍑哄簱琛�
+/// </summary>
+[SugarTable("MES_INV_ITEM_OUTS")]
+public class MesInvItemOuts
+{
+    /// <summary>
+    ///     SEQ_INV_ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ID",
+        IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鍑哄簱鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_OUT_NO")]
+    public string? ItemOutNo { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇璁㈠崟
+    /// </summary>
+    [SugarColumn(ColumnName = "TASK_NO")]
+    public string? TaskNo { get; set; }
+
+    /// <summary>
+    ///     宸ュ簭鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "PROC_NO")]
+    public string? ProcNo { get; set; }
+
+    /// <summary>
+    ///     鐘舵�亅0-鏈鏍�1-瀹℃牳
+    /// </summary>
+    [SugarColumn(ColumnName = "STATUS")]
+    public decimal? Status { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string? CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂颁汉
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string? LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂版椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     鍗曟嵁绫诲瀷ID
+    /// </summary>
+    [SugarColumn(ColumnName = "BILL_TYPE_ID")]
+    public decimal? BillTypeId { get; set; }
+
+    /// <summary>
+    ///     浜嬪姟绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "TRANSACTION_NO")]
+    public decimal? TransactionNo { get; set; }
+
+    /// <summary>
+    ///     澶囨敞淇℃伅
+    /// </summary>
+    [SugarColumn(ColumnName = "REMARK")]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    ///     鍑哄簱鍘熷洜
+    /// </summary>
+    [SugarColumn(ColumnName = "REASON")]
+    public string? Reason { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇绾跨紪鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "PRODUCE_LINE_NO")]
+    public string? ProduceLineNo { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_USER")]
+    public string? CheckUser { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_DATE")]
+    public DateTime? CheckDate { get; set; }
+
+    /// <summary>
+    ///     棰嗘枡鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "OUT_DATE")]
+    public DateTime? OutDate { get; set; }
+
+    /// <summary>
+    ///     棰嗘枡宸ユ
+    /// </summary>
+    [SugarColumn(ColumnName = "MMLIST")]
+    public string? Mmlist { get; set; }
+
+    /// <summary>
+    ///     瀛愬簱CODE
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_CODE")]
+    public string? DepotCode { get; set; }
+
+    /// <summary>
+    ///     SAP杩斿洖鍗曟嵁
+    /// </summary>
+    [SugarColumn(ColumnName = "SAPNO")]
+    public string? Sapno { get; set; }
+
+    /// <summary>
+    ///     鏄惁宸插洖鍐橲AP
+    /// </summary>
+    [SugarColumn(ColumnName = "SAPSTATUS")]
+    public short? Sapstatus { get; set; }
+
+    /// <summary>
+    ///     SAP杩斿洖骞翠唤
+    /// </summary>
+    [SugarColumn(ColumnName = "SAPYEAR")]
+    public short? Sapyear { get; set; }
+
+    /// <summary>
+    ///     SAP杩斿洖淇℃伅
+    /// </summary>
+    [SugarColumn(ColumnName = "SAPTEXT")]
+    public string? Saptext { get; set; }
+
+    /// <summary>
+    ///     宸ュ簭绾夸綋
+    /// </summary>
+    [SugarColumn(ColumnName = "PROC_LINE_NO")]
+    public string? ProcLineNo { get; set; }
+
+    /// <summary>
+    ///     棰嗘枡閮ㄩ棬
+    /// </summary>
+    [SugarColumn(ColumnName = "OUT_PART")]
+    public string? OutPart { get; set; }
+
+    /// <summary>
+    ///     0 鐢熶骇,1 濮斿
+    /// </summary>
+    [SugarColumn(ColumnName = "F_TYPE")]
+    public long? FType { get; set; }
+
+    /// <summary>
+    ///     褰曞叆鎻愪氦
+    /// </summary>
+    [SugarColumn(ColumnName = "OUT_STATUS")]
+    public decimal? OutStatus { get; set; }
+
+    /// <summary>
+    ///     鏄惁鍙
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_VISUAL")]
+    public decimal? IsVisual { get; set; }
+
+    /// <summary>
+    ///     鎺ユ敹浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "RECEIVER")]
+    public string? Receiver { get; set; }
+
+    /// <summary>
+    ///     宸ュ巶缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string? Factory { get; set; }
+
+    /// <summary>
+    ///     鍏徃缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string? Company { get; set; }
+
+    /// <summary>
+    ///     鍐查攢浜嬪姟绫诲瀷缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "MTRANSCTION_NO")]
+    public decimal? MtransctionNo { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string? WorkNo { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞彿琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LINE")]
+    public decimal? WorkLine { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟嗙紪鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_NO")]
+    public string? SuppNo { get; set; }
+
+    /// <summary>
+    ///     璁㈠崟鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "CMPOCODE")]
+    public string? Cmpocode { get; set; }
+
+    /// <summary>
+    ///     鍘熺墿鏂欏嚭璐ф爣璇�
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_FLAG")]
+    public decimal? ItemFlag { get; set; }
+
+    /// <summary>
+    ///     1=鍗婃垚鍝佸嚭璐�
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_FLAG")]
+    public decimal? BoardFlag { get; set; }
+
+    /// <summary>
+    ///     鍑哄簱绫诲埆
+    /// </summary>
+    [SugarColumn(ColumnName = "OUT_TYPE")]
+    public string? OutType { get; set; }
+
+    /// <summary>
+    ///     涓氬姟绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "BUSINESS_TYPE")]
+    public string? BusinessType { get; set; }
+
+    /// <summary>
+    ///     浜у搧缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_ITEM")]
+    public string? BoardItem { get; set; }
+
+    /// <summary>
+    ///     浜ч噺
+    /// </summary>
+    [SugarColumn(ColumnName = "PLAN_QTY")]
+    public decimal? PlanQty { get; set; }
+
+    /// <summary>
+    ///     棰嗘枡缂栧彿/濮斿璁㈠崟
+    /// </summary>
+    [SugarColumn(ColumnName = "PBILL_NO")]
+    public string? PbillNo { get; set; }
+
+    /// <summary>
+    ///     琛ユ枡鐢宠鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BBILL_NO")]
+    public string? BbillNo { get; set; }
+
+    /// <summary>
+    ///     鏍囪瘑 /1宸叉帹閫�
+    /// </summary>
+    [SugarColumn(ColumnName = "NFLAG")]
+    public short? Nflag { get; set; }
+
+    /// <summary>
+    ///     閫�鏂欐柟寮�
+    /// </summary>
+    [SugarColumn(ColumnName = "FMRMODE")]
+    public string? Fmrmode { get; set; }
+
+    /// <summary>
+    ///     erp杩斿洖淇℃伅
+    /// </summary>
+    [SugarColumn(ColumnName = "MSG")]
+    public string? Msg { get; set; }
+
+    /// <summary>
+    ///     鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "STATES")]
+    public string? States { get; set; }
+
+    /// <summary>
+    ///     缁勭粐ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ORGANIZEID")]
+    public string? Organizeid { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs b/StandardPda/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs
new file mode 100644
index 0000000..c094127
--- /dev/null
+++ b/StandardPda/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs
@@ -0,0 +1,8 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+
+namespace MES.Service.service.Warehouse;
+
+public class MesInvItemArnDetailManager : Repository<MesInvItemArnDetail>
+{
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/Warehouse/MesInvItemArnManager.cs b/StandardPda/MES.Service/service/Warehouse/MesInvItemArnManager.cs
new file mode 100644
index 0000000..d7a41fe
--- /dev/null
+++ b/StandardPda/MES.Service/service/Warehouse/MesInvItemArnManager.cs
@@ -0,0 +1,8 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+
+namespace MES.Service.service.Warehouse;
+
+public class MesInvItemArnManager : Repository<MesInvItemArn>
+{
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/Warehouse/MesInvItemInsManager.cs b/StandardPda/MES.Service/service/Warehouse/MesInvItemInsManager.cs
new file mode 100644
index 0000000..18ed8a4
--- /dev/null
+++ b/StandardPda/MES.Service/service/Warehouse/MesInvItemInsManager.cs
@@ -0,0 +1,8 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+
+namespace MES.Service.service.Warehouse;
+
+public class MesInvItemInsManager : Repository<MesInvItemIns>
+{
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/Warehouse/MesInvItemOutItemsManager.cs b/StandardPda/MES.Service/service/Warehouse/MesInvItemOutItemsManager.cs
new file mode 100644
index 0000000..19cb9ef
--- /dev/null
+++ b/StandardPda/MES.Service/service/Warehouse/MesInvItemOutItemsManager.cs
@@ -0,0 +1,8 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+
+namespace MES.Service.service.Warehouse;
+
+public class MesInvItemOutItemsManager : Repository<MesInvItemOutItems>
+{
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs b/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs
new file mode 100644
index 0000000..790677b
--- /dev/null
+++ b/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs
@@ -0,0 +1,369 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+
+namespace MES.Service.service.Warehouse;
+
+public class MesInvItemOutsManager : Repository<MesInvItemOuts>
+{
+    private readonly int BILL_TYPE_ID = 200;
+    private readonly int TRANSACTION_NO = 203;
+
+    public bool ReturnRequest(ItemOut oItemOut)
+    {
+        var itemOutFrom = oItemOut.from;
+        var itemOutLists = oItemOut.items;
+
+        // 鏍规嵁AsnNo鍜孧esNo瀵规槑缁嗚繘琛屽垎缁�
+        var groupedItems = itemOutLists
+            .GroupBy(item => new {   item.MesNo, item.SqNo })
+            .ToList();
+
+        bool result = true;
+        foreach (var group in groupedItems)
+        {
+            //if (group.Key.AsnNo == null)
+            //{
+            //    throw new NotImplementedException("AsnNo涓嶈兘涓虹┖");
+            //}
+
+            if (group.Key.MesNo == null)
+            {
+                throw new NotImplementedException("鍏ュ簱鍗曞崟鍙蜂笉鑳戒负绌�");
+            }
+
+            if (group.Key.SqNo == null)
+            {
+                throw new NotImplementedException("閫�璐х敵璇峰崟琛屽彿涓嶈兘涓虹┖");
+            }
+
+            // 鍒涘缓涓�涓复鏃剁殑itemOutFrom瀵硅薄锛屼娇鐢ㄥ垎缁勭殑Key浣滀负涓昏灞炴��
+            var tempItemOutFrom = new ItemOutFrom
+            {
+                
+                MesNo = group.Key.MesNo,
+                SqNo = group.Key.SqNo,
+                // 缁ф壙鍘熷itemOutFrom鐨勫叾浠栧睘鎬�
+                RtnNo = itemOutFrom.RtnNo,
+                Type = itemOutFrom.Type,
+                CreateBy = itemOutFrom.CreateBy,
+                FMRMODE = itemOutFrom.FMRMODE,
+                DepotId = itemOutFrom.DepotId,
+                SupperId = itemOutFrom.SupperId
+            };
+
+            // 鏍规嵁Type鎵ц涓嶅悓鐨勯�昏緫
+            switch (tempItemOutFrom.Type)
+            {
+                case "1":
+                {
+                    var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
+                        .Where(s => s.BillTypeId == BILL_TYPE_ID
+                                    && s.TransactionNo == TRANSACTION_NO
+                                    && s.ItemOutNo == tempItemOutFrom.RtnNo
+                                  
+                        )
+                        .Count();
+
+                    if (mesInvItemOuts > 0)
+                    {
+                        throw new NotImplementedException(
+                            tempItemOutFrom.RtnNo +
+                            "鐨勯��鏂欑敵璇峰崟宸茬粡瀛樺湪");
+                    }
+
+                    // 涓哄綋鍓嶅垎缁勪繚瀛樻暟鎹�
+                    var groupResult = Save(tempItemOutFrom, group.ToList());
+                    if (!groupResult)
+                    {
+                        result = false;
+                    }
+
+                    break;
+                }
+                case "4":
+                    var removeResult = Remove(tempItemOutFrom);
+                    if (!removeResult)
+                    {
+                        result = false;
+                    }
+
+                    break;
+                default:
+                    result = false;
+                    break;
+            }
+        }
+
+        return result;
+    }
+
+    private bool Save(ItemOutFrom from, List<ItemOutList> items)
+    {
+        var mesInvItemIns = Db.Queryable<MesInvItemIns>()
+            .Where(s => s.BillTypeId == 100
+                        && s.TransctionNo == "101"
+                        && s.BillNo == from.MesNo
+            ).First();
+
+        if (mesInvItemIns == null)
+        {
+            throw new NotImplementedException("閲囪喘鍏ュ簱涓嶅瓨鍦�");
+        }
+
+        var mesDepots = Db.Queryable<MesDepots>()
+            .Where(s => s.DepotId == Decimal.Parse(from.DepotId)).First();
+
+        var mesLinkU9 = Db.Queryable<MesLinkU9>()
+            .Where(s => s.TableType == "MES_SUPPLIER"
+                        && s.U9Id == from.SupperId).First();
+
+        if (mesLinkU9 == null)
+        {
+            throw new NotImplementedException("渚涘簲鍟咺D涓嶅瓨鍦ㄦ垨鏈悓姝ヤ簬U9");
+        }
+
+        var mesSupplier = Db.Queryable<MesSupplier>()
+            .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId))
+            .First();
+
+        if (mesDepots == null)
+        {
+            throw new NotImplementedException("[" + from.DepotId +
+                                              "]浠撳簱涓嶅瓨鍦紝璇峰悓姝ョ粰MES");
+        }
+
+        if (mesSupplier == null)
+        {
+            throw new NotImplementedException("[" + from.SupperId +
+                                              "]渚涘簲鍟嗕笉瀛樺湪锛岃鍚屾缁橫ES");
+        }
+
+        var nextSequenceValue =
+            Db.Ado.SqlQuery<decimal>("SELECT SEQ_OUT_ID.NEXTVAL FROM DUAL")
+                .First();
+
+        // var billCode =
+        //     Db.Ado.SqlQuery<string>(
+        //             "SELECT GETBILLCODE1('1000', '1000', 'TLSQ') FROM DUAL")
+        //         .First();
+        var billCode = from.RtnNo;
+
+        // 鍒涘缓閲囪喘閫�鏂欏崟璁板綍
+        var mesInvItemOuts = new MesInvItemOuts
+        {
+            Id = nextSequenceValue,
+            ItemOutNo = billCode,
+            Status = 0,
+            CreateBy = "PL017",
+            CreateDate = DateTime.Now,
+            BillTypeId = 200,
+            TransactionNo = 203,
+            DepotCode = mesDepots.DepotCode,
+            FType = 0,
+            OutStatus = 0,
+            IsVisual = 1,
+            Factory = "1000",
+            Company = "1000",
+            SuppNo = mesSupplier.SuppNo,
+            ItemFlag = 0,
+            BoardFlag = 0,
+            OutType = "閲囪喘閫�鏂�",
+            Nflag = 0,
+            Fmrmode = from.FMRMODE,
+            Sapno = from.SqNo,
+            Organizeid = "1002503270000079",
+        };
+
+        // 鍒涘缓閲囪喘閫�鏂欏崟璁板綍
+        var mesInvItemOutItems = new List<MesInvItemOutItems>();
+
+        foreach (var itemOutList in items)
+        {
+            // 妫�鏌ュ繀瑕佸瓧娈垫槸鍚︿负绌�
+            if (string.IsNullOrEmpty(itemOutList.SrcDocNo))
+            {
+                throw new NotImplementedException("閲囪喘璁㈠崟鍙蜂笉鑳戒负绌�");
+            }
+
+            if (string.IsNullOrEmpty(itemOutList.SrcDocLineNo))
+            {
+                throw new NotImplementedException("閲囪喘璁㈠崟琛屽彿涓嶈兘涓虹┖");
+            }
+
+            //if (string.IsNullOrEmpty(itemOutList.AsnLineNo))
+            //{
+            //    throw new NotImplementedException("ASN琛屽彿涓嶈兘涓虹┖");
+            //}
+
+            if (string.IsNullOrEmpty(itemOutList.itemId))
+            {
+                throw new NotImplementedException("鐗╂枡ID涓嶈兘涓虹┖");
+            }
+
+            var mesRohInData = Db.Queryable<MesRohInData>()
+                .Where(s => s.BillNo == itemOutList.SrcDocNo
+                            && s.OrderLineId == itemOutList.SrcDocLineNo)
+                .First();
+
+            if (mesRohInData == null)
+            {
+                throw new NotImplementedException("閲囪喘璁㈠崟涓嶅瓨鍦�");
+            }
+
+            //var deliveryDetail = Db.Queryable<DeliveryDetail>()
+            //    .Where(a =>  Int32.Parse(a.ZzitemId) ==
+            //                Int32.Parse(itemOutList.AsnLineNo))
+            //    .Count();
+
+            //if (deliveryDetail <= 0)
+            //{
+            //    throw new NotImplementedException("[" + from.AsnNo + "]鐨勬槑缁嗚[" +
+            //                                      itemOutList.AsnLineNo +
+            //                                      "]涓嶅瓨鍦�");
+            //}
+
+            var itemIdLinkU9 = Db.Queryable<MesLinkU9>()
+                .Where(s => s.TableType == "MES_ITEMS"
+                            && s.U9Id == itemOutList.itemId).First();
+
+            if (mesLinkU9 == null)
+            {
+                throw new NotImplementedException("渚涘簲鍟咺D涓嶅瓨鍦ㄦ垨鏈悓姝ヤ簬U9");
+            }
+
+            var mesItems = Db.Queryable<MesItems>()
+                .Where(s => s.Id == Decimal.Parse(itemIdLinkU9.MesId))
+                .First();
+
+            if (mesItems == null)
+            {
+                throw new NotImplementedException("[" + itemOutList.itemId +
+                                                  "]鐗╂枡涓嶅瓨鍦紝璇峰悓姝ョ粰MES");
+            }
+
+            var mesInvItemInCItems = Db.Queryable<MesInvItemInCItems>()
+                .Where(s => s.ItemInId == mesInvItemIns.Id
+                            && s.ItemNo == mesItems.ItemNo
+                            && s.Ebeln == itemOutList.SrcDocNo
+                            && s.EbelnLineNo ==
+                            Decimal.Parse(itemOutList.SrcDocLineNo)
+                            && s.SuppNo == mesSupplier.SuppNo
+                            ).First();
+
+            if (mesInvItemInCItems == null)
+            {
+                throw new NotImplementedException("娌℃湁瀵瑰簲鐨勫叆搴撴槑缁�");
+            }
+
+
+            // 纭繚CbillNo涓嶄负绌�
+            if (string.IsNullOrEmpty(mesInvItemIns.CbillNo))
+            {
+                throw new NotImplementedException("鍏ュ簱鍗曞叧鑱旂殑閲囪喘鍗曞彿涓嶈兘涓虹┖");
+            }
+
+            mesInvItemOutItems.Add(new MesInvItemOutItems
+            {
+                ItemOutId = nextSequenceValue,
+                ItemNo = mesItems.ItemNo,
+                Quantity = Decimal.Parse(itemOutList.qty),
+                CreateBy = "PL017",
+                CreateDate = DateTime.Now,
+                Factory = "1000",
+                Company = "1000",
+                DepotCode = mesDepots.DepotCode,
+                WorkNo = itemOutList.SrcDocNo, // 纭繚WorkNo鏈夊��
+                WorkLine =
+                    Decimal.Parse(itemOutList.SrcDocLineNo), // 纭繚WorkLine鏈夊��
+                EbelnK3id = Decimal.Parse(mesRohInData.ErpId),
+                LineK3id = Decimal.Parse(mesRohInData.EbelnK3id),
+                FType = 0,
+                Status = 0,
+                PbillNo = mesInvItemIns.CbillNo, // 纭繚PbillNo鏈夊��
+                RkNo = from.MesNo, // 纭繚RkNo鏈夊��
+                RkLine = mesInvItemInCItems.Id, // 纭繚RkLine鏈夊��
+                RkQty = mesInvItemInCItems.Quantity,
+                TlQty = 0,
+                ItemId = Decimal.Parse(itemIdLinkU9.MesId), // 纭繚ItemId鏈夊��
+                //SqNo = itemOutList.SqNo, // 纭繚ItemId鏈夊��
+                //ZzitemId = itemOutList.AsnLineNo, // 纭繚ItemId鏈夊��
+                // Unit = item.Unit,
+            });
+        }
+
+        var outItemCommand = Db.Insertable(mesInvItemOutItems)
+            .PageSize(1).IgnoreColumnsNull().ExecuteCommand();
+        if (outItemCommand <= 0)
+        {
+            throw new Exception("鍒涘缓閲囪喘閫�鏂欏崟瀛愯〃澶辫触");
+        }
+
+        // 鎻掑叆閲囪喘閫�鏂欏崟璁板綍
+        var insertResult = Db.Insertable(mesInvItemOuts).IgnoreColumns(true)
+            .ExecuteCommand();
+        if (insertResult <= 0)
+        {
+            throw new Exception("鍒涘缓閲囪喘閫�鏂欏崟澶辫触");
+        }
+
+        return outItemCommand + insertResult >= 2;
+    }
+
+    private bool Remove(ItemOutFrom from)
+    {
+        // 鏌ユ壘瑕佸垹闄ょ殑閲囪喘閫�鏂欏崟
+        var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
+            .Where(s => s.BillTypeId == BILL_TYPE_ID
+                        && s.TransactionNo == TRANSACTION_NO
+                        && s.ItemOutNo == from.RtnNo).ToList();
+
+        if (mesInvItemOuts == null || mesInvItemOuts.Count == 0)
+        {
+            throw new NotImplementedException("鎵句笉鍒板搴旂殑閲囪喘閫�鏂欏崟: " + from.RtnNo);
+        }
+
+        // 妫�鏌ユ槸鍚︽湁宸插鏍哥殑鍗曟嵁锛屽鏋滃瓨鍦ㄥ凡瀹℃牳(Status=1)鍒欎笉鍏佽鍒犻櫎
+        if (mesInvItemOuts.Any(item => item.Status == 1))
+        {
+            throw new NotImplementedException("瀛樺湪宸插鏍哥殑閲囪喘閫�鏂欏崟锛屼笉鍏佽鍒犻櫎");
+        }
+
+        // 鍒犻櫎鎵�鏈夌浉鍏冲崟鎹�
+        foreach (var itemOut in mesInvItemOuts)
+        {
+            // 鏌ユ壘瑕佸垹闄ょ殑閲囪喘閫�鏂欏崟鏄庣粏
+            var mesInvItemOutItems = Db.Queryable<MesInvItemOutItems>()
+                .Where(s => s.ItemOutId == itemOut.Id)
+                .ToList();
+
+            if (mesInvItemOutItems == null || mesInvItemOutItems.Count == 0)
+            {
+                throw new NotImplementedException(
+                    $"鎵句笉鍒伴噰璐��鏂欏崟[{itemOut.ItemOutNo}]瀵瑰簲鐨勬槑缁�");
+            }
+
+            // 鍒犻櫎閲囪喘閫�鏂欏崟鏄庣粏
+            var deleteItemsResult = Db.Deleteable<MesInvItemOutItems>()
+                .Where(s => s.ItemOutId == itemOut.Id)
+                .ExecuteCommand();
+
+            if (deleteItemsResult <= 0)
+            {
+                throw new Exception($"鍒犻櫎閲囪喘閫�鏂欏崟[{itemOut.ItemOutNo}]鏄庣粏澶辫触");
+            }
+
+            // 鍒犻櫎閲囪喘閫�鏂欏崟
+            var deleteResult = Db.Deleteable<MesInvItemOuts>()
+                .Where(s => s.Id == itemOut.Id)
+                .ExecuteCommand();
+
+            if (deleteResult <= 0)
+            {
+                throw new Exception($"鍒犻櫎閲囪喘閫�鏂欏崟[{itemOut.ItemOutNo}]澶辫触");
+            }
+        }
+
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/Warehouse/MesInvItemOutsController.cs b/StandardPda/MESApplication/Controllers/Warehouse/MesInvItemOutsController.cs
new file mode 100644
index 0000000..685acd3
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/Warehouse/MesInvItemOutsController.cs
@@ -0,0 +1,213 @@
+锘縰sing MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.Warehouse;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using System.Dynamic;
+using System.Threading;
+
+namespace MESApplication.Controllers.Warehouse;
+
+[ApiController]
+[Route("api/[controller]")]
+public class MesInvItemOutsController : ControllerBase
+{
+    private readonly MesInvItemOutsManager m = new();
+
+    private readonly MessageCenterManager _manager = new();
+
+    private readonly string METHOD = "POST";
+
+    private readonly string TableName = "MesInvItemOuts";
+
+    private readonly string URL = "http://localhost:10054/api/MesInvItemOuts/";
+
+    /// <summary>
+    ///     閲囪喘閫�璐х敵璇峰崟
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("ReturnRequest")]
+    public ResponseResult ReturnRequest(ItemOut oItemOut)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "ReturnRequest";
+        entity.Method = METHOD;
+        entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(oItemOut);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var result = m.ReturnRequest(oItemOut);
+            resultInfos.tbBillList = result;
+
+            entity.Result = 0;
+            if (result) 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] MesInvItemOuts 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] MesInvItemOuts 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] MesInvItemOuts 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/MESApplication.csproj b/StandardPda/MESApplication/MESApplication.csproj
index b87eece..3ae7129 100644
--- a/StandardPda/MESApplication/MESApplication.csproj
+++ b/StandardPda/MESApplication/MESApplication.csproj
@@ -9,7 +9,7 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.0"/>
+        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.0" />
         <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
             <PrivateAssets>all</PrivateAssets>
             <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -18,12 +18,12 @@
             <PrivateAssets>all</PrivateAssets>
             <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
         </PackageReference>
-        <PackageReference Include="Oracle.EntityFrameworkCore" Version="8.21.121"/>
-        <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0"/>
+        <PackageReference Include="Oracle.EntityFrameworkCore" Version="8.21.121" />
+        <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
     </ItemGroup>
 
     <ItemGroup>
-        <ProjectReference Include="..\MES.Service\MES.Service.csproj"/>
+        <ProjectReference Include="..\MES.Service\MES.Service.csproj" />
     </ItemGroup>
 
 </Project>

--
Gitblit v1.9.3