Десериализатор EDI не работает в другом формате

#c# #asp.net-mvc #algorithm #asp.net-core #edi

Вопрос:

 EASI    2.0 01  105687859   01  112088708   20100809    080953  EDT T   850 080908095349328 
01  850 00  1.0 SA  C0020287    10  20020207    122325  A123456 USD 34579   0005    707738  John Doe 314-999-1279   PP  BK  FT  P2      2.25    10  30  20021231    Net 60  20100809    20020331    FEDX    Alpha Philadelphia  John Smith  123 ABC Drive       Hebron  OH  43025   US  N   Deliver to Receiving Dock before 8:00 AM, call before delivery  Shrink Wrap cartons UKK PROMO001    92  212-345-678 
02  1   00999913060595  K112    54  7   36  EA  8.3600  372.96 
02  1   00884913060595  K112    54  7   36  EA  8.3600  372.96 
02  1   00884913060595  K112    54  7   36  EA  8.3600  372.96 
09  5   120              
EASX    080908095349328 01 
 

что такое группа сегментов EDI, потому что я не могу десериализовать при десериализации, потому что она не совсем соответствует формату EDI

моя функция десериализации-это

  var grammar = CustomEDIGrammar.GetGrammar();
                    CAA850 interchange;

                    try
                    {
                        using (var stream = new StreamReader(tmpfilepath))
                        {
                            interchange = new EdiSerializer().Deserialize<CAA850>(stream, grammar);
                        }
                    }
                    catch(Exception ex)
                    {
                        var expmsg = ex;
                        throw;
                    }
 

Мой класс CAA850-это

     {
        [EdiSegment]
        class CAA850
        {
    
    
            // ISA
            #region EASI and 01
            [EdiValue("9(2)", Path = "EASI/0", Description = "EASI01 - Version Number")]
            public string VersionNumber { get; set; }
    
            [EdiValue("9(3)", Path = "EASI/1", Description = "EASI02 - Sender Qualifier")]
            public string SenderQualifier { get; set; }
    
            [EdiValue("9(2)", Path = "EASI/2", Description = "EASI03 - Sender ID")]
            public string SenderID { get; set; }
    
            [EdiValue("X(3)", Path = "EASI/3", Description = "EASI04 - Receiver Qualifier")]
            public string ReceiverQualifier { get; set; }
    
            [EdiValue("9(2)", Path = "EASI/4", Description = "EASI05 - Receiver Id")]
            public string ReceiverId { get; set; }
    
            [EdiValue("X(22)", Path = "EASI/5", Description = "EASI06 - File Creation Time")]
            public string FileCreationDate { get; set; }
    
            [EdiValue("X(30)", Path = "EASI/6", Description = "EASI07 - File Creation Time")]
            public string FileCreationTime { get; set; }
    
            [EdiValue("9(2)", Path = "EASI/7", Description = "EASI08 - Time Zone")]
            public string TimeZone { get; set; }
    
            [EdiValue("X(15)", Path = "EASI/8", Description = "EASI09 - Production Or Test")]
            public string ProductionorTest { get; set; }
    
            [EdiValue("9(3)", Path = "EASI/9", Description = "EASI10 - Transaction Type")]
    
            public string TransactionType { get; set; }
    
            [EdiValue("9(4)", Path = "EASI/10", Description = "EASI11 - Interchange ID")]
            public string InterchangeID { get; set; }
    
            public RecordType01 RecordType01s { get; set; }
    
            public List<RecordType02> RecordType02s { get; set; }
    
            public RecordType09 RecordType09s { get; set; }
    
            public EASX Easx { get; set; }
    
            [EdiSegment]
            public class RecordType01
            {
    
    
                [EdiValue("9(4)", Path = "01/0", Description = "010 - Transaction Type")]
                public string TransactionType { get; set; }
    
                [EdiValue("9(2)", Path = "01/1", Description = "011 - Transaction Set Purpose")]
                public string TransactionSetPurpose { get; set; }
    
                [EdiValue("X(3)", Path = "01/2", Description = "012 - Version Number")]
                public string VersionNumber { get; set; }
    
                [EdiValue("9(4)", Path = "01/3", Description = "013 - Purchase Order Type Code")]
                public string PurchaseOrderTypeCode { get; set; }
    
    
                [EdiValue("9(4)", Path = "01/4", Description = "014 - Purchase Order Type Code")]
                public string PurchaseOrderNumber { get; set; }
    
                [EdiValue("9(4)", Path = "01/5", Description = "015 - Release Number")]
                public string ReleaseNumber { get; set; }
    
                [EdiValue("9(4)", Path = "01/6", Description = "016 - Purchase Order Date")]
                public string PurchaseOrderDate { get; set; }
    
                [EdiValue("9(4)", Path = "01/7", Description = "017 - Purchase Order Time")]
                public string PurchaseOrderTime { get; set; }
    
                [EdiValue("9(4)", Path = "01/8", Description = "018 - Contract Number")]
                public string ContractNumber { get; set; }
    
                [EdiValue("9(4)", Path = "01/9", Description = "019 -Currency Code")]
                public string CurrencyCode { get; set; }
    
                [EdiValue("9(4)", Path = "01/10", Description = "0120 - Purchase Account ID")]
                public string PurchaseAccountID { get; set; }
    
                [EdiValue("9(4)", Path = "01/11", Description = "0121 - Store ID")]
                public string StoreID { get; set; }
    
                [EdiValue("9(4)", Path = "01/12", Description = "0122 - Vendor ID")]
                public string VendorID { get; set; }
    
                [EdiValue("9(4)", Path = "01/13", Description = "0123 - Contact Name And Numer")]
                public string ContactNameAndNumer { get; set; }
    
                [EdiValue("9(4)", Path = "01/14", Description = "0124 - FOB Payment Instructions")]
                public string FOBPaymentInstructions { get; set; }
    
                [EdiValue("9(4)", Path = "01/15", Description = "0125 - Sales Requirement Code Shipment")]
                public string SalesRequirementCodeShipment { get; set; }
    
                [EdiValue("9(4)", Path = "01/16", Description = "0126 - Sales Requirement Code TruckLoad")]
                public string SalesRequirementCodeTruckLoad { get; set; }
    
                [EdiValue("9(4)", Path = "01/17", Description = "0127 - Sales Requirement Code Ship Date")]
                public string SalesRequirementCodeShipDate { get; set; }
    
                [EdiValue("9(4)", Path = "01/18", Description = "0128 - Sales Requirement Code Consigmentor Ship Blind")]
                public string SalesRequirementCodeConsigmentorShipBlind { get; set; }
    
                [EdiValue("9(4)", Path = "01/19", Description = "0129 - Payment Terms Discount Offered")]
                public string PaymentTermsDiscountOffered { get; set; }
    
                [EdiValue("9(4)", Path = "01/20", Description = "0130 - Payment Terms DiscountDays")]
                public string PaymentTermsDiscountDays { get; set; }
    
                [EdiValue("9(4)", Path = "01/21", Description = "0131 - Payment Due In Number of Days Without Discount")]
                public string PaymentDueInNumberofDaysWithoutDiscount { get; set; }
    
                [EdiValue("9(4)", Path = "01/22", Description = "0132 - Specific Payment Date")]
                public string SpecificPaymentDate { get; set; }
    
                [EdiValue("9(4)", Path = "01/23", Description = "0133 - Literal Of Payment Terms")]
                public string LiteralOfPaymentTerms { get; set; }
    
                [EdiValue("9(4)", Path = "01/24", Description = "0134 - Requested Ship Date")]
                public string RequestedShipDate { get; set; }
    
                [EdiValue("9(4)", Path = "01/25", Description = "0135 -Cancel Date")]
                public string CancelDate { get; set; }
    
                [EdiValue("9(4)", Path = "01/26", Description = "0136 - Carrier Routing Details")]
                public string CarrierRoutingDetails { get; set; }
    
                [EdiValue("9(4)", Path = "01/27", Description = "0137 - Deliver To Company Name")]
                public string DeliverToCompanyName { get; set; }
    
    
                [EdiValue("9(4)", Path = "01/28", Description = "0138 - Deliver To Contact Name")]
                public string DeliverToContactName { get; set; }
    
                [EdiValue("9(4)", Path = "01/29", Description = "0139 - Deliver To Address Line1")]
                public string DeliverToAddressLine1 { get; set; }
    
                [EdiValue("9(4)", Path = "01/30", Description = "0140 -Deliver To Address Line2")]
                public string DeliverToAddressLine2 { get; set; }
    
                [EdiValue("9(4)", Path = "01/31", Description = "0141 - Deliver To City Name")]
                public string DeliverToCityName { get; set; }
    
                [EdiValue("9(4)", Path = "01/32", Description = "0142 - Deliver To State Code")]
                public string DeliverToStateCode { get; set; }
    
                [EdiValue("9(4)", Path = "01/33", Description = "0143 - Deliver To Postal Code")]
                public string DeliverToPostalCode { get; set; }
    
                [EdiValue("9(4)", Path = "01/34", Description = "0144 - Deliver To Country Code")]
                public string DeliverToCountryCode { get; set; }
    
                [EdiValue("9(4)", Path = "01/35", Description = "0145 - Drop Ship Code")]
                public string DropShipCode { get; set; }
    
                [EdiValue("9(4)", Path = "01/36", Description = "0146 - Special lDelivery Instructions")]
                public string SpecialDeliveryInstructions { get; set; }
    
                [EdiValue("9(4)", Path = "01/37", Description = "0147 - Special Order Instructions")]
                public string SpecialOrderInstructions { get; set; }
    
                [EdiValue("9(4)", Path = "01/38", Description = "0148 - Deliver To Country Province Town Territory")]
                public string DeliverToCountryProvinceTownTerritory { get; set; }
    
                [EdiValue("9(4)", Path = "01/39", Description = "0149 - Promotional Code")]
                public string PromotionalCode { get; set; }
    
    
                [EdiValue("9(4)", Path = "01/40", Description = "0150 - Delivery Service Level")]
                public string DeliveryServiceLevel { get; set; }
    
                [EdiValue("9(4)", Path = "01/41", Description = "0151 - Deliver To Receivers Phone Number")]
                public string DeliverToReceiversPhoneNumber { get; set; }
    
    
            }
    
            [EdiSegment]
            public class RecordType02
            {
    
    
                [EdiValue("9(4)", Path = "02/0", Description = "020 - Line Item Number")]
                public string LineItemNumber { get; set; }
    
                [EdiValue("9(4)", Path = "02/1", Description = "021 - ItemIdentification GTIN")]
                public string ItemIdentificationGTIN { get; set; }
    
                [EdiValue("9(4)", Path = "02/2", Description = "022 - Master Style")]
                public string MasterStyle { get; set; }
    
                [EdiValue("9(4)", Path = "02/3", Description = "023 - Color Code")]
                public string ColorCode { get; set; }
    
                [EdiValue("9(4)", Path = "02/4", Description = "024 - Size Code")]
                public string SizeCode { get; set; }
    
                [EdiValue("9(4)", Path = "02/5", Description = "025 - Quantity Ordered")]
                public string QuantityOrdered { get; set; }
    
                [EdiValue("9(4)", Path = "02/6", Description = "026 - Unit or Basis for Measurement Code")]
                public string UnitorBasisforMeasurementCode { get; set; }
    
                [EdiValue("9(4)", Path = "02/7", Description = "027 - Purchase Unit Price")]
                public string PurchaseUnitPrice { get; set; }
    
                [EdiValue("9(4)", Path = "02/8", Description = "028 - Total Monetary Amount of Line Item")]
                public string TotalMonetaryAmountofLineItem { get; set; }
            }
    
            [EdiSegment]
            public class RecordType09
            {
    
    
                [EdiValue("9(4)", Path = "09/0", Description = "029 - Record Count")]
                public string RecordCount { get; set; }
    
                [EdiValue("9(4)", Path = "09/1", Description = "030 - Total Quantity Ordered")]
                public string TotalQuantityOrdered { get; set; }
    
                [EdiValue("9(4)", Path = "09/2", Description = "031 - Total Monetary Value")]
                public string TotalMonetaryValue { get; set; }
    
                [EdiValue("9(4)", Path = "09/3", Description = "032 - Total Monetary Value of Other Charges")]
                public string TotalMonetaryValueofOtherCharges { get; set; }
    
                [EdiValue("9(4)", Path = "09/4", Description = "033 - Number of Cases")]
                public string NumberofCases { get; set; }
    
                [EdiValue("9(4)", Path = "09/5", Description = "034 - Purchase Order Total Amount")]
                public string PurchaseOrderTotalAmount { get; set; }
    
    
            }
            [EdiSegment]
            public class EASX
            {
              
    
                [EdiValue("9(4)", Path = "EASX/0", Description = "EASX0 - Interchange ID")]
                public string InterchangeID { get; set; }
    
                [EdiValue("9(4)", Path = "EASX/1", Description = "EASX1 - Number Of Documents")]
                public string NumberOfDocuments { get; set; }
            }
    
            #endregion
    
            #region Edi Enumerations
    
            #endregion
        }
    }
 

какой сегмент класса, какой группе классов вы можете помочь, поскольку он не полностью соответствует формату EDI при десериализации, это другая форма в форме, приведенной в пробелах выше. Вот почему я должен давать имена сегментов при десериализации, но как мне указать, где и что.