啊鑫
2024-11-20 fcd41558f0e07ea4c082a1b5e073686d91e09505
委外订单接口
已添加8个文件
已修改1个文件
1206 ■■■■■ 文件已修改
MES.Service/Dto/webApi/ErpProductionOrderDto.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpProductionOrderSubDto.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpWYOrder.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MessageCenter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/ProductionOrder.cs 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/ProductionOrderSub.cs 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/BasicData/ProductionOrderManager.cs 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/BasicData/ProductionOrderSubManager.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/BasicData/ProductionOrderController.cs 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpProductionOrderDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
namespace 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; } // ä¾›åº”商ID
}
MES.Service/Dto/webApi/ErpProductionOrderSubDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
namespace 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头ID
    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生产订单分录内码
}
MES.Service/Dto/webApi/ErpWYOrder.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
namespace MES.Service.Dto.webApi;
public class ErpWYOrder
{
    public ErpProductionOrderDto OrderDto { get; set; }
    public List<ErpProductionOrderSubDto> Items { get; set; }
}
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>
    ///     æ‰§è¡Œé¡ºåº
MES.Service/Modes/ProductionOrder.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,330 @@
using 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; }
}
MES.Service/Modes/ProductionOrderSub.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,248 @@
using 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头ID
    /// </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; }
}
MES.Service/service/BasicData/ProductionOrderManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,205 @@
using 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;
        // æ—¶é—´æ ¼å¼è½¬æ¢å‡½æ•°ï¼ŒERP时间格式为 "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; // å¦‚果转换失败,返回null
        }
        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;
    }
}
MES.Service/service/BasicData/ProductionOrderSubManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
using MES.Service.DB;
using MES.Service.Modes;
using SqlSugar;
namespace MES.Service.service.BasicData;
public class ProductionOrderSubManager : Repository<ProductionOrderSub>
{
    //当前类已经继承了 Repository å¢žã€åˆ ã€æŸ¥ã€æ”¹çš„æ–¹æ³•
    //这里面写的代码不会给覆盖,如果要重新生成请删除 ProductionOrderSubManager.cs
    #region æ•™å­¦æ–¹æ³•
    /// <summary>
    ///     ä»“储方法满足不了复杂业务需求,业务代码请在这里面定义方法
    /// </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,我们可以用queryable实现复杂功能
        /*********插入*********/
        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);// åªæ›´æ–°ClassName列和CreateTime列,其它列不更新,条件id=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
}
MESApplication/Controllers/BasicData/ProductionOrderController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,260 @@
using 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);
        }
    }
}