From 9b6d6f7f6b89c80edbef8da32feb0cf504a7c523 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 27 十一月 2024 22:38:53 +0800
Subject: [PATCH] 采购退料

---
 Controllers/Warehouse/MesInvItemOutsController.cs |  323 +++++++++
 Dto/service/OutItemDto.cs                         |   16 
 entity/MesInvItemArn.cs                           |    8 
 service/Warehouse/MesInvItemArnManager.cs         |   71 ++
 Controllers/base/MesDepotsController.cs           |  159 ++++
 entity/MesInvItemArnDetail.cs                     |  330 ++++----
 Dto/service/WarehouseQuery.cs                     |    1 
 service/Warehouse/MesInvItemOutItemsManager.cs    |   78 ++
 entity/MesInvItemOutCDetails.cs                   |   57 
 util/UtilityHelper.cs                             |    2 
 entity/CgtlView.cs                                |  138 +++
 entity/MesInvItemOutItems.cs                      |   41 
 Dto/service/MaterialReceipt.cs                    |   12 
 Controllers/Warehouse/MesInvItemArnController.cs  |  202 +++++
 service/Warehouse/MesInvItemOutCDetailsManager.cs |  122 +++
 entity/MesInvItemOuts.cs                          |   66 +
 service/base/MesDepotsManager.cs                  |    7 
 service/Warehouse/MesInvItemOutsManager.cs        |  429 ++++++++++++
 18 files changed, 1,825 insertions(+), 237 deletions(-)

diff --git a/Controllers/Warehouse/MesInvItemArnController.cs b/Controllers/Warehouse/MesInvItemArnController.cs
new file mode 100644
index 0000000..30f5d84
--- /dev/null
+++ b/Controllers/Warehouse/MesInvItemArnController.cs
@@ -0,0 +1,202 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Warehouse;
+
+[ApiController]
+[Route("api/[controller]")]
+public class MesInvItemArnController : ControllerBase
+{
+    private readonly MesInvItemArnManager m = new();
+
+
+    [HttpPost("GetPageList")]
+    public ResponseResult GetPageList(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetPagedResults(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //GetSuppliers()
+    [HttpPost("GetSuppliers")]
+    public ResponseResult GetSuppliers()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetSuppliers();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            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] MesInvItemArn 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] MesInvItemArn 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] MesInvItemArn 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/Controllers/Warehouse/MesInvItemOutsController.cs b/Controllers/Warehouse/MesInvItemOutsController.cs
new file mode 100644
index 0000000..7d679e6
--- /dev/null
+++ b/Controllers/Warehouse/MesInvItemOutsController.cs
@@ -0,0 +1,323 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Warehouse;
+
+[ApiController]
+[Route("api/[controller]")]
+public class MesInvItemOutsController : ControllerBase
+{
+    private readonly MesInvItemOutsManager m = new();
+
+    [HttpPost("SaveMessageCenter")]
+    public ResponseResult SaveMessageCenter(WarehouseQuery entity)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.SaveMessageCenter(entity);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("DeApproveBefore")]
+    public ResponseResult DeApproveBefore(WarehouseQuery entity)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.DeApproveBefore(entity);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    [HttpPost("Audit")]
+    public ResponseResult Audit(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Audit(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetPage")]
+    public ResponseResult GetPage(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetPage(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetItems")]
+    public ResponseResult GetItems(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetItems(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SelectMaterials")]
+    public ResponseResult SelectMaterials(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.SelectMaterials(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SaveCombination")]
+    public ResponseResult SaveCombination(OutItemDto dto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.SaveCombination(dto);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetMaxItemOutNo")]
+    public ResponseResult GetMaxItemOutNo()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetMaxItemOutNo();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            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/Controllers/base/MesDepotsController.cs b/Controllers/base/MesDepotsController.cs
new file mode 100644
index 0000000..d60eaac
--- /dev/null
+++ b/Controllers/base/MesDepotsController.cs
@@ -0,0 +1,159 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.@base;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.@base;
+
+[ApiController]
+[Route("api/[controller]")]
+public class MesDepotsController : ControllerBase
+{
+    private readonly MesDepotsManager m = new();
+
+    /// <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] MesDepots 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] MesDepots 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] MesDepots 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/Dto/service/MaterialReceipt.cs b/Dto/service/MaterialReceipt.cs
new file mode 100644
index 0000000..1e2b168
--- /dev/null
+++ b/Dto/service/MaterialReceipt.cs
@@ -0,0 +1,12 @@
+锘縰sing NewPdaSqlServer.entity;
+
+namespace NewPdaSqlServer.Dto.service;
+
+public class MaterialReceipt
+{
+    public List<MesInvItemOutItems>? ItemsList { get; set; }
+
+    public List<MesInvItemOutCDetails>? InvItemoutCDetails { get; set; }
+
+    public MesInvItemOuts? ItemOuts { get; set; }
+}
\ No newline at end of file
diff --git a/Dto/service/OutItemDto.cs b/Dto/service/OutItemDto.cs
new file mode 100644
index 0000000..1a1b53c
--- /dev/null
+++ b/Dto/service/OutItemDto.cs
@@ -0,0 +1,16 @@
+锘縰sing NewPdaSqlServer.entity;
+
+namespace NewPdaSqlServer.Dto.service;
+
+public class OutItemDto
+{
+    public MesInvItemOuts? Form { get; set; }
+    public List<MesInvItemOutItems>? SaveItems { get; set; }
+    public List<MesInvItemOutItems>? SelectItems { get; set; }
+
+    public string? ItemNo { get; set; }
+
+    public decimal? Quantity { get; set; }
+
+    // public List<InventoryItem>? SumItem { get; set; }
+}
\ No newline at end of file
diff --git a/Dto/service/WarehouseQuery.cs b/Dto/service/WarehouseQuery.cs
index 24a77db..cf21cc1 100644
--- a/Dto/service/WarehouseQuery.cs
+++ b/Dto/service/WarehouseQuery.cs
@@ -19,6 +19,7 @@
     public string? Type { get; set; }
     public string? DepotCode { get; set; }
     public string? SuppNo { get; set; }
+    public string? SuppId { get; set; }
 
     public string? Factory { get; set; }
 
diff --git a/entity/CgtlView.cs b/entity/CgtlView.cs
new file mode 100644
index 0000000..56e8e16
--- /dev/null
+++ b/entity/CgtlView.cs
@@ -0,0 +1,138 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+[SugarTable("V_CGTL")]
+public class CgtlView
+{
+    /// <summary>
+    ///     閲囪喘鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string? WorkNo { get; set; }
+
+
+    /// <summary>
+    ///     琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "work_line")]
+    public string? WorkLine { get; set; }
+
+
+    /// <summary>
+    ///     鐗╂枡缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "item_no")]
+    public string? ItemNo { get; set; }
+
+
+    /// <summary>
+    ///     鐗╂枡鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "item_name")]
+    public string? ItemName { get; set; }
+
+
+    /// <summary>
+    ///     瑙勬牸鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "item_model")]
+    public string? ItemModel { get; set; }
+
+
+    /// <summary>
+    ///     鍏ュ簱鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_QTY")]
+    public decimal? RkQty { get; set; }
+
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT")]
+    public string? Unit { get; set; }
+
+
+    /// <summary>
+    ///     渚涘簲鍟嗙紪鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "supp_no")]
+    public string? SuppNo { get; set; }
+
+
+    /// <summary>
+    ///     宸查��鏂欐暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "YTL_QTY")]
+    public decimal? YtlQty { get; set; }
+
+
+    /// <summary>
+    ///     鍙��鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "KT_QTY")]
+    public decimal? KtQty { get; set; }
+
+
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "PBILL_NO")]
+    public string? PBillNo { get; set; }
+
+
+    /// <summary>
+    ///     绫诲瀷锛堥粯璁や负 0锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "F_TYPE")]
+    public int FType { get; set; } = 0;
+
+
+    /// <summary>
+    ///     閲囪喘鍗曞唴鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_K3ID")]
+    public string? EbelnK3Id { get; set; }
+
+
+    /// <summary>
+    ///     閲囪喘琛屽唴鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_K3ID")]
+    public string? LineK3Id { get; set; }
+
+
+    /// <summary>
+    ///     鍏ュ簱鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_NO")]
+    public string? RkNo { get; set; }
+
+
+    /// <summary>
+    ///     鍏ュ簱鏃ユ湡锛屾牸寮忎负yyyy-MM-dd
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_DATE")]
+    public string? RkDate { get; set; }
+
+
+    /// <summary>
+    ///     鍏ュ簱鍗曡鍐呯爜
+    /// </summary>
+    [SugarColumn(ColumnName = "RK_LINE")]
+    public string? RkLine { get; set; }
+
+
+    /// <summary>
+    ///     鐗╂枡鍐呯爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_ID")]
+    public string? ItemId { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟唅d
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_ID")]
+    public string? SuppId { get; set; }
+}
\ No newline at end of file
diff --git a/entity/MesInvItemArn.cs b/entity/MesInvItemArn.cs
index 2b6e598..b87f1d5 100644
--- a/entity/MesInvItemArn.cs
+++ b/entity/MesInvItemArn.cs
@@ -241,4 +241,12 @@
     /// </summary>
     [SugarColumn(ColumnName = "organize_code")]
     public string? OrganizeCode { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? DepotName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? SuppName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? SuppNo { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? DepotsCode { get; set; }
 }
\ No newline at end of file
diff --git a/entity/MesInvItemArnDetail.cs b/entity/MesInvItemArnDetail.cs
index eaba4f3..4275372 100644
--- a/entity/MesInvItemArnDetail.cs
+++ b/entity/MesInvItemArnDetail.cs
@@ -7,248 +7,248 @@
 [SugarTable("MES_INV_ITEM_ARN_DETAIL")]
 public class MesInvItemArnDetail
 {
-   /// <summary>
- ///     榛樿鍊�: (newid())
- /// </summary>
- [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+    /// <summary>
+    ///     榛樿鍊�: (newid())
+    /// </summary>
+    [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
     public Guid Guid { get; set; }
 
-   /// <summary>
- /// </summary>
- [SugarColumn(ColumnName = "parent_Guid")]
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "parent_Guid")]
     public Guid? ParentGuid { get; set; }
 
-   /// <summary>
- ///     MES_ROH_IN_DATA鐨刧uid
- /// </summary>
- [SugarColumn(ColumnName = "about_Guid")]
+    /// <summary>
+    ///     MES_ROH_IN_DATA鐨刧uid
+    /// </summary>
+    [SugarColumn(ColumnName = "about_Guid")]
     public Guid? AboutGuid { get; set; }
 
-   /// <summary>
- ///     閲囪喘鍗曞彿
- /// </summary>
- [SugarColumn(ColumnName = "ebeln")]
+    /// <summary>
+    ///     閲囪喘鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ebeln")]
     public string Ebeln { get; set; }
 
-   /// <summary>
- ///     閲囪喘璁㈠崟琛屽彿
- /// </summary>
- [SugarColumn(ColumnName = "ebeln_line")]
+    /// <summary>
+    ///     閲囪喘璁㈠崟琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ebeln_line")]
     public int? EbelnLine { get; set; }
 
-   /// <summary>
- ///     閲囪喘璁㈠崟鏁伴噺
- /// </summary>
- [SugarColumn(ColumnName = "ebeln_qty")]
+    /// <summary>
+    ///     閲囪喘璁㈠崟鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "ebeln_qty")]
     public decimal? EbelnQty { get; set; }
 
-   /// <summary>
- ///     鐗╂枡缂栫爜
- /// </summary>
- [SugarColumn(ColumnName = "item_no")]
+    /// <summary>
+    ///     鐗╂枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "item_no")]
     public string ItemNo { get; set; }
 
-   /// <summary>
- ///     鏀惰揣鏁伴噺
- /// </summary>
- [SugarColumn(ColumnName = "quantity")]
+    /// <summary>
+    ///     鏀惰揣鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "quantity")]
     public decimal? Quantity { get; set; }
 
-   /// <summary>
- ///     鍒涘缓浜�
- /// </summary>
- [SugarColumn(ColumnName = "create_by")]
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "create_by")]
     public string CreateBy { get; set; }
 
-   /// <summary>
- ///     鍒涘缓鏃堕棿
- /// </summary>
- [SugarColumn(ColumnName = "create_date")]
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "create_date")]
     public DateTime? CreateDate { get; set; }
 
-   /// <summary>
- ///     鏈�鍚庢洿鏂颁汉
- /// </summary>
- [SugarColumn(ColumnName = "lastupdate_by")]
+    /// <summary>
+    ///     鏈�鍚庢洿鏂颁汉
+    /// </summary>
+    [SugarColumn(ColumnName = "lastupdate_by")]
     public string LastupdateBy { get; set; }
 
-   /// <summary>
- ///     鏈�鍚庢洿鏂版椂闂�
- /// </summary>
- [SugarColumn(ColumnName = "lastupdate_date")]
+    /// <summary>
+    ///     鏈�鍚庢洿鏂版椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "lastupdate_date")]
     public DateTime? LastupdateDate { get; set; }
 
-   /// <summary>
- ///     鍒嗗巶缂栫爜
- /// </summary>
- [SugarColumn(ColumnName = "factory")]
+    /// <summary>
+    ///     鍒嗗巶缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "factory")]
     public string Factory { get; set; }
 
-   /// <summary>
- ///     鍏徃浠g爜
- /// </summary>
- [SugarColumn(ColumnName = "company")]
+    /// <summary>
+    ///     鍏徃浠g爜
+    /// </summary>
+    [SugarColumn(ColumnName = "company")]
     public string Company { get; set; }
 
-   /// <summary>
- ///     閲囪喘鍗旾D
- /// </summary>
- [SugarColumn(ColumnName = "ebeln_k3id")]
+    /// <summary>
+    ///     閲囪喘鍗旾D
+    /// </summary>
+    [SugarColumn(ColumnName = "ebeln_k3id")]
     public int? EbelnK3id { get; set; }
 
-   /// <summary>
- ///     閲囪喘鍗曡ID
- /// </summary>
- [SugarColumn(ColumnName = "line_k3id")]
+    /// <summary>
+    ///     閲囪喘鍗曡ID
+    /// </summary>
+    [SugarColumn(ColumnName = "line_k3id")]
     public int? LineK3id { get; set; }
 
-   /// <summary>
- ///     鏈搴旀敹鏁伴噺
- /// </summary>
- [SugarColumn(ColumnName = "sub_qty")]
+    /// <summary>
+    ///     鏈搴旀敹鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "sub_qty")]
     public decimal? SubQty { get; set; }
 
-   /// <summary>
- ///     浣欓噺
- /// </summary>
- [SugarColumn(ColumnName = "margin_qty")]
+    /// <summary>
+    ///     浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "margin_qty")]
     public int? MarginQty { get; set; }
 
-   /// <summary>
- ///     浠诲姟鍗曞彿
- /// </summary>
- [SugarColumn(ColumnName = "work_no")]
+    /// <summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "work_no")]
     public string WorkNo { get; set; }
 
-   /// <summary>
- ///     鎬ユ枡鏍囪瘑
- ///     榛樿鍊�: ((0))
- /// </summary>
- [SugarColumn(ColumnName = "urgent_flag")]
+    /// <summary>
+    ///     鎬ユ枡鏍囪瘑
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "urgent_flag")]
     public bool? UrgentFlag { get; set; }
 
-   /// <summary>
- ///     澶囨敞
- /// </summary>
- [SugarColumn(ColumnName = "memo")]
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "memo")]
     public string Memo { get; set; }
 
-   /// <summary>
- ///     妫�楠岀粨鏋�
- /// </summary>
- [SugarColumn(ColumnName = "check_res")]
+    /// <summary>
+    ///     妫�楠岀粨鏋�
+    /// </summary>
+    [SugarColumn(ColumnName = "check_res")]
     public string CheckRes { get; set; }
 
-   /// <summary>
- ///     妫�楠岀姸鎬�  锛堝緟妫�銆佸垎閫夈�佺壒閲囥�佸凡妫�锛�
- ///     榛樿鍊�: ('寰呮')
- /// </summary>
- [SugarColumn(ColumnName = "check_states")]
+    /// <summary>
+    ///     妫�楠岀姸鎬�  锛堝緟妫�銆佸垎閫夈�佺壒閲囥�佸凡妫�锛�
+    ///     榛樿鍊�: ('寰呮')
+    /// </summary>
+    [SugarColumn(ColumnName = "check_states")]
     public string CheckStates { get; set; }
 
-   /// <summary>
- ///     鏀惰揣浣欓噺
- /// </summary>
- [SugarColumn(ColumnName = "quantity_m")]
+    /// <summary>
+    ///     鏀惰揣浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "quantity_m")]
     public int? QuantityM { get; set; }
 
-   /// <summary>
- ///     鏈搴旀敹浣欓噺
- /// </summary>
- [SugarColumn(ColumnName = "sub_mqty")]
+    /// <summary>
+    ///     鏈搴旀敹浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "sub_mqty")]
     public int? SubMqty { get; set; }
 
-   /// <summary>
- ///     妫�楠屾棩鏈�
- /// </summary>
- [SugarColumn(ColumnName = "check_date")]
+    /// <summary>
+    ///     妫�楠屾棩鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "check_date")]
     public DateTime? CheckDate { get; set; }
 
-   /// <summary>
- ///     鏄惁妫�楠�
- ///     榛樿鍊�: ((0))
- /// </summary>
- [SugarColumn(ColumnName = "ischeck")]
+    /// <summary>
+    ///     鏄惁妫�楠�
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "ischeck")]
     public int? Ischeck { get; set; }
 
-   /// <summary>
- ///     宸叉敹鏁伴噺
- /// </summary>
- [SugarColumn(ColumnName = "ok_qty")]
+    /// <summary>
+    ///     宸叉敹鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "ok_qty")]
     public int? OkQty { get; set; }
 
-   /// <summary>
- ///     宸叉敹浣欓噺
- /// </summary>
- [SugarColumn(ColumnName = "ok_mqty")]
+    /// <summary>
+    ///     宸叉敹浣欓噺
+    /// </summary>
+    [SugarColumn(ColumnName = "ok_mqty")]
     public int? OkMqty { get; set; }
 
-   /// <summary>
- ///     浜у搧鍨嬪彿
- /// </summary>
- [SugarColumn(ColumnName = "board_style")]
+    /// <summary>
+    ///     浜у搧鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "board_style")]
     public string BoardStyle { get; set; }
 
-   /// <summary>
- ///     浠诲姟鍗曡鍙�
- /// </summary>
- [SugarColumn(ColumnName = "work_line")]
+    /// <summary>
+    ///     浠诲姟鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "work_line")]
     public int? WorkLine { get; set; }
 
-   /// <summary>
- ///     0銆侀噰璐崟锛�1銆佸澶栧崟
- ///     榛樿鍊�: ((0))
- /// </summary>
- [SugarColumn(ColumnName = "f_type")]
+    /// <summary>
+    ///     0銆侀噰璐崟锛�1銆佸澶栧崟
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "f_type")]
     public int? FType { get; set; }
 
-   /// <summary>
- ///     鏄惁鍏ュ簱
- ///     榛樿鍊�: ((0))
- /// </summary>
- [SugarColumn(ColumnName = "isdeps_in")]
+    /// <summary>
+    ///     鏄惁鍏ュ簱
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "isdeps_in")]
     public bool? IsdepsIn { get; set; }
 
-   /// <summary>
- ///     鍒拌揣鍗曞彿
- /// </summary>
- [SugarColumn(ColumnName = "dha001")]
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "dha001")]
     public string Dha001 { get; set; }
 
-   /// <summary>
- ///     宸插叆搴撴暟閲�
- /// </summary>
- [SugarColumn(ColumnName = "ok_rkqty")]
+    /// <summary>
+    ///     宸插叆搴撴暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "ok_rkqty")]
     public int? OkRkqty { get; set; }
 
-   /// <summary>
- ///     鍒拌揣鍗曞彿
- /// </summary>
- [SugarColumn(ColumnName = "cbill_no")]
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "cbill_no")]
     public string CbillNo { get; set; }
 
-   /// <summary>
- ///     閲囪喘鍏ュ簱鏁伴噺
- /// </summary>
- [SugarColumn(ColumnName = "cg_rkqty")]
+    /// <summary>
+    ///     閲囪喘鍏ュ簱鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "cg_rkqty")]
     public int? CgRkqty { get; set; }
 
-   /// <summary>
- ///     鐗╂枡ID
- /// </summary>
- [SugarColumn(ColumnName = "item_id")]
+    /// <summary>
+    ///     鐗╂枡ID
+    /// </summary>
+    [SugarColumn(ColumnName = "item_id")]
     public int? ItemId { get; set; }
 
-   /// <summary>
- ///     閫�璐ф爣璇�
- ///     榛樿鍊�: ((0))
- /// </summary>
- [SugarColumn(ColumnName = "return_flag")]
+    /// <summary>
+    ///     閫�璐ф爣璇�
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "return_flag")]
     public int? ReturnFlag { get; set; }
 
-   /// <summary>
- ///     鎺ㄩ�佺姸鎬�
- /// </summary>
- [SugarColumn(ColumnName = "states")]
+    /// <summary>
+    ///     鎺ㄩ�佺姸鎬�
+    /// </summary>
+    [SugarColumn(ColumnName = "states")]
     public string States { get; set; }
 }
\ No newline at end of file
diff --git a/entity/MesInvItemOutCDetails.cs b/entity/MesInvItemOutCDetails.cs
index 429a5cd..48f47ce 100644
--- a/entity/MesInvItemOutCDetails.cs
+++ b/entity/MesInvItemOutCDetails.cs
@@ -24,25 +24,25 @@
     ///     鐗╂枡鏉$爜
     /// </summary>
     [SugarColumn(ColumnName = "ITEM_BARCODE")]
-    public string ItemBarcode { get; set; }
+    public string? ItemBarcode { get; set; }
 
     /// <summary>
     ///     瀹㈡埛鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
     /// </summary>
     [SugarColumn(ColumnName = "C_ITEM_CODE")]
-    public string CItemCode { get; set; }
+    public string? CItemCode { get; set; }
 
     /// <summary>
     ///     鏈徃鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
     /// </summary>
     [SugarColumn(ColumnName = "ITEM_NO")]
-    public string ItemNo { get; set; }
+    public string? ItemNo { get; set; }
 
     /// <summary>
     ///     鍘傚鎵规
     /// </summary>
     [SugarColumn(ColumnName = "LOT_NO")]
-    public string LotNo { get; set; }
+    public string? LotNo { get; set; }
 
     /// <summary>
     ///     鏁伴噺锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
@@ -61,7 +61,7 @@
     ///     鍒涘缓浜�
     /// </summary>
     [SugarColumn(ColumnName = "CREATE_BY")]
-    public string CreateBy { get; set; }
+    public string? CreateBy { get; set; }
 
     /// <summary>
     ///     鍒涘缓鏃堕棿
@@ -73,7 +73,7 @@
     ///     鏈�鍚庢洿鏂颁汉
     /// </summary>
     [SugarColumn(ColumnName = "LASTUPDATE_BY")]
-    public string LastupdateBy { get; set; }
+    public string? LastupdateBy { get; set; }
 
     /// <summary>
     ///     鏈�鍚庢洿鏂版椂闂�
@@ -85,25 +85,25 @@
     ///     瀹㈡埛缂栫爜
     /// </summary>
     [SugarColumn(ColumnName = "CUST_NO")]
-    public string CustNo { get; set; }
+    public string? CustNo { get; set; }
 
     /// <summary>
     ///     浠撳簱缂栫爜
     /// </summary>
     [SugarColumn(ColumnName = "DEPOT_CODE")]
-    public string DepotCode { get; set; }
+    public string? DepotCode { get; set; }
 
     /// <summary>
     ///     璐т綅缂栫爜
     /// </summary>
     [SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
-    public string DepotSectionCode { get; set; }
+    public string? DepotSectionCode { get; set; }
 
     /// <summary>
     ///     澶囨敞
     /// </summary>
     [SugarColumn(ColumnName = "REMARK")]
-    public string Remark { get; set; }
+    public string? Remark { get; set; }
 
     /// <summary>
     ///     鍏嶆鏍囪瘑(0-鍚︼紝1-鏄�)
@@ -115,7 +115,7 @@
     ///     鎶曟枡鎵规
     /// </summary>
     [SugarColumn(ColumnName = "PRD_LOT_NO")]
-    public string PrdLotNo { get; set; }
+    public string? PrdLotNo { get; set; }
 
     /// <summary>
     ///     鏄惁鍋氭帴鏀舵鏌�
@@ -128,55 +128,55 @@
     ///     宸ュ巶缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "FACTORY")]
-    public string Factory { get; set; }
+    public string? Factory { get; set; }
 
     /// <summary>
     ///     鍏徃缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "COMPANY")]
-    public string Company { get; set; }
+    public string? Company { get; set; }
 
     /// <summary>
     ///     鍘熺敓浜у伐鍗�
     /// </summary>
     [SugarColumn(ColumnName = "TASK_NOY")]
-    public string TaskNoy { get; set; }
+    public string? TaskNoy { get; set; }
 
     /// <summary>
     ///     绠卞彿
     /// </summary>
     [SugarColumn(ColumnName = "BOX_NO")]
-    public string BoxNo { get; set; }
+    public string? BoxNo { get; set; }
 
     /// <summary>
     ///     鍖呰鎵规
     /// </summary>
     [SugarColumn(ColumnName = "TASK_PACK")]
-    public string TaskPack { get; set; }
+    public string? TaskPack { get; set; }
 
     /// <summary>
     ///     鍗℃澘
     /// </summary>
     [SugarColumn(ColumnName = "KB_NO")]
-    public string KbNo { get; set; }
+    public string? KbNo { get; set; }
 
     /// <summary>
     ///     鏉垮瀷
     /// </summary>
     [SugarColumn(ColumnName = "BOARD_STYLE")]
-    public string BoardStyle { get; set; }
+    public string? BoardStyle { get; set; }
 
     /// <summary>
     ///     鐢熶骇宸ュ崟
     /// </summary>
     [SugarColumn(ColumnName = "TASK_NO")]
-    public string TaskNo { get; set; }
+    public string? TaskNo { get; set; }
 
     /// <summary>
     ///     宸ュ崟鍙�
     /// </summary>
     [SugarColumn(ColumnName = "WORK_NO")]
-    public string WorkNo { get; set; }
+    public string? WorkNo { get; set; }
 
     /// <summary>
     ///     宸ヤ綔绾�
@@ -188,13 +188,13 @@
     ///     渚涘簲鍟嗙紪鍙�
     /// </summary>
     [SugarColumn(ColumnName = "SUPP_NO")]
-    public string SuppNo { get; set; }
+    public string? SuppNo { get; set; }
 
     /// <summary>
     ///     閲囪喘鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "PBILL_NO")]
-    public string PbillNo { get; set; }
+    public string? PbillNo { get; set; }
 
     /// <summary>
     ///     鏀跺埌鏁伴噺
@@ -213,19 +213,19 @@
     ///     鏀惰揣浜�
     /// </summary>
     [SugarColumn(ColumnName = "RCV_BY")]
-    public string RcvBy { get; set; }
+    public string? RcvBy { get; set; }
 
     /// <summary>
     ///     鏀惰揣閮ㄥ垎
     /// </summary>
     [SugarColumn(ColumnName = "RCV_PART")]
-    public string RcvPart { get; set; }
+    public string? RcvPart { get; set; }
 
     /// <summary>
     ///     鍏ュ簱缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "RK_NO")]
-    public string RkNo { get; set; }
+    public string? RkNo { get; set; }
 
     /// <summary>
     ///     閲囪喘璁㈠崟ID
@@ -256,4 +256,11 @@
     /// </summary>
     [SugarColumn(ColumnName = "depot_id")]
     public int? DepotId { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? DepotName { get; set; }
+    [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
+    [SugarColumn(IsIgnore = true)] public string? ItemModel { get; set; }
+    [SugarColumn(IsIgnore = true)] public string? Unit { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? DepotSectionName { get; set; }
 }
\ No newline at end of file
diff --git a/entity/MesInvItemOutItems.cs b/entity/MesInvItemOutItems.cs
index fde8da3..6d4a2b3 100644
--- a/entity/MesInvItemOutItems.cs
+++ b/entity/MesInvItemOutItems.cs
@@ -23,7 +23,7 @@
     ///     鐗╂枡缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "item_no")]
-    public string ItemNo { get; set; }
+    public string? ItemNo { get; set; }
 
     /// <summary>
     ///     鐢宠鏁伴噺
@@ -34,7 +34,7 @@
     /// <summary>
     /// </summary>
     [SugarColumn(ColumnName = "create_by")]
-    public string CreateBy { get; set; }
+    public string? CreateBy { get; set; }
 
     /// <summary>
     /// </summary>
@@ -44,7 +44,7 @@
     /// <summary>
     /// </summary>
     [SugarColumn(ColumnName = "lastupdate_by")]
-    public string LastupdateBy { get; set; }
+    public string? LastupdateBy { get; set; }
 
     /// <summary>
     /// </summary>
@@ -55,40 +55,40 @@
     ///     澶囨敞淇℃伅
     /// </summary>
     [SugarColumn(ColumnName = "remark")]
-    public string Remark { get; set; }
+    public string? Remark { get; set; }
 
     /// <summary>
     /// </summary>
     [SugarColumn(ColumnName = "factory")]
-    public string Factory { get; set; }
+    public string? Factory { get; set; }
 
     /// <summary>
     /// </summary>
     [SugarColumn(ColumnName = "company")]
-    public string Company { get; set; }
+    public string? Company { get; set; }
 
     /// <summary>
     ///     鎺ㄤ粙浠撳簱
     /// </summary>
     [SugarColumn(ColumnName = "depot_code")]
-    public string DepotCode { get; set; }
+    public string? DepotCode { get; set; }
 
     /// <summary>
     ///     鎺ㄤ粙搴撲綅
     /// </summary>
     [SugarColumn(ColumnName = "depot_section_code")]
-    public string DepotSectionCode { get; set; }
+    public string? DepotSectionCode { get; set; }
 
     /// <summary>
     /// </summary>
     [SugarColumn(ColumnName = "task_no")]
-    public string TaskNo { get; set; }
+    public string? TaskNo { get; set; }
 
     /// <summary>
     ///     鍒拌揣鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "work_no")]
-    public string WorkNo { get; set; }
+    public string? WorkNo { get; set; }
 
     /// <summary>
     ///     鍒拌揣鍗曡鍙�
@@ -112,13 +112,13 @@
     ///     ERP_鏂欏彿
     /// </summary>
     [SugarColumn(ColumnName = "erp_item_no")]
-    public string ErpItemNo { get; set; }
+    public string? ErpItemNo { get; set; }
 
     /// <summary>
     ///     棰滆壊
     /// </summary>
     [SugarColumn(ColumnName = "color_name")]
-    public string ColorName { get; set; }
+    public string? ColorName { get; set; }
 
     /// <summary>
     ///     鏈�鏂颁笅杞芥洿鏂版爣璇�
@@ -144,7 +144,7 @@
     ///     榛樿鍊�: ('0')
     /// </summary>
     [SugarColumn(ColumnName = "ebeln")]
-    public string Ebeln { get; set; }
+    public string? Ebeln { get; set; }
 
     /// <summary>
     ///     閲囪喘璁㈠崟琛屽彿
@@ -162,7 +162,7 @@
     ///     浜у搧缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "board_item")]
-    public string BoardItem { get; set; }
+    public string? BoardItem { get; set; }
 
     /// <summary>
     /// </summary>
@@ -185,19 +185,19 @@
     ///     棰嗘枡缂栧彿/鐢熶骇宸ュ崟
     /// </summary>
     [SugarColumn(ColumnName = "pbill_no")]
-    public string PbillNo { get; set; }
+    public string? PbillNo { get; set; }
 
     /// <summary>
     ///     erp鎺ュ彛杩斿洖
     /// </summary>
     [SugarColumn(ColumnName = "erp_mark")]
-    public string ErpMark { get; set; }
+    public string? ErpMark { get; set; }
 
     /// <summary>
     ///     鍏ュ簱鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "rk_no")]
-    public string RkNo { get; set; }
+    public string? RkNo { get; set; }
 
     /// <summary>
     ///     宸插叆搴撴暟
@@ -222,4 +222,11 @@
     /// </summary>
     [SugarColumn(ColumnName = "item_dabid")]
     public int? ItemDabid { get; set; }
+
+
+    [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? ItemModel { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public decimal? KtQty { get; set; }
 }
\ No newline at end of file
diff --git a/entity/MesInvItemOuts.cs b/entity/MesInvItemOuts.cs
index 527065b..89aec87 100644
--- a/entity/MesInvItemOuts.cs
+++ b/entity/MesInvItemOuts.cs
@@ -17,25 +17,25 @@
     ///     琛ユ枡鐢宠鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "bbill_no")]
-    public string BbillNo { get; set; }
+    public string? BbillNo { get; set; }
 
     /// <summary>
     ///     鍑哄簱鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "item_out_no")]
-    public string ItemOutNo { get; set; }
+    public string? ItemOutNo { get; set; }
 
     /// <summary>
     ///     鐢熶骇璁㈠崟
     /// </summary>
     [SugarColumn(ColumnName = "task_no")]
-    public string TaskNo { get; set; }
+    public string? TaskNo { get; set; }
 
     /// <summary>
     ///     宸ュ簭鍙�
     /// </summary>
     [SugarColumn(ColumnName = "proc_no")]
-    public string ProcNo { get; set; }
+    public string? ProcNo { get; set; }
 
     /// <summary>
     ///     鐘舵�亅0-鏈鏍�1-瀹℃牳
@@ -48,7 +48,7 @@
     ///     鍒涘缓浜�
     /// </summary>
     [SugarColumn(ColumnName = "create_by")]
-    public string CreateBy { get; set; }
+    public string? CreateBy { get; set; }
 
     /// <summary>
     ///     鍒涘缓鏃堕棿
@@ -61,7 +61,7 @@
     ///     鏈�鍚庢洿鏂颁汉
     /// </summary>
     [SugarColumn(ColumnName = "lastupdate_by")]
-    public string LastupdateBy { get; set; }
+    public string? LastupdateBy { get; set; }
 
     /// <summary>
     ///     鏈�鍚庢洿鏂版椂闂�
@@ -86,25 +86,25 @@
     ///     澶囨敞淇℃伅
     /// </summary>
     [SugarColumn(ColumnName = "remark")]
-    public string Remark { get; set; }
+    public string? Remark { get; set; }
 
     /// <summary>
     ///     鍑哄簱鍘熷洜
     /// </summary>
     [SugarColumn(ColumnName = "reason")]
-    public string Reason { get; set; }
+    public string? Reason { get; set; }
 
     /// <summary>
     ///     鐢熶骇绾跨紪鐮�
     /// </summary>
     [SugarColumn(ColumnName = "produce_line_no")]
-    public string ProduceLineNo { get; set; }
+    public string? ProduceLineNo { get; set; }
 
     /// <summary>
     ///     瀹℃牳浜�
     /// </summary>
     [SugarColumn(ColumnName = "check_user")]
-    public string CheckUser { get; set; }
+    public string? CheckUser { get; set; }
 
     /// <summary>
     ///     瀹℃牳鏃ユ湡
@@ -122,19 +122,19 @@
     ///     棰嗘枡宸ユ
     /// </summary>
     [SugarColumn(ColumnName = "mmlist")]
-    public string Mmlist { get; set; }
+    public string? Mmlist { get; set; }
 
     /// <summary>
     ///     瀛愬簱CODE
     /// </summary>
     [SugarColumn(ColumnName = "depot_code")]
-    public string DepotCode { get; set; }
+    public string? DepotCode { get; set; }
 
     /// <summary>
     ///     SAP杩斿洖鍗曟嵁
     /// </summary>
     [SugarColumn(ColumnName = "sapno")]
-    public string Sapno { get; set; }
+    public string? Sapno { get; set; }
 
     /// <summary>
     ///     鏄惁宸插洖鍐橲AP
@@ -153,19 +153,19 @@
     ///     SAP杩斿洖淇℃伅
     /// </summary>
     [SugarColumn(ColumnName = "saptext")]
-    public string Saptext { get; set; }
+    public string? Saptext { get; set; }
 
     /// <summary>
     ///     宸ュ簭绾夸綋
     /// </summary>
     [SugarColumn(ColumnName = "proc_line_no")]
-    public string ProcLineNo { get; set; }
+    public string? ProcLineNo { get; set; }
 
     /// <summary>
     ///     棰嗘枡閮ㄩ棬
     /// </summary>
     [SugarColumn(ColumnName = "out_part")]
-    public string OutPart { get; set; }
+    public string? OutPart { get; set; }
 
     /// <summary>
     ///     0 鐢熶骇,1 濮斿
@@ -192,19 +192,19 @@
     ///     鎺ユ敹浜�
     /// </summary>
     [SugarColumn(ColumnName = "receiver")]
-    public string Receiver { get; set; }
+    public string? Receiver { get; set; }
 
     /// <summary>
     ///     宸ュ巶缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "factory")]
-    public string Factory { get; set; }
+    public string? Factory { get; set; }
 
     /// <summary>
     ///     鍏徃缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "company")]
-    public string Company { get; set; }
+    public string? Company { get; set; }
 
     /// <summary>
     ///     鍐查攢浜嬪姟绫诲瀷缂栫爜
@@ -216,7 +216,7 @@
     ///     浠诲姟鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "work_no")]
-    public string WorkNo { get; set; }
+    public string? WorkNo { get; set; }
 
     /// <summary>
     ///     浠诲姟鍗曞彿琛屽彿
@@ -228,13 +228,13 @@
     ///     渚涘簲鍟嗙紪鍙�
     /// </summary>
     [SugarColumn(ColumnName = "supp_no")]
-    public string SuppNo { get; set; }
+    public string? SuppNo { get; set; }
 
     /// <summary>
     ///     璁㈠崟鍙�
     /// </summary>
     [SugarColumn(ColumnName = "cmpocode")]
-    public string Cmpocode { get; set; }
+    public string? Cmpocode { get; set; }
 
     /// <summary>
     ///     鍘熺墿鏂欏嚭璐ф爣璇�
@@ -254,19 +254,19 @@
     ///     鍑哄簱绫诲埆
     /// </summary>
     [SugarColumn(ColumnName = "out_type")]
-    public string OutType { get; set; }
+    public string? OutType { get; set; }
 
     /// <summary>
     ///     涓氬姟绫诲瀷
     /// </summary>
     [SugarColumn(ColumnName = "business_type")]
-    public string BusinessType { get; set; }
+    public string? BusinessType { get; set; }
 
     /// <summary>
     ///     浜у搧缂栧彿
     /// </summary>
     [SugarColumn(ColumnName = "board_item")]
-    public string BoardItem { get; set; }
+    public string? BoardItem { get; set; }
 
     /// <summary>
     ///     浜ч噺
@@ -278,7 +278,7 @@
     ///     棰嗘枡缂栧彿/濮斿璁㈠崟/鍏朵粬鍑哄簱鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "pbill_no")]
-    public string PbillNo { get; set; }
+    public string? PbillNo { get; set; }
 
     /// <summary>
     ///     鏍囪瘑 /1宸叉帹閫�
@@ -290,19 +290,19 @@
     ///     閫�鏂欐柟寮�
     /// </summary>
     [SugarColumn(ColumnName = "fmrmode")]
-    public string Fmrmode { get; set; }
+    public string? Fmrmode { get; set; }
 
     /// <summary>
     ///     erp杩斿洖淇℃伅
     /// </summary>
     [SugarColumn(ColumnName = "msg")]
-    public string Msg { get; set; }
+    public string? Msg { get; set; }
 
     /// <summary>
     ///     鐘舵��
     /// </summary>
     [SugarColumn(ColumnName = "states")]
-    public string States { get; set; }
+    public string? States { get; set; }
 
     /// <summary>
     /// </summary>
@@ -313,4 +313,12 @@
     /// </summary>
     [SugarColumn(ColumnName = "depot_id")]
     public int? DepotId { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? DepotName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? SuppName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? CreateByFname { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? CheckUserFname { get; set; }
 }
\ No newline at end of file
diff --git a/service/Warehouse/MesInvItemArnManager.cs b/service/Warehouse/MesInvItemArnManager.cs
new file mode 100644
index 0000000..b13f4a9
--- /dev/null
+++ b/service/Warehouse/MesInvItemArnManager.cs
@@ -0,0 +1,71 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.util;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesInvItemArnManager : Repository<MesInvItemArn>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesInvItemArnManager.cs
+    public List<MesInvItemArn> GetPagedResults(WarehouseQuery query)
+    {
+        var parsedGuid = Guid.Empty;
+        if (!string.IsNullOrEmpty(query.id))
+        {
+            var isValid = Guid.TryParse(query.id, out parsedGuid);
+            if (!isValid)
+                throw new ApplicationException("GUID杞崲閿欒");
+        }
+
+        // 鏌ヨ骞跺垎椤�
+        var result = Db.Queryable<MesInvItemArn, MesDepots, MesSupplier>(
+                (a, d, f) => new object[]
+                {
+                    JoinType.Left, a.DepotsId == d.DepotId.ToString(),
+                    JoinType.Left, a.SuppId == f.Id.ToString()
+                })
+            .Where((a, d, f) => a.BillTypeId == 700
+                                && a.TransctionNo == "701"
+                                && a.IsVisual == 0)
+            .WhereIF(UtilityHelper.CheckGuid(parsedGuid),
+                (a, d, f) => a.Guid == parsedGuid)
+            .Select((a, d, f) => new MesInvItemArn
+            {
+                Status = a.Status,
+                SuppNo = f.SuppNo,
+                FType = a.FType,
+                Fstatus = a.Fstatus,
+                Remark = a.Remark,
+                CheckDate = a.CheckDate,
+                DepotsCode = d.DepotCode,
+                Guid = a.Guid,
+                UrgentFlag = a.UrgentFlag,
+                CreateBy = a.CreateBy,
+                BillNo = a.BillNo,
+                PaperBillNo = a.PaperBillNo,
+                DepotName = d.DepotName,
+                SuppName = f.SuppName
+            }).OrderByDescending(a => a.BillNo)
+            .ToPageList(query.PageIndex, query.Limit);
+
+        return result;
+    }
+
+    public List<MesSupplier> GetSuppliers()
+    {
+        return Db.Queryable<MesInvItemArn, MesSupplier>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.SuppId == b.Id.ToString()))
+            .GroupBy((a, b) => new { b.Id, b.SuppNo, b.SuppName })
+            .Select((a, b) => new MesSupplier
+            {
+                SuppNo = b.SuppNo,
+                SuppName = b.SuppName,
+                Id = b.Id
+            })
+            .ToList();
+    }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesInvItemOutCDetailsManager.cs b/service/Warehouse/MesInvItemOutCDetailsManager.cs
new file mode 100644
index 0000000..3547138
--- /dev/null
+++ b/service/Warehouse/MesInvItemOutCDetailsManager.cs
@@ -0,0 +1,122 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesInvItemOutCDetailsManager : Repository<MesInvItemOutCDetails>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesInvItemOutCDetailsManager.cs
+
+
+    public MesInvItemOutCDetails GetOutList(WarehouseQuery query)
+    {
+        var mesInvItemBarcodes = Db.Queryable<MesInvItemBarcodes>()
+            .Where(s => s.ItemBarcode == query.barcode).Count();
+
+        if (mesInvItemBarcodes <= 0) throw new Exception("鏉$爜涓嶅瓨鍦�");
+
+        var mesInvItemOutCDetails = Db.Queryable<MesInvItemOutCDetails>()
+            .Where(s => s.ItemBarcode == query.barcode && s.Receive == false)
+            .Count();
+
+
+        if (mesInvItemOutCDetails <= 0) throw new Exception("鏉$爜涓嶇鍚堟帴鏀舵潯浠�,璇锋鏌ワ紒");
+
+
+        var entity = Db
+            .Queryable<MesInvItemOutCDetails, MesInvItemOuts, MesItems>(
+                (a, b, c) =>
+                    new JoinQueryInfos(JoinType.Left, a.ItemOutId == b.Guid,
+                        JoinType.Left, a.ItemNo == c.ItemNo))
+            .Where((a, b, c) => a.ItemBarcode == query.barcode)
+            .Select((a, b, c) => new MesInvItemOutCDetails
+            {
+                PbillNo = b.ItemOutNo,
+                WorkNo = a.WorkNo,
+                ItemNo = a.ItemNo,
+                ItemName = c.ItemName,
+                Quantity = a.Quantity
+            }).First();
+
+        if (entity == null)
+            throw new Exception("鍑哄簱鏉$爜" + query.barcode + " 涓嶅瓨鍦紝璇风‘璁�!");
+
+
+        return entity;
+    }
+
+
+    public MaterialReceipt GetFormList(WarehouseQuery query)
+    {
+        var mesInvItemBarcodes = Db.Queryable<MesInvItemBarcodes>()
+            .Where(s => s.ItemBarcode == query.barcode).Count();
+
+        if (mesInvItemBarcodes <= 0) throw new Exception("鏉$爜涓嶅瓨鍦�");
+
+        var mesInvItemOutCDetails = Db.Queryable<MesInvItemOutCDetails>()
+            .Where(s => s.ItemBarcode == query.barcode).First();
+
+        var entity = new MaterialReceipt
+        {
+            InvItemoutCDetails =
+                GetMesInvItemOutCDetails(mesInvItemOutCDetails.PbillNo),
+            ItemOuts = GetMesInvItemOuts(mesInvItemOutCDetails.PbillNo)
+        };
+
+        return entity;
+    }
+
+
+    public MesInvItemOutCDetails confirmReceipt(WarehouseQuery query)
+    {
+        if (string.IsNullOrWhiteSpace(query.barcode))
+            throw new Exception("璇锋壂鍑哄簱鏉$爜锛�");
+
+        if (string.IsNullOrWhiteSpace(query.billNo))
+            throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖锛�");
+
+
+        var barcodeInfo = GetBarcodeInfo(query.barcode);
+
+
+        if (barcodeInfo.Receive.Value) throw new Exception("姝ゆ潯鐮佸凡缁忔帴鏀�,璇锋鏌ワ紒");
+
+
+        UseTransaction(db =>
+        {
+            var count = db.Updateable<MesInvItemOutCDetails>()
+                .SetColumns(s => s.Receive == true)
+                .Where(s => s.ItemBarcode == barcodeInfo.ItemBarcode)
+                .ExecuteCommand();
+
+            return 1;
+        });
+
+        return barcodeInfo;
+    }
+
+
+    public List<MesInvItemOutCDetails> GetMesInvItemOutCDetails(string billno)
+    {
+        return Db.Queryable<MesInvItemOutCDetails>()
+            .Where(s => s.PbillNo == billno).ToList();
+    }
+
+    public MesInvItemOuts GetMesInvItemOuts(string billno)
+    {
+        return Db.Queryable<MesInvItemOuts>()
+            .Where(a => a.ItemOutNo == billno).Single();
+    }
+
+
+    private MesInvItemOutCDetails GetBarcodeInfo(string itemBarcode)
+    {
+        // Get barcode information
+        return Db.Queryable<MesInvItemOutCDetails>()
+            .First(b => b.ItemBarcode == itemBarcode);
+    }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesInvItemOutItemsManager.cs b/service/Warehouse/MesInvItemOutItemsManager.cs
new file mode 100644
index 0000000..816b03b
--- /dev/null
+++ b/service/Warehouse/MesInvItemOutItemsManager.cs
@@ -0,0 +1,78 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.entity;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesInvItemOutItemsManager : Repository<MesInvItemOutItems>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesInvItemOutItemsManager.cs
+
+
+    #region 鏁欏鏂规硶
+
+    /// <summary>
+    ///     浠撳偍鏂规硶婊¤冻涓嶄簡澶嶆潅涓氬姟闇�姹傦紝涓氬姟浠g爜璇峰湪杩欓噷闈㈠畾涔夋柟娉�
+    /// </summary>
+    public void Study()
+    {
+        /*********鏌ヨ*********/
+
+        var data1 = base.GetById(1); //鏍规嵁ID鏌ヨ
+        var data2 = base.GetList(); //鏌ヨ鎵�鏈�
+        var data3 = base.GetList(it => 1 == 1); //鏍规嵁鏉′欢鏌ヨ  
+        //var data4 = base.GetSingle(it => 1 == 1);//鏍规嵁鏉′欢鏌ヨ涓�鏉�,濡傛灉瓒呰繃涓�鏉′細鎶ラ敊
+
+        var p = new PageModel { PageIndex = 1, PageSize = 2 }; // 鍒嗛〉鏌ヨ
+        var data5 = base.GetPageList(it => 1 == 1, p);
+        Console.Write(p.TotalCount); //杩斿洖鎬绘暟
+
+        var data6 =
+            base.GetPageList(it => 1 == 1, p,
+                it => SqlFunc.GetRandom()); // 鍒嗛〉鏌ヨ鍔犳帓搴�
+        Console.Write(p.TotalCount); //杩斿洖鎬绘暟
+
+        var conModels = new List<IConditionalModel>(); //缁勮鏉′欢鏌ヨ浣滀负鏉′欢瀹炵幇 鍒嗛〉鏌ヨ鍔犳帓搴�
+        conModels.Add(new ConditionalModel
+        {
+            FieldName = typeof(MesInvItemOutItems).GetProperties()[0].Name,
+            ConditionalType = ConditionalType.Equal, FieldValue = "1"
+        }); //id=1
+        var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom());
+
+        AsQueryable().Where(x => 1 == 1)
+            .ToList(); //鏀寔浜嗚浆鎹㈡垚queryable,鎴戜滑鍙互鐢╭ueryable瀹炵幇澶嶆潅鍔熻兘
+
+
+        /*********鎻掑叆*********/
+        var insertData = new MesInvItemOutItems(); //娴嬭瘯鍙傛暟
+        var insertArray = new[] { insertData };
+        base.Insert(insertData); //鎻掑叆
+        base.InsertRange(insertArray); //鎵归噺鎻掑叆
+        var id = base.InsertReturnIdentity(insertData); //鎻掑叆杩斿洖鑷鍒�
+        AsInsertable(insertData).ExecuteCommand(); //鎴戜滑鍙互杞垚 Insertable瀹炵幇澶嶆潅鎻掑叆
+
+
+        /*********鏇存柊*********/
+        var updateData = new MesInvItemOutItems(); //娴嬭瘯鍙傛暟
+        var updateArray = new[] { updateData }; //娴嬭瘯鍙傛暟
+        base.Update(updateData); //鏍规嵁瀹炰綋鏇存柊
+        base.UpdateRange(updateArray); //鎵归噺鏇存柊
+        //base.Update(it => new MesInvItemOutItems() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// 鍙洿鏂癈lassName鍒楀拰CreateTime鍒楋紝鍏跺畠鍒椾笉鏇存柊锛屾潯浠秈d=1
+        AsUpdateable(updateData).ExecuteCommand(); //杞垚Updateable鍙互瀹炵幇澶嶆潅鐨勬彃鍏�
+
+
+        /*********鍒犻櫎*********/
+        var deldata = new MesInvItemOutItems(); //娴嬭瘯鍙傛暟
+        base.Delete(deldata); //鏍规嵁瀹炰綋鍒犻櫎
+        base.DeleteById(1); //鏍规嵁涓婚敭鍒犻櫎
+        base.DeleteById(new[] { 1, 2 }); //鏍规嵁涓婚敭鏁扮粍鍒犻櫎
+        base.Delete(it => 1 == 2); //鏍规嵁鏉′欢鍒犻櫎
+        AsDeleteable().Where(it => 1 == 2)
+            .ExecuteCommand(); //杞垚Deleteable瀹炵幇澶嶆潅鐨勬搷浣�
+    }
+
+    #endregion
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesInvItemOutsManager.cs b/service/Warehouse/MesInvItemOutsManager.cs
new file mode 100644
index 0000000..dae6a83
--- /dev/null
+++ b/service/Warehouse/MesInvItemOutsManager.cs
@@ -0,0 +1,429 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.util;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesInvItemOutsManager : Repository<MesInvItemOuts>
+{
+    public List<MesInvItemOuts> GetPage(WarehouseQuery query)
+    {
+        var parsedGuid = Guid.Empty;
+        if (!string.IsNullOrEmpty(query.id))
+        {
+            var isValid = Guid.TryParse(query.id, out parsedGuid);
+            if (!isValid)
+                throw new ApplicationException("GUID杞崲閿欒");
+        }
+
+        return
+            Db.Queryable<MesInvItemOuts, MesDepots, MesSupplier, SysUser,
+                    SysUser>((a, e, i, u1, u3) =>
+                    new JoinQueryInfos(
+                        JoinType.Left,
+                        a.DepotId == e.DepotId,
+                        JoinType.Left,
+                        a.SuppId == i.Id,
+                        JoinType.Left,
+                        a.CreateBy == u1.Account,
+                        JoinType.Left,
+                        a.CheckUser == u3.Account))
+                .WhereIF(UtilityHelper.CheckGuid(parsedGuid),
+                    (a, e, i, u1, u3) => a.Guid == parsedGuid)
+                .WhereIF(!string.IsNullOrEmpty(query.billNo),
+                    (a, e, i, u1, u3) => a.ItemOutNo == query.billNo)
+                .Select((a, e, i, u1, u3) => new MesInvItemOuts
+                {
+                    Guid = a.Guid,
+                    DepotCode = e.DepotCode,
+                    Fmrmode = a.Fmrmode,
+                    CheckDate = a.CheckDate,
+                    CheckUser = a.CheckUser,
+                    States = a.States,
+                    Reason = a.Reason,
+                    Remark = a.Remark,
+                    Nflag = a.Nflag,
+                    FType = a.FType,
+                    SuppNo = i.SuppNo,
+                    DepotName = e.DepotName,
+                    SuppName = i.SuppName,
+                    CreateByFname = u1.Account,
+                    CheckUserFname = u3.Account,
+                    CreateDate = a.CreateDate,
+                    CreateBy = a.CreateBy,
+                    Status = a.Status,
+                    ItemOutNo = a.ItemOutNo
+                }).ToPageList(query.PageIndex, query.Limit);
+    }
+
+    public List<MesInvItemOutItems> GetItems(WarehouseQuery query)
+    {
+        var parsedGuid = Guid.Empty;
+        if (string.IsNullOrEmpty(query.id)) return [];
+
+        var isValid = Guid.TryParse(query.id, out parsedGuid);
+        if (!isValid)
+            throw new ApplicationException("GUID杞崲閿欒");
+
+        var mesInvItemOutItemsList = Db.Queryable<MesInvItemOutItems, MesItems>(
+                (c, s) => new object[]
+                {
+                    JoinType.Inner, c.ItemId == s.Id
+                }).Where((c, s) => c.ItemOutId == parsedGuid)
+            .Select<MesInvItemOutItems>((c, s) => new MesInvItemOutItems
+            {
+                Guid = c.Guid,
+                TlQty = c.TlQty,
+                WorkLine = c.WorkLine,
+                PbillNo = c.PbillNo,
+                LineK3id = c.LineK3id,
+                DepotCode = c.DepotCode,
+                Status = c.Status,
+                Remark = c.Remark,
+                EbelnK3id = c.EbelnK3id,
+                Quantity = c.Quantity,
+                ItemNo = s.ItemNo,
+                ItemName = s.ItemName,
+                ItemModel = s.ItemModel,
+                ItemId = c.ItemId,
+                RkNo = c.RkNo,
+                WorkNo = c.WorkNo
+            }).ToList();
+
+        foreach (var mesInvItemOutItemse in mesInvItemOutItemsList)
+        {
+            var u = Db.Queryable<MesInvItemOutItems>()
+                .GroupBy(it => new
+                    { it.ItemId, it.PbillNo, it.WorkLine, it.RkNo })
+                .Where(it => it.ItemId == mesInvItemOutItemse.ItemId
+                             // && it.PbillNo == mesInvItemOutItemse.PbillNo
+                             // && it.WorkLine == mesInvItemOutItemse.WorkLine
+                             && it.RkNo == mesInvItemOutItemse.RkNo)
+                .Select(it => new
+                {
+                    KtQty = SqlFunc.AggregateSum(it.Quantity ?? 0)
+                }).First();
+
+            var s1 = Db.Queryable<MesInvItemInCItems>()
+                .GroupBy(it => new
+                    { it.ItemId, it.Ebeln, it.WorkLine, it.BillNo })
+                .Where(it => it.ItemId == mesInvItemOutItemse.ItemId
+                             && it.CbillNo == mesInvItemOutItemse.PbillNo
+                    // && it.WorkLine == mesInvItemOutItemse.WorkLine
+                    // && it.BillNo == mesInvItemOutItemse.RkNo
+                )
+                .Select(it => new
+                {
+                    RkQty = SqlFunc.AggregateSum(it.Quantity ?? 0)
+                }).First();
+
+            mesInvItemOutItemse.KtQty = s1.RkQty - u.KtQty;
+        }
+
+        return mesInvItemOutItemsList;
+    }
+
+    public OutItemDto SaveCombination(OutItemDto dto)
+    {
+        var mesInvItemOuts = dto.Form;
+        mesInvItemOuts.Status = 0;
+        mesInvItemOuts.BoardFlag = false;
+        mesInvItemOuts.Sapstatus = false;
+        mesInvItemOuts.OutStatus = false;
+        mesInvItemOuts.ItemFlag = false;
+        mesInvItemOuts.IsVisual = true;
+        mesInvItemOuts.TransactionNo = 203;
+        mesInvItemOuts.Factory = "1000";
+        mesInvItemOuts.Company = "1000";
+
+        var newGuid = Guid.NewGuid();
+
+        mesInvItemOuts.Guid = newGuid;
+
+        //杩斿洖ID
+        var command = Db.Insertable(mesInvItemOuts)
+            .ExecuteCommand();
+
+        if (command <= 0) throw new Exception("鎻掑叆閿欒");
+
+        dto.SaveItems.ForEach(s =>
+        {
+            s.ItemOutId = newGuid;
+            s.Factory = "1000";
+            s.Company = "1000";
+            s.Status = 0;
+            s.DepotCode = mesInvItemOuts.DepotCode;
+            s.FType = mesInvItemOuts.FType;
+            s.CreateBy = mesInvItemOuts.CreateBy;
+            s.CreateDate = mesInvItemOuts.CreateDate;
+        });
+
+        var insertable = Db.Insertable(dto.SaveItems)
+            .ExecuteCommand();
+
+        if (insertable < 0) throw new Exception("鎻掑叆閿欒");
+
+        var query = new WarehouseQuery();
+        query.id = newGuid.ToString();
+        dto.SelectItems = GetItems(query);
+
+        return dto;
+    }
+
+
+    public List<CgtlView> SelectMaterials(WarehouseQuery query)
+    {
+        return Db.Queryable<CgtlView>()
+            .Where(s => s.SuppId == query.SuppId)
+            .ToList();
+    }
+
+    private void Validate(WarehouseQuery query)
+    {
+        // 鏍¢獙鍗曞彿鏄惁姝g‘
+        var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
+            .Where(o => o.ItemOutNo == query.billNo)
+            .Single();
+
+        if (mesInvItemOuts == null)
+            throw new Exception("娌℃壘鍒�" + query.billNo + " 瀵瑰簲鐨勯噰璐��璐у崟锛岃妫�鏌�");
+
+        // 鏍¢獙瀛愯〃鏁版嵁
+        var itemOutItems = Db.Queryable<MesInvItemOutItems>()
+            .Where(o => o.ItemOutId == mesInvItemOuts.Guid)
+            .ToList();
+
+        var sql = string.Empty;
+        var P_Msg = string.Empty;
+
+        foreach (var item in itemOutItems)
+        {
+            // 鍒ゆ柇鐢宠鏁伴噺鏄惁澶т簬鍓╀綑鍙��鏁伴噺
+            sql = string.Format(
+                @"SELECT isnull(s1.RK_QTY, 0) - isnull(KT_QTY, 0) KT_QTY 
+            FROM MES_INV_ITEM_OUT_ITEMS C
+            LEFT JOIN (SELECT SUM(QUANTITY) KT_QTY,
+                              ITEM_NO,
+                              PBILL_NO,
+                              RK_NO,
+                              WORK_LINE
+                         FROM MES_INV_ITEM_OUT_ITEMS
+                        GROUP BY ITEM_NO, PBILL_NO, WORK_LINE,RK_NO) U
+              ON U.ITEM_NO = C.ITEM_NO
+             AND U.WORK_LINE = C.WORK_LINE
+             AND U.PBILL_NO = C.PBILL_NO
+             AND U.RK_NO = C.RK_NO
+            LEFT JOIN (SELECT SUM(QUANTITY) RK_QTY,
+                              ITEM_NO,
+                              EBELN,
+                              WORK_LINE,BILL_NO
+                         FROM MES_INV_ITEM_IN_C_ITEMS
+                        GROUP BY ITEM_NO, EBELN, WORK_LINE,BILL_NO) s1
+              ON S1.ITEM_NO = C.ITEM_NO
+             AND S1.WORK_LINE = C.WORK_LINE
+             AND S1.EBELN = C.PBILL_NO
+                AND S1.BILL_NO = C.RK_NO
+           WHERE C.guid = '{0}'", item.Guid);
+            var sy_Qty = Db.Ado.SqlQuery<decimal>(sql);
+
+            if (sy_Qty != null && sy_Qty[0] < 0)
+            {
+                P_Msg =
+                    $"閲囪喘璁㈠崟锛歿item.PbillNo}锛岃锛歿item.WorkLine}锛岀墿鏂欙細{item.ItemNo} 鐢宠鏁伴噺澶т簬鍓╀綑鍙敹鏁伴噺";
+                throw new Exception(P_Msg);
+            }
+
+            // 鍒ゆ柇琛屾槸鍚﹂噸澶�
+            var cf_Num = Db.Queryable<MesInvItemOutItems>()
+                .Where(s1 => s1.ItemNo == item.ItemNo &&
+                             s1.WorkLine == item.WorkLine &&
+                             s1.PbillNo == item.PbillNo &&
+                             s1.ItemOutId == mesInvItemOuts.Guid &&
+                             s1.RkNo == item.RkNo)
+                .Count();
+
+            if (cf_Num <= 1) continue;
+            P_Msg =
+                $"閲囪喘璁㈠崟锛歿item.PbillNo}锛岃锛歿item.WorkLine}锛岀墿鏂欙細{item.ItemNo}閲嶅璇峰垹闄ゅ叾涓竴鏉℃暟鎹�";
+            throw new Exception(P_Msg);
+        }
+
+        // 鏍¢獙涓昏〃鍐呭鏄惁琚垹鎺�
+        // 涓昏〃浠撳簱缂栫爜
+        if (string.IsNullOrEmpty(mesInvItemOuts.DepotCode))
+        {
+            P_Msg = "浠撳簱缂栫爜涓虹┖锛岃妫�鏌�";
+            throw new Exception(P_Msg);
+        }
+
+        var supplierExists = Db.Queryable<MesSupplier>()
+            .Any(supplier => supplier.SuppNo == mesInvItemOuts.SuppNo);
+
+        if (!supplierExists)
+        {
+            P_Msg = $"渚涘簲鍟嗙紪鐮� {mesInvItemOuts.SuppNo} 鍦ㄧ郴缁熶腑涓嶅瓨鍦紝璇锋鏌�";
+            throw new Exception(P_Msg);
+        }
+
+        // 瀛愯〃琛屼笌涓昏〃绗﹀悎鎬ф牎楠�
+        foreach (var j in itemOutItems)
+        {
+            // 鏍¢獙瀛愯〃瀵瑰簲閲囪喘璁㈠崟鐨勪緵搴斿晢缂栫爜
+            var c_SuppNo = Db.Queryable<MesRohIn, MesSupplier>(
+                    (roh, supp) => new JoinQueryInfos(
+                        JoinType.Left,
+                        roh.Supplier == supp.Id.ToString()
+                    ))
+                .Where(roh => roh.BillNo == j.WorkNo)
+                .Select((roh, supp) => supp.SuppNo)
+                .Single();
+
+            if (c_SuppNo == null)
+            {
+                P_Msg = $"瀛愯〃琛屼緵搴斿晢缂栫爜 {c_SuppNo} 鍦ㄧ郴缁熶腑鏈壘鍒�";
+                throw new Exception(P_Msg);
+            }
+
+            if (mesInvItemOuts.SuppNo != c_SuppNo)
+            {
+                P_Msg =
+                    $"瀛愯〃閲囪喘璁㈠崟琛岀殑渚涘簲鍟嗙紪鐮� {c_SuppNo} 涓庝富琛ㄤ緵搴斿晢缂栫爜 {mesInvItemOuts.SuppNo} 涓嶄竴鑷达紝璇锋鏌�";
+                throw new Exception(P_Msg);
+            }
+
+            // 鏍¢獙瀛愯〃濮斿閲囪喘绫诲瀷鍜屼富琛ㄧ被鍨嬫槸鍚︿竴鑷�
+            if (j.FType != mesInvItemOuts.FType)
+            {
+                P_Msg =
+                    $"瀛愯〃濮斿绫诲瀷锛歿j.FType}锛屼笌涓昏〃濮斿绫诲瀷锛歿mesInvItemOuts.FType}锛屼笉涓�鑷达紝璇锋鏌�";
+                throw new Exception(P_Msg);
+            }
+
+            // 妫�鏌ュ瓙琛ㄤ粨搴撴槸鍚﹀拰涓昏〃浠撳簱涓�鑷�
+            if (j.DepotCode == mesInvItemOuts.DepotCode) continue;
+            P_Msg =
+                $"瀛愯〃浠撳簱缂栫爜锛歿j.DepotCode} 涓庝富琛ㄤ粨搴撶紪鐮侊細{mesInvItemOuts.DepotCode}锛屼笉涓�鑷达紝璇锋鏌�";
+            throw new Exception(P_Msg);
+        }
+    }
+
+    public bool DeApproveBefore(WarehouseQuery query)
+    {
+        var mesInvItemOuts = base.GetById(query.id);
+        if (mesInvItemOuts == null) throw new Exception("鍑哄簱鍗曚笉瀛樺湪");
+
+        var nflag = mesInvItemOuts.Nflag ?? 0;
+
+        if (nflag != 0) return true;
+
+        return false;
+    }
+
+    public bool Audit(WarehouseQuery query)
+    {
+        // 瀹℃牳鍓嶆牎楠�
+        Validate(query);
+        query.status = 1;
+        //瀹℃牳
+        return Update(query);
+    }
+
+    private bool Update(WarehouseQuery entity)
+    {
+        var parsedGuid = Guid.Empty;
+        if (!string.IsNullOrEmpty(entity.id))
+        {
+            var isValid = Guid.TryParse(entity.id, out parsedGuid);
+            if (!isValid)
+                throw new ApplicationException("GUID杞崲閿欒"); 
+        }
+
+        if (!UtilityHelper.CheckGuid(parsedGuid))
+        {
+            throw new  ApplicationException("鏇存柊閿欒锛屾暟鎹槸涓嶅悎娉曠殑");
+        }
+        
+        var userName = entity.userName ?? "system";
+        return Db.Updateable<MesInvItemOuts>()
+            .SetColumns(s => s.Status == entity.status)
+            .SetColumns(s => s.CheckUser == userName)
+            .SetColumns(s => s.CheckDate == DateTime.Now)
+            .Where(s => s.Guid == parsedGuid).ExecuteCommand() > 0;
+    }
+
+
+    public string GetMaxItemOutNo()
+    {
+        var date = DateTime.Now.ToString("yyyyMMdd");
+        var par = "NTL" + date;
+        var sql =
+            $"select max(ITEM_OUT_NO) from MES_INV_ITEM_OUTS where ITEM_OUT_NO like '{par}%'";
+        var maxBillNo = Db.Ado.SqlQuerySingle<string>(sql);
+
+        var number = "0001";
+        if (maxBillNo != null)
+        {
+            maxBillNo = maxBillNo.Substring(11);
+            var no = Convert.ToInt32(maxBillNo);
+            no++;
+            number = no.ToString().PadLeft(4, '0');
+        }
+
+        return "NTL" + date + number;
+    }
+
+    public MessageCenter SaveMessageCenter(WarehouseQuery query)
+    {
+        var message = MesToErpParam(query);
+
+        // var executeReturnIdentity =
+        //     Db.Insertable(message).ExecuteReturnIdentity();
+        // if (executeReturnIdentity > 0)
+        // {
+        //     message.Id = executeReturnIdentity;
+        //     message.Pid = executeReturnIdentity;
+        //     return message;
+        // }
+
+        throw new Exception("鑾峰彇鏁版嵁澶辫触");
+    }
+
+    public MessageCenter MesToErpParam(WarehouseQuery query)
+    {
+        var erpParameters = "";
+        var title = "";
+        var tableName = "MES_INV_ITEM_OUTS_" + query.Type;
+        if ("A".Equals(query.Type))
+        {
+            //erpParameters = GetErpParameters(query.billNo);
+            title = "閲囪喘閫�璐у崟" + query.billNo + "瀹℃牳";
+        }
+        else if ("B".Equals(query.Type))
+        {
+            //erpParameters = GetDeApprovePam(query.id);
+            title = "閲囪喘閫�璐у崟" + query.billNo + "鍙嶅鏍�";
+        }
+
+        var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl;
+        var message = new MessageCenter
+        {
+            TableName = tableName,
+            Url = ErpUrl,
+            Status = 1,
+            CreateBy = query.userName,
+            Route = query.billNo,
+            Title = title,
+            PageName = "Warehouse/PurchaseReturn/Add?id=" + query.id +
+                       "&itemOutNo=" + query.billNo,
+            CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+            Method = "POST",
+            Seq = 1,
+            Data = erpParameters,
+            IsMessage = 0,
+            ContentType = "application/x-www-form-urlencoded"
+        };
+        return message;
+    }
+}
\ No newline at end of file
diff --git a/service/base/MesDepotsManager.cs b/service/base/MesDepotsManager.cs
new file mode 100644
index 0000000..a5bddc9
--- /dev/null
+++ b/service/base/MesDepotsManager.cs
@@ -0,0 +1,7 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.entity;
+
+namespace NewPdaSqlServer.service.@base;
+
+public class MesDepotsManager : Repository<MesDepots>
+{}
\ No newline at end of file
diff --git a/util/UtilityHelper.cs b/util/UtilityHelper.cs
index c374f7c..7b042d2 100644
--- a/util/UtilityHelper.cs
+++ b/util/UtilityHelper.cs
@@ -99,7 +99,7 @@
 
 
     /// <summary>
-    ///     鍒ゆ柇鏄笉鏄痝uid
+    ///     濡傛灉guid涓� Empty鎴栬�卬ull  杩斿洖false
     /// </summary>
     /// <param name="guid"></param>
     /// <returns></returns>

--
Gitblit v1.9.3