|
@@ -20,6 +20,7 @@ using Aspose.Words;
|
|
|
using System.IO;
|
|
|
using System.Threading;
|
|
|
using static System.Net.Mime.MediaTypeNames;
|
|
|
+using System.Drawing.Drawing2D;
|
|
|
|
|
|
namespace travelExport
|
|
|
{
|
|
@@ -29,7 +30,6 @@ namespace travelExport
|
|
|
static List<Grp_DelegationInfo> soure = new List<Grp_DelegationInfo>();
|
|
|
readonly static string[] weekdays = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
|
|
|
const decimal conversion = 1.61M;
|
|
|
- static bool isInfo = false;
|
|
|
readonly static string[] excludeArr = new string[] { "[中转]", };
|
|
|
|
|
|
public Home()
|
|
@@ -133,28 +133,472 @@ namespace travelExport
|
|
|
if (!isVPN) { MessageBoxEx.Show(this, "请打开VPN!"); return ; }
|
|
|
|
|
|
var timeArr = GetTimeListByDataTable(resultTable);
|
|
|
- List<Grp_CarTouristGuideGroundReservations> listctg = null;
|
|
|
- List<Grp_HotelReservations> listht = null;
|
|
|
- List<Res_OfficialActivities> listgw = null;
|
|
|
- List< Grp_InvitationOfficialActivities > listgwzl = null;
|
|
|
|
|
|
- if (isInfo) //判断是否未是详细行程
|
|
|
+ //本团行程单数据
|
|
|
+ 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(() =>
|
|
|
{
|
|
|
- //本团车导地接信息
|
|
|
- listctg = db.Grp_CarTouristGuideGroundReservations.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ using (var sw = db.Database.BeginTransaction())
|
|
|
+ {
|
|
|
+ db.Grp_TravelList.RemoveRange(listTravel);
|
|
|
+ db.SaveChanges();
|
|
|
+
|
|
|
+ var NewListTravel = new List<Grp_TravelList>();
|
|
|
+ var index = 0;
|
|
|
+ var stopCity = string.Empty;
|
|
|
+
|
|
|
+ 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();
|
|
|
+
|
|
|
+ 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)
|
|
|
+ {
|
|
|
+ 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 + 1,
|
|
|
+ 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 + 1,
|
|
|
+ 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 入住酒店休息;";
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 = trip,
|
|
|
+ WeekDay = weekDay,
|
|
|
+ Days = index + 1,
|
|
|
+ Traffic_First = traffic[0],
|
|
|
+ Traffic_Second = traffic[1],
|
|
|
+ Diffgroup = 1,
|
|
|
+ Issel = 1,
|
|
|
+ IsDel = 0,
|
|
|
+ });
|
|
|
+
|
|
|
+ index++;
|
|
|
+ }
|
|
|
|
|
|
- //本团酒店信息
|
|
|
- listht = db.Grp_HotelReservations.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
|
|
|
+ db.Grp_TravelList.AddRange(NewListTravel);
|
|
|
+ db.SaveChanges();
|
|
|
|
|
|
- //公务出访信息
|
|
|
- listgw = db.Res_OfficialActivities.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
|
|
|
+ sw.Commit();
|
|
|
+ wt.Invoke("数据导入完成!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ wt.Invoke("请等待程序执行!");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ threadExec.Start();
|
|
|
+ }
|
|
|
|
|
|
- //邀请公务资料
|
|
|
- listgwzl = db.Grp_InvitationOfficialActivities.Where(x => x.DiId == diid && x.IsDel == 0).ToList();
|
|
|
+ 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()))
|
|
|
+ {
|
|
|
+ string msg = string.Empty;
|
|
|
+ if (resultTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ msg = resultTable.Rows[0]["Error"].ToString();
|
|
|
+ }
|
|
|
+ MessageBoxEx.Show(this, "黑屏代码有误! " + msg, "提示");
|
|
|
+ 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();
|
|
|
|
|
@@ -187,6 +631,18 @@ namespace travelExport
|
|
|
var index = 0;
|
|
|
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();
|
|
|
+
|
|
|
foreach (var item in timeArr)
|
|
|
{
|
|
|
string trip = string.Empty;
|
|
@@ -213,6 +669,8 @@ namespace travelExport
|
|
|
Res_ThreeCode start_Object = null;
|
|
|
Res_ThreeCode end_Object = null;
|
|
|
|
|
|
+ bool isTrade = false;
|
|
|
+
|
|
|
foreach (var tabRow in tabSelect)
|
|
|
{
|
|
|
|
|
@@ -221,10 +679,10 @@ namespace travelExport
|
|
|
|
|
|
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)));
|
|
|
|
|
@@ -265,7 +723,11 @@ namespace travelExport
|
|
|
trip += $"{start_Object.City}/{end_Object.City}\r\n";
|
|
|
|
|
|
//--提前俩个小时
|
|
|
- trip += $"{takeOffTime.AddHours(-2).ToString("HH:mm")} 抵达{start_Object.AirPort}{tabRow["StartBuilding"].ToString().Trim()}航站楼,办理登机手续:\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);
|
|
|
|
|
@@ -301,7 +763,16 @@ namespace travelExport
|
|
|
|
|
|
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";
|
|
|
|
|
|
- trip += $"{fallToTime.ToString("HH:mm")} 抵达{end_Object.AirPort}{tabRow["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\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; //航班落地时间
|
|
@@ -431,16 +902,52 @@ namespace travelExport
|
|
|
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 + 1,
|
|
|
+ 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));
|
|
|
+ var halfPasTen = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 10, 30, 00));
|
|
|
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));
|
|
|
trip += @"
|
|
|
10:30 公务活动;";
|
|
|
+ if (!string.IsNullOrWhiteSpace(halfPasTen))
|
|
|
+ {
|
|
|
+ trip = trip.Replace("10:30 公务活动", halfPasTen);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (time.Hour < 13)
|
|
@@ -450,14 +957,29 @@ namespace travelExport
|
|
|
|
|
|
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));
|
|
|
+ var fourPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 16, 00, 00));
|
|
|
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));
|
|
|
trip += @"
|
|
|
16:00 公务活动;";
|
|
|
+ if (!string.IsNullOrWhiteSpace(fourPointsPM))
|
|
|
+ {
|
|
|
+ trip = trip.Replace("16:00 公务活动", fourPointsPM);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (time.Hour < 18)
|
|
@@ -492,6 +1014,27 @@ namespace travelExport
|
|
|
16:00 公务活动;
|
|
|
18:00 晚餐于当地餐厅;
|
|
|
19:00 入住酒店休息;";
|
|
|
+
|
|
|
+ var nineTime = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 09, 00, 00));
|
|
|
+ var halfPasTen = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 10, 30, 00));
|
|
|
+ var twoPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 14, 00, 00));
|
|
|
+ var fourPointsPM = GetTimeGwInfo(ref listgw, new DateTime(time.Year, time.Month, time.Day, 16, 00, 00));
|
|
|
+ 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[] { "飞机", "汽车" };
|
|
@@ -500,44 +1043,22 @@ namespace travelExport
|
|
|
traffic = new string[] { "汽车", "" };
|
|
|
}
|
|
|
|
|
|
- if (isInfo)
|
|
|
+ var htTime = DateTime.Now;
|
|
|
+ var htTimeOut = DateTime.Now;
|
|
|
+ foreach (var h in listht)
|
|
|
{
|
|
|
- var htTime = DateTime.Now;
|
|
|
- var htTimeOut = DateTime.Now;
|
|
|
- var gwTime = DateTime.Now;
|
|
|
- foreach (var h in listht)
|
|
|
+ if (DateTime.TryParse(h.CheckInDate, out htTime) && DateTime.TryParse(h.CheckOutDate, out htTimeOut))
|
|
|
{
|
|
|
- if (DateTime.TryParse(h.CheckInDate, out htTime) && DateTime.TryParse(h.CheckOutDate, out htTimeOut))
|
|
|
+ if (htTime <= Convert.ToDateTime(item)
|
|
|
+ && htTimeOut > Convert.ToDateTime(item))
|
|
|
{
|
|
|
- if (htTime <= Convert.ToDateTime(item)
|
|
|
- && htTimeOut > Convert.ToDateTime(item))
|
|
|
- {
|
|
|
- trip += "00:00 乘车前往酒店";
|
|
|
- trip += "00:00 抵达酒店办理入住手续";
|
|
|
-
|
|
|
- trip = trip + "\r\n"
|
|
|
- + " 酒店名称:" + h.HotelName + "\r\n"
|
|
|
- + " 酒店地址:" + h.HotelAddress + "\r\n"
|
|
|
- + " 酒店电话:" + h.HotelTel + " 酒店传真:" + (string.IsNullOrWhiteSpace(h.HotelFax) ? "-" : h.HotelFax);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ trip += "\r\n00:00 乘车前往酒店";
|
|
|
+ trip += "\r\n00:00 抵达酒店办理入住手续";
|
|
|
|
|
|
- foreach (var g in listgw)
|
|
|
- {
|
|
|
- if (DateTime.TryParse(g.Date, out gwTime))
|
|
|
- {
|
|
|
- var timeThis = Convert.ToDateTime(item);
|
|
|
- if (DateTime.Compare(timeThis, gwTime) == 0)
|
|
|
- {
|
|
|
- var tp = g.Time;
|
|
|
- Regex rgNumber = new Regex("[0-9]+");
|
|
|
- var HHMM = rgNumber.Split(tp);
|
|
|
- if (HHMM.Length > 0)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ trip = trip + "\r\n"
|
|
|
+ + " 酒店名称:" + h.HotelName + "\r\n"
|
|
|
+ + " 酒店地址:" + h.HotelAddress + "\r\n"
|
|
|
+ + " 酒店电话:" + h.HotelTel + " 酒店传真:" + (string.IsNullOrWhiteSpace(h.HotelFax) ? "-" : h.HotelFax);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -576,7 +1097,6 @@ namespace travelExport
|
|
|
threadExec.Start();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private delegate void ChildThreadExceptionHandler(string message);
|
|
|
|
|
|
private void btnOutput_Click(object sender, EventArgs e)
|
|
@@ -897,7 +1417,7 @@ namespace travelExport
|
|
|
//日
|
|
|
int day = Convert.ToInt32(Info[1].Substring(2, 2));
|
|
|
|
|
|
- var time = new DateTime(DateTime.Now.Year, month, day);
|
|
|
+ var time = new DateTime(2023, month, day); //
|
|
|
|
|
|
var isExist = Info.Contains("[中转]");
|
|
|
|
|
@@ -1178,7 +1698,7 @@ namespace travelExport
|
|
|
|
|
|
private void btnOutputInfo_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
-
|
|
|
+ btnImportInfo();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1385,6 +1905,88 @@ namespace travelExport
|
|
|
return rt;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ string GetTimeGwInfo(ref List<Res_OfficialActivities> listgw, DateTime gwTime)
|
|
|
+ {
|
|
|
+ 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,
|
|
|
+ }).ToList();
|
|
|
+
|
|
|
+ string info = string.Empty;
|
|
|
+
|
|
|
+ List<Res_OfficialActivitiesFormat> dayArr = new List<Res_OfficialActivitiesFormat>();
|
|
|
+
|
|
|
+ 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;
|
|
|
+ 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));
|
|
|
+ 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))
|
|
|
+ {
|
|
|
+ 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));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return info;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public class GoogleApiFormat
|
|
@@ -1397,6 +1999,30 @@ namespace travelExport
|
|
|
|
|
|
}
|
|
|
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|