1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982 |
- using Aspose.Words;
- using Aspose.Words.Tables;
- using DAL;
- using Models;
- using Newtonsoft.Json.Linq;
- using OA2014.publicCode;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Configuration;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Web;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.Util;
- using System.Windows.Forms;
- using System.Xml.Linq;
- namespace WinTools
- {
- public partial class OPTravelListOutput : Form
- {
- //团组信息DAL
- DelegationInfoService dis = new DelegationInfoService();
- //三字码DAL
- ThreeCodeServices tcs = new ThreeCodeServices();
- //航司缩写DAL
- AirCompanyServcies acs = new AirCompanyServcies();
- //车导地接DAL
- CarTouristGuideGroundReservationsService ctgs = new CarTouristGuideGroundReservationsService();
- //车导地接详情DAL
- CarTouristGuideGroundReservationsContentService ctgss = new CarTouristGuideGroundReservationsContentService();
- //公务
- OfficialActivitiesService oas = new OfficialActivitiesService();
- //酒店信息DAL
- HotelReservationsService htrs = new HotelReservationsService();
- //行程详情DAL
- TravelDetailsService tds = new TravelDetailsService();
- //行程单DAL
- TravelListService tls = new TravelListService();
- //谷歌地图接口结果DAL
- GoogleMapApiResultService gmrs = new GoogleMapApiResultService();
- string[] weekdays = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
- public OPTravelListOutput()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- comb_Delegation.ValueMember = "Id";
- comb_Delegation.DisplayMember = "TeamName";
- comb_Delegation.DataSource = dis.GetAll();
- }
- private void btnOutput_Click(object sender, EventArgs e)
- {
- lblOutputResult.Text = "文件正在导出...";
- lblOutputResult.ForeColor = Color.Black;
- //数据源
- List<TravelList> _travelList = new List<TravelList>();
- int diid = (int)comb_Delegation.SelectedValue;
- DataTable dtBlack = PublicCode.GetTableByBlackCode(diid);
- DelegationInfo di = dis.GetDelegationInfoByID(diid);
- string CityStr1 = "";
- List<string> countriesList = new List<string>();
- List<string> cityList = new List<string>();
- string countriesIntroduction = "";
- string cityIntroduction = "";
- string timeDifference = "";
- string currExchangeRate = "";
- string txt_itemPrepare = "";
- string txt_specialReminder = "";
- string txt_cGPrecautions = "";
- string txt_yGCG = "";
- string txt_conduct = "";
- string txt_commonEnglish = "";
- if (dtBlack == null && (dtBlack.Rows[0]["Day"] == null || dtBlack.Rows[0]["Day"].ToString() == ""))
- {
- //提示
- //PublicCode.GetAlertMsg(this, GetType(), dt.Rows[dt.Rows.Count - 1]["Error"].ToString());
- }
- else
- {
- //创建三字码示例
- ThreeCode t = new ThreeCode();
- //城市缓存
- string city = "";
- //出访城市
- for (int i = 0; i < dtBlack.Rows.Count; i++)
- {
- if ((i + 1) < dtBlack.Rows.Count && dtBlack.Rows[i]["Three"].ToString() == dtBlack.Rows[i + 1]["Three"].ToString())
- {
- continue;
- }
- if (dtBlack.Rows.Count > 0 && (dtBlack.Rows[i]["Three"].ToString() != null && dtBlack.Rows[i]["Three"].ToString() != ""))
- {
- //出发城市
- string cityTemp = dtBlack.Rows[i]["Three"].ToString().Replace("/", string.Empty).Substring(0, 3);
- t = tcs.getByThree(cityTemp);
- if (t != null)
- {
- city = city + "/" + t.City;
- }
- else
- {
- city = city + "/【" + cityTemp + "未收录,请联系机票同事录入】";
- }
- if (i == dtBlack.Rows.Count - 1)
- {
- //抵达城市
- cityTemp = dtBlack.Rows[i]["Three"].ToString().Replace("/", string.Empty).Substring(3, 3);
- t = tcs.getByThree(cityTemp);
- if (t != null)
- {
- city = city + "/" + t.City;
- }
- else
- {
- city = city + "/【" + cityTemp + "未收录,请联系机票同事录入】";
- }
- }
- }
- }
- if (city != "" && city != null)
- {
- string[] cityStr2 = city.Split('/');
- string[] strs = cityStr2.Distinct().ToArray(); ;
- string str = "";
- foreach (var s in strs)
- {
- str += s + "/";
- }
- str = str.TrimStart('/');
- str = str.TrimEnd('/');
- //lblTourCity.Text = "去重前:" + city.TrimStart('/') + "\n 去重后:" + str;
- CityStr1 = city.TrimStart('/');
- }
- opitineraryService opitservice = new opitineraryService();
- //城市不为空
- if (!string.IsNullOrEmpty(city))
- {
- cityList = city.TrimStart('/').Split('/').ToList();
- if (cityList.Count > 1)
- {
- cityList.RemoveAt(0);
- }
- opitinerarydata cityData = opitservice.getDaFirstData(cityList[0]);
- cityIntroduction = cityData.Introduction;
- timeDifference = cityData.TimeDifference;
- currExchangeRate = cityData.CurrExchangeRate.ToString();
- }
- //国家不为空
- if (!string.IsNullOrEmpty(di.VisitCountry))
- {
- countriesList = di.VisitCountry.Split(' ').ToList();
- opitinerarydata Country = opitservice.getDaFirstData(countriesList[0]);
- countriesIntroduction = Country.Introduction == null ? "" : Country.Introduction;
- }
- //取出固定标语
- opitineraryfixed fixedData = opitservice.getFiFirstData();
- //if (!string.IsNullOrEmpty(fixedData.Tid.ToString()))
- //{
- //}
- txt_cGPrecautions = fixedData.CGPrecautions;
- txt_commonEnglish = fixedData.CommonEnglish;
- txt_conduct = fixedData.Conduct;
- txt_itemPrepare = fixedData.ItemPrepare;
- txt_specialReminder = fixedData.SpecialReminder;
- txt_yGCG = fixedData.YGCG;
- // 行程repeater
- if (tls.GetByDiid(diid).Count > 0)
- {
- _travelList = tls.GetByDiid(diid).Where(x => x.issel == 1).ToList();
- }
- else
- {
- //生成该时间段日期
- List<string> timeList = PublicCode.GetTimeListByDataTable(dtBlack);
- if (timeList != null)
- {
- string[] str = new string[timeList.Count];
- //rpData.DataSource = str;
- //rpData.DataBind();
- }
- }
- }
- //创建数据源Table
- DataTable dtSource = new DataTable();
- dtSource.Columns.Add("Days", typeof(string));
- dtSource.Columns.Add("Date", typeof(string));
- dtSource.Columns.Add("Week", typeof(string));
- dtSource.Columns.Add("Traffic", typeof(string));
- dtSource.Columns.Add("Trip", typeof(string));
- //获取数据,放到datatable
- foreach (var item in _travelList)
- {
- DataRow dr = dtSource.NewRow();
- dr["Days"] = item.Days;
- dr["Date"] = item.Date;
- dr["Week"] = item.WeekDay;
- dr["Traffic"] = item.Traffic_First
- + "\r\n"
- + item.Traffic_Second;
- if (item.Trip.Replace("(此地区为黄热病地区,请注意打疫苗)","").Length < 15)
- {
- item.Trip += @"
- 08:00 早餐于酒店;
- 09:00 公务活动;
- 10:30 公务活动;
- 12:00 午餐于当地餐厅;
- 14:00 公务活动;
- 16:00 公务活动;
- 18:00 晚餐于当地餐厅;
- 19:00 入住酒店休息;";
- }
- dr["Trip"] = item.Trip;
- dtSource.Rows.Add(dr);
- }
- //lblTeamName.Text = di.TourCode;
- //lblVisitDays.Text = di.VisitDays.ToString();
- //lblVisitDays2.Text = di.VisitDays.ToString();
- //lblPNumber.Text = di.VisitPNumber.ToString();
- //lblGroup.Text = di.TeamName.ToString();
- Dictionary<string, string> dic = new Dictionary<string, string>();
- dic.Add("Dele", di.TeamName.ToString() + PublicCode.GetNum(di.VisitDays.ToString()));
- dic.Add("City", CityStr1);
- dic.Add("Days", di.VisitDays.ToString());
- dic.Add("DeleCode", di.TourCode);
- dic.Add("Pnum", di.VisitPNumber.ToString());
- dic.Add("Pnum2", di.VisitPNumber.ToString());
- List<DeleClient> leader = new DeleClientService().GetByDiid(di.Id);
- if (leader != null && leader.Count > 0)
- {
- dic.Add("Leader", new DeleClientService().GetByDiid(di.Id)[0].LastName + new DeleClientService().GetByDiid(di.Id)[0].Name);
- }
- else
- {
- dic.Add("Leader", "");
- }
- dic.Add("Pnum3", di.VisitPNumber.ToString());
- int UserId = int.Parse(ConfigurationManager.AppSettings["OPId"]);
- dic.Add("OP", new UsersService().GetUsersByID(UserId).CnName);
- dic.Add("OPTel", new UsersService().GetUsersByID(UserId).Phone);
- //dic.Add("OP", "OP姓名");
- //dic.Add("OPTel", "OP手机号码");
- string countriesStr = "";
- countriesList.ForEach(s => countriesStr += s + "、");
- countriesStr = countriesStr.TrimEnd('、');
- string cityStr = "";
- cityList.ForEach(s => cityStr += s + "、");
- cityStr = cityStr.TrimEnd('、');
- //下方数据
- dic.Add("selCountries", countriesStr == null ? "" : countriesStr);
- dic.Add("selCity", cityStr == null ? "" : cityStr);
- dic.Add("countriesIntroduction", countriesIntroduction == null ? "" : countriesIntroduction);
- dic.Add("CityIntroduction", cityIntroduction == null ? "" : cityIntroduction);
- dic.Add("timeDifference", timeDifference == null ? "" : timeDifference);
- dic.Add("currExchangeRate", currExchangeRate == null ? "" : currExchangeRate);
- dic.Add("temperature", "");
- dic.Add("txt_itemPrepare", txt_itemPrepare == null ? "" : txt_itemPrepare);
- dic.Add("txt_specialReminder", txt_specialReminder == null ? "" : txt_specialReminder);
- dic.Add("txt_cGPrecautions", txt_cGPrecautions == null ? "" : txt_cGPrecautions);
- dic.Add("txt_yGCG", txt_yGCG == null ? "" : txt_yGCG);
- dic.Add("txt_conduct", txt_conduct == null ? "" : txt_conduct);
- dic.Add("txt_commonEnglish", txt_commonEnglish == null ? "" : txt_commonEnglish);
- //模板路径
- string tempPath = @"C:\日行程3.docx";
- //载入模板
- Document doc = null;
- DocumentBuilder builder = null;
- try
- {
- //载入模板
- doc = new Document(tempPath);
- builder = new DocumentBuilder(doc);
- }
- catch (Exception)
- {
- //载入模板
- doc = new Document(@"D:\日行程3.docx");
- builder = new DocumentBuilder(doc);
- }
-
- foreach (var key in dic.Keys)
- {
- Bookmark bookmark = doc.Range.Bookmarks[key];
- if (bookmark!=null)
- {
- builder.MoveToBookmark(key);
- builder.Write(dic[key]);
- }
- }
- //获取word里所有表格
- NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
- //获取所填表格的序数
- Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
- try
- {
- //循环赋值
- for (int i = 0; i < dtSource.Rows.Count; i++)
- {
- builder.MoveToCell(0, i + 1, 0, 0);
- builder.Write(dtSource.Rows[i]["Days"].ToString());
- builder.MoveToCell(0, i + 1, 1, 0);
- builder.Write(dtSource.Rows[i]["Date"].ToString() + "\r\n" + dtSource.Rows[i]["Week"].ToString());
- builder.MoveToCell(0, i + 1, 2, 0);
- builder.Write(dtSource.Rows[i]["Traffic"].ToString());
- var trip = dtSource.Rows[i]["Trip"].ToString();
- builder.MoveToCell(0, i + 1, 3, 0);
- builder.Write(trip);
- var cell = (Aspose.Words.Tables.Cell)doc.GetChild(NodeType.Cell, ((i + 2) * 4) - 1, true);
- var paragraphs = cell.GetChildNodes(NodeType.Paragraph, true);
- // 获取特定索引的段落
- Paragraph paragraph = (Paragraph)paragraphs[0];
- Run run = paragraph.Runs[0];
- Aspose.Words.Font font = run.Font;
- font.Name = "黑体";
- //设置双休红色
- cell = (Aspose.Words.Tables.Cell)doc.GetChild(NodeType.Cell, ((i + 2) * 4) - 3, true);
- paragraphs = cell.GetChildNodes(NodeType.Paragraph, true);
- paragraph = (Paragraph)paragraphs[1];
- if (paragraph.GetText().Contains("星期六") || paragraph.GetText().Contains("星期日"))
- {
- run = paragraph.Runs[0];
- font = run.Font;
- font.Color = Color.Red;
- }
- }
- }
- catch (Exception ex)
- {
- }
- //删除多余行
- while (tableOne.Rows.Count > 1 + dtSource.Rows.Count)
- {
- tableOne.Rows.RemoveAt(1 + dtSource.Rows.Count);//(1+dtSource.Rows.Count + 1)-1
- }
- string savePath = ConfigurationManager.AppSettings["TravelListDocSavePath"];
- if (!Directory.Exists(savePath))
- {
- try
- {
- Directory.CreateDirectory(savePath);
- }
- catch
- {
- }
- }
- string strFileName = savePath + di.TeamName + "出访日程.docx";
- try
- {
- doc.Save(strFileName, Aspose.Words.SaveFormat.Doc);
- lblOutputResult.Text = "文件导出完成";
- lblOutputResult.ForeColor = Color.Green;
- System.Diagnostics.Process.Start("Explorer.exe", "/select," + strFileName);
- }
- catch (Exception)
- {
- lblOutputResult.Text = "请重试!";
- lblOutputResult.ForeColor = Color.Green;
- }
-
- //doc.Save(HttpUtility.UrlEncode(strFileName, Encoding.UTF8), Aspose.Words.SaveFormat.Doc, Aspose.Words.SaveType.OpenInWord, Response);
- }
- private void btnImport_Click(object sender, EventArgs e)
- {
- lblImport.Text = "";
- lblImport.Text = "正在导入数据";
- int comb_Diid = (int)comb_Delegation.SelectedValue;
- int UserId = int.Parse(ConfigurationManager.AppSettings["OPId"]);
- //下拉框团组对象实例
- DelegationInfo di = dis.GetDelegationInfoByID(comb_Diid);
- //获取机票黑屏代码信息,生成datatable表
- DataTable dt = PublicCode.GetTableByBlackCode(di.Id);
- //通过datatable表里的第一个字段的信息来判断是否有黑屏代码
- //没有则提示未录入
- if (dt.Rows[0]["Day"] == null || dt.Rows[0]["Day"].ToString() == "")
- {
- //PublicCode.GetAlertMsg(this, GetType(), dt.Rows[dt.Rows.Count - 1]["Error"].ToString());
- lblImport.Text = "黑屏代码未录入";
- }
- else//成功获取黑屏代码
- {
- //根据黑屏代码生成日期段
- List<string> timeList = PublicCode.GetTimeListByDataTable(dt);
- //本团车导地接信息
- List<CarTouristGuideGroundReservations> listctg = ctgs.GetCarTouristGuideGroundReservationsByDIID(di.Id);
- //本团酒店信息
- List<HotelReservations> listht = htrs.GetByDIId(di.Id);
- //本团行程单数据
- List<Models.TravelList> listTravel = tls.GetByDiid(di.Id);
- try
- {
- if (listTravel != null && listTravel.Count > 0)//若本团已存行程,则合并/更新;同时因为机票行程的变化或行程详情的变化,会导致行程更改
- {
- if (timeList.Count > listTravel.Count)//1.改版后黑屏代码天数>已存在行程的天数
- {
- //1.1替换日期和星期
- for (int i = 0; i < listTravel.Count; i++)
- {
- //日期转换星期
- string weekday = weekdays[(int)new DateTime(
- Convert.ToInt32(timeList[i].Split('-')[0]),
- Convert.ToInt32(timeList[i].Split('-')[1]),
- Convert.ToInt32(timeList[i].Split('-')[2])).DayOfWeek];
- // 日期去掉0
- string monthStr = "Unknown", dayStr = "Unknown";
- if (!string.IsNullOrEmpty(timeList[i]))
- {
- DateTime dateTime = new DateTime();
- bool convertResult = DateTime.TryParse(timeList[i], out dateTime);
- if (convertResult)
- {
- monthStr = dateTime.Month.ToString();
- dayStr = dateTime.Day.ToString();
- }
- }
- //日期
- listTravel[i].Date = monthStr + "月" + dayStr + "日";
- //listTravel[i].Date = timeList[i].Substring(5, 2) + "月" + timeList[i].Substring(8, 2) + "日";
- listTravel[i].WeekDay = weekday;
- listTravel[i].OPer = UserId;
- listTravel[i].OPdate = PublicCode.GetBeijingTime().ToString("yyyy-MM-dd HH:mm:ss");
- listTravel[i].Isdel = 0;
- tls.EditTravelList(listTravel[i]);
- }
- //1.2添加未有行程
- //航班号标识
- //string flightcode_Sign = "";
- //三字码标识
- //string citycode_Sign = "";
- #region 城市数据 20210823 贾文滔
- List<PublicCode.CityInDate> CityInDateList = PublicCode.GetCityByDataTable(dt);
- #endregion
- //生成行程
- for (int i = listTravel.Count; i < timeList.Count; i++)
- {
- //实、例化一个temp
- Models.TravelList tlTemp = new Models.TravelList();
- //团号
- tlTemp.Diid = di.Id;
- //天数序号
- tlTemp.Days = i + 1;
- //日期
- tlTemp.Date = timeList[i].Substring(5, 2) + "月" + timeList[i].Substring(8, 2) + "日";
- //日期转换星期
- string weekday = weekdays[(int)new DateTime(
- Convert.ToInt32(timeList[i].Split('-')[0]),
- Convert.ToInt32(timeList[i].Split('-')[1]),
- Convert.ToInt32(timeList[i].Split('-')[2])).DayOfWeek];
- tlTemp.WeekDay = weekday;
- //行程
- string trip = "";
- //历经城市
- string city = "";
- #region 机票数据
- //根据航班信息推出抵达机场的位置信息
- string AirPort = "";
- //根据航班时间前后推进入机场或离开机场的时间
- string GoAirportTime = "", leaveAirPortTime = "";
- //飞机标识
- bool airSign = false;
- //查询该日期下的航班信息
- //resultRows字段顺序为:航班号,起飞日期,三字码,起飞时刻,到达时刻,出发航站楼,到达航站楼,机型,飞行时间,整理后的起飞日期,整理后的到达日期
- DataRow[] resultRows = dt.Select("Day like '%" + timeList[i] + "%'");
- if (resultRows.Count() > 0)
- {
- //修改标识
- airSign = true;
- }
- //同一天只有一条数据走正常判定
- if (resultRows.Count() == 1)
- {
- #region 三字码
- string _citycode = resultRows[0]["Three"].ToString();
- //起飞城市三字码
- ThreeCode font_threecode = null;
- string font_citycode = _citycode.Replace("/", string.Empty).Substring(0, 3);
- //抵达城市
- string font_City = "";
- //起飞城市机场
- string font_Airport = "";
- //抵达城市三字码
- ThreeCode back_threecode = null;
- string end_citycode = _citycode.Replace("/", string.Empty).Substring(3, 3);
- //抵达城市机场
- string back_Airport = "";
- //抵达城市
- string back_City = "";
- font_threecode = tcs.getByThree(font_citycode);
- //验证是否存在三字码
- if (font_threecode == null)
- {
- city = city + "【此三字码" + font_citycode + "未收录,请机票同事录入】" + "一";
- font_Airport = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- font_City = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + font_threecode.City;
- font_Airport = font_threecode.AirPort;
- font_City = font_threecode.City; ;
- }
- back_threecode = tcs.getByThree(end_citycode);
- if (back_threecode == null)
- {
- city = city + "【此三字码" + end_citycode + "未收录,请机票同事录入】" + "一";
- back_Airport = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- back_City = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + back_threecode.City;
- //部分黄热病国家,需要提醒打疫苗
- string result = PublicCode.GetCountryInfo(back_threecode.Country);
- if (result.Contains("3"))
- {
- city += "(此地区为黄热病地区,请注意打疫苗)";
- }
- back_Airport = back_threecode.AirPort;
- back_City = back_threecode.City;
- //查询酒店路线要用
- AirPort = back_threecode.AirPort;
- }
- //行程里加入城市
- #endregion
- #region 信息准备
- trip = city.TrimStart('/');
- //起飞航站楼
- string _StartBuilding = resultRows[0]["StartBuilding"].ToString();
- //转机航站楼
- string _EndBuilding = resultRows[0]["EndBuilding"].ToString();
- //起飞时刻
- string _startTime = resultRows[0]["StartTime"].ToString();
- //飞行时刻
- string _flightTime = resultRows[0]["FlightTime"].ToString();
- _flightTime = _flightTime.Contains("H") ? _flightTime.Split('H')[0] + "小时" + _flightTime.Split('H')[1].Split('M')[0] + "分钟" : _flightTime.Split('M')[0] + "分钟";
- //到达时刻
- string _endTime = resultRows[0]["EndTime"].ToString();
- //航班号
- string _flightcode = resultRows[0]["Fliagtcode"].ToString();
- //航司
- AirCompany aircompany = acs.getByShortCode(_flightcode.Substring(0, 2));
- string _aircompany_Name = "";
- if (aircompany == null)
- {
- _aircompany_Name = "【此航司" + resultRows[0]["Fliagtcode"].ToString().Substring(0, 2) + "未收录,请机票同事录入】";
- }
- else
- {
- _aircompany_Name = aircompany.CnName;
- }
- //机型判断
- string airModel = resultRows[0]["AirModel"].ToString();
- airModel = PublicCode.GetLonger(airModel.Substring(0, 1)) + airModel;
- #endregion
- #region trip编辑
- //若本行抵达时间包含"+1",则本行为母版行,仅提示登机
- if (resultRows[0]["Sign"].ToString() == "0" && _endTime.Contains("+"))
- {
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前两小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前三小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "", mins = "";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- min = min - Convert.ToInt32(mins);
- if (min < 0)
- {
- min = min + 60;
- hour = hour - 1;
- }
- if (hours != "")
- {
- hour = hour - Convert.ToInt32(hours);
- }
- if (hour < 0)
- {
- hour = hour + 24;
- }
- CheckoutHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "", mins = "";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min - Convert.ToInt32(mins);
- if (min < 0)
- {
- min = min + 60;
- hour = hour - 1;
- }
- if (hours != "")
- {
- hour = hour + Convert.ToInt32(hours);
- }
- if (hour < 0)
- {
- hour = hour + 24;
- }
- CheckoutHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- //行程
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");";
- //标记本行为母版行
- //flightcode_Sign = resultRows[0]["Fliagtcode"].ToString();
- //citycode_Sign = resultRows[0]["Three"].ToString();
- }
- //与前一行航班号,三字码相同且本行抵达时间不包含"+1",则本行是被生成的重复行,仅提示抵达
- else if (resultRows[0]["Sign"].ToString() == "1") /* && (!_endTime.Contains("+"))&&(_flightcode == flightcode_Sign)&&(_citycode == citycode_Sign)*/
- {
- //行程
- trip = trip
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- //根据航班信息推算离开机场的时间
- int temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,则提醒“行程圆满结束”
- {
- trip = trip + " ,圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- //trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + " 搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- }
- //正常提示
- else
- {
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前2小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前3小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //根据航班信息推算离开机场的时间
- temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) >= Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "0", mins = "0";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int _min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour - Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "0", mins = "0";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int _min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour + Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,先增加酒店到机场的距离时间,再在末尾提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + "搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- }
- #endregion
- }
- //同一天多条数据走分类讨论
- else
- {
- for (int n = 0; n < resultRows.Count(); n++)
- {
- city = "";
- #region 三字码
- string _citycode = resultRows[n]["Three"].ToString();
- //起飞城市三字码
- ThreeCode font_threecode = null;
- string font_citycode = _citycode.Replace("/", string.Empty).Substring(0, 3);
- //抵达城市
- string font_City = "";
- //起飞城市机场
- string font_Airport = "";
- //抵达城市三字码
- ThreeCode back_threecode = null;
- string end_citycode = _citycode.Replace("/", string.Empty).Substring(3, 3);
- //抵达城市机场
- string back_Airport = "";
- //抵达城市
- string back_City = "";
- font_threecode = tcs.getByThree(font_citycode);
- //验证是否存在三字码
- if (font_threecode == null)
- {
- city = city + "【此三字码" + font_citycode + "未收录,请机票同事录入】" + "一";
- font_Airport = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- font_City = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + font_threecode.City;
- font_Airport = font_threecode.AirPort;
- font_City = font_threecode.City; ;
- }
- back_threecode = tcs.getByThree(end_citycode);
- if (back_threecode == null)
- {
- city = city + "【此三字码" + end_citycode + "未收录,请机票同事录入】" + "一";
- back_Airport = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- back_City = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + back_threecode.City;
- //部分黄热病国家,需要提醒打疫苗
- string result = PublicCode.GetCountryInfo(back_threecode.Country);
- if (result.Contains("3"))
- {
- city += "(此地区为黄热病地区,请注意打疫苗)";
- }
- back_Airport = back_threecode.AirPort;
- back_City = back_threecode.City;
- //查询酒店路线要用
- AirPort = back_threecode.AirPort;
- }
- //行程里加入城市
- if (trip == "")
- {
- trip = city.TrimStart('/');
- }
- else
- {
- trip = trip + "\r\n"
- + city.TrimStart('/');
- }
- //起飞航站楼
- string _StartBuilding = resultRows[n]["StartBuilding"].ToString();
- //转机航站楼
- string _EndBuilding = resultRows[n]["EndBuilding"].ToString();
- //起飞时刻
- string _startTime = resultRows[n]["StartTime"].ToString();
- //飞行时刻
- string _flightTime = resultRows[n]["FlightTime"].ToString();
- _flightTime = _flightTime.Contains("H") ? _flightTime.Split('H')[0] + "小时" + _flightTime.Split('H')[1].Split('M')[0] + "分钟" : _flightTime.Split('M')[0] + "分钟";
- //到达时刻
- string _endTime = resultRows[n]["EndTime"].ToString();
- //航班号
- string _flightcode = resultRows[n]["Fliagtcode"].ToString();
- //航司
- AirCompany aircompany = acs.getByShortCode(_flightcode.Substring(0, 2));
- string _aircompany_Name = "";
- if (aircompany == null)
- {
- _aircompany_Name = "【此航司" + resultRows[n]["Fliagtcode"].ToString().Substring(0, 2) + "未收录,请机票同事录入】";
- }
- else
- {
- _aircompany_Name = aircompany.CnName;
- }
- //机型判断
- string airModel = resultRows[n]["AirModel"].ToString();
- airModel = PublicCode.GetLonger(airModel.Substring(0, 1)) + airModel;
- #endregion
- //Sign字段为标识,string类型,含义:0表示为原生黑屏代码、1表示“+1”新增的黑屏代码
- //目前存在两种情况:同一天的多条数据标识为“0->0”或“1->0”
- //如下示例
- //Day ArrivedDate Sign
- //10 10 0
- //10 11 0
- //11 11 1
- //11 12 0
- //12 12 1
- if (n == 0)
- {
- //原生机票代码
- if (resultRows[n]["Sign"].ToString() == "0")
- {
- #region trip编辑
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前两小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前三小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) >= Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "0", mins = "0";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int _min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour - Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "0", mins = "0";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int _min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour + Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,提取行李;";
- #endregion
- }
- //"+1"生成的机票代码
- else if (resultRows[n]["Sign"].ToString() == "1")
- {
- #region trip编辑
- //行程
- trip = trip
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,提取行李;";
- #endregion
- }
- }
- else if (n > 0)
- {
- //若前行是原生的,则本行判定为转机
- if (resultRows[n - 1]["Sign"].ToString() == "0")
- {
- #region trip编辑
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 1;//一般提前提前2小时
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- //若为最后一行,则计算后备等时间
- if (n == resultRows.Count() - 1)
- {
- //根据航班信息推算离开机场的时间
- temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,先增加酒店到机场的距离时间,再在末尾提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + "搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- }
- #endregion
- }
- //若前行是生成的,则本行判定为新出发
- else if (resultRows[n - 1]["Sign"].ToString() == "1")
- {
- #region trip编辑
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前2小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前3小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //根据航班信息推算离开机场的时间
- temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) >= Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "0", mins = "0";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int _min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour - Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "0", mins = "0";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int _min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour + Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,先增加酒店到机场的距离时间,再在末尾提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + "搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- #endregion
- }
- }
- }
- }
- #endregion
- #region 行程和城市赋值
- if (trip == "" || trip == " " || city == "" || city == " ")
- {
- //city = CityInDateList.Find(cid => cid.Date == timeList[i]).City;
- city = CityInDateList[i].City;
- //部分黄热病国家,需要提醒打疫苗
- string result = PublicCode.GetCountryInfo(tcs.getByCity(city)[0].Country);
- if (result.Contains("3"))
- {
- city += "(此地区为黄热病地区,请注意打疫苗)";
- }
- trip = city;
- }
- #endregion
- #region 公务 20210820 贾文滔
- string OATemp = "";//暂存公务活动
- //根据团号和日期获取公务数据
- List<OfficialActivities> listoa = oas.getByDiidAndDate(comb_Diid, timeList[i]);
- //若listoa存在公务数据,进行排序,再进行导入
- if (listoa != null && listoa.Count > 0)
- {
- //利用datatable存放公务活动数据
- DataTable OA_DataTable = new DataTable();
- OA_DataTable.Columns.Add("StartTime", typeof(string)); //activity开始时刻
- OA_DataTable.Columns.Add("EndTime", typeof(string)); //activity结束时刻
- OA_DataTable.Columns.Add("Client", typeof(string)); //activity单位
- OA_DataTable.Columns.Add("Address", typeof(string)); //activity地址
- OA_DataTable.Columns.Add("Contact", typeof(string)); //activity联系人
- OA_DataTable.Columns.Add("Tel", typeof(string)); //activity联系人电话
- OA_DataTable.Columns.Add("Dresscode", typeof(string)); //activity着装要求
- OA_DataTable.Columns.Add("isTranslate", typeof(bool));//是否需要翻译人员
- OA_DataTable.Columns.Add("Language", typeof(string));//是否需要翻译人员
- //处理公务数据
- for (int b = 0; b < listoa.Count; b++)
- {
- //起止时间
- string[] time = new string[2];
- if (listoa[b].Time.Contains('—'))
- {
- time = listoa[b].Time.Split('—');
- }
- else if (listoa[b].Time.Contains('-'))
- {
- time = listoa[b].Time.Split('-');
- }
- //添加数据
- if (time.Length >= 2)
- {
- OA_DataTable.Rows.Add(time[0], time[1], listoa[b].Client, listoa[b].Address, listoa[b].Contact, listoa[b].Tel, listoa[b].Dresscode, listoa[b].IsNeedTrans, listoa[b].Language);
- }
- else
- {
- //PublicCode.GetAlertMsg(this, GetType(), timeList[i] + "的公务数据有误,请检查");
- }
- }
- //排序
- OA_DataTable.DefaultView.Sort = "StartTime asc";
- OA_DataTable = OA_DataTable.DefaultView.ToTable();
- //导入信息
- for (int index = 0; index < OA_DataTable.Rows.Count; index++)
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- if (OATemp != "")
- {
- OATemp = OATemp + "\r\n"
- + OA_DataTable.Rows[index]["StartTime"].ToString()
- + "-"
- + OA_DataTable.Rows[index]["EndTime"].ToString()
- + " 拜访" + OA_DataTable.Rows[index]["Client"].ToString()
- + ",联系人:" + OA_DataTable.Rows[index]["Contact"].ToString()
- + ",电话:" + OA_DataTable.Rows[index]["Tel"].ToString()
- + ",地址:" + OA_DataTable.Rows[index]["Address"].ToString()
- + ",着装要求:" + OA_DataTable.Rows[index]["Dresscode"].ToString()
- + ",是否需要翻译:" + (bool.Parse(OA_DataTable.Rows[index]["isTranslate"].ToString()) ? "需要翻译人员" + "翻译语种为" + OA_DataTable.Rows[index]["Language"].ToString() : "不需要翻译人员")
- + ",议题:-";
- }
- else
- {
- OATemp = OA_DataTable.Rows[index]["StartTime"].ToString()
- + "-"
- + OA_DataTable.Rows[index]["EndTime"].ToString()
- + " 拜访" + OA_DataTable.Rows[index]["Client"].ToString()
- + ",联系人:" + OA_DataTable.Rows[index]["Contact"].ToString()
- + ",电话:" + OA_DataTable.Rows[index]["Tel"].ToString()
- + ",地址:" + OA_DataTable.Rows[index]["Address"].ToString()
- + ",着装要求:" + OA_DataTable.Rows[index]["Dresscode"].ToString()
- + ",是否需要翻译:" + (bool.Parse(OA_DataTable.Rows[index]["isTranslate"].ToString()) ? "需要翻译人员" + "翻译语种为" + OA_DataTable.Rows[index]["Language"].ToString() : "不需要翻译人员")
- + ",议题:-";
- }
- }
- else
- {
- //导入公务
- trip = trip + "\r\n"
- + OA_DataTable.Rows[index]["StartTime"].ToString()
- + "-"
- + OA_DataTable.Rows[index]["EndTime"].ToString()
- + " 拜访" + OA_DataTable.Rows[index]["Client"].ToString()
- + ",联系人:" + OA_DataTable.Rows[index]["Contact"].ToString()
- + ",电话:" + OA_DataTable.Rows[index]["Tel"].ToString()
- + ",地址:" + OA_DataTable.Rows[index]["Address"].ToString()
- + ",着装要求:" + OA_DataTable.Rows[index]["Dresscode"].ToString()
- + ",是否需要翻译:" + (bool.Parse(OA_DataTable.Rows[index]["isTranslate"].ToString()) ? "需要翻译人员" + "翻译语种为" + OA_DataTable.Rows[index]["Language"].ToString() : "不需要翻译人员")
- + ",议题:-";
- }
- //当天第一个公务或许都是从酒店出发,因此可计算酒店到公务地址的距离和时间
- if (index == 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, OA_DataTable.Rows[0]["Address"].ToString());
- if (g != null)
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- trip = trip + "。 (" + g.Distance + "," + g.Time + ")";
- }
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, OA_DataTable.Rows[0]["Address"].ToString());
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- else
- {
- trip = trip + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = h.HotelAddress;
- gtemp.EndAddress = OA_DataTable.Rows[0]["Address"].ToString();
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (谷歌接口异常,无法测算路程时间)";
- }
- else
- {
- trip = trip + "。 (谷歌接口异常,无法测算路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- //第二个公务是由中午的餐厅前往公务地址,具有随机性,因此不计算此方向距离时间;但可计算由公务地址回酒店的信息
- else
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, OA_DataTable.Rows[index]["Address"].ToString(), h.HotelAddress);
- if (g != null)
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- trip = trip + "。 (" + g.Distance + "," + g.Time + ")";
- }
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(OA_DataTable.Rows[index]["Address"].ToString(), h.HotelAddress);
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- else
- {
- trip = trip + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = OA_DataTable.Rows[0]["Address"].ToString();
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (谷歌接口异常,无法测算路程时间)";
- }
- else
- {
- trip = trip + "。 (谷歌接口异常,无法测算路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- }
- }
- #endregion
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))//不去“》=”的原因是行程最后一天一般不会有酒店
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, AirPort, h.HotelAddress);
- if (g != null)
- {
- trip = trip + "\r\n"
- + leaveAirPortTime + " 乘车前往酒店:(" + g.Distance + "," + g.Time + ")";
- //计算“抵达酒店办理入住手续”的时间
- string CheckInHotelTime;
- //处理时间格式
- string hours = "", mins = "";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + Convert.ToInt32(mins);
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hours != "")
- {
- hour = hour + Convert.ToInt32(hours);
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- CheckInHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckInHotelTime = CheckInHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckInHotelTime + " 抵达酒店办理入住手续";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(AirPort, h.HotelAddress);
- trip = trip + "\r\n"
- + leaveAirPortTime + " 乘车前往酒店:(" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- //计算“抵达酒店办理入住手续”的时间
- string CheckInHotelTime;
- //处理时间格式
- string Gtime = "", hours = "", mins = "";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + Convert.ToInt32(mins);
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hours != "")
- {
- hour = hour + Convert.ToInt32(hours);
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- CheckInHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckInHotelTime = CheckInHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckInHotelTime + " 抵达酒店办理入住手续";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " (谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- trip = trip + "\r\n"
- + " 酒店名称:" + h.HotelName + "\r\n"
- + " 酒店地址:" + h.HotelAddress + "\r\n"
- + " 酒店电话:" + h.HotelTel + " 酒店传真:" + (h.HotelFax == "" ? "-" : h.HotelFax);
- if (i == 0 && !string.IsNullOrEmpty(OATemp))
- {
- trip = trip + "\r\n" + OATemp;
- }
- }
- }
- #endregion
- #region 当天交通工具赋值
- //一般行程第一天都是先乘坐飞机后乘坐汽车
- if (i == 0)
- {
- tlTemp.Traffic_First = "飞机";
- tlTemp.Traffic_Second = "汽车";
- }
- else
- {
- // 根据车导地接表数据判断交通工具:汽车
- List<CarTouristGuideGroundReservations> ListCar = listctg.FindAll(c => Convert.ToDateTime(c.ServiceStartTime) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(c.ServiceEndTime) >= Convert.ToDateTime(timeList[i]));
- //交通工具:汽车
- if (ListCar.Count > 0)
- {
- tlTemp.Traffic_First = "汽车";
- //交通工具:飞机
- if (airSign == true)
- {
- tlTemp.Traffic_Second = "飞机";
- }
- else
- {
- tlTemp.Traffic_Second = "";
- }
- }
- else
- {
- tlTemp.Traffic_First = "汽车";
- //交通工具:飞机
- if (airSign == true)
- {
- tlTemp.Traffic_Second = "飞机";
- }
- else
- {
- tlTemp.Traffic_Second = "";
- }
- }
- }
- #endregion
- tlTemp.Trip = trip;
- tlTemp.OPer = di.Id;
- tlTemp.OPdate = PublicCode.GetBeijingTime().ToString("yyyy-MM-dd HH:mm:ss");
- tlTemp.issel = 1;
- tlTemp.diffgroup = 1;
- tlTemp.Isdel = 0;
- tls.AddTravelList(tlTemp);
- }
- }
- else if (timeList.Count < listTravel.Count)//2改版天数<原版天数
- {
- //2.1替换日期
- for (int i = 0; i < timeList.Count; i++)
- {
- //日期转换星期
- string weekday = weekdays[(int)new DateTime(
- Convert.ToInt32(timeList[i].Split('-')[0]),
- Convert.ToInt32(timeList[i].Split('-')[1]),
- Convert.ToInt32(timeList[i].Split('-')[2])).DayOfWeek];
- //日期去掉0
- string monthStr = "Unknown", dayStr = "Unknown";
- if (!string.IsNullOrEmpty(timeList[i]))
- {
- DateTime dateTime = new DateTime();
- bool convertResult = DateTime.TryParse(timeList[i], out dateTime);
- if (convertResult)
- {
- monthStr = dateTime.Month.ToString();
- dayStr = dateTime.Day.ToString();
- }
- }
- //日期
- listTravel[i].Date = monthStr + "月" + dayStr + "日";
- //listTravel[i].Date = timeList[i].Substring(5, 2) + "月" + timeList[i].Substring(8, 2) + "日";
- listTravel[i].WeekDay = weekday;
- listTravel[i].OPer = UserId;
- listTravel[i].OPdate = PublicCode.GetBeijingTime().ToString("yyyy-MM-dd HH:mm:ss");
- listTravel[i].Isdel = 0;
- tls.EditTravelList(listTravel[i]);
- }
- //2.2删除多余行程
- tls.DelOld(comb_Diid, listTravel[timeList.Count - 1].Id, listTravel[listTravel.Count - 1].Id);
- }
- else//3改版天数=原版天数
- {
- //3.1替换日期
- for (int i = 0; i < timeList.Count; i++)
- {
- //日期去掉0
- string monthStr="Unknown", dayStr="Unknown";
- if (!string.IsNullOrEmpty(timeList[i]))
- {
- DateTime dateTime = new DateTime();
- bool convertResult = DateTime.TryParse(timeList[i], out dateTime);
- if (convertResult)
- {
- monthStr = dateTime.Month.ToString();
- dayStr = dateTime.Day.ToString();
- }
- }
-
- //日期
- listTravel[i].Date = monthStr + "月" + dayStr + "日";
- //日期转换星期
- string weekday = weekdays[(int)new DateTime(
- Convert.ToInt32(timeList[i].Split('-')[0]),
- Convert.ToInt32(timeList[i].Split('-')[1]),
- Convert.ToInt32(timeList[i].Split('-')[2])).DayOfWeek];
- listTravel[i].WeekDay = weekday;
- listTravel[i].OPer = UserId;
- listTravel[i].OPdate = PublicCode.GetBeijingTime().ToString("yyyy-MM-dd HH:mm:ss");
- listTravel[i].Isdel = 0;
- tls.EditTravelList(listTravel[i]);
- }
- }
- }
- else //若本团不存行程,则生成行程。 包含机票、酒店、车导地接等数据
- {
- //航班号标识
- //string flightcode_Sign = "";
- //三字码标识
- //string citycode_Sign = "";
- #region 城市数据 20210823 贾文滔
- List<PublicCode.CityInDate> CityInDateList = PublicCode.GetCityByDataTable(dt);
- #endregion
- //生成行程
- for (int i = 0; i < timeList.Count; i++)
- {
- //实、例化一个temp
- Models.TravelList tlTemp = new Models.TravelList();
- //团号
- tlTemp.Diid = di.Id;
- //天数序号
- tlTemp.Days = i + 1;
- //日期去掉0
- var datetime1 = timeList[i];
- string monthStr = "Unknown", dayStr = "Unknown";
- if (!string.IsNullOrEmpty(datetime1))
- {
- DateTime dateTime = new DateTime();
- bool convertResult = DateTime.TryParse(datetime1, out dateTime);
- if (convertResult)
- {
- monthStr = dateTime.Month.ToString();
- dayStr = dateTime.Day.ToString();
- }
- }
- //日期
- tlTemp.Date = monthStr + "月" + dayStr + "日";
- //日期
- //tlTemp.Date = timeList[i].Substring(5, 2) + "月" + timeList[i].Substring(8, 2) + "日";
- //日期转换星期
- string weekday = weekdays[(int)new DateTime(
- Convert.ToInt32(timeList[i].Split('-')[0]),
- Convert.ToInt32(timeList[i].Split('-')[1]),
- Convert.ToInt32(timeList[i].Split('-')[2])).DayOfWeek];
- tlTemp.WeekDay = weekday;
- //行程
- string trip = "";
- //历经城市
- string city = "";
- #region 机票数据
- //根据航班信息推出抵达机场的位置信息
- string AirPort = "";
- //根据航班时间前后推进入机场或离开机场的时间
- string GoAirportTime = "", leaveAirPortTime = "";
- //飞机标识
- bool airSign = false;
- //查询该日期下的航班信息
- //resultRows字段顺序为:航班号,起飞日期,三字码,起飞时刻,到达时刻,出发航站楼,到达航站楼,机型,飞行时间,整理后的起飞日期,整理后的到达日期
- DataRow[] resultRows = dt.Select("Day like '%" + timeList[i] + "%'");
- if (resultRows.Count() > 0)
- {
- //修改标识
- airSign = true;
- }
- //同一天只有一条数据走正常判定
- if (resultRows.Count() == 1)
- {
- #region 三字码
- string _citycode = resultRows[0]["Three"].ToString();
- //起飞城市三字码
- ThreeCode font_threecode = null;
- string font_citycode = _citycode.Replace("/", string.Empty).Substring(0, 3);
- //抵达城市
- string font_City = "";
- //起飞城市机场
- string font_Airport = "";
- //抵达城市三字码
- ThreeCode back_threecode = null;
- string end_citycode = _citycode.Replace("/", string.Empty).Substring(3, 3);
- //抵达城市机场
- string back_Airport = "";
- //抵达城市
- string back_City = "";
- font_threecode = tcs.getByThree(font_citycode);
- //验证是否存在三字码
- if (font_threecode == null)
- {
- city = city + "【此三字码" + font_citycode + "未收录,请机票同事录入】" + "一";
- font_Airport = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- font_City = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + font_threecode.City;
- font_Airport = font_threecode.AirPort;
- font_City = font_threecode.City; ;
- }
- back_threecode = tcs.getByThree(end_citycode);
- if (back_threecode == null)
- {
- city = city + "【此三字码" + end_citycode + "未收录,请机票同事录入】" + "一";
- back_Airport = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- back_City = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + back_threecode.City;
- //部分黄热病国家,需要提醒打疫苗
- string result = PublicCode.GetCountryInfo(back_threecode.Country);
- if (result.Contains("3"))
- {
- city += "(此地区为黄热病地区,请注意打疫苗)";
- }
- back_Airport = back_threecode.AirPort;
- back_City = back_threecode.City;
- //查询酒店路线要用
- AirPort = back_threecode.AirPort;
- }
- //行程里加入城市
- #endregion
- #region 信息准备
- trip = city.TrimStart('/');
- //起飞航站楼
- string _StartBuilding = resultRows[0]["StartBuilding"].ToString();
- //转机航站楼
- string _EndBuilding = resultRows[0]["EndBuilding"].ToString();
- //起飞时刻
- string _startTime = resultRows[0]["StartTime"].ToString();
- //飞行时刻
- string _flightTime = resultRows[0]["FlightTime"].ToString();
- _flightTime = _flightTime.Contains("H") ? _flightTime.Split('H')[0] + "小时" + _flightTime.Split('H')[1].Split('M')[0] + "分钟" : _flightTime.Split('M')[0] + "分钟";
- //到达时刻
- string _endTime = resultRows[0]["EndTime"].ToString();
- //航班号
- string _flightcode = resultRows[0]["Fliagtcode"].ToString();
- //航司
- AirCompany aircompany = acs.getByShortCode(_flightcode.Substring(0, 2));
- string _aircompany_Name = "";
- if (aircompany == null)
- {
- _aircompany_Name = "【此航司" + resultRows[0]["Fliagtcode"].ToString().Substring(0, 2) + "未收录,请机票同事录入】";
- }
- else
- {
- _aircompany_Name = aircompany.CnName;
- }
- //机型判断
- string airModel = resultRows[0]["AirModel"].ToString();
- airModel = PublicCode.GetLonger(airModel.Substring(0, 1)) + airModel;
- #endregion
- #region trip编辑
- //若本行抵达时间包含"+1",则本行为母版行,仅提示登机
- if (resultRows[0]["Sign"].ToString() == "0" && _endTime.Contains("+"))
- {
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前两小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前三小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "", mins = "";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- min = min - Convert.ToInt32(mins);
- if (min < 0)
- {
- min = min + 60;
- hour = hour - 1;
- }
- if (hours != "")
- {
- hour = hour - Convert.ToInt32(hours);
- }
- if (hour < 0)
- {
- hour = hour + 24;
- }
- CheckoutHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "", mins = "";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min - Convert.ToInt32(mins);
- if (min < 0)
- {
- min = min + 60;
- hour = hour - 1;
- }
- if (hours != "")
- {
- hour = hour + Convert.ToInt32(hours);
- }
- if (hour < 0)
- {
- hour = hour + 24;
- }
- CheckoutHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- //行程
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");";
- //标记本行为母版行
- //flightcode_Sign = resultRows[0]["Fliagtcode"].ToString();
- //citycode_Sign = resultRows[0]["Three"].ToString();
- }
- //与前一行航班号,三字码相同且本行抵达时间不包含"+1",则本行是被生成的重复行,仅提示抵达
- else if (resultRows[0]["Sign"].ToString() == "1") /* && (!_endTime.Contains("+"))&&(_flightcode == flightcode_Sign)&&(_citycode == citycode_Sign)*/
- {
- //行程
- trip = trip
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- //根据航班信息推算离开机场的时间
- int temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,则提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + "搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- }
- //正常提示
- else
- {
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前2小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前3小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //根据航班信息推算离开机场的时间
- temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) >= Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "0", mins = "0";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int _min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour - Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "0", mins = "0";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int _min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour + Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + gtemp.Distance + "," + gtemp.Time + ")";
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,先增加酒店到机场的距离时间,再在末尾提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + "\r\n" + leaveAirPortTime + " 搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- }
- #endregion
- }
- //同一天多条数据走分类讨论
- else
- {
- for (int n = 0; n < resultRows.Count(); n++)
- {
- city = "";
- #region 三字码
- string _citycode = resultRows[n]["Three"].ToString();
- //起飞城市三字码
- ThreeCode font_threecode = null;
- string font_citycode = _citycode.Replace("/", string.Empty).Substring(0, 3);
- //抵达城市
- string font_City = "";
- //起飞城市机场
- string font_Airport = "";
- //抵达城市三字码
- ThreeCode back_threecode = null;
- string end_citycode = _citycode.Replace("/", string.Empty).Substring(3, 3);
- //抵达城市机场
- string back_Airport = "";
- //抵达城市
- string back_City = "";
- font_threecode = tcs.getByThree(font_citycode);
- //验证是否存在三字码
- if (font_threecode == null)
- {
- city = city + "【此三字码" + font_citycode + "未收录,请机票同事录入】" + "一";
- font_Airport = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- font_City = "【此三字码" + font_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + font_threecode.City;
- font_Airport = font_threecode.AirPort;
- font_City = font_threecode.City; ;
- }
- back_threecode = tcs.getByThree(end_citycode);
- if (back_threecode == null)
- {
- city = city + "【此三字码" + end_citycode + "未收录,请机票同事录入】" + "一";
- back_Airport = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- back_City = "【此三字码" + end_citycode + "未收录,请机票同事录入】";
- }
- else
- {
- city = city + "/" + back_threecode.City;
- //部分黄热病国家,需要提醒打疫苗
- string result = PublicCode.GetCountryInfo(back_threecode.Country);
- if (result.Contains("3"))
- {
- city += "(此地区为黄热病地区,请注意打疫苗)";
- }
- back_Airport = back_threecode.AirPort;
- back_City = back_threecode.City;
- //查询酒店路线要用
- AirPort = back_threecode.AirPort;
- }
- //行程里加入城市
- if (trip == "")
- {
- trip = city.TrimStart('/');
- }
- else
- {
- trip = trip + "\r\n"
- + city.TrimStart('/');
- }
- //起飞航站楼
- string _StartBuilding = resultRows[n]["StartBuilding"].ToString();
- //转机航站楼
- string _EndBuilding = resultRows[n]["EndBuilding"].ToString();
- //起飞时刻
- string _startTime = resultRows[n]["StartTime"].ToString();
- //飞行时刻
- string _flightTime = resultRows[n]["FlightTime"].ToString();
- _flightTime = _flightTime.Contains("H") ? _flightTime.Split('H')[0] + "小时" + _flightTime.Split('H')[1].Split('M')[0] + "分钟" : _flightTime.Split('M')[0] + "分钟";
- //到达时刻
- string _endTime = resultRows[n]["EndTime"].ToString();
- //航班号
- string _flightcode = resultRows[n]["Fliagtcode"].ToString();
- //航司
- AirCompany aircompany = acs.getByShortCode(_flightcode.Substring(0, 2));
- string _aircompany_Name = "";
- if (aircompany == null)
- {
- _aircompany_Name = "【此航司" + resultRows[n]["Fliagtcode"].ToString().Substring(0, 2) + "未收录,请机票同事录入】";
- }
- else
- {
- _aircompany_Name = aircompany.CnName;
- }
- //机型判断
- string airModel = resultRows[n]["AirModel"].ToString();
- airModel = PublicCode.GetLonger(airModel.Substring(0, 1)) + airModel;
- #endregion
- //Sign字段为标识,string类型,含义:0表示为原生黑屏代码、1表示“+1”新增的黑屏代码
- //目前存在两种情况:同一天的多条数据标识为“0->0”或“1->0”
- //如下示例
- //Day ArrivedDate Sign
- //10 10 0
- //10 11 0
- //11 11 1
- //11 12 0
- //12 12 1
- if (n == 0)
- {
- //原生机票代码
- if (resultRows[n]["Sign"].ToString() == "0")
- {
- #region trip编辑
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前两小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前三小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) >= Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "0", mins = "0";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int _min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour - Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "0", mins = "0";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int _min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour + Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,提取行李;";
- #endregion
- }
- //"+1"生成的机票代码
- else if (resultRows[n]["Sign"].ToString() == "1")
- {
- #region trip编辑
- //行程
- trip = trip
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,提取行李;";
- #endregion
- }
- }
- else if (n > 0)
- {
- //若前行是原生的,则本行判定为转机
- if (resultRows[n - 1]["Sign"].ToString() == "0")
- {
- #region trip编辑
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 1;//一般提前提前2小时
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- //若为最后一行,则计算后备等时间
- if (n == resultRows.Count() - 1)
- {
- //根据航班信息推算离开机场的时间
- temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,先增加酒店到机场的距离时间,再在末尾提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + "搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- }
- #endregion
- }
- //若前行是生成的,则本行判定为新出发
- else if (resultRows[n - 1]["Sign"].ToString() == "1")
- {
- #region trip编辑
- //根据航班信息推算进入机场的时间
- int temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 2;//一般提前提前2小时
- string result = PublicCode.GetCountryInfo(back_threecode.Country);//美国或者欧洲国家提前3小时
- if (result.Contains("2"))
- {
- temp = Convert.ToInt32(_startTime.Substring(0, 2)) - 3;//提前3小时
- }
- if (temp < 0)
- {
- temp = temp + 24;
- }
- GoAirportTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- GoAirportTime = GoAirportTime + ":" + _startTime.Substring(2, _startTime.Length - 2);
- //根据航班信息推算离开机场的时间
- temp = Convert.ToInt32(_endTime.Substring(0, 2)) + 1;
- leaveAirPortTime = temp < 10 ? "0" + temp.ToString() : temp.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + _endTime.Substring(2, _endTime.Length - 2);
- //第一天之后的行程可以加上“酒店出发到机场”的距离和时间
- if (i > 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) < Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) >= Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, font_Airport);
- if (g != null)
- {
- //计算“酒店到机场”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string hours = "0", mins = "0";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(GoAirportTime.Substring(0, 2));
- int _min = Convert.ToInt32(GoAirportTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour - Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, font_Airport);
- //计算“抵达酒店办理入住手续”的时间
- string CheckoutHotelTime;
- //处理时间格式
- string Gtime = "", hours = "0", mins = "0";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int _hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int _min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- _min = _min - Convert.ToInt32(mins);
- if (_min < 0)
- {
- _min = _min + 60;
- _hour = _hour - 1;
- }
- if (hours != "")
- {
- _hour = _hour + Convert.ToInt32(hours);
- }
- if (_hour < 0)
- {
- _hour = _hour + 24;
- }
- CheckoutHotelTime = _hour < 10 ? "0" + _hour.ToString() : _hour.ToString();
- CheckoutHotelTime = CheckoutHotelTime + ":" + (_min < 10 ? "0" + _min.ToString() : _min.ToString());
- trip = trip + "\r\n"
- + CheckoutHotelTime + " 乘车前往机场:(" + g.Distance + "," + g.Time + ")";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " 乘车前往机场:(谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- trip = trip
- + "\r\n" + GoAirportTime + " 抵达" + font_Airport + _StartBuilding + "航站楼,办理登机手续:"
- + "\r\n" + _startTime.Substring(0, 2) + ":" + _startTime.Substring(2, _startTime.Length - 2) + " 搭乘" + _aircompany_Name + "航空公司" + _flightcode + "航班,由" + font_City + "飞往" + back_City + ";"
- + "\r\n" + " (" + font_Airport + "/" + back_Airport + " 机型:" + airModel + " 飞行时间" + (_flightTime) + ");"
- + "\r\n" + _endTime.Substring(0, 2) + ":" + _endTime.Substring(2, _endTime.Length - 2) + " 抵达" + back_Airport + _EndBuilding + "航站楼,办理入境手续,之后前往提取行李";
- if (i == timeList.Count - 1)//如果本日是行程的最后一天,先增加酒店到机场的距离时间,再在末尾提醒“行程圆满结束”
- {
- trip = trip + ",圆满结束此次访问之行!";
- }
- else //如果本日不是行程的最后一天,正常提醒
- {
- trip += pushTrip(leaveAirPortTime, back_Airport, city,out leaveAirPortTime);
- trip = trip + ";\r\n" + leaveAirPortTime + " 搭乘专车前往酒店,抵达后办理入住;";
- }
- //整理离开机场的时间 +10分钟为"乘车前往酒店"的时刻
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + 10;
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- leaveAirPortTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- leaveAirPortTime = leaveAirPortTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- #endregion
- }
- }
- }
- }
- #endregion
- #region 行程和城市赋值
- if (trip == "" || trip == " " || city == "" || city == " ")
- {
- city = CityInDateList.Find(cid => cid.Date == timeList[i]).City;
- //部分黄热病国家,需要提醒打疫苗
- string result = PublicCode.GetCountryInfo(tcs.getByCity(city)[0].Country);
- if (result.Contains("3"))
- {
- city += "(此地区为黄热病地区,请注意打疫苗)";
- }
- trip = city;
- }
- #endregion
- #region 公务 20210820 贾文滔
- string OATemp = "";//暂存公务活动
- //根据团号和日期获取公务数据
- List<OfficialActivities> listoa = oas.getByDiidAndDate(comb_Diid, timeList[i]);
- //若listoa存在公务数据,进行排序,再进行导入
- if (listoa != null && listoa.Count > 0)
- {
- //利用datatable存放公务活动数据
- DataTable OA_DataTable = new DataTable();
- OA_DataTable.Columns.Add("StartTime", typeof(string)); //activity开始时刻
- OA_DataTable.Columns.Add("EndTime", typeof(string)); //activity结束时刻
- OA_DataTable.Columns.Add("Client", typeof(string)); //activity单位
- OA_DataTable.Columns.Add("Address", typeof(string)); //activity地址
- OA_DataTable.Columns.Add("Contact", typeof(string)); //activity联系人
- OA_DataTable.Columns.Add("Tel", typeof(string)); //activity联系人电话
- OA_DataTable.Columns.Add("Dresscode", typeof(string)); //activity着装要求
- OA_DataTable.Columns.Add("isTranslate", typeof(bool));//是否需要翻译人员
- OA_DataTable.Columns.Add("Language", typeof(string));//是否需要翻译人员
- //处理公务数据
- for (int b = 0; b < listoa.Count; b++)
- {
- //起止时间
- string[] time = new string[2];
- if (listoa[b].Time.Contains('—'))
- {
- time = listoa[b].Time.Split('—');
- }
- else if (listoa[b].Time.Contains('-'))
- {
- time = listoa[b].Time.Split('-');
- }
- //添加数据
- if (time.Length >= 2)
- {
- OA_DataTable.Rows.Add(time[0], time[1], listoa[b].Client, listoa[b].Address, listoa[b].Contact, listoa[b].Tel, listoa[b].Dresscode, listoa[b].IsNeedTrans, listoa[b].Language);
- }
- else
- {
- //PublicCode.GetAlertMsg(this, GetType(), timeList[i] + "的公务数据有误,请检查");
- }
- }
- //排序
- OA_DataTable.DefaultView.Sort = "StartTime asc";
- OA_DataTable = OA_DataTable.DefaultView.ToTable();
- //导入信息
- for (int index = 0; index < OA_DataTable.Rows.Count; index++)
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- if (OATemp != "")
- {
- OATemp = OATemp + "\r\n"
- + OA_DataTable.Rows[index]["StartTime"].ToString()
- + "-"
- + OA_DataTable.Rows[index]["EndTime"].ToString()
- + " 拜访" + OA_DataTable.Rows[index]["Client"].ToString()
- + ",联系人:" + OA_DataTable.Rows[index]["Contact"].ToString()
- + ",电话:" + OA_DataTable.Rows[index]["Tel"].ToString()
- + ",地址:" + OA_DataTable.Rows[index]["Address"].ToString()
- + ",着装要求:" + OA_DataTable.Rows[index]["Dresscode"].ToString()
- + ",是否需要翻译:" + (bool.Parse(OA_DataTable.Rows[index]["isTranslate"].ToString()) ? "需要翻译人员" + "翻译语种为" + OA_DataTable.Rows[index]["Language"].ToString() : "不需要翻译人员")
- + ",议题:-";
- }
- else
- {
- OATemp = OA_DataTable.Rows[index]["StartTime"].ToString()
- + "-"
- + OA_DataTable.Rows[index]["EndTime"].ToString()
- + " 拜访" + OA_DataTable.Rows[index]["Client"].ToString()
- + ",联系人:" + OA_DataTable.Rows[index]["Contact"].ToString()
- + ",电话:" + OA_DataTable.Rows[index]["Tel"].ToString()
- + ",地址:" + OA_DataTable.Rows[index]["Address"].ToString()
- + ",着装要求:" + OA_DataTable.Rows[index]["Dresscode"].ToString()
- + ",是否需要翻译:" + (bool.Parse(OA_DataTable.Rows[index]["isTranslate"].ToString()) ? "需要翻译人员" + "翻译语种为" + OA_DataTable.Rows[index]["Language"].ToString() : "不需要翻译人员")
- + ",议题:-";
- }
- }
- else
- {
- //导入公务
- trip = trip + "\r\n"
- + OA_DataTable.Rows[index]["StartTime"].ToString()
- + "-"
- + OA_DataTable.Rows[index]["EndTime"].ToString()
- + " 拜访" + OA_DataTable.Rows[index]["Client"].ToString()
- + ",联系人:" + OA_DataTable.Rows[index]["Contact"].ToString()
- + ",电话:" + OA_DataTable.Rows[index]["Tel"].ToString()
- + ",地址:" + OA_DataTable.Rows[index]["Address"].ToString()
- + ",着装要求:" + OA_DataTable.Rows[index]["Dresscode"].ToString()
- + ",是否需要翻译:" + (bool.Parse(OA_DataTable.Rows[index]["isTranslate"].ToString()) ? "需要翻译人员" + "翻译语种为" + OA_DataTable.Rows[index]["Language"].ToString() : "不需要翻译人员")
- + ",议题:-";
- }
- //当天第一个公务或许都是从酒店出发,因此可计算酒店到公务地址的距离和时间
- if (index == 0)
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, h.HotelAddress, OA_DataTable.Rows[0]["Address"].ToString());
- if (g != null)
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- trip = trip + "。 (" + g.Distance + "," + g.Time + ")";
- }
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(h.HotelAddress, OA_DataTable.Rows[0]["Address"].ToString());
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- else
- {
- trip = trip + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = h.HotelAddress;
- gtemp.EndAddress = OA_DataTable.Rows[0]["Address"].ToString();
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (谷歌接口异常,无法测算路程时间)";
- }
- else
- {
- trip = trip + "。 (谷歌接口异常,无法测算路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- //第二个公务是由中午的餐厅前往公务地址,具有随机性,因此不计算此方向距离时间;但可计算由公务地址回酒店的信息
- else
- {
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))
- {
- //利用谷歌API计算路线
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, OA_DataTable.Rows[index]["Address"].ToString(), h.HotelAddress);
- if (g != null)
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + g.Distance + "," + g.Time + ")";
- }
- else
- {
- trip = trip + "。 (" + g.Distance + "," + g.Time + ")";
- }
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(OA_DataTable.Rows[index]["Address"].ToString(), h.HotelAddress);
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- else
- {
- trip = trip + "。 (" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- }
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = OA_DataTable.Rows[0]["Address"].ToString();
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- if (i == 0)//行程第一天的公务放在酒店后面,所以先暂存在一个变量里
- {
- OATemp = OATemp + "。 (谷歌接口异常,无法测算路程时间)";
- }
- else
- {
- trip = trip + "。 (谷歌接口异常,无法测算路程时间)";
- }
- }
- }
- }
- }
- #endregion
- }
- }
- }
- #endregion
- #region 酒店
- foreach (HotelReservations h in listht)
- {
- if (Convert.ToDateTime(h.CheckInDate) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(h.CheckOutDate) > Convert.ToDateTime(timeList[i]))//不去“》=”的原因是行程最后一天一般不会有酒店
- {
- //利用谷歌API计算路线
- if (AirPort != "")
- {
- GoogleMapApiResult g = gmrs.GetByDiidAddress(di.Id, AirPort, h.HotelAddress);
- if (g != null)
- {
- trip = trip + "\r\n"
- + leaveAirPortTime + " 乘车前往酒店:(" + g.Distance + "," + g.Time + ")";
- //计算“抵达酒店办理入住手续”的时间
- string CheckInHotelTime;
- //处理时间格式
- string hours = "", mins = "";
- if (g.Time.Contains("hour"))
- {
- g.Time = g.Time.Replace("hour", "h");
- }
- else if (g.Time.Contains("hours"))
- {
- g.Time = g.Time.Replace("hours", "h");
- }
- g.Time = g.Time.Replace("mins", "m");
- if (g.Time.Contains("h"))
- {
- hours = g.Time.Split('h')[0].Trim();
- }
- else if (!g.Time.Contains("h"))
- {
- mins = g.Time.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- min = min + Convert.ToInt32(mins);
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hours != "")
- {
- hour = hour + Convert.ToInt32(hours);
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- CheckInHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckInHotelTime = CheckInHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckInHotelTime + " 抵达酒店办理入住手续";
- }
- else
- {
- try
- {
- JObject Result = PublicCode.GetDirectionByGoogleApi(AirPort, h.HotelAddress);
- trip = trip + "\r\n"
- + leaveAirPortTime + " 乘车前往酒店:(" + Result["routes"][0]["legs"][0]["distance"]["text"].ToString() + ","
- + Result["routes"][0]["legs"][0]["duration"]["text"].ToString() + ")";
- //计算“抵达酒店办理入住手续”的时间
- string CheckInHotelTime;
- //处理时间格式
- string Gtime = "", hours = "", mins = "";
- if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hour"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hour", "h");
- }
- else if (Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Contains("hours"))
- {
- Gtime = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace("hours", "h");
- }
- Gtime = Gtime.Replace("mins", "m");
- if (!string.IsNullOrEmpty(Gtime) && Gtime.Contains("h"))
- {
- hours = Gtime.Split('h')[0].Trim();
- }
- else if (!string.IsNullOrEmpty(Gtime) && !Gtime.Contains("h"))
- {
- mins = Gtime.Split('m')[0].Trim();
- }
- int hour = Convert.ToInt32(leaveAirPortTime.Substring(0, 2));
- int min = Convert.ToInt32(leaveAirPortTime.Substring(3, 2));
- if (mins != "")
- min = min + Convert.ToInt32(mins);
- if (min > 59)
- {
- min = min - 60;
- hour = hour + 1;
- }
- if (hours != "")
- {
- hour = hour + Convert.ToInt32(hours);
- }
- if (hour > 23)
- {
- hour = hour - 24;
- }
- CheckInHotelTime = hour < 10 ? "0" + hour.ToString() : hour.ToString();
- CheckInHotelTime = CheckInHotelTime + ":" + (min < 10 ? "0" + min.ToString() : min.ToString());
- trip = trip + "\r\n"
- + CheckInHotelTime + " 抵达酒店办理入住手续";
- GoogleMapApiResult gtemp = new GoogleMapApiResult();
- gtemp.Diid = di.Id;
- gtemp.Date = "";
- gtemp.Moment = "";
- gtemp.StartAddress = AirPort;
- gtemp.EndAddress = h.HotelAddress;
- gtemp.Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- gtemp.Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
- gmrs.Add(gtemp);
- }
- catch
- {
- trip = trip + "\r\n"
- + " (谷歌接口异常,无法测算的路程时间)";
- }
- }
- }
- trip = trip + "\r\n"
- + " 酒店名称:" + h.HotelName + "\r\n"
- + " 酒店地址:" + h.HotelAddress + "\r\n"
- + " 酒店电话:" + h.HotelTel + " 酒店传真:" + (h.HotelFax == "" ? "-" : h.HotelFax);
- if (i == 0 && !string.IsNullOrEmpty(OATemp))
- {
- trip = trip + "\r\n" + OATemp;
- }
- }
- }
- #endregion
- #region 当天交通工具赋值
- //一般行程第一天都是先乘坐飞机后乘坐汽车
- if (i == 0)
- {
- tlTemp.Traffic_First = "飞机";
- tlTemp.Traffic_Second = "汽车";
- }
- else
- {
- // 根据车导地接表数据判断交通工具:汽车
- List<CarTouristGuideGroundReservations> ListCar = listctg.FindAll(c => Convert.ToDateTime(c.ServiceStartTime) <= Convert.ToDateTime(timeList[i])
- && Convert.ToDateTime(c.ServiceEndTime) >= Convert.ToDateTime(timeList[i]));
- //交通工具:汽车
- if (ListCar.Count > 0)
- {
- tlTemp.Traffic_First = "汽车";
- //交通工具:飞机
- if (airSign == true)
- {
- tlTemp.Traffic_Second = "飞机";
- }
- else
- {
- tlTemp.Traffic_Second = "";
- }
- }
- else
- {
- tlTemp.Traffic_First = "汽车";
- //交通工具:飞机
- if (airSign == true)
- {
- tlTemp.Traffic_Second = "飞机";
- }
- else
- {
- tlTemp.Traffic_Second = "";
- }
- }
- }
- #endregion
- tlTemp.Trip = trip;
- tlTemp.OPer = di.Id;
- tlTemp.OPdate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
- //tlTemp.OPdate = PublicCode.GetBeijingTime().ToString("yyyy-MM-dd hh:mm:ss");
- tlTemp.issel = 1;
- tlTemp.diffgroup = 1;
- tlTemp.Isdel = 0;
- tls.AddTravelList(tlTemp);
- }
- }
- }
- catch (Exception ex)
- {
- //Response.Write(ex.Message.ToString());
- lblImport.Text = ex.Message;
- }
- lblImport.Text = "数据录入完成";
- }
- }
- private string pushTrip(string timeStr, string startAddress , string endAddress , out string timeOut)
- {
- startAddress = startAddress.Trim().Replace("(此地区为黄热病地区,请注意打疫苗)","");
- endAddress = endAddress.Trim().Replace("(此地区为黄热病地区,请注意打疫苗)", "");
- decimal conversion = 1.61M;
- DateTime tripTime = DateTime.Parse(timeStr).AddHours(-1);
- endAddress = endAddress.TrimStart('/');
- string CheckoutHotelTime = string.Empty;
- string endCity = string.Empty;
- if (endAddress.Contains("/"))
- {
- endCity = endAddress.Split('/')[1] + "市区";
- }
- else
- {
- endCity = endAddress + "市区";
- }
- string Time = string.Empty;
- string Distance = string.Empty;
- int GetGoogleResult = 0;
- JObject Result = null;
- try
- {
- Result = PublicCode.GetDirectionByGoogleApi(startAddress, endCity);
- Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString();
- Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString();
-
- if (Time.Contains("hours"))
- {
- Time = Time.Replace("hours", "小时");
- }
- else if (Time.Contains("hour"))
- {
- Time = Time.Replace("hour", "小时");
- }
- Time = Time.Replace("mins", "分钟");
- if (Time.Contains("小时"))
- {
- GetGoogleResult = int.Parse(Regex.Split(Regex.Split(Time, "小时")[1], "分钟")[0]);
- }
- else if (Time.Contains("分钟"))
- {
- GetGoogleResult = int.Parse(Regex.Split(Time,"分钟")[0]);
- }
- if (Distance.Contains("mi"))
- {
- var distSp = Regex.Split(Distance, "mi");
- if (distSp.Length > 0)
- {
- Distance = (decimal.Parse(distSp[0]) * conversion).ToString("#0.00") + " 公里";
- }
- }
- else if (Distance.Contains("km"))
- {
- Distance = Distance.Replace("km", "公里");
- }
- Time = Time.Replace(" ", "");
- Distance = Distance.Replace(" ", "");
- }
- catch (Exception e)
- {
- Time = "未知!";
- Distance = "未知!";
- }
- string trip = string.Empty;
- if (timeStr.Contains(":"))
- {
- int H = tripTime.Hour;
- int M = tripTime.Minute;
- if (H < 12)
- {
- tripTime = tripTime.AddMinutes(90);
- CheckoutHotelTime = tripTime.ToString("HH:mm");
- trip += $"\r\n{CheckoutHotelTime} 搭乘专车前往市区";
- trip += $"({startAddress} - {endCity} 路程{Distance},耗时{Time})";
- if (H <= 13)
- {
- tripTime = tripTime.AddMinutes(GetGoogleResult);
- trip += $"\r\n{tripTime.ToString("HH:mm")} 午餐于当地餐厅;";
- }
- }
- else if ( H == 12 && M <= 30)
- {
- tripTime = tripTime.AddMinutes(90);
- CheckoutHotelTime = tripTime.ToString("HH:mm");
- trip += $"\r\n{CheckoutHotelTime} 搭乘专车前往市区";
- trip += $"({startAddress} - {endCity} 路程{Distance},耗时{Time})";
- if (H <= 13)
- {
- tripTime = tripTime.AddMinutes(GetGoogleResult);
- trip += $"\r\n{tripTime.ToString("HH:mm")} 午餐于当地餐厅;";
- }
- }
- else if (H >= 14)
- {
- tripTime = tripTime.AddMinutes(90);
- CheckoutHotelTime = tripTime.ToString("HH:mm");
- trip += $"\r\n{CheckoutHotelTime} 搭乘专车前往市区;";
- trip += $"({startAddress} - {endCity} 路程{Distance},耗时{Time})";
- tripTime = DateTime.Parse(CheckoutHotelTime).AddMinutes(GetGoogleResult);
- trip += $"\r\n{tripTime.ToString("HH:mm")} 晚餐于当地餐厅;";
- }
- }
- timeOut = tripTime.AddMinutes(60).ToString("HH:mm");
- return trip;
- }
- }
- }
|