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