0

有一个报价应用程序,我们填充数据并从源系统发送到接收器系统。该接收器系统将发送该报价的状态(成功/失败)作为对源系统的确认。我们可以选择修改相同的报价。每当我们修改报价时,状态都会从先前的报价继承。我们需要清除最新版本的状态。这没有发生。但它会清除以前修订的状态。任何人都可以帮助我。

               if (plm == "PLM")
                {
                    if (id.Revision != 0)
                    {

                        var javascriptSerializer = new JavaScriptSerializer();
                        var urn = line.CustomProperties?.FirstOrDefault(k => k.Key.ToLower() == "urn")?.Value;
                        oRecordLog.WriteToLogFile("Updating DBValue");

                   //initilizing document store object to query the documents from database.   
                        IDocumentStore ravenDB = new DocumentStore { Url = "http://localhost:8072", DefaultDatabase = "Configit.Quote" }.Initialize();

                        try
                        {
                            List<Document> docs;
                            using (var session = ravenDB.OpenSession())
                            {

                                oRecordLog.WriteToLogFile("Opened RavenDB session");
                                //getting the URN value.
                                var javaScriptSerializer = new JavaScriptSerializer();
                                string urnString = urn;
                                ModelKeyValuePair urnKeyValue = new ModelKeyValuePair();
                                urnKeyValue.Key = "URN";
                                urnKeyValue.Value = javaScriptSerializer.Serialize(urnString);


                                //wait for 5 seconds before the next query
                                docs = session.Query<Document>().Customize(x => x.WaitForNonStaleResults(TimeSpan.FromSeconds(5))).Where(x => x.Lines.Any(l => l.Properties.Any(ID => ID == urnKeyValue))).ToList();
                                try
                                {
                                    oRecordLog.WriteToLogFile("docs " + docs.Count);
                                    //processing one by one document from RavenDB.
                                    foreach (var doc in docs)
                                    {
                                        string quoteGuid = null;
                                        if (doc.LinesCount > 0)
                                        {
                                            int lineCnt = doc.LinesCount;

                                            // processing each line in the docuement getting the quoteID
                                            foreach (var quoteline in doc.Lines)

                                            {

                                                if ((quoteline.Properties.ContainsKey("Urn")) || (quoteline.Properties.ContainsKey("URN")) || (quoteline.Properties.ContainsKey("urn")))
                                                {
                                                    Guid lGuid = quoteline.LineId;
                                                    var quote_ForID = _quoteStorage.GetQuote(new QuoteRevisionId(id.QuoteId, id.Revision));
                                                    var urn_ForQuoteId = quoteline.Properties?.FirstOrDefault(k => k.Key == "URN")?.Value;

                                                    if (GetUniqueRefnum(quote_ForID, quoteline) == urn_ForQuoteId)
                                                    {
                                                        quoteGuid = doc.DocumentId.ToString();
                                                        oRecordLog.WriteToLogFile("quoteGuid " + quoteGuid);
                                                        var TransferStatus = quoteline.Properties?.FirstOrDefault(p => p.Key == "TransferStatus");
                                                        var PLMDetailedStatus = quoteline.Properties?.FirstOrDefault(p => p.Key == "PLMDetailedStatus");
                                                        TransferStatus.Value = "";
                                                        PLMDetailedStatus.Value = "";
                                                     }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            oRecordLog.WriteToLogFile("Quote ID not found");
                                        }

                                    }
                                    session.SaveChanges();
                                }
                                catch (Exception e)
                                {
                                    //printing error logs in Acknowledgement.txt.
                                    oRecordLog.WriteToLogFile(" exception caught main Stacktrace-----" + e.StackTrace);
                                    oRecordLog.WriteToLogFile(" exception caught main Message-----" + e.Message);
                                    oRecordLog.WriteToLogFile(" exception caught main Inner Exception-----" + e.InnerException);
                                    return null;
                                }


                            }

                        }
                        catch (Exception e)
                        {
                            //printing error logs in Acknowledgement.txt.
                            oRecordLog.WriteToLogFile(" exception caught main Stacktrace-----" + e.StackTrace);
                            oRecordLog.WriteToLogFile(" exception caught main Message-----" + e.Message);
                            oRecordLog.WriteToLogFile(" exception caught main Inner Exception-----" + e.InnerException);
                            return null;
                        }

                        orderupdateservice.BeginUpload(lineCount, linid, TargetSystem.Plm);



                    }
                    else
                    {
                        oRecordLog.WriteToLogFile("This is new quote");
                        orderupdateservice.BeginUpload(lineCount, linid, TargetSystem.Plm);
                    }

                }
4

0 回答 0