123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
- using System.Xml.Linq;
- using Newtonsoft.Json.Linq;
- using Newtonsoft.Json;
- using System.Net.Http;
- using System.Globalization;
- using System.Drawing;
- using Aspose.Words;
- using System.IO;
- using System.Threading;
- using static System.Net.Mime.MediaTypeNames;
- using System.Drawing.Drawing2D;
- using travelExport.utility;
- using Aspose.Words.Tables;
- using System.Data.Entity.Migrations.Builders;
- using System.IO.Ports;
- using System.Reflection;
- namespace travelExport
- {
- public partial class Home : Form
- {
- readonly static oa2023DBEntities db = new oa2023DBEntities();
- static List<Grp_DelegationInfo> soure = new List<Grp_DelegationInfo>();
- readonly static string[] weekdays = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
- const decimal conversion = 1.61M;
- readonly static string[] excludeArr = new string[] { "[中转]", "[转机]" };
- public List<TripItem> dropDownItem = new List<TripItem>
- {
- new TripItem
- {
- Id = 1,
- Name = "默认行程模板",
- Path = "C:\\日行程3.docx#D:\\日行程3.docx"
- },
- new TripItem
- {
- Id = 2,
- Name = "贵州行程模板",
- Path = "C:\\贵州行程模板.docx#D:\\贵州行程模板1.docx"
- },
- };
- public class TripItem
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public string Path { get; set; }
- }
- public enum textTypeEnum
- {
- 标题 = 0 , 内容 = 1
- };
- public class textType
- {
- public textTypeEnum Type { get; set; }
- public string Value { get; set; }
- }
- public Home()
- {
- InitializeComponent();
- Task.Run(() => {
- if (versions.checkVersions())
- {
- // 在主线程中显示消息框
- this.Invoke((MethodInvoker) delegate {
- var result = MessageBoxEx.Show(this, "有新版本可用,是否更新!", "更新提示!", MessageBoxButtons.YesNo);
- // 这里可以处理用户点击按钮后的逻辑
- HandleUpdateResponse(result);
- });
- }
- });
- }
- private void HandleUpdateResponse(DialogResult result)
- {
- // 处理用户的选择
- if (result == DialogResult.Yes)
- {
- // 用户选择“是”,进行更新
- }
- else
- {
- // 用户选择“否”,不进行更新
- }
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- soure = db.Grp_DelegationInfo.Where(x => x.IsDel == 0).ToList();
- comb_Delegation.ValueMember = "Id";
- comb_Delegation.DisplayMember = "TeamName";
- comb_Delegation.Items.AddRange(soure.ToArray());
- comb_Delegation.DropDownHeight = 200;
- comb_Delegation.MouseClick += comb_Delegation_MouseClick;
- comb_Delegation.TextUpdate += comb_Delegation_TextUpdate;
- FormBorderStyle = FormBorderStyle.FixedSingle;
- MinimizeBox = false;
- MaximizeBox = false;
- tripItemSelect.DataSource = dropDownItem;
- tripItemSelect.ValueMember = "Id";
- tripItemSelect.DisplayMember = "Name";
- tripItemSelect.DropDownStyle = ComboBoxStyle.DropDownList;
- }
- private void comb_Delegation_MouseClick(object sender, MouseEventArgs e)
- {
- comb_Delegation.Text = "";
- comb_Delegation_TextUpdate(sender, e);
- comb_Delegation.DropDownHeight = 200;
- comb_Delegation.DroppedDown = true;
- }
- private void comb_Delegation_TextUpdate(object sender, EventArgs e)
- {
- ComboBox cb = (ComboBox)sender;
- cb.DataSource = null;
- cb.Items.Clear();
- string s = cb.Text;
- var bindList = soure.Where(item => item.TeamName != null && item.TeamName.Contains(s)).ToList();
- if (bindList.Count >= 1) // 存在符合条件的内容
- {
- this.comb_Delegation.Items.AddRange(bindList.ToArray());
- }
- else
- {
- this.comb_Delegation.Items.Add(new Grp_DelegationInfo { TeamName = "", Id = -1 });
- }
- cb.SelectionStart = cb.Text.Length; // 设置光标位置,若不设置:光标位置始终保持在第一列,造成输入关键词的倒序排列
- cb.Cursor = Cursors.Default; //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置
- cb.MaxDropDownItems = 8; // 自动弹出下拉框
- }
- private async void btnImport_Click(object sender, EventArgs e)
- {
- var tripTempValue = tripItemSelect.SelectedValue;
- if (!int.TryParse(tripTempValue.ToString() , out int tempValue))
- {
- MessageBoxEx.Show("请选择模板类型!");
- return;
- }
- var diid = -1;
- try
- {
- var dele = (comb_Delegation.SelectedItem as Grp_DelegationInfo);
- diid = dele.Id;
- }
- catch (Exception)
- {
- //lblImport.Text = "请正确的选择团组!";
- //lblImport.ForeColor = Color.Black;
- MessageBoxEx.Show(this,"请正确的选择团组!","提示");
- return;
- }
- //GetAllCity(diid);
- DataTable resultTable = null;
- try
- {
- resultTable = GetTableByBlackCode(diid);
- }
- catch (Exception ex)
- {
- MessageBoxEx.Show(this, "黑屏代码有误!" + ex.Message, "提示");
- return;
- }
- if (resultTable.Rows.Count == 0 || string.IsNullOrWhiteSpace(resultTable.Rows[0][1].ToString()))
- {
- MessageBoxEx.Show(this, "黑屏代码有误! " , "提示");
- return;
- }
- foreach (DataRow row in resultTable.Rows)
- {
- if (!string.IsNullOrWhiteSpace(row["Error"].ToString()))
- {
- MessageBoxEx.Show(this, "黑屏代码有误! " + row["Error"].ToString(), "提示");
- return;
- }
- }
- var isVPN = await Task.Run(() =>
- {
- var isVpn = GetDirectionByGoogleApi("北京", "上海");
- if (Convert.ToInt32(isVpn["code"]) == -1)
- {
- return false;
- }
- return true;
- });
- if (!isVPN) { MessageBoxEx.Show(this, "请打开VPN!"); return ; }
- var timeArr = GetTimeListByDataTable(resultTable);
- ChildThreadExceptionHandler wt = new
- ChildThreadExceptionHandler((msg) =>
- {
- if (this.InvokeRequired)
- {
- this.Invoke(new Action(() =>
- {
- MessageBoxEx.Show(this, msg);
- }));
- }
- else
- {
- MessageBoxEx.Show(this, msg);
- }
- });
- //本团行程单数据
- List<Grp_TravelList> listTravel = db.Grp_TravelList.Where(x => x.Diid == diid && x.IsDel == 0).ToList();
- Thread threadExec = new Thread(() =>
- {
- try
- {
- using (var sw = db.Database.BeginTransaction())
- {
- db.Grp_TravelList.RemoveRange(listTravel);
- db.SaveChanges();
- var NewListTravel = new List<Grp_TravelList>();
- var index = 1;
- var stopCity = string.Empty;
- foreach (var item in timeArr)
- {
- string tripGuiZhou = string.Empty;
- string trip = string.Empty;
- string weekDay = string.Empty;
- DateTime time = DateTime.Now;
- if (DateTime.TryParse(item, out time))
- {
- weekDay = weekdays[(int)time.DayOfWeek];
- }
- else
- {
- weekDay = "日期格式不正确!";
- }
- var empty = "【未收入该三字码!请机票同事录入】";
- var tabSelect = resultTable.Select(string.Format("Day = '{0}'", item));
- var isMoreTraffic = false;
- if (tabSelect.Length > 0)
- {
- isMoreTraffic = true;
- var takeOffTime = DateTime.Parse(item);
- var fallToTime = DateTime.Parse(item);
- Res_ThreeCode start_Object = null;
- Res_ThreeCode end_Object = null;
- bool isTrade = false;
- foreach (var tabRow in tabSelect)
- {
- takeOffTime = DateTime.Parse(item);
- fallToTime = DateTime.Parse(item);
- var takeOff = tabRow["StartTime"].ToString();
- var fallTo = tabRow["EndTime"].ToString();
-
- takeOffTime = takeOffTime.AddHours(int.Parse(takeOff.Substring(0, 2)));
- takeOffTime = takeOffTime.AddMinutes(int.Parse(takeOff.Substring(2, 2)));
-
- fallToTime = fallToTime.AddHours(int.Parse(fallTo.Substring(0, 2)));
- fallToTime = fallToTime.AddMinutes(int.Parse(fallTo.Substring(2, 2)));
- var threeCode = tabRow["Three"].ToString();
- var start = threeCode.Substring(0, 3);
- var end = threeCode.Substring(3, 3);
- stopCity = end;
- start_Object = db.Res_ThreeCode.FirstOrDefault(x => x.Three.ToUpper() == start.ToUpper());
- end_Object = db.Res_ThreeCode.FirstOrDefault(x => x.Three.ToUpper() == end.ToUpper());
- if (start_Object == null)
- {
- start_Object = new Res_ThreeCode()
- {
- AirPort = empty,
- AirPort_En = empty,
- City = empty,
- Country = empty,
- Four = empty,
- Three = empty,
- };
- }
- if (end_Object == null)
- {
- end_Object = new Res_ThreeCode()
- {
- AirPort = empty,
- AirPort_En = empty,
- City = empty,
- Country = empty,
- Four = empty,
- Three = empty,
- };
- }
- //航班号
- string flightcode = tabRow["Fliagtcode"].ToString();
- if (isTrade)
- {
- trip += "\r\n";
- }
- trip += $"{start_Object.City}/{end_Object.City}\r\n";
- if (!isTrade)
- {
- //--提前俩个小时
- trip += $"{takeOffTime.AddHours(-2).ToString("HH:mm")} 抵达{start_Object.AirPort}{tabRow["StartBuilding"].ToString().Trim()}航站楼,办理登机手续:\r\n";
- }
- var aircompany = db.Res_AirCompany.FirstOrDefault(x => x.ShortCode.ToUpper() == flightcode.Substring(0, 2).ToUpper() && x.IsDel == 0);
- var hsEmpty = "【此航司" + flightcode.Substring(0, 2).ToUpper() + "未收录,请机票同事录入】";
- if (aircompany == null)
- {
- aircompany = new Res_AirCompany
- {
- CnName = hsEmpty,
- EnName = hsEmpty,
- ShortCode = hsEmpty,
- };
- }
- //机型判断
- string airModel = tabRow["AirModel"].ToString();
- airModel = GetLonger(airModel.Substring(0, 1)) + airModel;
- string flightTime = tabRow["FlightTime"].ToString();
- if (flightTime.Contains(":"))
- {
- flightTime = flightTime.Replace(":", "小时");
- flightTime += "分钟";
- }
- if (flightTime.Contains("H"))
- {
- flightTime = flightTime.Replace("H", "小时");
- }
- if (flightTime.Contains("M"))
- {
- flightTime = flightTime.Replace("M", "分钟");
- }
- trip += $"{takeOffTime.ToString("HH:mm")} 搭乘{aircompany.CnName}{tabRow[0].ToString().Trim()}航班,由{start_Object.City}飞往{end_Object.City};\r\n ({start_Object.AirPort}/{end_Object.AirPort} 机型:{airModel} 飞行时间{flightTime});\r\n";
- tripGuiZhou += $"{takeOffTime.ToString("HH:mm")} 乘坐{aircompany.CnName}从{start_Object.City}{start_Object.AirPort}飞往{end_Object.City}{end_Object.AirPort};\r\n";
- isTrade = Convert.ToBoolean(tabRow["isTransitShipment"]);
- tripGuiZhou += $"{fallToTime.ToString("HH:mm")} 到达{end_Object.AirPort}\r\n";
- if (isTrade)
- {
- trip += $"{fallToTime.ToString("HH:mm")} 抵达{end_Object.AirPort}{tabRow["EndBuilding"].ToString().Trim()}航站楼(中转时间:行李直达)";
- }
- else
- {
- trip += $"{fallToTime.ToString("HH:mm")} 抵达{end_Object.AirPort}{tabRow["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\r\n";
- }
- }
- //var airArrive = fallToTime; //航班落地时间
- time = fallToTime.AddHours(1.5); //出机场一个半小时
- string Time = string.Empty;
- string Distance = string.Empty;
- int GetGoogleResult = 0;
- int GetDistResult = 0;
- JObject Result = null;
- try
- {
- Result = GetDirectionByGoogleApi(end_Object.AirPort, end_Object.City + "市区");
- Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace(" ", "").Trim();
- Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString().Replace(" ", "").Trim();
- if (Time.Contains("hours"))
- {
- Time = Time.Replace("hours", "小时");
- }
- if (Time.Contains("hour"))
- {
- Time = Time.Replace("hour", "小时");
- }
- Time = Time.Replace("mins", "分钟");
- if (Distance.Contains("mi"))
- {
- var distSp = Regex.Split(Distance, "mi");
- if (distSp.Length > 0)
- {
- Distance = (decimal.Parse(distSp[0]) * conversion).ToString("#0.00") + " 公里";
- }
- }
- if (Distance.Contains("km"))
- {
- Distance = Distance.Replace("km", "公里");
- }
- if (Time.Contains("小时"))
- {
- var xs = Regex.Split(Time, "小时");
- var xsValue = int.Parse(xs[0]);
- var fz = Regex.Split(xs[1], "分钟");
- var fzValue = int.Parse(fz[0]);
- GetGoogleResult = xsValue * 60;
- GetGoogleResult += fzValue;
- }
- else if (Time.Contains("分钟"))
- {
- GetGoogleResult = int.Parse(Regex.Split(Time, "分钟")[0]);
- }
- if (Distance.Contains("公里"))
- {
- GetDistResult = (int)decimal.Parse(Regex.Split(Distance, "公里")[0]);
- }
- if (GetGoogleResult > 0 && GetGoogleResult % 5 != 0)
- {
- while (GetGoogleResult % 5 != 0)
- {
- GetGoogleResult++;
- }
- }
- if (GetDistResult % 5 != 0 && GetDistResult > 0)
- {
- while (GetDistResult % 5 != 0)
- {
- GetDistResult++;
- }
- }
- int H = (GetGoogleResult / 60);
- int m = (GetGoogleResult % 60);
- string TimeStr = string.Empty;
- if (H != 0)
- {
- if (H < 10)
- {
- TimeStr += "0" + H + "小时";
- }
- else
- {
- TimeStr += H + "小时";
- }
- }
- if (m < 10)
- {
- TimeStr += "0" + m + "分钟";
- }
- else
- {
- TimeStr += m + "分钟";
- }
- Time = TimeStr;
- Distance = GetDistResult.ToString() + "公里";
- }
- catch (Exception ex)
- {
- Time = "未知!";
- Distance = "未知!";
- }
- trip += $"{time.ToString("HH:mm")} 搭乘专车前往市区({end_Object.AirPort} - {end_Object.City}市区 路程{Distance},耗时{Time})";
- time = time.AddMinutes(GetGoogleResult); //到达市区时间
- if (index != timeArr.Count)
- {
- tripGuiZhou += $"{fallToTime.AddMinutes(10).ToString("HH:mm")} ";
- tripGuiZhou += "从机场赴入住酒店";
- }
- if (index == timeArr.Count)
- {
- trip += "圆满结束此次访问之行!";
- NewListTravel.Add(new Grp_TravelList
- {
- CreateTime = DateTime.Now,
- CreateUserId = 0,
- Diid = diid,
- Date = Convert.ToDateTime(item).ToString("M月d日"),
- Trip = tempValue == 1 ? trip : tempValue == 2 ? tripGuiZhou : "",
- WeekDay = weekDay,
- Days = index,
- Traffic_First = "飞机",
- Traffic_Second = "汽车",
- Diffgroup = 1,
- Issel = 1,
- IsDel = 0,
- });
- continue;
- }
- if (time.Day != fallToTime.Day) //超出一天
- {
- NewListTravel.Add(new Grp_TravelList
- {
- CreateTime = DateTime.Now,
- CreateUserId = 0,
- Diid = diid,
- Date = Convert.ToDateTime(item).ToString("M月d日"),
- Trip = tempValue == 1 ? trip : tempValue == 2 ? tripGuiZhou : "",
- WeekDay = weekDay,
- Days = index,
- Traffic_First = "飞机",
- Traffic_Second = "汽车",
- Diffgroup = 1,
- Issel = 1,
- IsDel = 0,
- });
- continue;
- }
- if (time.Hour < 9) // && (airArrive < new DateTime(airArrive.Year,airArrive.Month,airArrive.Day,6, 30, 0))
- {
- trip += @"
- 09:00 公务活动;
- 10:30 公务活动;";
- }
- else if (time.Hour < 10)
- {
- trip += @"
- 10:30 公务活动;";
- }
- if (time.Hour < 13)
- {
- trip += $"\r\n{time.ToString("HH:mm")} 午餐于当地餐厅;";
- }
- if (time < new DateTime(time.Year, time.Month, time.Day, 14, 30, 0))
- {
- trip += @"
- 14:00 公务活动;
- 16:00 公务活动;";
- }
- else if (time.Hour < 16)
- {
- trip += @"
- 16:00 公务活动;";
- }
- if (time.Hour < 18)
- {
- trip += $"\r\n18:00 晚餐于当地餐厅;";
- }
- //time = time.AddHours(1);
- //trip += $"\r\n{time.ToString("HH:mm")} 搭乘专车前往酒店,抵达后办理入住;";
- }
- else
- {
- var end_Object = db.Res_ThreeCode.FirstOrDefault(x => x.Three.ToUpper() == stopCity.ToUpper());
- if (end_Object == null)
- {
- end_Object = new Res_ThreeCode()
- {
- AirPort = empty,
- AirPort_En = empty,
- City = empty,
- Country = empty,
- Four = empty,
- Three = empty,
- };
- }
- trip += $"{end_Object.City}\r\n";
- trip += @"08:00 早餐于酒店;
- 09:00 公务活动;
- 10:30 公务活动;
- 12:00 午餐于当地餐厅;
- 14:00 公务活动;
- 16:00 公务活动;
- 18:00 晚餐于当地餐厅;
- 19:00 入住酒店休息;";
- tripGuiZhou += $"上午\r\n08:30 从酒店出发\r\n09:00 公务活动\r\n12:00 返回酒店\r\n\r\n下午\r\n14:00 公务活动\r\n18:00 返回酒店";
- }
- string[] traffic = new string[] { "汽车", "飞机" };
- if (!isMoreTraffic)
- {
- traffic = new string[] { "汽车", "" };
- }
- NewListTravel.Add(new Grp_TravelList
- {
- CreateTime = DateTime.Now,
- CreateUserId = 0,
- Diid = diid,
- Date = Convert.ToDateTime(item).ToString("M月d日"),
- Trip = tempValue == 1 ? trip : tempValue == 2 ? tripGuiZhou : "",
- WeekDay = weekDay,
- Days = index,
- Traffic_First = traffic[0],
- Traffic_Second = traffic[1],
- Diffgroup = 1,
- Issel = 1,
- IsDel = 0,
- });
- index++;
- }
- db.Grp_TravelList.AddRange(NewListTravel);
- db.SaveChanges();
- sw.Commit();
- wt.Invoke("数据导入完成!");
- }
- }
- catch (Exception ex)
- {
- wt.Invoke("请等待程序执行!");
- }
- });
- threadExec.Start();
- }
- private void execTemp(int tempValue, int diid, Grp_DelegationInfo di)
- {
- var dropItem = dropDownItem.FirstOrDefault(x => x.Id == tempValue);
- var pathArr = Regex.Split(dropItem.Path, "#").ToList();
- var UsePath = string.Empty;
- foreach (var itemF in pathArr)
- {
- if (File.Exists(itemF))
- {
- UsePath = itemF;
- break;
- }
- }
- if (string.IsNullOrWhiteSpace(UsePath))
- {
- var txtPath = GetApplicationPath() + "\\path.txt";
- if (File.Exists(txtPath))
- {
- //建立文件读取流对象
- StreamReader str = new StreamReader(txtPath);
- List<string> list = new List<string>();
- //获取每行字符
- string line;
- while ((line = str.ReadLine()) != null)
- {
- list.Add(line);
- }
- str.Close();
- foreach (var item in list)
- {
- if (File.Exists(item))
- {
- UsePath = item;
- break;
- }
- }
- }
- else
- {
- using (var sw = File.CreateText(txtPath))
- {
- sw.WriteLine("path"); // 写入字符串
- }
- MessageBoxEx.Show(this, "创建成功!", "请配置文件路径!");
- return;
- }
- }
- var _travelList = db.Grp_TravelList.Where(x => x.IsDel == 0 && x.Diid == diid).ToList();
- //设置源文件
- Document doc = new Document(UsePath);
- // 创建 DocumentBuilder 对象
- DocumentBuilder builder = new DocumentBuilder(doc);
- var titleCount = 1;
- var conterCount = 1;
- var index = 1;
- foreach (var item in _travelList)
- {
- //移动到文档的最后一个段落之后
- builder.MoveToDocumentEnd();
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- // 开始书签
- builder.StartBookmark("title" + titleCount);
- // 设置文本格式为加粗
- builder.Font.Bold = true;
- builder.Font.Name = "KaiTi";
- builder.Font.Size = 18;
- // 插入加粗的文本
- builder.Writeln($"{item.Date}({item.WeekDay},第{index}天)");
- // 结束书签
- builder.EndBookmark("title" + titleCount);
- titleCount++;
- // 在文档末尾插入一个空段落
- builder.Writeln();
- builder.MoveToDocumentEnd();
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
- // 取消文本格加粗
- builder.Font.Bold = false;
- builder.Font.Name = "仿宋";
- // 开始书签
- builder.StartBookmark("conter"+ conterCount);
- // 插入文本
- //builder.Writeln(item.Trip);
- // 解析字符串中的时间和内容部分
- string[] lines = item.Trip.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
- // 使用正则表达式匹配时间格式
- Regex timeRegex = new Regex(@"^\d{2}:\d{2}");
- // 遍历每一行并格式化
- foreach (string line in lines)
- {
- // 使用正则表达式提取时间
- Match match = timeRegex.Match(line.Trim());
- if (match.Success)
- {
- string timePart = match.Value; // 时间部分
- string descriptionPart = line.Substring(match.Length).Trim(); // 描述部分
- // 设置段落格式(制表符分隔时间和描述)
- builder.ParagraphFormat.TabStops.Clear();
- builder.ParagraphFormat.TabStops.Add(new TabStop(50)); // 设置制表符位置为50
- // 插入时间
- builder.Write(timePart + "\t");
- if (descriptionPart.Length > 19)
- {
- builder.Writeln(descriptionPart.Substring(0,19));
- builder.Writeln(" " + descriptionPart.Substring(19));
- }
- else
- {
- // 插入描述并换行
- builder.Writeln(descriptionPart);
- }
- }
- else
- {
- // 如果没有时间,直接插入整段文字
- builder.Writeln(line);
- }
- }
- // 结束书签
- builder.EndBookmark("conter" + conterCount);
- conterCount++;
- builder.Writeln();
- index++;
- }
- CheckAndCenterParagraphs(doc);
- string strFileName = "C:\\OP行程单\\" + di.TeamName + "贵州行程.docx";
- try
- {
- doc.Save(strFileName, Aspose.Words.SaveFormat.Docx);
- MessageBoxEx.Show(this, "文件导出完成!");
- System.Diagnostics.Process.Start("Explorer.exe", "/select," + strFileName);
- }
- catch (Exception ex)
- {
- MessageBoxEx.Show(this, "请关闭打开的文件后重试!");
- }
- }
- private static string GetApplicationPath()
- {
- string path = System.Windows.Forms.Application.StartupPath;
- string folderName = String.Empty;
- while (folderName.ToLower() != "bin")
- {
- path = path.Substring(0, path.LastIndexOf("\\"));
- folderName = path.Substring(path.LastIndexOf("\\") + 1);
- }
- return path.Substring(0, path.LastIndexOf("\\") + 1);
- }
- public async void btnImportInfo()
- {
- var diid = -1;
- try
- {
- var dele = (comb_Delegation.SelectedItem as Grp_DelegationInfo);
- diid = dele.Id;
- }
- catch (Exception)
- {
- //lblImport.Text = "请正确的选择团组!";
- //lblImport.ForeColor = Color.Black;
- MessageBoxEx.Show(this, "请正确的选择团组!", "提示");
- return;
- }
- DataTable resultTable = null;
- try
- {
- resultTable = GetTableByBlackCode(diid);
- }
- catch (Exception ex)
- {
- MessageBoxEx.Show(this, "黑屏代码有误!", "提示");
- return;
- }
- if (resultTable.Rows.Count == 0 || string.IsNullOrWhiteSpace(resultTable.Rows[0][1].ToString()))
- {
- MessageBoxEx.Show(this, "黑屏代码有误! ", "提示");
- return;
- }
- foreach (DataRow row in resultTable.Rows)
- {
- if (!string.IsNullOrWhiteSpace(row["Error"].ToString()))
- {
- MessageBoxEx.Show(this, "黑屏代码有误! " + row["Error"].ToString(), "提示");
- return;
- }
- }
- var isVPN = await Task.Run(() =>
- {
- var isVpn = GetDirectionByGoogleApi("北京", "上海");
- if (Convert.ToInt32(isVpn["code"]) == -1)
- {
- return false;
- }
- return true;
- });
- if (!isVPN) { MessageBoxEx.Show(this, "请打开VPN!"); return; }
- var timeArr = GetTimeListByDataTable(resultTable);
- //本团行程单数据
- List<Grp_TravelList> listTravel = db.Grp_TravelList.Where(x => x.Diid == diid && x.IsDel == 0).ToList();
- ChildThreadExceptionHandler wt = new
- ChildThreadExceptionHandler((msg) =>
- {
- if (this.InvokeRequired)
- {
- this.Invoke(new Action(() =>
- {
- MessageBoxEx.Show(this, msg);
- }));
- }
- else
- {
- MessageBoxEx.Show(this, msg);
- }
- });
- Thread threadExec = new Thread(() =>
- {
- try
- {
- using (var sw = db.Database.BeginTransaction())
- {
- db.Grp_TravelList.RemoveRange(listTravel);
- db.SaveChanges();
- var NewListTravel = new List<Grp_TravelList>();
- var index = 1;
- var stopCity = string.Empty;
- //本团车导地接信息
- var listctg = db.Grp_CarTouristGuideGroundReservations.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
- //本团酒店信息
- var listht = db.Grp_HotelReservations.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
- //公务出访信息
- var listgw = db.Res_OfficialActivities.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
- //邀请公务资料
- var listgwzl = db.Grp_InvitationOfficialActivities.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
- Grp_HotelReservations lastHotel = null;
- foreach (var item in timeArr)
- {
- string trip = string.Empty;
- string weekDay = string.Empty;
- DateTime time = DateTime.Now;
- if (DateTime.TryParse(item, out time))
- {
- weekDay = weekdays[(int)time.DayOfWeek];
- }
- else
- {
- weekDay = "日期格式不正确!";
- }
- var empty = "【未收入该三字码!请机票同事录入】";
- var tabSelect = resultTable.Select(string.Format("Day = '{0}'", item));
- var isMoreTraffic = false;
- if (tabSelect.Length > 0)
- {
- isMoreTraffic = true;
- var takeOffTime = DateTime.Parse(item);
- var fallToTime = DateTime.Parse(item);
- Res_ThreeCode start_Object = null;
- Res_ThreeCode end_Object = null;
- bool isTrade = false;
- foreach (var tabRow in tabSelect)
- {
- takeOffTime = DateTime.Parse(item);
- fallToTime = DateTime.Parse(item);
- var takeOff = tabRow["StartTime"].ToString();
- var fallTo = tabRow["EndTime"].ToString();
- takeOffTime = takeOffTime.AddHours(int.Parse(takeOff.Substring(0, 2)));
- takeOffTime = takeOffTime.AddMinutes(int.Parse(takeOff.Substring(2, 2)));
- fallToTime = fallToTime.AddHours(int.Parse(fallTo.Substring(0, 2)));
- fallToTime = fallToTime.AddMinutes(int.Parse(fallTo.Substring(2, 2)));
- var threeCode = tabRow["Three"].ToString();
- var start = threeCode.Substring(0, 3);
- var end = threeCode.Substring(3, 3);
- stopCity = end;
- start_Object = db.Res_ThreeCode.FirstOrDefault(x => x.Three.ToUpper() == start.ToUpper());
- end_Object = db.Res_ThreeCode.FirstOrDefault(x => x.Three.ToUpper() == end.ToUpper());
- if (start_Object == null)
- {
- start_Object = new Res_ThreeCode()
- {
- AirPort = empty,
- AirPort_En = empty,
- City = empty,
- Country = empty,
- Four = empty,
- Three = empty,
- };
- }
- if (end_Object == null)
- {
- end_Object = new Res_ThreeCode()
- {
- AirPort = empty,
- AirPort_En = empty,
- City = empty,
- Country = empty,
- Four = empty,
- Three = empty,
- };
- }
- //航班号
- string flightcode = tabRow["Fliagtcode"].ToString();
- if (isTrade)
- {
- trip += "\r\n";
- }
- trip += $"{start_Object.City}/{end_Object.City}\r\n";
- //--提前俩个小时
- if (!isTrade)
- {
- //--提前俩个小时
- trip += $"{takeOffTime.AddHours(-2).ToString("HH:mm")} 抵达{start_Object.AirPort}{tabRow["StartBuilding"].ToString().Trim()}航站楼,办理登机手续:\r\n";
- }
- var aircompany = db.Res_AirCompany.FirstOrDefault(x => x.ShortCode.ToUpper() == flightcode.Substring(0, 2).ToUpper() && x.IsDel == 0);
- var hsEmpty = "【此航司" + flightcode.Substring(0, 2).ToUpper() + "未收录,请机票同事录入】";
- if (aircompany == null)
- {
- aircompany = new Res_AirCompany
- {
- CnName = hsEmpty,
- EnName = hsEmpty,
- ShortCode = hsEmpty,
- };
- }
- //机型判断
- string airModel = tabRow["AirModel"].ToString();
- airModel = GetLonger(airModel.Substring(0, 1)) + airModel;
- string flightTime = tabRow["FlightTime"].ToString();
- if (flightTime.Contains(":"))
- {
- flightTime = flightTime.Replace(":", "小时");
- flightTime += "分钟";
- }
- if (flightTime.Contains("H"))
- {
- flightTime = flightTime.Replace("H", "小时");
- }
- if (flightTime.Contains("M"))
- {
- flightTime = flightTime.Replace("M", "分钟");
- }
- trip += $"{takeOffTime.ToString("HH:mm")} 搭乘{aircompany.CnName}{tabRow[0].ToString().Trim()}航班,由{start_Object.City}飞往{end_Object.City};\r\n ({start_Object.AirPort}/{end_Object.AirPort} 机型:{airModel} 飞行时间{flightTime});\r\n";
- isTrade = Convert.ToBoolean(tabRow["isTransitShipment"]);
- if (isTrade)
- {
- trip += $"{fallToTime.ToString("HH:mm")} 抵达{end_Object.AirPort}{tabRow["EndBuilding"].ToString().Trim()}航站楼(中转时间:行李直达)";
- }
- else
- {
- trip += $"{fallToTime.ToString("HH:mm")} 抵达{end_Object.AirPort}{tabRow["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\r\n";
- }
- }
- //var airArrive = fallToTime; //航班落地时间
- time = fallToTime.AddHours(1.5); //出机场一个半小时
- string Time = string.Empty;
- string Distance = string.Empty;
- int GetGoogleResult = 0;
- int GetDistResult = 0;
- JObject Result = null;
- try
- {
- Result = GetDirectionByGoogleApi(end_Object.AirPort, end_Object.City + "市区");
- Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace(" ", "").Trim();
- Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString().Replace(" ", "").Trim();
- if (Time.Contains("hours"))
- {
- Time = Time.Replace("hours", "小时");
- }
- if (Time.Contains("hour"))
- {
- Time = Time.Replace("hour", "小时");
- }
- Time = Time.Replace("mins", "分钟");
- if (Distance.Contains("mi"))
- {
- var distSp = Regex.Split(Distance, "mi");
- if (distSp.Length > 0)
- {
- Distance = (decimal.Parse(distSp[0]) * conversion).ToString("#0.00") + " 公里";
- }
- }
- if (Distance.Contains("km"))
- {
- Distance = Distance.Replace("km", "公里");
- }
- if (Time.Contains("小时"))
- {
- var xs = Regex.Split(Time, "小时");
- var xsValue = int.Parse(xs[0]);
- var fz = Regex.Split(xs[1], "分钟");
- var fzValue = int.Parse(fz[0]);
- GetGoogleResult = xsValue * 60;
- GetGoogleResult += fzValue;
- }
- else if (Time.Contains("分钟"))
- {
- GetGoogleResult = int.Parse(Regex.Split(Time, "分钟")[0]);
- }
- if (Distance.Contains("公里"))
- {
- GetDistResult = (int)decimal.Parse(Regex.Split(Distance, "公里")[0]);
- }
- if (GetGoogleResult > 0 && GetGoogleResult % 5 != 0)
- {
- while (GetGoogleResult % 5 != 0)
- {
- GetGoogleResult++;
- }
- }
- if (GetDistResult % 5 != 0 && GetDistResult > 0)
- {
- while (GetDistResult % 5 != 0)
- {
- GetDistResult++;
- }
- }
- int H = (GetGoogleResult / 60);
- int m = (GetGoogleResult % 60);
- string TimeStr = string.Empty;
- if (H != 0)
- {
- if (H < 10)
- {
- TimeStr += "0" + H + "小时";
- }
- else
- {
- TimeStr += H + "小时";
- }
- }
- if (m < 10)
- {
- TimeStr += "0" + m + "分钟";
- }
- else
- {
- TimeStr += m + "分钟";
- }
- Time = TimeStr;
- Distance = GetDistResult.ToString() + "公里";
- }
- catch (Exception ex)
- {
- Time = "未知!";
- Distance = "未知!";
- }
- trip += $"{time.ToString("HH:mm")} 搭乘专车前往市区({end_Object.AirPort} - {end_Object.City}市区 路程{Distance},耗时{Time})";
- time = time.AddMinutes(GetGoogleResult); //到达市区时间
- if (index == timeArr.Count - 1)
- {
- trip += "圆满结束此次访问之行!";
- NewListTravel.Add(new Grp_TravelList
- {
- CreateTime = DateTime.Now,
- CreateUserId = 0,
- Diid = diid,
- Date = Convert.ToDateTime(item).ToString("M月d日"),
- Trip = trip,
- WeekDay = weekDay,
- Days = index,
- Traffic_First = "飞机",
- Traffic_Second = "汽车",
- Diffgroup = 1,
- Issel = 1,
- IsDel = 0,
- });
- continue;
- }
- if (time.Day != fallToTime.Day) //超出一天
- {
- NewListTravel.Add(new Grp_TravelList
- {
- CreateTime = DateTime.Now,
- CreateUserId = 0,
- Diid = diid,
- Date = Convert.ToDateTime(item).ToString("M月d日"),
- Trip = trip,
- WeekDay = weekDay,
- Days = index,
- Traffic_First = "飞机",
- Traffic_Second = "汽车",
- Diffgroup = 1,
- Issel = 1,
- IsDel = 0,
- });
- continue;
- }
- if (time.Hour < 9) // && (airArrive < new DateTime(airArrive.Year,airArrive.Month,airArrive.Day,6, 30, 0))
- {
- var nineTime = GetTimeGwInfo(ref listgw, new DateTime(time.Year,time.Month,time.Day,09,00,00),null);
- var halfPasTen = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 10, 30, 00), null);
- trip += @"
- 09:00 公务活动;
- 10:30 公务活动;";
- if (!string.IsNullOrWhiteSpace(nineTime))
- {
- trip = trip.Replace("09:00 公务活动", nineTime);
- }
- if (!string.IsNullOrWhiteSpace(halfPasTen))
- {
- trip = trip.Replace("10:30 公务活动", halfPasTen);
- }
- }
- else if (time.Hour < 10)
- {
- var halfPasTen = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 10, 30, 00), null);
- trip += @"
- 10:30 公务活动;";
- if (!string.IsNullOrWhiteSpace(halfPasTen))
- {
- trip = trip.Replace("10:30 公务活动", halfPasTen);
- }
- }
- if (time.Hour < 13)
- {
- trip += $"\r\n{time.ToString("HH:mm")} 午餐于当地餐厅;";
- }
- if (time < new DateTime(time.Year, time.Month, time.Day, 14, 30, 0))
- {
- var twoPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 14, 00, 00), null);
- var fourPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 16, 00, 00), null);
- trip += @"
- 14:00 公务活动;
- 16:00 公务活动;";
- if (!string.IsNullOrWhiteSpace(twoPointsPM))
- {
- trip = trip.Replace("14:00 公务活动", twoPointsPM);
- }
- if (!string.IsNullOrWhiteSpace(fourPointsPM))
- {
- trip = trip.Replace("16:00 公务活动", fourPointsPM);
- }
- }
- else if (time.Hour < 16)
- {
- var fourPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 16, 00, 00), null);
- trip += @"
- 16:00 公务活动;";
- if (!string.IsNullOrWhiteSpace(fourPointsPM))
- {
- trip = trip.Replace("16:00 公务活动", fourPointsPM);
- }
- }
- if (time.Hour < 18)
- {
- trip += $"\r\n18:00 晚餐于当地餐厅;";
- }
- //time = time.AddHours(1);
- //trip += $"\r\n{time.ToString("HH:mm")} 搭乘专车前往酒店,抵达后办理入住;";
- }
- else
- {
- var end_Object = db.Res_ThreeCode.FirstOrDefault(x => x.Three.ToUpper() == stopCity.ToUpper());
- if (end_Object == null)
- {
- end_Object = new Res_ThreeCode()
- {
- AirPort = empty,
- AirPort_En = empty,
- City = empty,
- Country = empty,
- Four = empty,
- Three = empty,
- };
- }
- trip += $"{end_Object.City}\r\n";
- trip += $@"08:00 早餐于酒店;{(lastHotel != null? $"(酒店名称:{lastHotel.HotelName})":"")}
- 09:00 公务活动;
- 10:30 公务活动;
- 12:00 午餐于当地餐厅;
- 14:00 公务活动;
- 16:00 公务活动;
- 18:00 晚餐于当地餐厅;
- 19:00 入住酒店休息;";
- var nineTime = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 09, 00, 00), end_Object.City);
- var halfPasTen = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 10, 30, 00), end_Object.City);
- var twoPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 14, 00, 00), end_Object.City);
- var fourPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 16, 00, 00), end_Object.City);
- if (!string.IsNullOrWhiteSpace(nineTime))
- {
- trip = trip.Replace("09:00 公务活动", nineTime);
- }
- if (!string.IsNullOrWhiteSpace(halfPasTen))
- {
- trip = trip.Replace("10:30 公务活动", halfPasTen);
- }
- if (!string.IsNullOrWhiteSpace(twoPointsPM))
- {
- trip = trip.Replace("14:00 公务活动", twoPointsPM);
- }
- if (!string.IsNullOrWhiteSpace(fourPointsPM))
- {
- trip = trip.Replace("16:00 公务活动", fourPointsPM);
- }
- }
- string[] traffic = new string[] { "汽车", "飞机" };
- if (!isMoreTraffic)
- {
- traffic = new string[] { "汽车", "" };
- }
- var htTime = DateTime.Now;
- var htTimeOut = DateTime.Now;
- foreach (var h in listht)
- {
- if (DateTime.TryParse(h.CheckInDate, out htTime) && DateTime.TryParse(h.CheckOutDate, out htTimeOut))
- {
- if (htTime <= Convert.ToDateTime(item)
- && htTimeOut > Convert.ToDateTime(item))
- {
- lastHotel = h;
- #region 酒店详细信息
- //trip += "\r\n00:00 乘车前往酒店";
- //trip += "\r\n00:00 抵达酒店办理入住手续";
- //trip = trip + "\r\n"
- //+ " 酒店名称:" + h.HotelName + "\r\n"
- //+ " 酒店地址:" + h.HotelAddress + "\r\n"
- //+ " 酒店电话:" + h.HotelTel + " 酒店传真:" + (string.IsNullOrWhiteSpace(h.HotelFax) ? "-" : h.HotelFax);
- #endregion
- }
- }
- }
- NewListTravel.Add(new Grp_TravelList
- {
- CreateTime = DateTime.Now,
- CreateUserId = 0,
- Diid = diid,
- Date = Convert.ToDateTime(item).ToString("M月d日"),
- Trip = trip,
- WeekDay = weekDay,
- Days = index,
- Traffic_First = traffic[0],
- Traffic_Second = traffic[1],
- Diffgroup = 1,
- Issel = 1,
- IsDel = 0,
- });
- index++;
- }
- NewListTravel.ForEach(x =>
- {
- x.Trip = x.Trip.Replace("\r\n14:00 公务活动;", string.Empty)
- .Replace("\r\n16:00 公务活动;", string.Empty)
- .Replace("\r\n09:00 公务活动;", string.Empty)
- .Replace("\r\n10:30 公务活动;", string.Empty);
- });
- db.Grp_TravelList.AddRange(NewListTravel);
- db.SaveChanges();
- sw.Commit();
- wt.Invoke("数据导入完成!");
- }
- }
- catch (Exception ex)
- {
- wt.Invoke("请等待程序执行!");
- }
- });
- threadExec.Start();
- }
- private delegate void ChildThreadExceptionHandler(string message);
- private void btnOutput_Click(object sender, EventArgs e)
- {
- var diid = -1;
- try
- {
- var dele = (comb_Delegation.SelectedItem as Grp_DelegationInfo);
- diid = dele.Id;
- }
- catch (Exception)
- {
- //lblImport.Text = "请正确的选择团组!";
- //lblImport.ForeColor = Color.Black;
- MessageBoxEx.Show(this, "请正确的选择团组!", "提示");
- return;
- }
- Grp_DelegationInfo di = db.Grp_DelegationInfo.FirstOrDefault(x => x.Id == diid && x.IsDel == 0);
- if (di == null)
- {
- MessageBoxEx.Show(this,"请选择正确的团组!");
- return;
- }
- var tripTempValue = tripItemSelect.SelectedValue;
- if (!int.TryParse(tripTempValue.ToString(), out int tempValue))
- {
- MessageBoxEx.Show("请选择模板类型!");
- return;
- }
- if (tempValue != 1)
- {
- execTemp(tempValue,diid, di);
- return;
- }
- var _travelList = db.Grp_TravelList.Where(x=>x.IsDel == 0 && x.Diid == diid).ToList();
- var city = GetAllCity(diid);
- //创建数据源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;
- dr["Trip"] = item.Trip;
- dtSource.Rows.Add(dr);
- }
- Dictionary<string, string> dic = new Dictionary<string, string>();
- dic.Add("Dele", di.TeamName.ToString() + GetNum(di.VisitDays.ToString()));
- dic.Add("City", city);
- dic.Add("Days", di.VisitDays.ToString());
- dic.Add("DeleCode", di.TourCode);
- dic.Add("Pnum", di.VisitPNumber.ToString());
- dic.Add("Pnum2", di.VisitPNumber.ToString());
- //模板路径
- 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)
- {
- MessageBoxEx.Show(this, "错误!" + ex.Message);
- return ;
- }
- //删除多余行
- while (tableOne.Rows.Count > 1 + dtSource.Rows.Count)
- {
- tableOne.Rows.RemoveAt(1 + dtSource.Rows.Count);//(1+dtSource.Rows.Count + 1)-1
- }
- string savePath = "C:\\OP行程单\\";
- if (!Directory.Exists(savePath))
- {
- try
- {
- Directory.CreateDirectory(savePath);
- }
- catch
- {
- }
- }
- string strFileName = savePath + di.TeamName + "出访日程.docx";
- try
- {
- doc.Save(strFileName, Aspose.Words.SaveFormat.Doc);
- MessageBoxEx.Show(this, "文件导出完成!");
- System.Diagnostics.Process.Start("Explorer.exe", "/select," + strFileName);
- }
- catch (Exception ex)
- {
- MessageBoxEx.Show(this, "请关闭打开的文件后重试!");
- }
- }
- private string GetAllCity(int diid)
- {
- //城市缓存
- string CityStr = string.Empty;
- DataTable dtBlack = null;
- try
- {
- dtBlack = GetTableByBlackCode(diid);
- }
- catch (Exception ex)
- {
- MessageBoxEx.Show(this, "黑屏代码有误!", "提示");
- return CityStr;
- }
- if (dtBlack.Rows.Count != 0 && (!string.IsNullOrWhiteSpace(dtBlack.Rows[0][0].ToString())))
- {
- var cityThree = new List<string>();
-
- foreach (DataRow item in dtBlack.Rows)
- {
- var three = item["Three"].ToString();
- if (three.Length == 6)
- {
- var start = three.Substring(0, 3);
- var end = three.Substring(3,3);
- var lastEnd = string.Empty;
- if (cityThree.Count != 0)
- {
- lastEnd = cityThree[cityThree.Count-1];
- if (lastEnd != start)
- {
- cityThree.Add(start);
- cityThree.Add(end);
- }
- else
- {
- cityThree.Add(end);
- }
- }
- else
- {
- cityThree.Add(start);
- cityThree.Add(end);
- }
- }
- }
-
- string sql = "select * from Res_ThreeCode a where a.isdel = 0 ";
- if (cityThree .Count == 0)
- {
- sql += "and a.id in (0)";
- }
- else
- {
- sql += $"and a.Three in ('{ string.Join("','",cityThree)}')";
- }
- var resultArr = db.Res_ThreeCode.SqlQuery(sql).ToList();
- cityThree.ForEach(x =>
- {
- var find = resultArr.Find(p => p.Three.ToUpper() == x.ToUpper());
- CityStr += find == null ? $"【{x}三字码未收录】/" : find.City + "/";
- });
- CityStr = CityStr.TrimEnd('/');
- }
- return CityStr;
- }
- /// <summary>
- ///根据机票黑屏代码整理DataTable
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public DataTable GetTableByBlackCode(int diid)
- {
- //黑屏代码信息
- List<Air_TicketBlackCode> listcode = db.Air_TicketBlackCode.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
- //测试数据为序号,航班号,起飞日期,三字码,起飞时刻,到达时刻,出发航站楼,到达航站楼,机型,飞行时间
- //1.3U8391 TU17NOV CTUCAI 0220 0715 T1 T2 330 10H55M
- DataTable dt = new DataTable();
- dt.Columns.Add("Fliagtcode", typeof(string)); //航班号
- dt.Columns.Add("Date", typeof(string));//起飞日期
- dt.Columns.Add("Three", typeof(string));//三字码
- dt.Columns.Add("StartTime", typeof(string));//起飞时刻
- dt.Columns.Add("EndTime", typeof(string));//到达时刻
- dt.Columns.Add("StartBuilding", typeof(string));//出发航站楼
- dt.Columns.Add("EndBuilding", typeof(string));//到达航站楼
- dt.Columns.Add("AirModel", typeof(string)); //机型
- dt.Columns.Add("FlightTime", typeof(string));//飞行时间
- dt.Columns.Add("Day", typeof(string));//整理的起飞日期;作为排序依据
- dt.Columns.Add("ArrivedDate", typeof(string));//整理的到达日期
- dt.Columns.Add("Error", typeof(string));//整理的到达日期
- dt.Columns.Add("Sign", typeof(string));//标识:0表示为原生黑屏代码、1表示“+1”新增的黑屏代码
- //添加转机标识 (中转写在第一趟航班)
- dt.Columns.Add("isTransitShipment", typeof(bool));
- //判断是否录入黑屏代码
- if (listcode.Count() == 0 || listcode == null)
- {
- dt.Rows.Add(null, null, null, null, null, null, null, null, null, null, null, "黑屏代码未录入!", null , false);
- }
- else
- {
- //读取单段黑屏代码
- for (int i = 0; i < listcode.Count; i++)
- {
- //去除序号
- string[] CodeList = Regex.Split(listcode[i].BlackCode, "\\d+\\.", RegexOptions.IgnoreCase);
- //去除多余空格,方法一Linq扩展方法
- CodeList = CodeList.Where(str =>!string.IsNullOrWhiteSpace(str)).ToArray();
-
- //读取单条黑屏代码
- for (int j = 0; j < CodeList.Count(); j++)
- {
- //去除多余空格,方法二使用Split()方法进行分割,分割有一个选项是RemoveEmptyEntries
- CodeList[j] = CodeList[j].Replace("\r\n", string.Empty).Replace("\\r\\n", string.Empty).TrimStart().TrimEnd();
- string[] Info = CodeList[j].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
- //去除多余空格
- Info = Info.Where(str => !string.IsNullOrWhiteSpace(str)).ToArray();
- //判断黑屏代码是否正确拆分; 理应拆成9段
- if (Info.TakeWhile((x) =>
- {
- return !excludeArr.Contains(x);
- }).Count() != 9)
- {
- dt.Rows.Add(null, null, null, null, null, null, null, null, null, null, null, "本团组第" + (i + 1) + "段黑屏代码中第" + (j + 1) + " 条有误,请联系机票同事核对", null, false);
- //MessageBoxEx.Show("第" + (i + 1) + "段黑屏代码中第" + (j + 1) + " 条有误, 请联系机票同事核对");
- return dt;
- }
- else
- {
- try
- {
- var monthEn = Info[1].Substring(4, 3);
- //月
- int month = Convert.ToInt32(GetLonger(monthEn));
- //日
- int day = Convert.ToInt32(Info[1].Substring(2, 2));
- var time = new DateTime(DateTime.Now.Year, month, day); //
- var isExist = Info.Contains("[中转]");
- if (!isExist)
- {
- isExist = Info.Contains("[转机]");
- }
- //dt.Columns.Add("Fliagtcode", typeof(string)); //航班号
- //dt.Columns.Add("Date", typeof(string));//起飞日期
- //dt.Columns.Add("Three", typeof(string));//三字码
- //dt.Columns.Add("StartTime", typeof(string));//起飞时刻
- //dt.Columns.Add("EndTime", typeof(string));//到达时刻
- //dt.Columns.Add("StartBuilding", typeof(string));//出发航站楼
- //dt.Columns.Add("EndBuilding", typeof(string));//到达航站楼
- //dt.Columns.Add("AirModel", typeof(string)); //机型
- //dt.Columns.Add("FlightTime", typeof(string));//飞行时间
- //dt.Columns.Add("Day", typeof(string));//整理的起飞日期;作为排序依据
- //dt.Columns.Add("ArrivedDate", typeof(string));//整理的到达日期
- //dt.Columns.Add("Error", typeof(string));//整理的到达日期
- //dt.Columns.Add("Sign", typeof(string));//标识:0表示为原生黑屏代码、1表示“+1”新增的黑屏代码
- dt.Rows.Add(Info[0],
- Info[1],
- Info[2],
- Info[3],
- Info[4],
- Info[5],
- Info[6],
- Info[7],
- Info[8],
- time.ToString("yyyy-MM-dd"),
- time.ToString("yyyy-MM-dd"),
- "",
- "0",
- isExist
- );
- }
- catch (Exception ex)
- {
- string exstr = ex.Message.ToString();
- }
- }
- }
- //排序
- dt.DefaultView.Sort = "Day asc";
- dt = dt.DefaultView.ToTable();
- }
- }
- return dt;
- }
- public string GetLonger(string temp)
- {
- string str = "";
- switch (temp.ToUpper())
- {
- case "美元":
- str = "USD";
- break;
- case "日元":
- str = "JPY";
- break;
- case "英镑":
- str = "GBP";
- break;
- case "欧元":
- str = "EUR";
- break;
- case "港币":
- str = "HKD";
- break;
- case "MO":
- str = "星期一";
- break;
- case "TU":
- str = "星期二";
- break;
- case "WE":
- str = "星期三";
- break;
- case "TH":
- str = "星期四";
- break;
- case "FR":
- str = "星期五";
- break;
- case "SA":
- str = "星期六";
- break;
- case "SU":
- str = "星期天";
- break;
- case "JAN":
- str = "01";
- break;
- case "FEB":
- str = "02";
- break;
- case "MAR":
- str = "03";
- break;
- case "APR":
- str = "04";
- break;
- case "MAY":
- str = "05";
- break;
- case "JUN":
- str = "06";
- break;
- case "JUL":
- str = "07";
- break;
- case "AUG":
- str = "08";
- break;
- case "SEP":
- str = "09";
- break;
- case "OCT":
- str = "10";
- break;
- case "NOV":
- str = "11";
- break;
- case "DEC":
- str = "12";
- break;
- case "MONDAY":
- str = "星期一";
- break;
- case "TUESDAY":
- str = "星期二";
- break;
- case "WEDNESDAY":
- str = "星期三";
- break;
- case "THURSDAY":
- str = "星期四";
- break;
- case "FRIDAY":
- str = "星期五";
- break;
- case "SATURDAY":
- str = "星期六";
- break;
- case "SUNDAY":
- str = "星期日";
- break;
- case "01":
- str = "JAN";
- break;
- case "02":
- str = "FEB";
- break;
- case "03":
- str = "MAR";
- break;
- case "04":
- str = "APR";
- break;
- case "05":
- str = "MAY";
- break;
- case "06":
- str = "JUN";
- break;
- case "07":
- str = "JUL";
- break;
- case "08":
- str = "AUG";
- break;
- case "09":
- str = "SEP";
- break;
- case "10":
- str = "OCT";
- break;
- case "11":
- str = "NOV";
- break;
- case "12":
- str = "DEC";
- break;
- case "2":
- str = "空客A";
- break;
- case "3":
- str = "空客A";
- break;
- case "7":
- str = "波音";
- break;
- }
- return str;
- }
- public List<string> GetTimeListByDataTable(DataTable dt)
- {
- DateTime datestart = Convert.ToDateTime(dt.Rows[0]["Day"].ToString());
- DateTime dateend = Convert.ToDateTime(dt.Rows[dt.Rows.Count - 1]["ArrivedDate"].ToString());
- List<string> timeList = new List<string>();
- while (datestart <= dateend)
- {
- timeList.Add(datestart.ToString("yyyy-MM-dd"));
- datestart = datestart.AddDays(1);
- }
- return timeList;
- }
- public JObject GetDirectionByGoogleApi(string Origin, string Destination)
- {
- string appkey = "AIzaSyBdLf8u8DinXQWVPLEkdrxOJpClXSqEnho";
- string url = "https://maps.googleapis.com/maps/api/directions/json?origin=" + Origin
- + "&destination=" + Destination + "&key=" + appkey;
- JObject result = null;
- try
- {
- #region 利用HttpWebRequest访问API
- ////创建Web访问对象
- //HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;
- //req.Method = "GET";
- //req.ContentType = "application/json";
- ////创建web响应对象
- //HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
- ////通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
- //StreamReader reader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
- ////如果有编码问题就用这个方法
- ////string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
- ////利用StreamReader就可以从响应内容从头读到尾
- //string returnJson = reader.ReadToEnd();
- ////反序列化
- //result = JsonConvert.DeserializeObject(returnJson) as JObject;
- #endregion
- #region 利用HttpClient访问API
- HttpClient myHttpClient = new HttpClient();
- myHttpClient.Timeout = new TimeSpan(0,0,3);
- HttpResponseMessage response = myHttpClient.GetAsync(url).Result;
- //var content = response.Content.ReadAsAsync<object>().Result;
- var content = response.Content.ReadAsStringAsync().Result;
- result = JObject.Parse(content);
- #endregion
- return result;
- }
- catch (Exception e)
- {
- result = new JObject();
- result.Add("code",-1);
- result.Add("msg",e.Message);
- return result;
- }
- }
- bool IsShengGenGuo(string country,string toCountry)
- {
- bool isTrue = false;
- string[] countries = {
- "德国", "奥地利", "比利时", "捷克共和国", "丹麦", "斯洛伐克", "斯洛文尼亚", "西班牙",
- "爱沙尼亚", "芬兰", "法国", "希腊", "匈牙利", "冰岛", "意大利", "拉脱维亚", "列支敦士登",
- "立陶宛", "卢森堡", "马耳他", "荷兰", "挪威", "波兰", "葡萄牙", "瑞典", "瑞士"
- };
- if (countries.Contains(country) && countries.Contains(toCountry))
- {
- isTrue = true;
- }
- return isTrue;
- }
- private void btnOutputInfo_Click(object sender, EventArgs e)
- {
- btnImportInfo();
- }
- /// <summary>
- /// 根据大写数字返回小写数字或根据小写数字返回大写数字
- /// </summary>
- /// <param name="num"></param>
- /// <returns></returns>
- public string GetNum(string num)
- {
- string str = "";
- switch (num)
- {
- case "1":
- str = "一";
- break;
- case "2":
- str = "二";
- break;
- case "3":
- str = "三";
- break;
- case "4":
- str = "四";
- break;
- case "5":
- str = "五";
- break;
- case "6":
- str = "六";
- break;
- case "7":
- str = "七";
- break;
- case "8":
- str = "八";
- break;
- case "9":
- str = "九";
- break;
- case "10":
- str = "十";
- break;
- case "11":
- str = "十一";
- break;
- case "12":
- str = "十二";
- break;
- case "一":
- str = "1";
- break;
- case "二":
- str = "2";
- break;
- case "三":
- str = "3";
- break;
- case "四":
- str = "4";
- break;
- case "五":
- str = "5";
- break;
- case "六":
- str = "6";
- break;
- case "七":
- str = "7";
- break;
- case "八":
- str = "8";
- break;
- case "九":
- str = "9";
- break;
- case "十":
- str = "10";
- break;
- case "十一":
- str = "11";
- break;
- case "十二":
- str = "12";
- break;
- }
- return str;
- }
- public GoogleApiFormat GetDirectionByGoogleApiFormat(string Origin, string Destination)
- {
- GoogleApiFormat rt = new GoogleApiFormat();
- string Time = string.Empty;
- string Distance = string.Empty;
- int GetGoogleResult = 0;
- int GetDistResult = 0;
- JObject Result = null;
- try
- {
- Result = GetDirectionByGoogleApi(Origin, Destination);
- Time = Result["routes"][0]["legs"][0]["duration"]["text"].ToString().Replace(" ", "").Trim();
- Distance = Result["routes"][0]["legs"][0]["distance"]["text"].ToString().Replace(" ", "").Trim();
- if (Time.Contains("hours"))
- {
- Time = Time.Replace("hours", "小时");
- }
- if (Time.Contains("hour"))
- {
- Time = Time.Replace("hour", "小时");
- }
- Time = Time.Replace("mins", "分钟");
- if (Distance.Contains("mi"))
- {
- var distSp = Regex.Split(Distance, "mi");
- if (distSp.Length > 0)
- {
- Distance = (decimal.Parse(distSp[0]) * conversion).ToString("#0.00") + " 公里";
- }
- }
- if (Distance.Contains("km"))
- {
- Distance = Distance.Replace("km", "公里");
- }
- if (Time.Contains("小时"))
- {
- var xs = Regex.Split(Time, "小时");
- var xsValue = int.Parse(xs[0]);
- var fz = Regex.Split(xs[1], "分钟");
- var fzValue = int.Parse(fz[0]);
- GetGoogleResult = xsValue * 60;
- GetGoogleResult += fzValue;
- }
- else if (Time.Contains("分钟"))
- {
- GetGoogleResult = int.Parse(Regex.Split(Time, "分钟")[0]);
- }
- if (Distance.Contains("公里"))
- {
- GetDistResult = (int)decimal.Parse(Regex.Split(Distance, "公里")[0]);
- }
- if (GetGoogleResult > 0 && GetGoogleResult % 5 != 0)
- {
- while (GetGoogleResult % 5 != 0)
- {
- GetGoogleResult++;
- }
- }
- if (GetDistResult % 5 != 0 && GetDistResult > 0)
- {
- while (GetDistResult % 5 != 0)
- {
- GetDistResult++;
- }
- }
- int H = (GetGoogleResult / 60);
- int m = (GetGoogleResult % 60);
- string TimeStr = string.Empty;
- if (H != 0)
- {
- if (H < 10)
- {
- TimeStr += "0" + H + "小时";
- }
- else
- {
- TimeStr += H + "小时";
- }
- }
- if (m < 10)
- {
- TimeStr += "0" + m + "分钟";
- }
- else
- {
- TimeStr += m + "分钟";
- }
- Time = TimeStr;
- Distance = GetDistResult.ToString() + "公里";
- rt.Time = Time;
- rt.Distance = Distance;
- rt.isTrue = true;
- rt.GetGoogleResult = GetDistResult;
- rt.GetDistResult = GetDistResult;
- }
- catch (Exception ex)
- {
- Time = "未知!";
- Distance = "未知!";
- rt.Time = Time;
- rt.Distance = Distance;
- rt.isTrue = false;
- rt.GetGoogleResult = 0;
- }
- return rt;
- }
- string GetTimeGwInfo(ref List<Res_OfficialActivities> listgw, DateTime gwTime, string nowCity)
- {
- List<Res_OfficialActivitiesFormat> formatResGw = listgw.Select(x => new Res_OfficialActivitiesFormat
- {
- Address = x.Address,
- Attendees = x.Attendees,
- Client = x.Client,
- Contact = x.Contact,
- Date = x.Date,
- DiId = x.DiId,
- CreateTime = x.CreateTime,
- CreateUserId = x.CreateUserId,
- DeleteTime = x.DeleteTime,
- DeleteUserId = x.DeleteUserId,
- Dresscode = x.Dresscode,
- Id = x.Id,
- IsDel = x.IsDel,
- IsNeedTrans = x.IsNeedTrans,
- IsPay = x.IsPay,
- IsSubmitApproval = x.IsSubmitApproval,
- Job = x.Job,
- language = x.language,
- OfficialForm = x.OfficialForm,
- Remark = x.Remark,
- Setting = x.Setting,
- Tel = x.Tel,
- Time = x.Time,
- Translators = x.Translators,
- Trip = x.Trip,
- Type = x.Type,
- Area = x.Area,
- Country = x.Country,
- Field = x.Field,
- ReqSample = x.ReqSample,
- }).ToList();
- string info = string.Empty;
- List<Res_OfficialActivitiesFormat> dayArr = new List<Res_OfficialActivitiesFormat>();
- Res_OfficialActivitiesFormat gl = null;
- DateTime newGwTime = DateTime.Now;
- foreach (var g in formatResGw)
- {
- var parseTime = g.GetDateTime;
- if (parseTime.Year == gwTime.Year && parseTime.Month == gwTime.Month && parseTime.Day == gwTime.Day)
- {
- dayArr.Add(g);
- }
- }
- var isFindTimeGw = false;
- foreach (var g in dayArr)
- {
- var thisData = g.GetDateTime;
- if (thisData.Hour == gwTime.Hour && thisData.Minute == gwTime.Hour)
- {
- isFindTimeGw = true;
- newGwTime = thisData;
- info += $"{thisData.ToString("HH:mm")} 拜访{g.Client},联系人{g.Contact},电话{g.Tel}, 地址{g.Address}" +
- $"着装要求{g.Dresscode},是否需要翻译{(g.IsNeedTrans == null || g.IsNeedTrans == 0 ? "不需要翻译人员" : "需要翻译人员翻译语种为" + g.language)},议题:- ";
- listgw.Remove(listgw.Find(x => x.Id == g.Id));
- gl = g;
- break;
- }
- }
- //查询时间最接近的
- if (!isFindTimeGw)
- {
- var g = dayArr.OrderBy(x =>
- {
- return (x.GetDateTime - gwTime).Duration();
- }).FirstOrDefault();
-
- if (g != null)
- {
- var thisData = g.GetDateTime;
- if ((thisData - gwTime) < new TimeSpan(1,30,0))
- {
- isFindTimeGw = true;
- newGwTime = thisData;
- info += $"{thisData.ToString("HH:mm")} 拜访{g.Client},联系人{g.Contact},电话{g.Tel}, 地址{g.Address}" +
- $"着装要求{g.Dresscode},是否需要翻译{(g.IsNeedTrans == null || g.IsNeedTrans == 0 ? "不需要翻译人员" : "需要翻译人员翻译语种为" + g.language)},议题:- ";
- listgw.Remove(listgw.Find(x => x.Id == g.Id));
- gl = g;
- }
- }
- }
- //判断是否在一个城市
- if (isFindTimeGw && gl != null && !string.IsNullOrEmpty(gl.Area))
- {
- if (gl.Area.Contains(nowCity))
- {
- }
- else
- {
- var ApiResult = GetDirectionByGoogleApiFormat(nowCity + "市区", gl.Area);
- info = info.Insert(0, $"{newGwTime.AddHours(-1).ToString("HH:mm")} 搭乘专车前往{gl.Area}(路程约{ApiResult.Distance},距离约{ApiResult.Time})\r\n");
- }
- }
- return info;
- }
- void CheckAndCenterParagraphs(Document doc)
- {
- // 遍历文档中的所有段落
- foreach (Paragraph para in doc.GetChildNodes(NodeType.Paragraph, true))
- {
- // 获取段落的文本
- string paragraphText = para.GetText();
- // 检查段落的文本是否为“下午”或“上午”
- if (paragraphText.Trim().Equals("下午") || paragraphText.Trim().Equals("上午"))
- {
- // 设置段落格式为居中对齐
- para.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- }
- }
- }
- }
- public class GoogleApiFormat
- {
- public bool isTrue { get; set; } = false;
- public string Time { get; set; }
- public string Distance { get; set; }
- public int GetDistResult { get; set; }
- public int GetGoogleResult { get; set; }
- }
- public class Res_OfficialActivitiesFormat : Res_OfficialActivities
- {
- public DateTime GetDateTime
- {
- get
- {
- DateTime.TryParse(this.Date, out DateTime Data);
- //if (this.Date.Contains("T16:"))
- //{
- // Data = Data.AddDays(1);
- //}
- Regex rg = new Regex("[0-9]+");
- var gwTimeHHMM = this.Time;
- var gwTimeHHMMMatch = rg.Matches(gwTimeHHMM);
- if (gwTimeHHMMMatch.Count > 1)
- {
- Data = Data.AddHours(int.Parse(gwTimeHHMMMatch[0].Value));
- Data = Data.AddMinutes(int.Parse(gwTimeHHMMMatch[1].Value));
- }
- return Data;
- }
- }
- }
- }
|