コード例 #1
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateSerbia()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "Serbia",
                    CurrencyName      = "Serbian Dinar",
                    CurrencyShortName = "Dinar",
                    CurrencySymbol    = "RSD",
                    CurrencyID        = (int)CurrencyTypeEnum.SerbianDinar,
                    Color             = "#FF4F9B"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }

                var vojvodina = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Vojvodina"
                });

                var belgrad = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Belgrade"
                });


                var sumadija = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Šumadija and Western Serbia"
                });

                var kosovo = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Kosovo and Metohija"
                });

                var south = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "South Eastern Serbia"
                });

                if (belgrad != null)
                {
                    country.CapitalID = belgrad.ID;
                }

                regionService.ConnectRegions(vojvodina, belgrad, 125);
                regionService.ConnectRegions(vojvodina, south, 300);
                regionService.ConnectRegions(vojvodina, sumadija, 250);

                regionService.ConnectRegions(belgrad, sumadija, 125);
                regionService.ConnectRegions(belgrad, south, 100);


                regionService.ConnectRegions(kosovo, south, 150);
                regionService.ConnectRegions(sumadija, south, 140);

                regionService.ConnectRegions(kosovo, sumadija, 140);

                regionService.ConnectRegions(vojvodina, regionRepository.GetRegion("Slavonia"), 150);
                regionService.ConnectRegions(kosovo, regionRepository.GetRegion("Lezhë"), 180);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #2
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateAlbania()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "Albania",
                    CurrencyName      = "Albanian Lek",
                    CurrencyShortName = "Lek",
                    CurrencySymbol    = "ALL",
                    CurrencyID        = (int)CurrencyTypeEnum.AlbanianLek,
                    Color             = "#FFBF11"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }



                var Lezhe = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Lezhë"
                });

                var tirana = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Tirana"
                });

                var fier = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Fier"
                });

                if (tirana != null)
                {
                    country.CapitalID = tirana.ID;
                }

                regionService.ConnectRegions(fier, tirana, 72);
                regionService.ConnectRegions(Lezhe, tirana, 58);


                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #3
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateUSA()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "USA",
                    CurrencyName      = "Dollar",
                    CurrencyShortName = "DOL",
                    CurrencySymbol    = "$",
                    CurrencyID        = (int)CurrencyTypeEnum.Dollar,
                    Color             = "#155CFF"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }

                var california = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "California Coast"
                });

                var eastCoast = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "East Coast"
                });

                var washington = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Capital"
                });



                var texas = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Texas"
                });

                var pacific = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Pacific Northwest"
                });

                var mid = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Mid-America"
                });

                var alaskas = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Alaska"
                });

                if (washington != null)
                {
                    country.CapitalID = washington.ID;
                }

                regionService.ConnectRegions(california, pacific, 1050);
                regionService.ConnectRegions(texas, mid, 1050);
                regionService.ConnectRegions(mid, pacific, 1750);
                regionService.ConnectRegions(california, mid, 1500);
                regionService.ConnectRegions(california, texas, 1800);
                regionService.ConnectRegions(eastCoast, mid, 1750);
                regionService.ConnectRegions(eastCoast, texas, 1850);
                regionService.ConnectRegions(eastCoast, washington, 200);

                regionService.ConnectRegions(pacific, alaskas, 3150);
                regionService.ConnectRegions(pacific, california, 4000);

                regionService.ConnectRegions(eastCoast, regionRepository.GetRegion("Castile-Leon"), 5900);
                regionService.ConnectRegions(washington, regionRepository.GetRegion("Castile-Leon"), 6000);

                regionService.ConnectRegions(eastCoast, regionRepository.GetRegion("Andalusia"), 6300);
                regionService.ConnectRegions(washington, regionRepository.GetRegion("Andalusia"), 6350);

                regionService.ConnectRegions(eastCoast, regionRepository.GetRegion("Normandy"), 5427);
                regionService.ConnectRegions(eastCoast, regionRepository.GetRegion("Wessex"), 5300);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #4
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateCroatia()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "Croatia",
                    CurrencyName      = "Croatian Kuna",
                    CurrencyShortName = "Kuna",
                    CurrencySymbol    = "HRK",
                    CurrencyID        = (int)CurrencyTypeEnum.CroatianKuna,
                    Color             = "#B330FF"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }


                var slavonia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Slavonia"
                });

                var continental = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Continental Croatia"
                });


                var istria = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Istria"
                });

                var kvarner = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Kvarner"
                });

                var dalmatia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Dalmatia"
                });

                if (continental != null)
                {
                    country.CapitalID = continental.ID;
                }

                regionService.ConnectRegions(dalmatia, kvarner, 185);
                regionService.ConnectRegions(istria, kvarner, 130);
                regionService.ConnectRegions(continental, kvarner, 150);
                regionService.ConnectRegions(continental, slavonia, 170);

                regionService.ConnectRegions(dalmatia, regionRepository.GetRegion("Lezhë"), 250);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #5
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateUK()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "United Kingdom",
                    CurrencyName      = "Pound Sterling",
                    CurrencyShortName = "Pound",
                    CurrencySymbol    = "GBP",
                    CurrencyID        = (int)CurrencyTypeEnum.PoundSterling,
                    Color             = "#FAFF00"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("UK exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }



                var northumbria = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Northumbria"
                });


                var wessex = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Wessex"
                });

                var london = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "London"
                });

                var east = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "East Anglia"
                });

                if (london != null)
                {
                    country.CapitalID = london.ID;
                }

                regionService.ConnectRegions(northumbria, wessex, 300);
                regionService.ConnectRegions(northumbria, london, 270);
                regionService.ConnectRegions(northumbria, east, 230);

                regionService.ConnectRegions(london, wessex, 170);
                regionService.ConnectRegions(london, east, 130);

                regionService.ConnectRegions(london, regionRepository.GetRegion("Normandy"), 250);
                regionService.ConnectRegions(wessex, regionRepository.GetRegion("Normandy"), 270);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #6
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateSpain()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "Spain",
                    CurrencyName      = "Spanish Peseta",
                    CurrencyShortName = "Peseta",
                    CurrencySymbol    = "ESP",
                    CurrencyID        = (int)CurrencyTypeEnum.SpainPeseta,
                    Color             = "#FAFF00"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }

                var catalonia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Aragon and Catalonia"
                });

                var castile = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Castile-Leon"
                });


                var mancha = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Castile-La Mancha"
                });

                var valencia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Valencia"
                });

                var andalusia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Andalusia"
                });

                if (mancha != null)
                {
                    country.CapitalID = mancha.ID;
                }

                regionService.ConnectRegions(castile, catalonia, 380);
                regionService.ConnectRegions(castile, mancha, 200);
                regionService.ConnectRegions(mancha, catalonia, 300);
                regionService.ConnectRegions(mancha, valencia, 270);
                regionService.ConnectRegions(mancha, andalusia, 350);
                regionService.ConnectRegions(valencia, andalusia, 440);
                regionService.ConnectRegions(valencia, catalonia, 280);

                regionService.ConnectRegions(catalonia, regionRepository.GetRegion("Aquaitaine-Limousin-Poitou-Charentes"), 140);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #7
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreatePoland()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "Poland",
                    CurrencyName      = "Polish Złoty",
                    CurrencyShortName = "PLN",
                    CurrencySymbol    = "PLN",
                    CurrencyID        = (int)CurrencyTypeEnum.PLN,
                    Color             = "#FF2100"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }

                var pomerania = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Pomerania"
                });

                var mazuria = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Mazuria"
                });


                var great = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Great Poland"
                });

                var mazovia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Mazovia"
                });

                var silesia = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Silesia"
                });

                var sub = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Subcarpathian"
                });

                if (mazovia != null)
                {
                    country.CapitalID = mazovia.ID;
                }

                regionService.ConnectRegions(sub, mazovia, 250);
                regionService.ConnectRegions(mazovia, mazuria, 190);
                regionService.ConnectRegions(mazuria, pomerania, 250);
                regionService.ConnectRegions(great, pomerania, 200);
                regionService.ConnectRegions(great, mazovia, 250);
                regionService.ConnectRegions(silesia, sub, 330);
                regionService.ConnectRegions(great, silesia, 180);
                regionService.ConnectRegions(great, mazuria, 300);
                regionService.ConnectRegions(silesia, mazovia, 250);

                regionService.ConnectRegions(silesia, regionRepository.GetRegion("Continental Croatia"), 550);
                regionService.ConnectRegions(sub, regionRepository.GetRegion("Vojvodina"), 450);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #8
0
ファイル: Countries.cs プロジェクト: blendiahmetaj1/SUPSUP
        private static void CreateFrance()
        {
            using (var trs = new System.Transactions.TransactionScope())
            {
                CreateCountryParameters param = new CreateCountryParameters()
                {
                    CountryName       = "France",
                    CurrencyName      = "French Franc",
                    CurrencyShortName = "FRF",
                    CurrencySymbol    = "FR",
                    CurrencyID        = (int)CurrencyTypeEnum.FrenchFranc,
                    Color             = "#5BFF6E"
                };

                Country           country = null;
                CountryRepository repo    = null;
                if (countryExists(param))
                {
                    Console.WriteLine("Spain exists!");
                    repo    = new CountryRepository(new SociatisEntities());
                    country = repo.First(c => c.Entity.Name == param.CountryName);
                }
                else
                {
                    country = countryService.CreateCountry(param);
                }

                var normandy = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Normandy"
                });

                var centre = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Centre-Val de Loire"
                });


                var alpes = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Alpes Provence"
                });

                var aqua = regionService.CreateRegion(new CreateRegionParameters()
                {
                    CanSpawn  = true,
                    CountryID = country.ID,
                    Name      = "Aquaitaine-Limousin-Poitou-Charentes"
                });

                if (centre != null)
                {
                    country.CapitalID = centre.ID;
                }

                regionService.ConnectRegions(centre, normandy, 250);
                regionService.ConnectRegions(normandy, aqua, 500);
                regionService.ConnectRegions(aqua, alpes, 350);
                regionService.ConnectRegions(centre, alpes, 390);

                regionService.ConnectRegions(alpes, regionRepository.GetRegion("Istria"), 650);
                regionService.ConnectRegions(centre, regionRepository.GetRegion("Istria"), 680);

                regionService.ConnectRegions(centre, regionRepository.GetRegion("Great Poland"), 800);
                regionService.ConnectRegions(centre, regionRepository.GetRegion("Silesia"), 750);

                repo?.SaveChanges();
                repo?.Dispose();

                trs.Complete();
            }
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: yanh19930226/yunExpress
        private static void Main(string[] args)
        {
            try
            {
                var lmsDbContext = new LMS_DbContext();
                WayBillInfoRepository          wayBillInfoRepository          = new WayBillInfoRepository(lmsDbContext);
                MailPostBagInfoRepository      mailPostBagInfoRepository      = new MailPostBagInfoRepository(lmsDbContext);
                WayBillEventLogRepository      wayBillEventLogRepository      = new WayBillEventLogRepository(lmsDbContext);
                MailTotalPackageInfoRepository mailTotalPackageInfoRepository =
                    new MailTotalPackageInfoRepository(lmsDbContext);
                MailExchangeBagLogRepository mailExchangeBagLogRepository =
                    new MailExchangeBagLogRepository(lmsDbContext);
                MailReturnGoodsLogRepository mailReturnGoodsLogRepository =
                    new MailReturnGoodsLogRepository(lmsDbContext);
                MailHoldLogRepository mailHoldLogRepository = new MailHoldLogRepository(lmsDbContext);

                //MailTotalPackageOrPostBagRelationalRepository mailTotalPackageOrPostBagRelationalRepository= new MailTotalPackageOrPostBagRelationalRepository(lmsDbContext);

                List <MailPostBagInfo>      listMailPostBagInfo;
                List <MailTotalPackageInfo> listMailTotalPackageInfo;
                List <MailReturnGoodsLog>   listMailReturnGoodsLog;

                IEnumerable <Country> listCountry = new CountryRepository(lmsDbContext).GetAll().ToList();

                #region 收寄局

                while ((listMailPostBagInfo =
                            mailPostBagInfoRepository.GetFiltered(t => t.FuPostBagNumber != null && t.TrackStatus == 0)
                            .Take(50).ToList())
                       .Any())
                {
                    listMailPostBagInfo.ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            wayBillInfoRepository.GetList(
                                w =>
                                w.OutStorageID == p.OutStorageID && (w.Status == (int)WayBill.StatusEnum.Send ||
                                                                     w.Status == (int)WayBill.StatusEnum.WaitOrder)
                                );

                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));

                        listWayBillInfo.ForEach(w =>
                        {
                            //if (!wayBillEventLogRepository.Exists(
                            //    we => we.WayBillNumber == w.WayBillNumber && we.EventCode == 610))
                            //{
                            wayBillEventLogRepository.Add(new WayBillEventLog()
                            {
                                WayBillNumber = w.WayBillNumber,
                                EventCode     = 610,
                                EventDate     = p.ScanTime.Value,
                                Description   = "收寄局已收寄",
                                Operator      = p.ScanBy,
                                LastUpdatedOn = DateTime.Now,
                                Remarks       =
                                    string.Format("发往:{0}",
                                                  listCountry.First(c => c.CountryCode == w.CountryCode)
                                                  .ChineseName)
                            });
                            //}
                        });

                        p.TrackStatus = 1;

                        Log.Info(string.Format("收寄局已收寄,更新袋号:{0}", p.PostBagNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailPostBagInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }



                #endregion


                #region 收寄局换袋

                while ((listMailPostBagInfo =
                            mailPostBagInfoRepository.GetFiltered(t => t.FuPostBagNumber != null && t.TrackStatus == 3)
                            .Take(50).ToList())
                       .Any())
                {
                    listMailPostBagInfo.ForEach(p =>
                    {
                        var listTrackNumbers =
                            mailExchangeBagLogRepository.GetFiltered(me => me.NewPostBagNumber == p.PostBagNumber)
                            .Select(me => me.TrackNumber).ToList();
                        //获取换袋的运单
                        List <WayBillInfo> listWayBillInfo =
                            wayBillInfoRepository.GetList(
                                w => w.OutStorageID == p.OutStorageID && listTrackNumbers.Contains(w.TrackingNumber) &&
                                (w.Status == (int)WayBill.StatusEnum.Send ||
                                 w.Status == (int)WayBill.StatusEnum.WaitOrder));
                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));

                        listWayBillInfo.ForEach(w =>
                        {
                            //if (!wayBillEventLogRepository.Exists(
                            //    we => we.WayBillNumber == w.WayBillNumber && we.EventCode == 610))
                            //{
                            wayBillEventLogRepository.Add(new WayBillEventLog()
                            {
                                WayBillNumber = w.WayBillNumber,
                                EventCode     = 610,
                                EventDate     = p.ScanTime.Value,
                                Description   = "收寄局已收寄",
                                Operator      = p.ScanBy,
                                LastUpdatedOn = DateTime.Now,
                                Remarks       =
                                    string.Format("发往:{0}",
                                                  listCountry.First(c => c.CountryCode == w.CountryCode)
                                                  .ChineseName)
                            });
                            //}
                        });

                        p.TrackStatus = 1;

                        Log.Info(string.Format("收寄局已收寄,更新袋号:{0}", p.PostBagNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailPostBagInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }


                #endregion


                #region 处理中心扫描

                while ((listMailPostBagInfo = mailPostBagInfoRepository.GetUnTrackingCreated(50).ToList()).Any())
                {
                    listMailPostBagInfo.ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            wayBillInfoRepository.GetList(
                                w =>
                                w.OutStorageID == p.OutStorageID && (w.Status == (int)WayBill.StatusEnum.Send ||
                                                                     w.Status == (int)WayBill.StatusEnum.WaitOrder));

                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));

                        listWayBillInfo.ForEach(w => wayBillEventLogRepository.Add(new WayBillEventLog()
                        {
                            WayBillNumber = w.WayBillNumber,
                            EventCode     = 620,
                            EventDate     =
                                p.MailTotalPackageOrPostBagRelationals.First().ScanTime,
                            Description = "邮政处理中心直封封发",
                            Operator    =
                                p.MailTotalPackageOrPostBagRelationals.First().CreatedBy,
                            LastUpdatedOn = DateTime.Now,
                            Remarks       =
                                string.Format("封发总包号:{0}",
                                              p.MailTotalPackageOrPostBagRelationals
                                              .First()
                                              .MailTotalPackageInfo.ShortNumber)
                        }));

                        p.TrackStatus = 2;

                        Log.Info(string.Format("处理中心,更新袋号:{0}", p.PostBagNumber));
                    });

                    using (var transaction = new TransactionScope(TransactionScopeOption.Required,
                                                                  new TimeSpan(0, 5, 0)))
                    {
                        mailPostBagInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }



                #endregion


                #region 离开福州

                while ((listMailTotalPackageInfo = mailTotalPackageInfoRepository.GetFiltered(
                            t =>
                            t.FZFlightNo != null && t.FuZhouDepartureTime.HasValue && t.TrackStatus == 0 &&
                            t.FuZhouDepartureTime.Value < DateTime.Now).Take(50).ToList()).Any())
                {
                    listMailTotalPackageInfo.ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            mailPostBagInfoRepository.GetWayBillByMailTotalPackageNumber(
                                p.MailTotalPackageNumber).Where(w => w.Status == (int)WayBill.StatusEnum.Send ||
                                                                w.Status == (int)WayBill.StatusEnum.WaitOrder)
                            .ToList();
                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));

                        listWayBillInfo.ForEach(w =>
                        {
                            wayBillEventLogRepository.Add(new WayBillEventLog()
                            {
                                WayBillNumber = w.WayBillNumber,
                                EventCode     = 630,
                                EventDate     = p.FuZhouDepartureTime.Value,
                                Description   = "货物配载启运,发往台北",
                                Operator      = p.LastUpdatedBy,
                                LastUpdatedOn = DateTime.Now,
                                Remarks       =
                                    p.FZFlightType == 1
                                                    ? string.Format("航班号:{0}", p.FZFlightNo)
                                                    : string.Format("邮轮号:{0}", p.FZFlightNo),
                            });
                        });

                        p.TrackStatus = 1;

                        Log.Info(string.Format("离开福州,更新中总包号:{0}", p.MailTotalPackageNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailTotalPackageInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }



                #endregion


                #region 到达台湾

                while (
                    (listMailTotalPackageInfo =
                         mailTotalPackageInfoRepository.GetFiltered(
                             t =>
                             t.TaiWanArrivedTime.HasValue && t.TrackStatus == 1 &&
                             t.TaiWanArrivedTime.Value < DateTime.Now)
                         .Take(50).ToList()).Any())
                {
                    listMailTotalPackageInfo.ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            mailPostBagInfoRepository.GetWayBillByMailTotalPackageNumber(
                                p.MailTotalPackageNumber);

                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));

                        listWayBillInfo.ForEach(w =>
                        {
                            wayBillEventLogRepository.Add(new WayBillEventLog()
                            {
                                WayBillNumber = w.WayBillNumber,
                                EventCode     = 640,
                                EventDate     = p.TaiWanArrivedTime.Value,
                                Description   = string.Format("到达台北分拨中心,等待交航"),
                                Operator      = p.LastUpdatedBy,
                                LastUpdatedOn = DateTime.Now,
                            });
                        });

                        p.TrackStatus = 2;

                        Log.Info(string.Format("到达台湾,更新中总包号:{0}", p.MailTotalPackageNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailTotalPackageInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }



                #endregion


                #region 离开台湾

                while (
                    (listMailTotalPackageInfo =
                         mailTotalPackageInfoRepository.GetFiltered(
                             t =>
                             t.TWFlightNo != null && t.TaiWanDepartureTime.HasValue &&
                             t.TrackStatus == 2 && t.TaiWanDepartureTime.Value < DateTime.Now).Take(50).ToList()).Any())
                {
                    listMailTotalPackageInfo.ToList().ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            mailPostBagInfoRepository.GetWayBillByMailTotalPackageNumber(
                                p.MailTotalPackageNumber);

                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));

                        listWayBillInfo.ForEach(w =>
                        {
                            wayBillEventLogRepository.Add(new WayBillEventLog()
                            {
                                WayBillNumber = w.WayBillNumber,
                                EventCode     = 650,
                                EventDate     = p.TaiWanDepartureTime.Value,
                                Description   = string.Format("货物交航\r\n(此信息由航空公司提供)"),
                                Operator      = p.LastUpdatedBy,
                                LastUpdatedOn = DateTime.Now,
                                Remarks       = string.Format("航班号:{0}", p.TWFlightNo),
                            });
                        });

                        p.TrackStatus = 3;

                        Log.Info(string.Format("离开台湾,更新中总包号:{0}", p.MailTotalPackageNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailTotalPackageInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }



                #endregion


                #region 到达目的国

                while (
                    (listMailTotalPackageInfo =
                         mailTotalPackageInfoRepository.GetFiltered(
                             t =>
                             t.ToArrivedTime.HasValue && t.TrackStatus == 3 &&
                             t.ToArrivedTime.Value < DateTime.Now).Take(50).ToList()).Any())
                {
                    listMailTotalPackageInfo.ToList().ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            mailPostBagInfoRepository.GetWayBillByMailTotalPackageNumber(
                                p.MailTotalPackageNumber);

                        //退件的不生成记录
                        var returnTrackNumbers =
                            mailReturnGoodsLogRepository.GetAll()
                            .Select(mr => mr.TrackNumber);
                        //拦截的不生成记录
                        var holdTrackNumbers = mailHoldLogRepository.GetAll().Select(mr => mr.TrackingNumber);
                        listWayBillInfo.RemoveAll(w => returnTrackNumbers.Contains(w.TrackingNumber));
                        listWayBillInfo.RemoveAll(w => holdTrackNumbers.Contains(w.TrackingNumber));


                        //中文国家名
                        var countryChineseName = listCountry.First(
                            c =>
                            c.CountryCode ==
                            mailPostBagInfoRepository.GetCountryCodeByMailTotalPackageNumber(p.MailTotalPackageNumber)).ChineseName;

                        listWayBillInfo.ForEach(w =>
                        {
                            wayBillEventLogRepository.Add(new WayBillEventLog()
                            {
                                WayBillNumber = w.WayBillNumber,
                                EventCode     = 660,
                                EventDate     = p.ToArrivedTime.Value,
                                Description   =
                                    string.Format("到达目的地({0}),预计送达时间1~2天\r\n(此信息由航空公司提供)",
                                                  countryChineseName),
                                Operator      = p.LastUpdatedBy,
                                LastUpdatedOn = DateTime.Now,
                                Remarks       = string.Format("航班号:{0}", p.TWFlightNo),
                            });
                        });

                        p.TrackStatus = 4;

                        Log.Info(string.Format("到达目的国,更新中总包号:{0}", p.MailTotalPackageNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailTotalPackageInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }

                #endregion


                #region 退件

                while ((listMailReturnGoodsLog =
                            mailReturnGoodsLogRepository.GetFiltered(t => t.TrackStatus == 0)
                            .Take(50).ToList())
                       .Any())
                {
                    listMailReturnGoodsLog.ForEach(p =>
                    {
                        List <WayBillInfo> listWayBillInfo =
                            wayBillInfoRepository.GetList(
                                w =>
                                w.TrackingNumber == p.TrackNumber && (w.Status == (int)WayBill.StatusEnum.Send ||
                                                                      w.Status == (int)WayBill.StatusEnum.WaitOrder)
                                );

                        listWayBillInfo.ForEach(w => wayBillEventLogRepository.Add(new WayBillEventLog()
                        {
                            WayBillNumber = w.WayBillNumber,
                            EventCode     = 635,
                            EventDate     = p.ReturnOn,
                            Description   = "退回操作中心",
                            Operator      = p.ReturnBy,
                            LastUpdatedOn = DateTime.Now,
                            Remarks       = string.Format("已退回操作中心")
                        }));

                        p.TrackStatus = 1;

                        Log.Info(string.Format("收寄局已收寄,更新袋号:{0}", p.PostBagNumber));
                    });

                    using (
                        var transaction = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0)))
                    {
                        mailPostBagInfoRepository.UnitOfWork.Commit();
                        wayBillEventLogRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }



                #endregion
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }