From fcd41558f0e07ea4c082a1b5e073686d91e09505 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 20 十一月 2024 09:26:54 +0800
Subject: [PATCH] 委外订单接口

---
 MES.Service/service/BasicData/ProductionOrderSubManager.cs        |   78 +++
 MES.Service/Modes/MessageCenter.cs                                |    2 
 MES.Service/Modes/ProductionOrderSub.cs                           |  248 +++++++++++
 MES.Service/Dto/webApi/ErpProductionOrderDto.cs                   |   44 ++
 MES.Service/Modes/ProductionOrder.cs                              |  330 +++++++++++++++
 MESApplication/Controllers/BasicData/ProductionOrderController.cs |  260 ++++++++++++
 MES.Service/Dto/webApi/ErpProductionOrderSubDto.cs                |   31 +
 MES.Service/Dto/webApi/ErpWYOrder.cs                              |    8 
 MES.Service/service/BasicData/ProductionOrderManager.cs           |  205 +++++++++
 9 files changed, 1,205 insertions(+), 1 deletions(-)

diff --git a/MES.Service/Dto/webApi/ErpProductionOrderDto.cs b/MES.Service/Dto/webApi/ErpProductionOrderDto.cs
new file mode 100644
index 0000000..0e06c3d
--- /dev/null
+++ b/MES.Service/Dto/webApi/ErpProductionOrderDto.cs
@@ -0,0 +1,44 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpProductionOrderDto
+{
+    public string? Type { get; set; }
+    public string? FBillNo { get; set; } // 鍗曟嵁缂栧彿
+    public string? FStockID { get; set; } // 浠撳簱
+    public string? FDate { get; set; } // 鍗曟嵁鏃ユ湡
+    public string? FBillType { get; set; } // 鍗曟嵁绫诲瀷
+    public string? FStatus { get; set; } // 涓氬姟鐘舵��
+    public string? FMaterialId { get; set; } // 浜у搧缂栫爜
+    public string? FUnitID { get; set; } // 鍗曚綅
+    public string? FQty { get; set; } // 宸ュ崟鏁伴噺
+    public string? FWorkGroupId { get; set; } // 璁″垝缁�
+    public string? FPlannerID { get; set; } // 璁″垝鍛�
+    public string? FPlanStartDate { get; set; } // 棰勮寮�宸ユ椂闂�
+    public string? FPlanFinishDate { get; set; } // 棰勮瀹屽伐鏃堕棿
+    public string? FStockInLimitH { get; set; } // 鍏ュ簱涓婇檺
+    public string? FStockInLimitL { get; set; } // 鍏ュ簱涓嬮檺
+    public string? FMTONO { get; set; } // 璁″垝璺熻釜鍙�
+    public string? FLot { get; set; } // 鎵瑰彿
+    public string? FBomId { get; set; } // BOM鐗堟
+    public string? F_UNW_XSDDH { get; set; } // 閿�鍞鍗曞彿
+    public string? FCreateType { get; set; } // 鐢熸垚鏂瑰紡
+    public string? FSUBID { get; set; } // ERP鐢熶骇璁㈠崟ID
+    public string? FSUBBILLNOSEQ { get; set; } // ERP鐢熶骇璁㈠崟搴忓彿
+    public string? FSUBBILLNO { get; set; } // ERP鐢熶骇璁㈠崟鍗曞彿
+    public string? FSrcBillType { get; set; } // 婧愬崟绫诲瀷
+    public string? FSrcBillNo { get; set; } // 婧愬崟缂栧彿
+    public string? FSrcBillEntrySeq { get; set; } // 婧愬崟鍒嗗綍琛屽彿
+    public string? FSALEORDERNO { get; set; } // 闇�姹傚崟鎹彿
+    public string? FSaleOrderEntrySeq { get; set; } // 闇�姹傚崟鎹鍙�
+    public string? FFORCECLOSERID { get; set; } // 缁撴浜�
+    public string? FCloseType { get; set; } // 缁撴绫诲瀷
+    public string? FDescription { get; set; } // 澶囨敞
+    public string? FPPOMID { get; set; } // ERPID
+    public string? FSUBENTRYID { get; set; } // ERP鐢熶骇璁㈠崟鍒嗗綍鍐呯爜
+    public string? FPurOrderNo { get; set; } // 閲囪喘璁㈠崟
+    public string? FPurOrderEntrySeq { get; set; } // 閲囪喘璁㈠崟琛屽彿
+    public string? FBaseStockInQty { get; set; } // 鍏ュ簱鏁伴噺
+    public string? FBaseNoStockInQty { get; set; } // 鏈叆搴撴暟閲�
+    public string? FInStockOwnerId { get; set; } // 鍏ュ簱璐т富
+    // public string? FSUPPLIERID { get; set; } // 渚涘簲鍟咺D
+}
\ No newline at end of file
diff --git a/MES.Service/Dto/webApi/ErpProductionOrderSubDto.cs b/MES.Service/Dto/webApi/ErpProductionOrderSubDto.cs
new file mode 100644
index 0000000..9bd1217
--- /dev/null
+++ b/MES.Service/Dto/webApi/ErpProductionOrderSubDto.cs
@@ -0,0 +1,31 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpProductionOrderSubDto
+{
+    public string? FSEQ { get; set; } // 搴忓彿
+    public string? FMaterialID2 { get; set; } // 瀛愰」鐗╂枡缂栫爜
+    public string? FMustQty { get; set; } // 闇�棰嗙敤閲�
+    public string? FPickedQty { get; set; } // 宸查鐢ㄩ噺
+    public string? FPositionNO { get; set; } // 浣嶇疆鍙�
+    public string? FOwnerID { get; set; } // 璐т富
+    public string? FMTONO { get; set; } // 璁″垝璺熻釜鍙�
+    public string? FLot { get; set; } // 鎵瑰彿
+    public string? FStockID { get; set; } // 浠撳簱
+    public string? FIssueType { get; set; } // 鍙戞枡鏂瑰紡
+    public string? FUnitID2 { get; set; } // 鍗曚綅
+    public string? FSupplyType { get; set; } // 渚涘簲绫诲瀷
+    public string? FNumerator { get; set; } // 鍒嗗瓙
+    public string? FDenominator { get; set; } // 鍒嗘瘝
+    public string? FPPOMENTRYID { get; set; } // ERPID
+    public string? FPPOMID { get; set; } // ERP澶碔D
+    public string? FFixScrapQty { get; set; } // 鍥哄畾鎹熻��
+    public string? FScrapRate { get; set; } // 鍙樺姩鎹熻�楃巼%
+    public string? FMaterialType { get; set; } // 瀛愰」绫诲瀷
+    public string? FUnitID3 { get; set; } // 瀛愰」绫诲瀷
+
+    public string? FReplaceGroup { get; set; } // 椤规鍙�
+    public string? FOwnerTypeId { get; set; } // 璐т富绫诲瀷
+    public string? FOwnerID2 { get; set; } // 璐т富
+
+    public string? FSUBENTRYID { get; set; } // ERP鐢熶骇璁㈠崟鍒嗗綍鍐呯爜
+}
\ No newline at end of file
diff --git a/MES.Service/Dto/webApi/ErpWYOrder.cs b/MES.Service/Dto/webApi/ErpWYOrder.cs
new file mode 100644
index 0000000..4a5db6c
--- /dev/null
+++ b/MES.Service/Dto/webApi/ErpWYOrder.cs
@@ -0,0 +1,8 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpWYOrder
+{
+    public ErpProductionOrderDto OrderDto { get; set; }
+
+    public List<ErpProductionOrderSubDto> Items { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/Modes/MessageCenter.cs b/MES.Service/Modes/MessageCenter.cs
index fd37713..a1cba53 100644
--- a/MES.Service/Modes/MessageCenter.cs
+++ b/MES.Service/Modes/MessageCenter.cs
@@ -85,7 +85,7 @@
     ///     鎵规id
     /// </summary>
     [SugarColumn(ColumnName = "pid")]
-    public int? Pid { get; set; }
+    public Guid? Pid { get; set; }
 
     /// <summary>
     ///     鎵ц椤哄簭
diff --git a/MES.Service/Modes/ProductionOrder.cs b/MES.Service/Modes/ProductionOrder.cs
new file mode 100644
index 0000000..357987c
--- /dev/null
+++ b/MES.Service/Modes/ProductionOrder.cs
@@ -0,0 +1,330 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐢熶骇璁㈠崟琛�(濮斿)
+/// </summary>
+[SugarTable("PRODUCTION_ORDER")]
+public class ProductionOrder
+{
+    /// <summary>
+    ///     榛樿鍊�: (newid())
+    /// </summary>
+    [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+    public Guid Guid { get; set; }
+
+    /// <summary>
+    ///     鍗曟嵁缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ORDER_NO")]
+    public string? OrderNo { get; set; }
+
+    /// <summary>
+    ///     璐寸墖宸ヨ壓灞炴��
+    /// </summary>
+    [SugarColumn(ColumnName = "SMT_PROCESS_ATTR")]
+    public string? SmtProcessAttr { get; set; }
+
+    /// <summary>
+    ///     浠撳簱
+    /// </summary>
+    [SugarColumn(ColumnName = "WAREHOUSE")]
+    public string? Warehouse { get; set; }
+
+    /// <summary>
+    ///     鍗曟嵁鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "ORDER_DATE")]
+    public DateTime? OrderDate { get; set; }
+
+    /// <summary>
+    ///     鍗曟嵁绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "ORDER_TYPE")]
+    public string? OrderType { get; set; }
+
+    /// <summary>
+    ///     涓氬姟鐘舵�� 1璁″垝纭 2涓嬭揪 3寮�宸� 4瀹屽伐 5缁撴
+    /// </summary>
+    [SugarColumn(ColumnName = "BUSINESS_STATUS")]
+    public string? BusinessStatus { get; set; }
+
+    /// <summary>
+    ///     浜у搧缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "PRODUCT_CODE")]
+    public string? ProductCode { get; set; }
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT")]
+    public string? Unit { get; set; }
+
+    /// <summary>
+    ///     宸ュ崟鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_ORDER_QTY")]
+    public decimal? WorkOrderQty { get; set; }
+
+    /// <summary>
+    ///     璁″垝缁�
+    /// </summary>
+    [SugarColumn(ColumnName = "PLANNING_GROUP")]
+    public string? PlanningGroup { get; set; }
+
+    /// <summary>
+    ///     璁″垝鍛�
+    /// </summary>
+    [SugarColumn(ColumnName = "PLANNER")]
+    public string? Planner { get; set; }
+
+    /// <summary>
+    ///     棰勮寮�宸ユ椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "ESTIMATED_START_TIME")]
+    public DateTime? EstimatedStartTime { get; set; }
+
+    /// <summary>
+    ///     棰勮瀹屽伐鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "ESTIMATED_END_TIME")]
+    public DateTime? EstimatedEndTime { get; set; }
+
+    /// <summary>
+    ///     璁″垝涓嬭揪鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "PLAN_RELEASE_DATE")]
+    public DateTime? PlanReleaseDate { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱涓婇檺
+    /// </summary>
+    [SugarColumn(ColumnName = "STORAGE_UPPER_LIMIT")]
+    public decimal? StorageUpperLimit { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱涓嬮檺
+    /// </summary>
+    [SugarColumn(ColumnName = "STORAGE_LOWER_LIMIT")]
+    public decimal? StorageLowerLimit { get; set; }
+
+    /// <summary>
+    ///     璁″垝璺熻釜鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "TRACKING_NO")]
+    public string? TrackingNo { get; set; }
+
+    /// <summary>
+    ///     鎵瑰彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BATCH_NO")]
+    public string? BatchNo { get; set; }
+
+    /// <summary>
+    ///     BOM鐗堟
+    /// </summary>
+    [SugarColumn(ColumnName = "BOM_VERSION")]
+    public string? BomVersion { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SALES_ORDER_NO")]
+    public string? SalesOrderNo { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "SALES_ORDER_LINE_NO")]
+    public string? SalesOrderLineNo { get; set; }
+
+    /// <summary>
+    ///     鐢熸垚鏂瑰紡
+    /// </summary>
+    [SugarColumn(ColumnName = "GENERATION_METHOD")]
+    public string? GenerationMethod { get; set; }
+
+    /// <summary>
+    ///     ERP鐢熶骇璁㈠崟ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_PRODUCTION_ORDER_ID")]
+    public string? ErpProductionOrderId { get; set; }
+
+    /// <summary>
+    ///     ERP鐢熶骇璁㈠崟搴忓彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_PRODUCTION_ORDER_LINE_NO")]
+    public string? ErpProductionOrderLineNo { get; set; }
+
+    /// <summary>
+    ///     ERP鐢熶骇璁㈠崟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_PRODUCTION_ORDER_NO")]
+    public string? ErpProductionOrderNo { get; set; }
+
+    /// <summary>
+    ///     婧愬崟绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "SOURCE_ORDER_TYPE")]
+    public string? SourceOrderType { get; set; }
+
+    /// <summary>
+    ///     婧愬崟缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SOURCE_ORDER_NO")]
+    public string? SourceOrderNo { get; set; }
+
+    /// <summary>
+    ///     婧愬崟鍒嗗綍琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SOURCE_ORDER_ENTRY_NO")]
+    public string? SourceOrderEntryNo { get; set; }
+
+    /// <summary>
+    ///     闇�姹傚崟鎹彿
+    /// </summary>
+    [SugarColumn(ColumnName = "DEMAND_ORDER_NO")]
+    public string? DemandOrderNo { get; set; }
+
+    /// <summary>
+    ///     闇�姹傚崟鎹鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "DEMAND_ORDER_LINE_NO")]
+    public string? DemandOrderLineNo { get; set; }
+
+    /// <summary>
+    ///     缁撴浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CLOSING_PERSON")]
+    public string? ClosingPerson { get; set; }
+
+    /// <summary>
+    ///     缁撴绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "CLOSING_TYPE")]
+    public string? ClosingType { get; set; }
+
+    /// <summary>
+    ///     婧愭媶鍒嗚鍗曠紪鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "SPLIT_ORDER_NO")]
+    public string? SplitOrderNo { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "REMARKS")]
+    public string? Remarks { get; set; }
+
+    /// <summary>
+    ///     ERPID
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_ID")]
+    public string? ErpId { get; set; }
+
+    /// <summary>
+    ///     ERP鐢熶骇璁㈠崟鍒嗗綍鍐呯爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_PRODUCTION_ENTRY_CODE")]
+    public string? ErpProductionEntryCode { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟
+    /// </summary>
+    [SugarColumn(ColumnName = "PURCHASEORDERNO")]
+    public string? Purchaseorderno { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "PURCHASEORDERENTRYSEQ")]
+    public int? Purchaseorderentryseq { get; set; }
+
+    /// <summary>
+    ///     鏍囧噯鐐规暟
+    /// </summary>
+    [SugarColumn(ColumnName = "STANDARDPOINTS")]
+    public decimal? Standardpoints { get; set; }
+
+    /// <summary>
+    ///     璁′环鐐规暟
+    /// </summary>
+    [SugarColumn(ColumnName = "PRICINGPOINTS")]
+    public decimal? Pricingpoints { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "STOCKINQTY")]
+    public decimal? Stockinqty { get; set; }
+
+    /// <summary>
+    ///     鏈叆搴撴暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "NOSTOCKINQTY")]
+    public decimal? Nostockinqty { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱璐т富
+    /// </summary>
+    [SugarColumn(ColumnName = "STOCKOWNER")]
+    public string? Stockowner { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鐘舵��
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "AUDIT_STATUS")]
+    public int? AuditStatus { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "AUDITOR")]
+    public string? Auditor { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "AUDIT_DATE")]
+    public DateTime? AuditDate { get; set; }
+
+    /// <summary>
+    ///     閫氱煡澶囨枡鐘舵��
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "PREPARE_FLAG")]
+    public int? PrepareFlag { get; set; }
+
+    /// <summary>
+    ///     閫氱煡澶囨枡浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "PREPARER")]
+    public string? Preparer { get; set; }
+
+    /// <summary>
+    ///     閫氱煡澶囨枡鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "PREPARE_DATE")]
+    public DateTime? PrepareDate { get; set; }
+
+    /// <summary>
+    ///     渚涘晢缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_NO")]
+    public string? SuppNo { get; set; }
+
+    /// <summary>
+    ///     澶囨枡瀹屾垚鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "PREPARE_COMP_DATE")]
+    public DateTime? PrepareCompDate { get; set; }
+
+    /// <summary>
+    ///     澶囨枡瀹屾垚鏍囪瘑
+    /// </summary>
+    [SugarColumn(ColumnName = "PREPARE_COMP_FLAG")]
+    public int? PrepareCompFlag { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/Modes/ProductionOrderSub.cs b/MES.Service/Modes/ProductionOrderSub.cs
new file mode 100644
index 0000000..85e4c8f
--- /dev/null
+++ b/MES.Service/Modes/ProductionOrderSub.cs
@@ -0,0 +1,248 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐢熶骇璁㈠崟琛�(濮斿) 瀛愯〃
+/// </summary>
+[SugarTable("PRODUCTION_ORDER_SUB")]
+public class ProductionOrderSub
+{
+    /// <summary>
+    ///     榛樿鍊�: (newid())
+    /// </summary>
+    [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+    public Guid Guid { get; set; }
+
+    /// <summary>
+    ///     宸ュ崟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_ORDER_NO")]
+    public string? WorkOrderNo { get; set; }
+
+    /// <summary>
+    ///     搴忓彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SEQUENCE_NO")]
+    public int? SequenceNo { get; set; }
+
+    /// <summary>
+    ///     鏉愭枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "MATERIAL_CODE")]
+    public string? MaterialCode { get; set; }
+
+    /// <summary>
+    ///     闇�棰嗙敤閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "REQUIRED_QTY")]
+    public decimal? RequiredQty { get; set; }
+
+    /// <summary>
+    ///     宸查鐢ㄩ噺
+    /// </summary>
+    [SugarColumn(ColumnName = "ISSUED_QTY")]
+    public decimal? IssuedQty { get; set; }
+
+    /// <summary>
+    ///     浣嶇疆鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "LOCATION_NO")]
+    public string? LocationNo { get; set; }
+
+    /// <summary>
+    ///     渚涘簲缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPPLYING_ORG")]
+    public string? SupplyingOrg { get; set; }
+
+    /// <summary>
+    ///     鍙戞枡缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "ISSUING_ORG")]
+    public string? IssuingOrg { get; set; }
+
+    /// <summary>
+    ///     璐т富
+    /// </summary>
+    [SugarColumn(ColumnName = "STOCK_OWNER")]
+    public string? StockOwner { get; set; }
+
+    /// <summary>
+    ///     璁″垝璺熻釜鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "TRACKING_NO")]
+    public string? TrackingNo { get; set; }
+
+    /// <summary>
+    ///     鎵瑰彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BATCH_NO")]
+    public string? BatchNo { get; set; }
+
+    /// <summary>
+    ///     浠撳簱
+    /// </summary>
+    [SugarColumn(ColumnName = "WAREHOUSE")]
+    public string? Warehouse { get; set; }
+
+    /// <summary>
+    ///     鍙戞枡鏂瑰紡
+    /// </summary>
+    [SugarColumn(ColumnName = "ISSUING_METHOD")]
+    public string? IssuingMethod { get; set; }
+
+    /// <summary>
+    ///     宸ヨ壓
+    /// </summary>
+    [SugarColumn(ColumnName = "PROCESS")]
+    public string? Process { get; set; }
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT")]
+    public string? Unit { get; set; }
+
+    /// <summary>
+    ///     瀛愰」鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT2")]
+    public string? Unit2 { get; set; }
+
+    /// <summary>
+    ///     渚涘簲绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPPLYING_TYPE")]
+    public string? SupplyingType { get; set; }
+
+    /// <summary>
+    ///     缁勬垚鐢ㄩ噺
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPOSITION_QTY")]
+    public decimal? CompositionQty { get; set; }
+
+    /// <summary>
+    ///     鏄惁鏇挎枡
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_SUBSTITUTE")]
+    public string? IsSubstitute { get; set; }
+
+    /// <summary>
+    ///     鍒嗗瓙
+    /// </summary>
+    [SugarColumn(ColumnName = "NUMERATOR")]
+    public decimal? Numerator { get; set; }
+
+    /// <summary>
+    ///     鍒嗘瘝
+    /// </summary>
+    [SugarColumn(ColumnName = "DENOMINATOR")]
+    public decimal? Denominator { get; set; }
+
+    /// <summary>
+    ///     ERPID
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_ID")]
+    public string? ErpId { get; set; }
+
+    /// <summary>
+    ///     ERP澶碔D
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_HEADER_ID")]
+    public string? ErpHeaderId { get; set; }
+
+    /// <summary>
+    ///     鍥哄畾鎹熻��
+    /// </summary>
+    [SugarColumn(ColumnName = "FIXED_LOSS")]
+    public decimal? FixedLoss { get; set; }
+
+    /// <summary>
+    ///     鍙樺姩鎹熻�楃巼%
+    /// </summary>
+    [SugarColumn(ColumnName = "VARIABLE_LOSS_RATE")]
+    public decimal? VariableLossRate { get; set; }
+
+    /// <summary>
+    ///     瀛愰」绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "SUB_ITEM_TYPE")]
+    public string? SubItemType { get; set; }
+
+    /// <summary>
+    ///     瀛愰」鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "SUB_ITEM_UNIT")]
+    public string? SubItemUnit { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "SALES_ORDER_NO")]
+    public string? SalesOrderNo { get; set; }
+
+    /// <summary>
+    ///     椤规鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     鍙戞枡缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "ISSUING_ORG_2")]
+    public string? IssuingOrg2 { get; set; }
+
+    /// <summary>
+    ///     璐т富绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "OWNER_TYPE")]
+    public string? OwnerType { get; set; }
+
+    /// <summary>
+    ///     璐т富
+    /// </summary>
+    [SugarColumn(ColumnName = "OWNER")]
+    public string? Owner { get; set; }
+
+    /// <summary>
+    ///     渚涘簲缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPPLYING_ORG_2")]
+    public string? SupplyingOrg2 { get; set; }
+
+    /// <summary>
+    ///     鍒剁▼涓嶈壇閫�鏂欐暟閲�
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "TLNUM1")]
+    public int? Tlnum1 { get; set; }
+
+    /// <summary>
+    ///     鏉ユ枡涓嶈壇閫�鏂欐暟閲�
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "TLNUM2")]
+    public int? Tlnum2 { get; set; }
+
+    /// <summary>
+    ///     鑹搧閫�鏂欐暟閲�
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "TLNUM3")]
+    public int? Tlnum3 { get; set; }
+
+    /// <summary>
+    ///     琛ユ枡鏁伴噺
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "BLNUM")]
+    public int? Blnum { get; set; }
+
+    /// <summary>
+    ///     ERP鐢熶骇璁㈠崟鍒嗗綍鍐呯爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_PRODUCTION_ENTRY_CODE")]
+    public string? ErpProductionEntryCode { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/service/BasicData/ProductionOrderManager.cs b/MES.Service/service/BasicData/ProductionOrderManager.cs
new file mode 100644
index 0000000..ccd6353
--- /dev/null
+++ b/MES.Service/service/BasicData/ProductionOrderManager.cs
@@ -0,0 +1,205 @@
+锘縰sing System.Globalization;
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using MES.Service.util;
+using SqlSugar;
+
+namespace MES.Service.service.BasicData;
+
+public class ProductionOrderManager : Repository<ProductionOrder>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    private readonly ProductionOrderSubManager _productionOrderSubManager =
+        new();
+
+
+    //ErpWYOrder
+    public bool Save(ErpWYOrder wyOrder)
+    {
+        var erpProductionOrderDto = wyOrder.OrderDto;
+        var mesRohIn = ConvertErpToProductionOrder(erpProductionOrderDto);
+        var mesRohInDatas =
+            ConvertErpToProductionOrderSub(wyOrder.Items);
+
+        return UseTransaction(db =>
+        {
+            switch (erpProductionOrderDto.Type)
+            {
+                // case "2":
+                //     return InsertData(db, mesRohIn, mesRohInDatas,
+                //         rohInErpRohIn.FBILLTYPE)
+                //         ? 1
+                //         : 0;
+                case "3":
+                    return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
+                case "2":
+                case "4":
+                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas,
+                        erpProductionOrderDto.Type)
+                        ? 1
+                        : 0;
+                default:
+                    throw new NotImplementedException(
+                        $"type娌℃湁{erpProductionOrderDto.Type}杩欎釜绫诲瀷");
+            }
+        }) > 0;
+    }
+
+    private bool UpdateData(SqlSugarScope db, ProductionOrder mesRohIn,
+        List<ProductionOrderSub> mesRohInDatas)
+    {
+        var decimals = mesRohInDatas.Select(s => s.Guid).ToArray();
+        var update = db.Deleteable<ProductionOrder>()
+            .Where(s => s.Guid == mesRohIn.Guid)
+            .ExecuteCommand() > 0;
+
+        var insertOrUpdate = db
+            .Deleteable<ProductionOrderSub>()
+            .Where(s => decimals.Contains(s.Guid))
+            .ExecuteCommand() > 0;
+
+        if (update && insertOrUpdate) return true;
+        throw new NotImplementedException("鏇存柊澶辫触");
+    }
+
+    // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+    private bool SaveOrUpdateData(SqlSugarScope db, ProductionOrder mesRohIn,
+        List<ProductionOrderSub> mesRohInDatas, string type)
+    {
+        if (StringUtil.CheckGuid(mesRohIn.Guid))
+            db.Deleteable<ProductionOrder>()
+                .Where(s => s.Guid == mesRohIn.Guid)
+                .ExecuteCommand();
+
+        if (mesRohInDatas.Count > 0)
+            db.Deleteable<ProductionOrderSub>()
+                .Where(s => s.ErpHeaderId == mesRohIn.ErpId).ExecuteCommand();
+
+        var orUpdate = base.Insert(mesRohIn);
+        var baOrUpdate = _productionOrderSubManager.InsertRange(mesRohInDatas);
+        if (orUpdate && baOrUpdate) return true;
+
+        throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+    }
+
+    // 鎵归噺淇濆瓨璁板綍鐨勬柟娉�
+    public bool SaveList(List<ErpWYOrder> rohIns)
+    {
+        var result = rohIns.Select(Save).ToList();
+        return result.All(b => b);
+    }
+
+    private ProductionOrder ConvertErpToProductionOrder(
+        ErpProductionOrderDto erpDto)
+    {
+        DateTime parsedDate;
+
+        // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss.fff"
+        DateTime? ParseDateTime(string dateStr)
+        {
+            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss.fff",
+                    CultureInfo.InvariantCulture,
+                    DateTimeStyles.None,
+                    out parsedDate))
+                return parsedDate;
+
+            return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+        }
+
+        var productionOrder = new ProductionOrder
+        {
+            OrderNo = erpDto.FBillNo,
+            Warehouse = erpDto.FStockID,
+            OrderDate = ParseDateTime(erpDto.FDate) ?? null,
+            OrderType = erpDto.FBillType,
+            BusinessStatus = erpDto.FStatus,
+            ProductCode = erpDto.FMaterialId,
+            Unit = erpDto.FUnitID,
+            WorkOrderQty = Convert.ToDecimal(erpDto.FQty),
+            PlanningGroup = erpDto.FWorkGroupId,
+            Planner = erpDto.FPlannerID,
+            EstimatedStartTime =
+                ParseDateTime(erpDto.FPlanStartDate) ?? null,
+            EstimatedEndTime =
+                ParseDateTime(erpDto.FPlanFinishDate) ?? null,
+            StorageUpperLimit = Convert.ToDecimal(erpDto.FStockInLimitH),
+            StorageLowerLimit = Convert.ToDecimal(erpDto.FStockInLimitL),
+            TrackingNo = erpDto.FMTONO,
+            BatchNo = erpDto.FLot,
+            BomVersion = erpDto.FBomId,
+            SalesOrderNo = erpDto.F_UNW_XSDDH,
+            GenerationMethod = erpDto.FCreateType,
+            ErpProductionOrderId = erpDto.FSUBID,
+            ErpProductionOrderLineNo = erpDto.FSUBBILLNOSEQ,
+            ErpProductionOrderNo = erpDto.FSUBBILLNO,
+            SourceOrderType = erpDto.FSrcBillType,
+            SourceOrderNo = erpDto.FSrcBillNo,
+            SourceOrderEntryNo = erpDto.FSrcBillEntrySeq,
+            DemandOrderNo = erpDto.FSALEORDERNO,
+            DemandOrderLineNo = erpDto.FSaleOrderEntrySeq,
+            ClosingPerson = erpDto.FFORCECLOSERID,
+            ClosingType = erpDto.FCloseType,
+            Remarks = erpDto.FDescription,
+            ErpId = erpDto.FPPOMID,
+            ErpProductionEntryCode = erpDto.FSUBENTRYID,
+            Purchaseorderno = erpDto.FPurOrderNo,
+            Purchaseorderentryseq = Convert.ToInt32(erpDto.FPurOrderEntrySeq),
+            Stockinqty = Convert.ToDecimal(erpDto.FBaseStockInQty),
+            Nostockinqty = Convert.ToDecimal(erpDto.FBaseNoStockInQty),
+            Stockowner = erpDto.FInStockOwnerId
+        };
+
+        var single = base.GetSingle(it => it.ErpId == erpDto.FPPOMID);
+        if (single != null) productionOrder.Guid = single.Guid;
+
+        return productionOrder;
+    }
+
+    private List<ProductionOrderSub> ConvertErpToProductionOrderSub(
+        List<ErpProductionOrderSubDto> erpDtoList)
+    {
+        var productionOrderSubList =
+            new List<ProductionOrderSub>();
+
+        foreach (var erpDto in erpDtoList)
+        {
+            var productionOrderSub = new ProductionOrderSub
+            {
+                SequenceNo = Convert.ToInt32(erpDto.FSEQ),
+                MaterialCode = erpDto.FMaterialID2,
+                RequiredQty = Convert.ToDecimal(erpDto.FMustQty),
+                IssuedQty = Convert.ToDecimal(erpDto.FPickedQty),
+                LocationNo = erpDto.FPositionNO,
+                StockOwner = erpDto.FOwnerID,
+                TrackingNo = erpDto.FMTONO,
+                BatchNo = erpDto.FLot,
+                Warehouse = erpDto.FStockID,
+                IssuingMethod = erpDto.FIssueType,
+                Unit = erpDto.FUnitID2,
+                Unit2 = erpDto.FUnitID3,
+                SupplyingType = erpDto.FSupplyType,
+                Numerator = Convert.ToDecimal(erpDto.FNumerator),
+                Denominator = Convert.ToDecimal(erpDto.FDenominator),
+                ErpId = erpDto.FPPOMENTRYID,
+                ErpHeaderId = erpDto.FPPOMID,
+                FixedLoss = Convert.ToDecimal(erpDto.FFixScrapQty),
+                VariableLossRate = Convert.ToDecimal(erpDto.FScrapRate),
+                SubItemType = erpDto.FMaterialType,
+                ItemNo = erpDto.FReplaceGroup,
+                OwnerType = erpDto.FOwnerTypeId,
+                Owner = erpDto.FOwnerID2,
+                ErpProductionEntryCode = erpDto.FSUBENTRYID
+            };
+
+            var single = _productionOrderSubManager.GetSingle(it =>
+                it.ErpId == productionOrderSub.ErpId);
+            if (single != null) productionOrderSub.Guid = single.Guid;
+
+            productionOrderSubList.Add(productionOrderSub);
+        }
+
+        return productionOrderSubList;
+    }
+}
\ No newline at end of file
diff --git a/MES.Service/service/BasicData/ProductionOrderSubManager.cs b/MES.Service/service/BasicData/ProductionOrderSubManager.cs
new file mode 100644
index 0000000..f2eee3e
--- /dev/null
+++ b/MES.Service/service/BasicData/ProductionOrderSubManager.cs
@@ -0,0 +1,78 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+using SqlSugar;
+
+namespace MES.Service.service.BasicData;
+
+public class ProductionOrderSubManager : Repository<ProductionOrderSub>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 ProductionOrderSubManager.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(ProductionOrderSub).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 ProductionOrderSub(); //娴嬭瘯鍙傛暟
+        var insertArray = new[] { insertData };
+        base.Insert(insertData); //鎻掑叆
+        base.InsertRange(insertArray); //鎵归噺鎻掑叆
+        var id = base.InsertReturnIdentity(insertData); //鎻掑叆杩斿洖鑷鍒�
+        AsInsertable(insertData).ExecuteCommand(); //鎴戜滑鍙互杞垚 Insertable瀹炵幇澶嶆潅鎻掑叆
+
+
+        /*********鏇存柊*********/
+        var updateData = new ProductionOrderSub(); //娴嬭瘯鍙傛暟
+        var updateArray = new[] { updateData }; //娴嬭瘯鍙傛暟
+        base.Update(updateData); //鏍规嵁瀹炰綋鏇存柊
+        base.UpdateRange(updateArray); //鎵归噺鏇存柊
+        //base.Update(it => new ProductionOrderSub() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// 鍙洿鏂癈lassName鍒楀拰CreateTime鍒楋紝鍏跺畠鍒椾笉鏇存柊锛屾潯浠秈d=1
+        AsUpdateable(updateData).ExecuteCommand(); //杞垚Updateable鍙互瀹炵幇澶嶆潅鐨勬彃鍏�
+
+
+        /*********鍒犻櫎*********/
+        var deldata = new ProductionOrderSub(); //娴嬭瘯鍙傛暟
+        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/MESApplication/Controllers/BasicData/ProductionOrderController.cs b/MESApplication/Controllers/BasicData/ProductionOrderController.cs
new file mode 100644
index 0000000..fd7a8de
--- /dev/null
+++ b/MESApplication/Controllers/BasicData/ProductionOrderController.cs
@@ -0,0 +1,260 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.BasicData;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace MESApplication.Controllers.BasicData;
+
+[ApiController]
+[Route("api/[controller]")]
+public class ProductionOrderController : ControllerBase
+{
+    private readonly MessageCenterManager _manager = new();
+
+    private readonly ProductionOrderManager m = new();
+
+    private readonly string METHOD = "POST";
+
+    private readonly string TableName = "PRODUCTION_ORDER";
+
+    private readonly string URL =
+        "http://localhost:10054/api/ProductionOrder/"; 
+
+    //
+    [HttpPost("Save")]
+    public ResponseResult Save(ErpWYOrder rohIn)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "Save";
+        entity.Method = METHOD;
+        entity.Data = JsonConvert.SerializeObject(rohIn);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.Save(rohIn);
+
+            resultInfos.tbBillList = save;
+
+            entity.Result = 0;
+            if (save) entity.Result = 1;
+
+            entity.DealWith = 1;
+            _manager.save(entity);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            entity.Result = 0;
+
+            entity.DealWith = 0;
+
+            entity.ResultData = ex.Message;
+
+            _manager.save(entity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SaveList")]
+    public ResponseResult SaveList(List<ErpWYOrder> units)
+    {
+        var entity = new MessageCenter();
+        entity.TableName = TableName;
+        entity.Url = URL + "SaveList";
+        entity.Method = METHOD;
+        entity.Data = JsonConvert.SerializeObject(units);
+        entity.Status = 1;
+        entity.CreateBy = "PL017";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.SaveList(units);
+            resultInfos.tbBillList = save;
+
+            entity.Result = 0;
+            if (save) entity.Result = 1;
+
+            entity.DealWith = 1;
+            _manager.save(entity);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            entity.Result = 0;
+
+            entity.DealWith = 0;
+
+            entity.ResultData = ex.Message;
+
+            _manager.save(entity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇鎵�鏈�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetList")]
+    public ResponseResult GetList()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetList();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鑾峰彇
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetById")]
+    public ResponseResult GetById(int id)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetById(id);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鍒犻櫎
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("DeleteByIds")]
+    public ResponseResult DeleteByIds([FromBody] object[] ids)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.DeleteByIds(ids);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Insert")]
+    public ResponseResult Add([FromBody] ProductionOrder 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] ProductionOrder 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] ProductionOrder data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Update(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3