南骏 池
2025-02-24 10cced0eeb7d17aab1d1a58c9be163ba0aeb2640
1.销售订单(ERP->MES)已完成
已添加3个文件
已修改4个文件
977 ■■■■ 文件已修改
MES.Service/Dto/webApi/ErpSalesOrdeDetailDto.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpSalesOrder.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpSalesOrderDto.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/SalesOrder.cs 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/SalesOrderDetail.cs 312 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/BasicData/SalesOrderManager.cs 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/BasicData/SalesOrderController.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpSalesOrdeDetailDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
namespace MES.Service.Dto.webApi;
public class ErpSalesOrderDetailDto
{
    public string? Type { get; set; }
    public string? FMaterialId { get; set; }  // ç‰©æ–™ç¼–码
    public string? FMapId { get; set; }  // å®¢æˆ·ç‰©æ–™ç¼–码
    public string? FMapName { get; set; }  // å®¢æˆ·ç‰©æ–™åç§°
    public string? FMapSpec { get; set; }  // å®¢æˆ·ç‰©æ–™è§„æ ¼
    public string? Seq { get; set; }  // åºå·
    public string? FUnitID { get; set; }  // é”€å”®å•位
    public string? FQty { get; set; }  // é”€å”®æ•°é‡
    public string? FPriceUnitId { get; set; }  // è®¡ä»·å•位
    public string? FPriceUnitQty { get; set; }  // è®¡ä»·æ•°é‡
    public string? FDeliveryDate { get; set; }  // è¦è´§æ—¥æœŸ
    public string? FIsFree { get; set; }  // æ˜¯å¦èµ å“
    public string? FSupplyOrgId { get; set; }  // ä¾›åº”组织
    public string? FStockOrgId { get; set; }  // åº“存组织
    public string? FSettleOrgIds { get; set; }  // ç»“算组织
    public string? FOwnerTypeId { get; set; }  // è´§ä¸»ç±»åž‹
    public string? FOwnerId { get; set; }  // è´§ä¸»
    public string? FEntryNote { get; set; }  // å¤‡æ³¨
    public string? FMtoNo { get; set; }  // è®¡åˆ’跟踪号
    public string? FLot { get; set; }  // æ‰¹å·
    public string? FDeliveryMaxQty { get; set; }  // å‘货上限
    public string? FDeliveryMinQty { get; set; }  // å‘货下限
    public string? FOutLmtUnitID { get; set; }  // è¶…发控制单位
    public string? FMrpCloseStatus { get; set; }  // ä¸šåС关闭
    public string? FMrpTerminateStatus { get; set; }  // ä¸šåŠ¡ç»ˆæ­¢
    public string? FTerminateDate { get; set; }  // ç»ˆæ­¢æ—¥æœŸ
    public string? FTerminatorId { get; set; }  // ç»ˆæ­¢äºº
    public string? FSrcType { get; set; }  // æºå•类型
    public string? FSrcBillNo { get; set; }  // æºå•单号
    public string? FDeliQty { get; set; }  // ç´¯è®¡å‘货通知数量
    public string? FStockOutQty { get; set; }  // ç´¯è®¡å‡ºåº“数量
    public string? FBaseRetNoticeQty { get; set; }  // ç´¯è®¡é€€è´§é€šçŸ¥æ•°é‡ï¼ˆé”€å”®åŸºæœ¬ï¼‰
    public string? FBaseReturnQty { get; set; }  // ç´¯è®¡é€€è´§æ•°é‡ï¼ˆé”€å”®åŸºæœ¬ï¼‰
    public string? FBaseRemainOutQty { get; set; }  // å‰©ä½™æœªå‡ºæ•°é‡ï¼ˆé”€å”®åŸºæœ¬ï¼‰
    public string? FBASEARQTY { get; set; }  // ç´¯è®¡åº”收数量(销售基本)
    public string? ErpID { get; set; }  // ERPID
    public string? EHID { get; set; }  // ERP头ID
    //public string? F_UNW_Text_xsddh { get; set; }  // é”€å”®è®¢å•号
    //public string? F_UNW_Base_GDY { get; set; }  // è·Ÿå•员
}
MES.Service/Dto/webApi/ErpSalesOrder.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
namespace MES.Service.Dto.webApi;
public class ErpSalesOrder
{
    public ErpSalesOrderDto OrderDto { get; set; }
    public List<ErpSalesOrderDetailDto> Items { get; set; }
}
MES.Service/Dto/webApi/ErpSalesOrderDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
namespace MES.Service.Dto.webApi;
public class ErpSalesOrderDto
{
    public string? Type { get; set; }
    public string? ErpID { get; set; } // ERPID
    public string? FBillNo { get; set; } // å•据编号
    public string? FBillTypeID { get; set; } // å•据类型
    public string? FDocumentStatus { get; set; } // å•据状态
    public string? FDate { get; set; } // å•据日期
    public string? FBusinessType { get; set; } // ä¸šåŠ¡ç±»åž‹
    public string? FHeadDeliveryWay { get; set; } // äº¤è´§æ–¹å¼
    public string? FHEADLOCID { get; set; } // äº¤è´§åœ°ç‚¹
    public string? FSaleOrgId { get; set; } // é”€å”®ç»„织
    public string? FCustId { get; set; } // å®¢æˆ·
    public string? FCloseStatus { get; set; } // å…³é—­çŠ¶æ€
    public string? FSaleDeptId { get; set; } // é”€å”®éƒ¨é—¨
    public string? FSalerId { get; set; } // é”€å”®å‘˜
    //public string? FChangeReason { get; set; } // å˜æ›´åŽŸå› 
    public string? FNote { get; set; } // å¤‡æ³¨
    //public string? FReceiveId { get; set; } // æ”¶è´§æ–¹
    //public string? FReceiveContact { get; set; } // æ”¶è´§æ–¹è”系人
    //public string? FSettleId { get; set; } // ç»“ç®—æ–¹
    public string? FApproverId { get; set; } // å®¡æ ¸äºº
    //public string? FLinkMan { get; set; } // æ”¶è´§äººå§“名
    //public string? FChargeId { get; set; } // ä»˜æ¬¾æ–¹
    //public string? FLinkPhone { get; set; } // è”系电话
    public string? FCreatorId { get; set; } // åˆ›å»ºäºº
    public string? FCreateDate { get; set; } // åˆ›å»ºæ—¥æœŸ
    public string? FModifierId { get; set; } // æœ€åŽä¿®æ”¹äºº
    public string? FModifyDate { get; set; } // æœ€åŽä¿®æ”¹æ—¥æœŸ
    public string? FApproveDate { get; set; } // å®¡æ ¸æ—¥æœŸ
    public string? FCloserId { get; set; } // å…³é—­äºº
    public string? FCloseDate { get; set; } // å…³é—­æ—¥æœŸ
    public string? FChangeDate { get; set; } // å˜æ›´æ—¥æœŸ
    public string? FCancelStatus { get; set; } // ä½œåºŸçŠ¶æ€
    public string? FCancellerId { get; set; } // ä½œåºŸäºº
    public string? FVersionNo { get; set; } // ç‰ˆæœ¬å·
    public string? FChangeReason { get; set; } // å˜æ›´åŽŸå› 
    public string? FChangerId { get; set; } // å˜æ›´äºº
    //public string? FEntryNote { get; set; } // å¤‡æ³¨
    //public string? F_UNW_Remarks_KHJHDD { get; set; } // å®¢æˆ·äº¤è´§åœ°ç‚¹
    //public string? F_UNW_Text_KHDD { get; set; } // å®¢æˆ·è®¢å•
    //public string? F_UNW_Date_KHXQ { get; set; } // å®¢æˆ·éœ€æ±‚交期
    //public string? F_UNW_BaseProperty_KHDJ { get; set; } // å®¢æˆ·ç­‰çº§
    //public string? F_UNW_LargeText_TBKHBZ { get; set; } // æ·˜å®å®¢æˆ·å¤‡æ³¨
}
MES.Service/Modes/SalesOrder.cs
@@ -11,103 +11,127 @@
    /// <summary>
    ///     SEQ_sales序列
    /// </summary>
    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_sales",
        IsPrimaryKey = true)]
    public decimal Id { get; set; }
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid? Id { get; set; }
    /// <summary>
    ///     è®¢å•单号
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_ID")]
    public string OrderId { get; set; }
    /// <summary>
    ///     è®¢å•单别
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_TYPE")]
    public string OrderType { get; set; }
    /// <summary>
    ///     å—订日期
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_DATE")]
    public DateTime? OrderDate { get; set; }
    /// <summary>
    ///     å•据版本
    /// </summary>
    [SugarColumn(ColumnName = "DOCUMENT_VERSION")]
    public long? DocumentVersion { get; set; }
    /// <summary>
    ///     å•据日期
    /// </summary>
    [SugarColumn(ColumnName = "DOCUMENT_DATE")]
    public DateTime? DocumentDate { get; set; }
    /// <summary>
    ///     å·¥åŽ‚ç¼–å·
    /// </summary>
    [SugarColumn(ColumnName = "FACTORY_ID")]
    public string FactoryId { get; set; }
    /// <summary>
    ///     å·¥åŽ‚ç®€ç§°
    /// </summary>
    [SugarColumn(ColumnName = "FACTORY_NAME")]
    public string FactoryName { get; set; }
    /// <summary>
    ///     å®¢æˆ·ç¼–号
    /// </summary>
    [SugarColumn(ColumnName = "CUSTOMER_ID")]
    public string CustomerId { get; set; }
    /// <summary>
    ///     å®¢æˆ·ç®€ç§°
    /// </summary>
    [SugarColumn(ColumnName = "CUSTOMER_NAME")]
    public string CustomerName { get; set; }
    /// <summary>
    ///     å®¢æˆ·å•号
    /// </summary>
    [SugarColumn(ColumnName = "CUSTOMER_ORDER_ID")]
    public string CustomerOrderId { get; set; }
    /// <summary>
    ///     éƒ¨é—¨ç¼–号
    /// </summary>
    [SugarColumn(ColumnName = "DEPARTMENT_ID")]
    public string DepartmentId { get; set; }
    /// <summary>
    ///     æ€»æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "TOTAL_QUANTITY")]
    public decimal? TotalQuantity { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "REMARKS")]
    public string Remarks { get; set; }
    /// <summary>
    ///     erp审核日期
    /// </summary>
    [SugarColumn(ColumnName = "APPROVAL_DATE")]
    public DateTime? ApprovalDate { get; set; }
    /// <summary>
    ///     erp审核者
    /// </summary>
    [SugarColumn(ColumnName = "APPROVER")]
    public string Approver { get; set; }
    /// <summary>
    ///     ERPID
    /// </summary>
    [SugarColumn(ColumnName = "ERP_ID")]
    public string ErpId { get; set; }
    public decimal? ErpID { get; set; } // ERPID
    [SugarColumn(ColumnName = "BILL_NO")]
    public string? BillNo { get; set; } // å•据编号
    [SugarColumn(ColumnName = "BILL_TYPE_ID")]
    public string? BillTypeId { get; set; } // å•据类型
    [SugarColumn(ColumnName = "DOCUMENT_STATUS")]
    public string? DocumentStatus { get; set; } // å•据状态
    [SugarColumn(ColumnName = "F_DATE")]
    public DateTime? FDate { get; set; } // æ—¥æœŸ
    [SugarColumn(ColumnName = "BUSINESS_TYPE")]
    public string? BusinessType { get; set; } // ä¸šåŠ¡ç±»åž‹
    [SugarColumn(ColumnName = "HEAD_DELIVERY_WAY")]
    public string? HeadDeliveryWay { get; set; } // äº¤è´§æ–¹å¼
    [SugarColumn(ColumnName = "HEAD_LOC_ID")]
    public string? HeadLocId { get; set; } // äº¤è´§åœ°ç‚¹
    [SugarColumn(ColumnName = "SALE_ORG_ID")]
    public string? SaleOrgId { get; set; } // é”€å”®ç»„织
    //[SugarColumn(ColumnName = "UNW_TEXT_KHDD")]
    //public string? UnWTextKhdd { get; set; } // å®¢æˆ·è®¢å•
    //[SugarColumn(ColumnName = "UNW_DATE_KHXQ")]
    //public DateTime? UnWDateKhxq { get; set; } // å®¢æˆ·éœ€æ±‚交期
    //[SugarColumn(ColumnName = "UNW_BASE_PROPERTY_KHDJ")]
    //public string? UnWBasePropertyKhdj { get; set; } // å®¢æˆ·ç­‰çº§
    [SugarColumn(ColumnName = "CUST_ID")]
    public string? CustId { get; set; } // å®¢æˆ·
    //[SugarColumn(ColumnName = "UNW_LARGE_TEXT_TBKHBZ")]
    //public string? UnWLargetextTbkhbz { get; set; } // æ·˜å®å®¢æˆ·å¤‡æ³¨
    [SugarColumn(ColumnName = "CLOSE_STATUS")]
    public string? CloseStatus { get; set; } // å…³é—­çŠ¶æ€
    [SugarColumn(ColumnName = "SALE_DEPT_ID")]
    public string? SaleDeptId { get; set; } // é”€å”®éƒ¨é—¨
    [SugarColumn(ColumnName = "SALER_ID")]
    public string? SalerId { get; set; } // é”€å”®å‘˜
    [SugarColumn(ColumnName = "NOTE")]
    public string? Note { get; set; } // å¤‡æ³¨
    //[SugarColumn(ColumnName = "UNW_REMARKS_KHJHDD")]
    //public string? UnWRemarksKhjHdd { get; set; } // å®¢æˆ·äº¤è´§åœ°ç‚¹
    [SugarColumn(ColumnName = "RECEIVE_ID")]
    public string? ReceiveId { get; set; } // æ”¶è´§æ–¹
    [SugarColumn(ColumnName = "RECEIVE_CONTACT")]
    public string? ReceiveContact { get; set; } // æ”¶è´§æ–¹è”系人
    [SugarColumn(ColumnName = "SETTLE_ID")]
    public string? SettleId { get; set; } // ç»“ç®—æ–¹
    [SugarColumn(ColumnName = "APPROVER_ID")]
    public string? ApproverId { get; set; } // å®¡æ ¸äºº
    [SugarColumn(ColumnName = "LINK_MAN")]
    public string? LinkMan { get; set; } // æ”¶è´§äººå§“名
    [SugarColumn(ColumnName = "CHARGE_ID")]
    public string? ChargeId { get; set; } // ä»˜æ¬¾æ–¹
    [SugarColumn(ColumnName = "LINK_PHONE")]
    public string? LinkPhone { get; set; } // è”系电话
    [SugarColumn(ColumnName = "CREATOR_ID")]
    public string? CreatorId { get; set; } // åˆ›å»ºäºº
    [SugarColumn(ColumnName = "CREATE_DATE")]
    public DateTime? CreateDate { get; set; } // åˆ›å»ºæ—¥æœŸ
    [SugarColumn(ColumnName = "MODIFIER_ID")]
    public string? ModifierId { get; set; } // æœ€åŽä¿®æ”¹äºº
    [SugarColumn(ColumnName = "MODIFY_DATE")]
    public DateTime? ModifyDate { get; set; } // æœ€åŽä¿®æ”¹æ—¥æœŸ
    [SugarColumn(ColumnName = "APPROVE_DATE")]
    public DateTime? ApproveDate { get; set; } // å®¡æ ¸æ—¥æœŸ
    [SugarColumn(ColumnName = "CLOSER_ID")]
    public string? CloserId { get; set; } // å…³é—­äºº
    [SugarColumn(ColumnName = "CLOSE_DATE")]
    public DateTime? CloseDate { get; set; } // å…³é—­æ—¥æœŸ
    [SugarColumn(ColumnName = "CHANGE_DATE")]
    public DateTime? ChangeDate { get; set; } // å˜æ›´æ—¥æœŸ
    [SugarColumn(ColumnName = "CANCEL_STATUS")]
    public string? CancelStatus { get; set; } // ä½œåºŸçŠ¶æ€
    [SugarColumn(ColumnName = "CANCELLER_ID")]
    public string? CancellerId { get; set; } // ä½œåºŸäºº
    [SugarColumn(ColumnName = "VERSION_NO")]
    public double? VersionNo { get; set; } // ç‰ˆæœ¬å·
    [SugarColumn(ColumnName = "CHANGE_REASON")]
    public string? ChangeReason { get; set; } // å˜æ›´åŽŸå› 
    [SugarColumn(ColumnName = "CHANGER_ID")]
    public string? ChangerId { get; set; } // å˜æ›´äºº
    [SugarColumn(ColumnName = "ENTRY_NOTE")]
    public string? EntryNote { get; set; } // å¤‡æ³¨
}
MES.Service/Modes/SalesOrderDetail.cs
@@ -11,103 +11,241 @@
    /// <summary>
    ///     SEQ_sales序列
    /// </summary>
    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_sales",
        IsPrimaryKey = true)]
    public decimal Id { get; set; }
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid Id { get; set; }
    /// <summary>
    ///     è®¢å•单号
    ///     SEQ_sales序列
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_ID")]
    public string OrderId { get; set; }
    /// <summary>
    ///     åºå·
    /// </summary>
    [SugarColumn(ColumnName = "LINE_NUMBER")]
    public long? LineNumber { get; set; }
    /// <summary>
    ///     äº§å“ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "PRODUCT_CODE")]
    public string ProductCode { get; set; }
    /// <summary>
    ///     äº§å“åç§°
    /// </summary>
    [SugarColumn(ColumnName = "PRODUCT_NAME")]
    public string ProductName { get; set; }
    /// <summary>
    ///     äº§å“è§„æ ¼
    /// </summary>
    [SugarColumn(ColumnName = "PRODUCT_SPEC")]
    public string ProductSpec { get; set; }
    /// <summary>
    ///     é¢„交货日期
    /// </summary>
    [SugarColumn(ColumnName = "SCHEDULED_DELIVERY_DATE")]
    public DateTime? ScheduledDeliveryDate { get; set; }
    /// <summary>
    ///     è®¢å•数量
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_QUANTITY")]
    public decimal? OrderQuantity { get; set; }
    /// <summary>
    ///     å•位
    /// </summary>
    [SugarColumn(ColumnName = "UNIT")]
    public string Unit { get; set; }
    /// <summary>
    ///     å•ä»·
    /// </summary>
    [SugarColumn(ColumnName = "UNIT_PRICE")]
    public decimal? UnitPrice { get; set; }
    /// <summary>
    ///     é‡‘额
    /// </summary>
    [SugarColumn(ColumnName = "AMOUNT")]
    public decimal? Amount { get; set; }
    /// <summary>
    ///     å®¢æˆ·äº§å“ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "CUSTOMER_PRODUCT_CODE")]
    public string CustomerProductCode { get; set; }
    /// <summary>
    ///     å·²äº¤è´§æ•°
    /// </summary>
    [SugarColumn(ColumnName = "DELIVERED_QUANTITY")]
    public decimal? DeliveredQuantity { get; set; }
    /// <summary>
    ///     ç»“束
    /// </summary>
    [SugarColumn(ColumnName = "IS_CLOSED")]
    public string IsClosed { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "REMARKS")]
    public string Remarks { get; set; }
    [SugarColumn(ColumnName = "pid")]
    public Guid? Pid { get; set; }
    /// <summary>
    ///     ERPID
    /// </summary>
    [SugarColumn(ColumnName = "ERP_ID")]
    public string ErpId { get; set; }
    public decimal? ErpID { get; set; }
    /// <summary>
    ///     ERP头ID
    /// </summary>
    [SugarColumn(ColumnName = "ERP_HEAD_ID")]
    public string ErpHeadId { get; set; }
    [SugarColumn(ColumnName = "E_HID")]
    public decimal? EHID { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "MATERIAL_ID")]
    public string? MaterialId { get; set; }
    /// <summary>
    ///     å®¢æˆ·ç‰©æ–™ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "MAP_ID")]
    public string? MapId { get; set; }
    /// <summary>
    ///     å®¢æˆ·ç‰©æ–™åç§°
    /// </summary>
    [SugarColumn(ColumnName = "MAP_NAME")]
    public string? MapName { get; set; }
    /// <summary>
    ///     å®¢æˆ·ç‰©æ–™è§„æ ¼
    /// </summary>
    [SugarColumn(ColumnName = "MAP_SPEC")]
    public string? MapSpec { get; set; }
    /// <summary>
    ///     åºå·
    /// </summary>
    [SugarColumn(ColumnName = "Seq")]
    public int? Seq { get; set; }
    /// <summary>
    ///     é”€å”®å•位
    /// </summary>
    [SugarColumn(ColumnName = "UNIT_ID")]
    public string? UnitId { get; set; }
    /// <summary>
    ///     é”€å”®æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "QTY")]
    public decimal? Qty { get; set; }
    /// <summary>
    ///     è®¡ä»·å•位
    /// </summary>
    [SugarColumn(ColumnName = "PRICE_UNIT_ID")]
    public string? PriceUnitId { get; set; }
    /// <summary>
    ///     è®¡ä»·æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "PRICE_UNIT_QTY")]
    public decimal? PriceUnitQty { get; set; }
    /// <summary>
    ///     è¦è´§æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "DELIVERY_DATE")]
    public DateTime? DeliveryDate { get; set; }
    /// <summary>
    ///     æ˜¯å¦èµ å“
    /// </summary>
    [SugarColumn(ColumnName = "IS_FREE")]
    public string? IsFree { get; set; }
    ///// <summary>
    /////     é”€å”®è®¢å•号
    ///// </summary>
    //[SugarColumn(ColumnName = "UNW_TEXT_XSDDH")]
    //public string? SalesOrderNo { get; set; }
    /// <summary>
    ///     ä¾›åº”组织
    /// </summary>
    [SugarColumn(ColumnName = "SUPPLY_ORG_ID")]
    public string? SupplyOrgId { get; set; }
    /// <summary>
    ///     åº“存组织
    /// </summary>
    [SugarColumn(ColumnName = "STOCK_ORG_ID")]
    public string? StockOrgId { get; set; }
    /// <summary>
    ///     ç»“算组织
    /// </summary>
    [SugarColumn(ColumnName = "SETTLE_ORG_IDS")]
    public string? SettleOrgIds { get; set; }
    ///// <summary>
    /////     è·Ÿå•员
    ///// </summary>
    //[SugarColumn(ColumnName = "UNW_BASE_GDY")]
    //public string? SalesFollowUp { get; set; }
    /// <summary>
    ///     è´§ä¸»ç±»åž‹
    /// </summary>
    [SugarColumn(ColumnName = "OWNER_TYPE_ID")]
    public string? OwnerTypeId { get; set; }
    /// <summary>
    ///     è´§ä¸»
    /// </summary>
    [SugarColumn(ColumnName = "OWNER_ID")]
    public string? OwnerId { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "ENTRY_NOTE")]
    public string? EntryNote { get; set; }
    /// <summary>
    ///     è®¡åˆ’跟踪号
    /// </summary>
    [SugarColumn(ColumnName = "MTO_NO")]
    public string? MtoNo { get; set; }
    /// <summary>
    ///     æ‰¹å·
    /// </summary>
    [SugarColumn(ColumnName = "LOT")]
    public string? Lot { get; set; }
    /// <summary>
    ///     å‘货上限
    /// </summary>
    [SugarColumn(ColumnName = "DELIVERY_MAX_QTY")]
    public decimal? DeliveryMaxQty { get; set; }
    /// <summary>
    ///     å‘货下限
    /// </summary>
    [SugarColumn(ColumnName = "DELIVERY_MIN_QTY")]
    public decimal? DeliveryMinQty { get; set; }
    /// <summary>
    ///     è¶…发控制单位
    /// </summary>
    [SugarColumn(ColumnName = "OUT_LMT_UNIT_ID")]
    public string? OutLmtUnitId { get; set; }
    /// <summary>
    ///     ä¸šåС关闭
    /// </summary>
    [SugarColumn(ColumnName = "MRP_CLOSE_STATUS")]
    public string? MrpCloseStatus { get; set; }
    /// <summary>
    ///     ä¸šåŠ¡ç»ˆæ­¢
    /// </summary>
    [SugarColumn(ColumnName = "MRP_TERMINATE_STATUS")]
    public string? MrpTerminateStatus { get; set; }
    /// <summary>
    ///     ç»ˆæ­¢æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "TERMINATE_DATE")]
    public DateTime? TerminateDate { get; set; }
    /// <summary>
    ///     ç»ˆæ­¢äºº
    /// </summary>
    [SugarColumn(ColumnName = "TERMINATER_ID")]
    public string? TerminaterId { get; set; }
    /// <summary>
    ///     æºå•类型
    /// </summary>
    [SugarColumn(ColumnName = "SRC_TYPE")]
    public string? SrcType { get; set; }
    /// <summary>
    ///     æºå•单号
    /// </summary>
    [SugarColumn(ColumnName = "SRC_BILL_NO")]
    public string? SrcBillNo { get; set; }
    /// <summary>
    ///     ç´¯è®¡å‘货通知数量
    /// </summary>
    [SugarColumn(ColumnName = "DELI_QTY")]
    public decimal? DeliQty { get; set; }
    /// <summary>
    ///     ç´¯è®¡å‡ºåº“数量
    /// </summary>
    [SugarColumn(ColumnName = "STOCK_OUT_QTY")]
    public decimal? StockOutQty { get; set; }
    /// <summary>
    ///     ç´¯è®¡é€€è´§é€šçŸ¥æ•°é‡ï¼ˆé”€å”®åŸºæœ¬ï¼‰
    [SugarColumn(ColumnName = "BASE_RET_NOTICE_QTY")]
    public decimal? BaseRetNoticeQty { get; set; } /// </summary>
    /// <summary>
    ///     ç´¯è®¡é€€è´§æ•°é‡ï¼ˆé”€å”®åŸºæœ¬ï¼‰
    /// </summary>
    [SugarColumn(ColumnName = "BASE_RETURN_QTY")]
    public decimal? BaseReturnQty { get; set; }
    /// <summary>
    ///     å‰©ä½™æœªå‡ºæ•°é‡ï¼ˆé”€å”®åŸºæœ¬ï¼‰
    /// </summary>
    [SugarColumn(ColumnName = "BASE_REMAIN_OUT_QTY")]
    public decimal? BaseRemainOutQty { get; set; }
    /// <summary>
    ///     ç´¯è®¡åº”收数量(销售基本)
    /// </summary>
    [SugarColumn(ColumnName = "BASEARQTY")]
    public decimal? BASEARQTY { get; set; }
}
MES.Service/service/BasicData/SalesOrderManager.cs
@@ -1,6 +1,9 @@
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
using System.Globalization;
using System.Security.Cryptography;
namespace MES.Service.service.BasicData;
@@ -9,8 +12,245 @@
    //当前类已经继承了 Repository å¢žã€åˆ ã€æŸ¥ã€æ”¹çš„æ–¹æ³•
    //这里面写的代码不会给覆盖,如果要重新生成请删除 SalesOrderManager.cs
    //当前类已经继承了 Repository å¢žã€åˆ ã€æŸ¥ã€æ”¹çš„æ–¹æ³•
    private readonly SalesOrderDetailManager _SalesOrderDetailManager =
        new();
    //private Guid Tid = Guid.Empty;
    //ErpSalesOrder
    public bool Save(ErpSalesOrder SalesOrder)
    {
        var erpSalesOrderDto = SalesOrder.OrderDto;
        var mesSalesOrder = ConvertErpToSalesOrder(SalesOrder.OrderDto);
        var mesSalesOrderDatas = ConvertErpToSalesOrderDetail(mesSalesOrder,SalesOrder.Items);
        return UseTransaction(db =>
        {
            switch (erpSalesOrderDto.Type)
            {
                // case "2":
                //     return InsertData(db, mesSalesOrder, mesSalesOrderDatas,
                //         rohInErpRohIn.FBILLTYPE)
                //         ? 1
                //         : 0;
                case "3":
                    return UpdateData(db, mesSalesOrder, mesSalesOrderDatas) ? 1 : 0;
                case "2":
                case "4":
                    return SaveOrUpdateData(db, mesSalesOrder, mesSalesOrderDatas, erpSalesOrderDto.Type)
                        ? 1
                        : 0;
                default:
                    throw new NotImplementedException(
                        $"type没有{erpSalesOrderDto.Type}这个类型");
            }
        }) > 0;
    }
    private bool UpdateData(SqlSugarScope db, SalesOrder mesSalesOrder,
        List<SalesOrderDetail> mesSalesOrderDatas)
    {
        int update = 0;
        int insertOrUpdate = 0;
        if (mesSalesOrder.ErpID != null)
        {
            update = db.Deleteable<SalesOrder>()
                .Where(s => s.ErpID == mesSalesOrder.ErpID)
                .ExecuteCommand();
        }
        if (mesSalesOrderDatas.Count > 0 && mesSalesOrder.ErpID != null)
        {
            insertOrUpdate = db.Deleteable<SalesOrderDetail>()
                .Where(s => s.EHID == mesSalesOrder.ErpID)
                .ExecuteCommand();
        }
        // ä¿®æ­£é€»è¾‘判断,将 int ç±»åž‹ä¸Ž bool ç±»åž‹æ¯”较改为实际值判断
        if (update > 0 && insertOrUpdate > 0)
        {
            return true;
        }
        throw new NotImplementedException("更新失败");
    }
    // æ’入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db, SalesOrder mesSalesOrder,
        List<SalesOrderDetail> mesSalesOrderDatas, string type)
    {
        //if (mesSalesOrder.Id != null) base.DeleteById(mesSalesOrder.Id);
        if (mesSalesOrder.ErpID != null)
            db.Deleteable<SalesOrder>()
                .Where(s => s.ErpID == mesSalesOrder.ErpID).ExecuteCommand();
        if (mesSalesOrderDatas.Count > 0)
            db.Deleteable<SalesOrderDetail>()
                .Where(s => s.EHID == mesSalesOrder.ErpID).ExecuteCommand();
        //var orUpdate = base.Insert(mesSalesOrder);
        //var baOrUpdate = _SalesOrderDetailManager.InsertRange(mesSalesOrderDatas);
        var orUpdate = db.Insertable(mesSalesOrder)
            .IgnoreColumns(true).ExecuteCommand() > 0;
        var baOrUpdate = db.Insertable(mesSalesOrderDatas).PageSize(1)
            .IgnoreColumnsNull()
            .ExecuteCommand() > 0;
        if (orUpdate && baOrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
    }
    // æ‰¹é‡ä¿å­˜è®°å½•的方法
    public bool SaveList(List<ErpSalesOrder> salesOrder)
    {
        var result = salesOrder.Select(Save).ToList();
        return result.All(b => b);
    }
    private SalesOrder ConvertErpToSalesOrder(
        ErpSalesOrderDto erpDto)
    {
        DateTime parsedDate;
        // æ—¶é—´æ ¼å¼è½¬æ¢å‡½æ•°ï¼ŒERP时间格式为 "yyyy-MM-dd HH:mm:ss"
        DateTime? ParseDateTime(string dateStr)
        {
            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
                    CultureInfo.InvariantCulture,
                    DateTimeStyles.None,
                    out parsedDate))
                return parsedDate;
            return null; // å¦‚果转换失败,返回null
        }
        var salesOrder = new SalesOrder
        {
            Id = Guid.NewGuid(),
            BillNo = erpDto.FBillNo,
            ErpID = Convert.ToDecimal(erpDto.ErpID),
            FDate = ParseDateTime(erpDto.FDate) ?? null,
            BillTypeId = erpDto.FBillTypeID, // å•据类型
            DocumentStatus = erpDto.FDocumentStatus, // å•据状态
            BusinessType = erpDto.FBusinessType, // ä¸šåŠ¡ç±»åž‹
            HeadDeliveryWay = erpDto.FHeadDeliveryWay, // äº¤è´§æ–¹å¼
            HeadLocId = erpDto.FHEADLOCID, // äº¤è´§åœ°ç‚¹
            SaleOrgId = erpDto.FSaleOrgId,
            //UnWTextKhdd = erpDto.F_UNW_Text_KHDD, // å®¢æˆ·è®¢å•
            //UnWDateKhxq = ParseDateTime(erpDto.F_UNW_Date_KHXQ) ?? null, // å®¢æˆ·éœ€æ±‚交期
            //UnWBasePropertyKhdj = erpDto.F_UNW_BaseProperty_KHDJ, // å®¢æˆ·ç­‰çº§
            CustId = erpDto.FCustId, // å®¢æˆ·
            //UnWLargetextTbkhbz = erpDto.F_UNW_LargeText_TBKHBZ, // æ·˜å®å®¢æˆ·å¤‡æ³¨
            CloseStatus = erpDto.FCloseStatus, // å…³é—­çŠ¶æ€
            SaleDeptId = erpDto.FSaleDeptId, // é”€å”®éƒ¨é—¨
            SalerId = erpDto.FSalerId, // é”€å”®å‘˜
            ChangeReason = erpDto.FChangeReason, // å˜æ›´åŽŸå› 
            Note = erpDto.FNote, // å¤‡æ³¨
            //UnWRemarksKhjHdd = erpDto.F_UNW_Remarks_KHJHDD, // å®¢æˆ·äº¤è´§åœ°ç‚¹
            ///ReceiveId = erpDto.FReceiveId,//收货方
            ///ReceiveContact = erpDto.FReceiveContact,//收货方联系人
            ///SettleId = erpDto.FSettleId, // ç»“ç®—æ–¹
            ApproverId = erpDto.FApproverId, // å®¡æ ¸äºº
            ///LinkMan = erpDto.FLinkMan, // æ”¶è´§äººå§“名
            ///ChargeId = erpDto.FChargeId, // ä»˜æ¬¾æ–¹
            ///LinkPhone = erpDto.FLinkPhone, // è”系电话
            CreatorId = erpDto.FCreatorId, // åˆ›å»ºäºº
            CreateDate = ParseDateTime(erpDto.FCreateDate) ?? null, // åˆ›å»ºæ—¥æœŸ
            ModifierId = erpDto.FModifierId, // æœ€åŽä¿®æ”¹äºº
            ModifyDate = ParseDateTime(erpDto.FModifyDate) ?? null, // æœ€åŽä¿®æ”¹æ—¥æœŸ
            ApproveDate = ParseDateTime(erpDto.FApproveDate) ?? null, // å®¡æ ¸æ—¥æœŸ
            CloserId = erpDto.FCloserId, // å…³é—­äºº
            CloseDate = ParseDateTime(erpDto.FCloseDate) ?? null, // å…³é—­æ—¥æœŸ
            ChangeDate = ParseDateTime(erpDto.FChangeDate) ?? null, // å˜æ›´æ—¥æœŸ
            CancelStatus = erpDto.FCancelStatus, // ä½œåºŸçŠ¶æ€
            CancellerId = erpDto.FCancellerId, // ä½œåºŸäºº
            VersionNo = Convert.ToDouble(erpDto.FVersionNo), // ç‰ˆæœ¬å·
            ChangerId = erpDto.FChangerId, // å˜æ›´äºº
            //EntryNote = erpDto.FEntryNote // å¤‡æ³¨
            //ParseDateTime() ?? null
            //long.Parse()
            //Convert.ToDecimal()
            //Convert.ToDouble()
        };
        var single = base.GetSingle(it => it.ErpID == Convert.ToDecimal(erpDto.ErpID));
        if (single != null) salesOrder.Id = single.Id;
        return salesOrder;
    }
    private List<SalesOrderDetail> ConvertErpToSalesOrderDetail(
        SalesOrder salesOrder,
        List<ErpSalesOrderDetailDto> erpDtoList)
    {
        var salesOrderSubList =
            new List<SalesOrderDetail>();
        foreach (var erpDto in erpDtoList)
        {
            var salesOrderSub = new SalesOrderDetail
            {
                Pid = salesOrder.Id,
                ErpID = Convert.ToDecimal(erpDto.ErpID),
                EHID = Convert.ToDecimal(erpDto.EHID),
                MaterialId = erpDto.FMaterialId,
                MapId = erpDto.FMapId,
                MapName = erpDto.FMapName,
                MapSpec = erpDto.FMapSpec,
                Seq = Convert.ToInt32(erpDto.Seq),
                UnitId = erpDto.FUnitID,
                Qty = Convert.ToDecimal(erpDto.FQty),
                PriceUnitId = erpDto.FPriceUnitId,
                PriceUnitQty = Convert.ToDecimal(erpDto.FPriceUnitQty),
                DeliveryDate = Convert.ToDateTime(erpDto.FDeliveryDate),
                IsFree = erpDto.FIsFree,
                SupplyOrgId = erpDto.FSupplyOrgId,
                StockOrgId = erpDto.FStockOrgId,
                SettleOrgIds = erpDto.FSettleOrgIds,
                //SalesOrderNo = erpDto.F_UNW_Text_xsddh,
                //SalesFollowUp = erpDto.F_UNW_Base_GDY,
                OwnerTypeId = erpDto.FOwnerTypeId,
                OwnerId = erpDto.FOwnerId,
                EntryNote = erpDto.FEntryNote,
                MtoNo = erpDto.FMtoNo,
                Lot = erpDto.FLot,
                DeliveryMaxQty = Convert.ToDecimal(erpDto.FDeliveryMaxQty),
                DeliveryMinQty = Convert.ToDecimal(erpDto.FDeliveryMinQty),
                OutLmtUnitId = erpDto.FOutLmtUnitID,
                MrpCloseStatus = erpDto.FMrpCloseStatus,
                MrpTerminateStatus = erpDto.FMrpTerminateStatus,
                TerminateDate = Convert.ToDateTime(erpDto.FTerminateDate),
                TerminaterId = erpDto.FTerminatorId,
                SrcType = erpDto.FSrcType,
                SrcBillNo = erpDto.FSrcBillNo,
                DeliQty = Convert.ToDecimal(erpDto.FDeliQty),
                StockOutQty = Convert.ToDecimal(erpDto.FStockOutQty),
                BaseRetNoticeQty = Convert.ToDecimal(erpDto.FBaseRetNoticeQty),
                BaseReturnQty = Convert.ToDecimal(erpDto.FBaseReturnQty),
                BaseRemainOutQty = Convert.ToDecimal(erpDto.FBaseRemainOutQty),
                BASEARQTY = Convert.ToDecimal(erpDto.FBASEARQTY),
            };
            var single = _SalesOrderDetailManager.GetSingle(it =>
                it.ErpID == Convert.ToDecimal(salesOrderSub.ErpID));
            if (single != null) salesOrderSub.Id = single.Id;
            salesOrderSubList.Add(salesOrderSub);
        }
        return salesOrderSubList;
    }
    #region æ•™å­¦æ–¹æ³•
    /// <summary>
MESApplication/Controllers/BasicData/SalesOrderController.cs
@@ -1,8 +1,11 @@
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;
@@ -10,8 +13,107 @@
[Route("api/[controller]")]
public class SalesOrderController : ControllerBase
{
    //private readonly SalesOrderManager m = new();
    private readonly MessageCenterManager _manager = new();
    private readonly SalesOrderManager m = new();
    private readonly string METHOD = "POST";
    private readonly string TableName = "SALES_ORDER";
    private readonly string URL =
        "http://localhost:10054/api/SalesOrder/";
    //
    [HttpPost("Save")]
    public ResponseResult Save(ErpSalesOrder salesOrder)
    {
        var entity = new MessageCenter();
        entity.TableName = TableName;
        entity.Url = URL + "Save";
        entity.Method = METHOD;
        entity.Data = JsonConvert.SerializeObject(salesOrder);
        entity.Status = 1;
        entity.CreateBy = "PL017";
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var save = m.Save(salesOrder);
            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<ErpSalesOrder> 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);
        }
    }
    /***进入模版管理可以修改模版***/