public static void DealWith302(XElement xElement, string path)
        {
            ReceiptSql sqlserver = null;
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string orderNoFake = eles.Where(e => e.Name.LocalName == "orderNo").First().Value;
                string status = eles.Where(e => e.Name.LocalName == "returnStatus").First().Value;
                string returnTime = eles.Where(e => e.Name.LocalName == "returnTime").First().Value;
                string returnInfo = eles.Where(e => e.Name.LocalName == "returnInfo").First().Value;

                sqlserver = new ReceiptSql();
                sqlserver.Operate302(orderNoFake, status, returnInfo);

                string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "302") + "\\" + FileUtilities.GetNewFileName(orderNoFake, status) + ".xml";

                msService = new MessageService();
                bool success = msService.DealMessage302(orderNoFake, guid, status, returnTime, returnInfo, destPath);
                if (!success)
                {
                    destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUpError, "302") + "\\" + FileUtilities.GetNewFileName(orderNoFake, status) + ".xml";
                }
                FileUtilities.FileMove(path, destPath);
                if (ConfigurationInfo.Need501 && status.Equals("120"))
                {

                    CacheInfo info = MessageCache.GetCacheByKey("501" + orderNoFake);
                    MessageCache.DeleteMessageCache("501" + orderNoFake);
                    string logisticCode = null;
                    if (info != null)
                    {
                        logisticCode = ((dynamic)info.value).LogisticCode;
                    }
                    else
                    {
                        logisticCode = msService.GetLogisticCodeByOrderNoFake(orderNoFake);
                    }
                    if (MessageControl.CheckNeedSendLogistics(logisticCode))
                    {
                        MessageControl msControl = new MessageControl();
                        msControl.CreateMessage501(orderNoFake);
                    }
                }
            }
            catch (Exception ex)
            {
                BackUpForError(path);
                Logs.Error("DealWith302 Exception: " + ex.ToString());
            }
        }
        public bool CreateMessage301(string orderNo)
        {
            bool success = true;
            OrderHead orderHead = null;
            List<OrderList> orderLists = null;
            XElement xele = null;
            XNamespace ns = null;
            MessageSql mssql = null;
            string logisticsNo = null;
            string logisticsCode = null;
            MessageService msService = null;
            try
            {
                orderHead = new OrderHead();
                orderLists = new List<OrderList>();
                mssql = new MessageSql();
                mssql.QueryData301(orderNo, ref orderHead, ref orderLists, ref logisticsNo, ref logisticsCode);
                if (orderHead.guid != new Guid())
                {
                    ns = "http://www.chinaport.gov.cn/ceb";
                    xele = new XElement(ns + "CEB301Message");
                    xele.SetAttributeValue(XNamespace.Xmlns + "ceb", ns);
                    xele = orderHead.ToXElememt(xele, ns);
                    foreach (var a in orderLists)
                    {
                        xele = a.ToXElememt(xele, ns);
                    }
                    FileUtilities.CreateFolder(ConfigurationInfo.PathSend);

                    string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "301") + "\\" + FileUtilities.GetNewFileName(orderNo) + ".xml";

                    msService = new MessageService();
                    success = msService.DealMessage301(orderNo, orderHead.orderNo, logisticsNo, false, true, orderHead.guid.ToString(), destPath, logisticsCode);
                    if (!success)
                    {
                        destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUpError, "301") + "\\" + FileUtilities.GetNewFileName(orderNo) + ".xml";
                    }
                    xele.Save(ConfigurationInfo.PathSend + "\\" + FileUtilities.GetNewFileName(orderNo) + ".xml");
                    xele.Save(destPath);
                    if (CheckNeedSendLogistics(logisticsCode))
                    {
                        MessageCache.AddMessageCache("501_" + orderHead.orderNo, CacheInfo.SetCacheInfo("501", Utilities.SetArrayList(orderHead.orderNo, logisticsCode)));
                        CacheInfo cache503R = CacheInfo.SetCacheInfo("503R", Utilities.SetArrayList(logisticsNo, logisticsCode));
                        cache503R.createTime = DateTime.Now.AddMinutes(1);
                        MessageCache.AddMessageCache("503R_" + logisticsNo, cache503R);
                        CacheInfo cache601 = CacheInfo.SetCacheInfo("601", Utilities.SetArrayList(logisticsNo, logisticsCode));
                        cache601.createTime = DateTime.Now.AddMinutes(2);
                        MessageCache.AddMessageCache("601_" + logisticsNo, cache601);
                    }
                }
                else
                {
                    Logs.Info("Does not exist in database: " + orderNo);
                    success = false;
                }
            }
            catch (Exception ex)
            {
                Logs.Error("Create301Message Exception:" + ex.ToString());
                success = false;
            }
            return success;
        }
        public bool CreateMessage601(string logisticsNo)
        {
            bool success = true;
            InventoryHead inventoryHead = null;
            List<InventoryList> inventoryLists = null;
            BaseSubscribe baseSubscribe = null;
            XElement xele = null;
            XNamespace ns = null;
            MessageSql mssql = null;
            MessageService msService = null;
            try
            {
                inventoryHead = new InventoryHead();
                inventoryLists = new List<InventoryList>();
                baseSubscribe = new BaseSubscribe();
                mssql = new MessageSql();
                mssql.QueryDate601(logisticsNo, ref inventoryHead, ref inventoryLists, ref baseSubscribe);
                if (inventoryHead.guid != new Guid())
                {
                    ns = "http://www.chinaport.gov.cn/ceb";
                    xele = new XElement(ns + "CEB601Message");
                    xele.SetAttributeValue(XNamespace.Xmlns + "ceb", ns);
                    xele = inventoryHead.ToXElememt(xele, ns);
                    foreach (var a in inventoryLists)
                    {
                        xele = a.ToXElememt(xele, ns);
                    }
                    xele = baseSubscribe.ToXElememt(xele, ns);
                    FileUtilities.CreateFolder(ConfigurationInfo.PathSend);
                    xele.Save(ConfigurationInfo.PathSend + "\\" + FileUtilities.GetNewFileName(inventoryHead.orderNo) + "_601.xml");

                    string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "601") + "\\" + FileUtilities.GetNewFileName(inventoryHead.orderNo, "Create") + ".xml";

                    msService = new MessageService();
                    msService.DealMessage601(false, true, inventoryHead.guid.ToString(), inventoryHead.copNo, destPath);

                    xele.Save(destPath);
                }
                else
                {
                    Logs.Info("Does not exist in database:" + logisticsNo);
                    success = false;
                }
            }
            catch (Exception ex)
            {
                Logs.Error("Create301Message Exception:" + ex.ToString());
                success = false;
            }
            return success;
        }
        public bool CreateMessage503R(string logisticsNo)
        {
            bool success = true;
            LogisticsStatus logisticsStatus = null;
            MessageSql mssql = null;
            MessageService msService = null;
            XElement xele = null;
            XNamespace ns = null;
            try
            {
                mssql = new MessageSql();
                logisticsStatus = new LogisticsStatus();
                mssql.QueryData503ByLogisticsNo(logisticsNo, ref logisticsStatus);
                if (logisticsStatus.guid != new Guid())
                {
                    string url = GetRequestHostByCode(logisticsStatus.logisticsCode);
                    RestRequest restRequest = new RestRequest(string.Format("{0}:{1}/Logistics/Create503", url, ConfigurationInfo.RestPort), Utilities.JsonSerialize(logisticsStatus));
                    success = Convert.ToBoolean(restRequest.Execute());
                }
                else
                {
                    success = false;
                }
                if (success)
                {
                    mssql.UpdateSchedule503(null, logisticsNo);

                    ns = "http://www.chinaport.gov.cn/ceb";
                    xele = new XElement(ns + "CEB503Message");
                    xele.SetAttributeValue(XNamespace.Xmlns + "ceb", ns);
                    xele = logisticsStatus.ToXElememt(xele, ns);

                    string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "503") + "\\" + FileUtilities.GetNewFileName(logisticsNo, "Create", "R") + ".xml";

                    xele.Save(destPath);

                    msService = new MessageService();
                    msService.DealMessage503(false, true, logisticsStatus.guid.ToString(), logisticsNo, destPath, "R");
                }
                else
                {
                    success = false;
                    Logs.Info("CreateMessage503R Response Error! Date:" + Utilities.JsonSerialize(logisticsStatus));
                }
            }
            catch (Exception ex)
            {
                success = false;
                Logs.Error("CreateMessage503R Exception: " + ex.ToString());
            }
            return success;
        }
        public bool CreateMessage501(string orderNoFake)
        {
            bool success = true;
            LogisticsHead logisticsHead = null;
            MessageSql mssql = null;
            MessageService msService = null;
            XElement xele = null;
            XNamespace ns = null;
            try
            {
                mssql = new MessageSql();
                logisticsHead = new LogisticsHead();
                mssql.QueryData501(orderNoFake, ref logisticsHead);

                if (logisticsHead.guid != new Guid())
                {
                    string url = GetRequestHostByCode(logisticsHead.logisticsCode);
                    RestRequest restRequest = new RestRequest(string.Format("{0}:{1}/Logistics/Create501", url, ConfigurationInfo.RestPort), Utilities.JsonSerialize(logisticsHead));
                    success = Convert.ToBoolean(restRequest.Execute());
                }
                else
                {
                    success = false;
                }
                if (success)
                {
                    mssql.UpdateSchedule501(orderNoFake, logisticsHead.billNo, logisticsHead.weight.ToString(), logisticsHead.freight.ToString());

                    ns = "http://www.chinaport.gov.cn/ceb";
                    xele = new XElement(ns + "CEB501Message");
                    xele.SetAttributeValue(XNamespace.Xmlns + "ceb", ns);
                    xele = logisticsHead.ToXElememt(xele, ns);

                    string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "501") + "\\" + FileUtilities.GetNewFileName(orderNoFake, "Create") + ".xml";

                    xele.Save(destPath);

                    msService = new MessageService();
                    msService.DealMessage501(false, true, logisticsHead.guid.ToString(), orderNoFake, logisticsHead.logisticsNo, destPath);
                }
                else
                {
                    Logs.Info("Create501Message Response Error! Date:" + Utilities.JsonSerialize(logisticsHead));
                }
            }
            catch (Exception ex)
            {
                success = false;
                Logs.Error("Create501Message Exception: " + ex.ToString());
            }
            finally
            {
                if (!success)
                {
                    MessageCache.DeleteMessageCache("503R" + logisticsHead.logisticsNo);
                    MessageCache.DeleteMessageCache("601" + logisticsHead.logisticsNo);
                }
            }
            return success;
        }
        public static void DealWith501(XElement xElement, string path)
        {
            ReceiptSql sqlserver = null;
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string billNo = eles.Where(e => e.Name.LocalName == "billNo").First().Value;
                string orderNoFake = eles.Where(e => e.Name.LocalName == "orderNo").First().Value;
                string logisticsNo = eles.Where(e => e.Name.LocalName == "logisticsNo").First().Value;
                string weigth = eles.Where(e => e.Name.LocalName == "weight").First().Value;
                string freight = eles.Where(e => e.Name.LocalName == "freight").First().Value;
                string logisticsCode = eles.Where(e => e.Name.LocalName == "logisticsCode").First().Value;

                if (!MessageControl.CheckNeedSendLogistics(logisticsCode))
                {
                    sqlserver = new ReceiptSql();
                    sqlserver.Operate501(orderNoFake, billNo, weigth, freight);

                    string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "501") + "\\" + FileUtilities.GetNewFileName(orderNoFake) + ".xml";

                    msService = new MessageService();
                    bool success = msService.DealMessage501(true, false, guid, orderNoFake, logisticsNo, destPath);
                    if (!success)
                    {
                        destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUpError, "501") + "\\" + FileUtilities.GetNewFileName(orderNoFake) + ".xml";
                    }

                    CacheInfo cache601 = CacheInfo.SetCacheInfo("601", Utilities.SetArrayList(logisticsNo, logisticsCode));
                    cache601.createTime = DateTime.Now.AddMinutes(1);
                    MessageCache.AddMessageCache("601_" + logisticsNo, cache601);

                    FileUtilities.FileMove(path, destPath);
                }
            }
            catch (Exception ex)
            {
                BackUpForError(path);
                Logs.Error("DealWith501 Exception: " + ex.ToString());
            }
        }
        public static void DealWith602(XElement xElement, string path)
        {
            ReceiptSql sqlserver = null;
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string copNo = eles.Where(e => e.Name.LocalName == "copNo").First().Value;
                string preNo = null;
                string status = eles.Where(e => e.Name.LocalName == "returnStatus").First().Value;
                string returnTime = eles.Where(e => e.Name.LocalName == "returnTime").First().Value;
                string returnInfo = eles.Where(e => e.Name.LocalName == "returnInfo").First().Value;
                switch (status)
                {
                    case "-9999":
                        preNo = "";
                        break;
                    case "800":
                        preNo = eles.Where(e => e.Name.LocalName == "preNo").First().Value;
                        if (ConfigurationInfo.Need501)
                        {
                            MessageControl msControl = new MessageControl();
                            msControl.CreateMessage503L(copNo);
                        }
                        break;
                    default:
                        preNo = eles.Where(e => e.Name.LocalName == "preNo").First().Value;
                        break;
                }

                sqlserver = new ReceiptSql();
                sqlserver.Operate602(copNo, preNo, status);

                string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "602") + "\\" + FileUtilities.GetNewFileName(copNo, status) + ".xml";

                msService = new MessageService();
                msService.DealMessage602(copNo, guid, status, returnTime, returnInfo, destPath);

                FileUtilities.FileMove(path, destPath);
            }
            catch (Exception ex)
            {
                BackUpForError(path);
                Logs.Error("DealWith602 Exception: " + ex.ToString());
            }
        }
        public static void DealWith601(XElement xElement, string path)
        {
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string orderNoFake = eles.Where(e => e.Name.LocalName == "orderNo").First().Value;

                string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "601") + "\\" + FileUtilities.GetNewFileName(orderNoFake) + ".xml";

                msService = new MessageService();
                msService.DealMessage601(true, false, guid, orderNoFake, destPath);

                FileUtilities.FileMove(path, destPath);
            }
            catch (Exception ex)
            {
                BackUpForError(path);
                Logs.Error("DealWith601 Exception: " + ex.ToString());
            }
        }
        public static void DealWith504(XElement xElement, string path)
        {
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string logisticsNo = eles.Where(e => e.Name.LocalName == "logisticsNo").First().Value;
                string status = eles.Where(e => e.Name.LocalName == "returnStatus").First().Value;
                string returnTime = eles.Where(e => e.Name.LocalName == "returnTime").First().Value;
                string returnInfo = eles.Where(e => e.Name.LocalName == "returnInfo").First().Value;
                string logisticsStatus = eles.Where(e => e.Name.LocalName == "logisticsStatus").First().Value;
                if (logisticsStatus.Equals("R", StringComparison.CurrentCultureIgnoreCase) && status.Equals("120"))
                {
                    MessageCache601.RemoveCache(logisticsNo);
                    MessageControl control = new MessageControl();
                    control.CreateMessage601(logisticsNo);
                }

                string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "504") + "\\" + FileUtilities.GetNewFileName(logisticsNo, status, logisticsStatus) + ".xml";

                msService = new MessageService();
                msService.DealMessage504(logisticsNo, guid, status, logisticsStatus, returnTime, returnInfo, destPath);

                FileUtilities.FileMove(path, destPath);
            }
            catch (Exception ex)
            {
                Logs.Error("DealWith503 Exception: " + ex.ToString());
            }
        }
        public static void DealWith503(XElement xElement, string path)
        {
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string logisticsNo = eles.Where(e => e.Name.LocalName == "logisticsNo").First().Value;
                string logisticsStatus = eles.Where(e => e.Name.LocalName == "logisticsStatus").First().Value;

                string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "503") + "\\" + FileUtilities.GetNewFileName(logisticsNo) + ".xml";

                msService = new MessageService();
                msService.DealMessage503(true, false, guid, logisticsNo, destPath, logisticsStatus);

                FileUtilities.FileMove(path, destPath);
            }
            catch (Exception ex)
            {
                Logs.Error("DealWith503 Exception: " + ex.ToString());
            }
        }
        public static void DealWith502(XElement xElement, string path)
        {
            ReceiptSql sqlserver = null;
            MessageService msService = null;
            try
            {
                IEnumerable<XElement> eles = xElement.Elements().First().Elements();
                string guid = eles.Where(e => e.Name.LocalName == "guid").First().Value;
                string logisticsNo = eles.Where(e => e.Name.LocalName == "logisticsNo").First().Value;
                string status = eles.Where(e => e.Name.LocalName == "returnStatus").First().Value;
                string returnTime = eles.Where(e => e.Name.LocalName == "returnTime").First().Value;
                string returnInfo = eles.Where(e => e.Name.LocalName == "returnInfo").First().Value;
                string logisticsCode = eles.Where(e => e.Name.LocalName == "logisticsCode").First().Value;

                sqlserver = new ReceiptSql();
                sqlserver.Operate502(logisticsNo, status, returnInfo);

                string destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUp, "502") + "\\" + FileUtilities.GetNewFileName(logisticsNo, status) + ".xml";

                msService = new MessageService();
                bool success = msService.DealMessage502(logisticsNo, guid, status, returnTime, returnInfo, destPath);
                if (!success)
                {
                    destPath = FileUtilities.GetNewFolderName(true, ConfigurationInfo.PathBackUpError, "502") + "\\" + FileUtilities.GetNewFileName(logisticsNo, status) + ".xml";
                }

                FileUtilities.FileMove(path, destPath);
                if (MessageControl.CheckNeedSendLogistics(logisticsCode) && status.Equals("120"))
                {
                    MessageCache.DeleteMessageCache("503R" + logisticsNo);
                    MessageControl msControl = new MessageControl();
                    msControl.CreateMessage503R(logisticsNo);
                }
            }
            catch (Exception ex)
            {
                Logs.Error("DealWith502 Exception: " + ex.ToString());
            }
        }