|
@@ -21975,6 +21975,7 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
|
|
|
var stay = "-";
|
|
|
var cityPath = "-";
|
|
|
+ var arriveCountry = string.Empty;
|
|
|
|
|
|
//添加城市路径以及住宿地
|
|
|
|
|
@@ -21983,6 +21984,41 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
var empty = "【未收入该三字码!请机票同事录入】";
|
|
|
string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
|
|
|
|
|
|
+ #region 配置公务活动时间
|
|
|
+ List<Tuple<int, string, string>> Times = new List<Tuple<int, string, string>>();
|
|
|
+ Times.Add(new Tuple<int, string, string>(9, "9:00", "10:30"));
|
|
|
+ Times.Add(new Tuple<int, string, string>(11, "11:00", "12:00"));
|
|
|
+ Times.Add(new Tuple<int, string, string>(14, "14:00", "15:30"));
|
|
|
+ Times.Add(new Tuple<int, string, string>(16, "16:00", "17:00"));
|
|
|
+
|
|
|
+ List<Tuple<DateTime, List<string>>> fallTimesCheckCountry = new List<Tuple<DateTime, List<string>>>()
|
|
|
+ {
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,6,0,0), new List<string>{"9:00-10:30","11:00-12:00","14:00-15:30","16:00-17:00" }),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,8,30,0), new List<string>{"11:00-12:00","14:00-15:30","16:00-17:00"}),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,11,30,0), new List<string>{"14:00-15:30","16:00-17:00"}),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,13,30,0), new List<string>{"16:30-17:30"}),
|
|
|
+ };
|
|
|
+
|
|
|
+ List<Tuple<DateTime, List<string>>> fallTimesNotCheckCountry = new List<Tuple<DateTime, List<string>>>()
|
|
|
+ {
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,7,0,0), new List<string>{"9:00-10:30","11:00-12:00","14:00-15:30","16:00-17:00" }),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,9,0,0), new List<string>{"11:00-12:00","14:00-15:30","16:00-17:00"}),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,11,30,0), new List<string>{"14:00-15:30","16:00-17:00"}),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,14,30,0), new List<string>{"16:30-17:30"}),
|
|
|
+ };
|
|
|
+
|
|
|
+ List<Tuple<DateTime, List<string>>> takeoffTimes = new List<Tuple<DateTime, List<string>>>()
|
|
|
+ {
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,18,0,0), new List<string>{"9:00-10:30","11:00-12:00", "14:00-15:30","16:00-17:00" }),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,15,30,0), new List<string>{"9:00-10:30", "11:00-12:00", "14:00-15:00","15:00-16:00"}),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,14,00,0), new List<string>{"9:00-10:30", "11:00-12:00",}),
|
|
|
+ new Tuple<DateTime, List<string>>(new DateTime(1900,1,1,12,00,0), new List<string>{"09:00-10:00"}),
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ var nextDayNum = 0;
|
|
|
+
|
|
|
for (int i = 0; i < timeArr.Count; i++)
|
|
|
{
|
|
|
stay = "-";
|
|
@@ -21995,11 +22031,10 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
|
|
|
var tbSelect = dtBlack.Select(string.Format("Day = '{0}'", NewData.ToString("yyyy-MM-dd")));
|
|
|
|
|
|
- List<Tuple<int, string, string>> Times = new List<Tuple<int, string, string>>();
|
|
|
- Times.Add(new Tuple<int, string, string>(9, "9:00", "10:30"));
|
|
|
- Times.Add(new Tuple<int, string, string>(11, "11:00", "12:00"));
|
|
|
- Times.Add(new Tuple<int, string, string>(14, "14:00", "15:30"));
|
|
|
- Times.Add(new Tuple<int, string, string>(16, "16:00", "17:00"));
|
|
|
+ if (nextDayNum > 0)
|
|
|
+ {
|
|
|
+ nextDayNum--;
|
|
|
+ }
|
|
|
|
|
|
if (tbSelect.Length > 0)
|
|
|
{
|
|
@@ -22008,19 +22043,28 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
bool isTrade = false;
|
|
|
string trip = string.Empty;
|
|
|
|
|
|
- var rowLast = tbSelect.Last();
|
|
|
- var rowFirst = tbSelect.First();
|
|
|
- var airStartTime = rowFirst["StartTime"].ToString() ?? "0000";
|
|
|
- var airEndTime = rowLast["EndTime"].ToString() ?? "0000";
|
|
|
- var takeOffTime = DateTime.Parse(timeArr[i]);
|
|
|
- var fallToTime = DateTime.Parse(timeArr[i]);
|
|
|
- takeOffTime = takeOffTime.AddHours(int.Parse(airStartTime.Substring(0, 2)));
|
|
|
- takeOffTime = takeOffTime.AddMinutes(int.Parse(airStartTime.Substring(2, 2)));
|
|
|
- fallToTime = fallToTime.AddHours(int.Parse(airEndTime.Substring(0, 2)));
|
|
|
- fallToTime = fallToTime.AddMinutes(int.Parse(airEndTime.Substring(2, 2)));
|
|
|
-
|
|
|
foreach (var item in tbSelect)
|
|
|
{
|
|
|
+ if (nextDayNum == 0)
|
|
|
+ {
|
|
|
+ nextDayNum = Convert.ToInt32(item["Sign"]);
|
|
|
+ }
|
|
|
+
|
|
|
+ var airStartTime = item["StartTime"].ToString() ?? "0000";
|
|
|
+ var airEndTime = item["EndTime"].ToString() ?? "0000";
|
|
|
+ var takeOffTime = DateTime.Parse(timeArr[i]);
|
|
|
+ var fallToTime = DateTime.Parse(timeArr[i]);
|
|
|
+ takeOffTime = takeOffTime.AddHours(int.Parse(airStartTime.Substring(0, 2)));
|
|
|
+ takeOffTime = takeOffTime.AddMinutes(int.Parse(airStartTime.Substring(2, 2)));
|
|
|
+ fallToTime = fallToTime.AddHours(int.Parse(airEndTime.Substring(0, 2)));
|
|
|
+ fallToTime = fallToTime.AddMinutes(int.Parse(airEndTime.Substring(2, 2)));
|
|
|
+
|
|
|
+ if (nextDayNum > 0)
|
|
|
+ {
|
|
|
+ fallToTime = fallToTime.AddDays(nextDayNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ trip = string.Empty;
|
|
|
var start = string.Empty;
|
|
|
var end = string.Empty;
|
|
|
var threeCode = item["Three"].ToString() ?? "";
|
|
@@ -22075,41 +22119,16 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//机型判断
|
|
|
string airModel = item["AirModel"].ToString();
|
|
|
airModel = GeneralMethod.GetLonger(airModel!.Substring(0, 1)) + airModel;
|
|
|
|
|
|
string flightTime = item["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", "分钟");
|
|
|
- }
|
|
|
-
|
|
|
- IFormatProvider ifp = new CultureInfo("zh-CN", true);
|
|
|
- if (DateTime.TryParseExact(flightTime, "HH小时mm分钟", ifp, DateTimeStyles.None, out DateTime flightDataTime))
|
|
|
- {
|
|
|
- flightTime = flightDataTime.Hour > 0
|
|
|
- ? flightDataTime.Hour.ToString() + "小时" + (flightDataTime.Minute > 0
|
|
|
- ? flightDataTime.Minute.ToString() + "分钟" : "") : flightDataTime.Minute > 0
|
|
|
- ? flightDataTime.Minute.ToString() + "分钟" : "";
|
|
|
- }
|
|
|
-
|
|
|
+ flightTime = ParseBlackTime(flightTime);
|
|
|
|
|
|
//航班号
|
|
|
string flightcode = item["Fliagtcode"].ToString();
|
|
|
-
|
|
|
var aircompany = _sqlSugar.Queryable<Res_AirCompany>().First(x => x.ShortCode.ToUpper() == flightcode!.Substring(0, 2).ToUpper() && x.IsDel == 0);
|
|
|
-
|
|
|
var hsEmpty = "【此航司" + flightcode!.Substring(0, 2).ToUpper() + "未收录,请机票同事录入】";
|
|
|
if (aircompany == null)
|
|
|
{
|
|
@@ -22121,63 +22140,153 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ //航班前公务安排
|
|
|
+ if (tbSelect.First().Equals(item) && i != 0)
|
|
|
+ {
|
|
|
+ foreach (var takeoff in takeoffTimes)
|
|
|
+ {
|
|
|
+ var takeoffItem1 = NewData.AddHours(takeoff.Item1.Hour).AddMinutes(takeoff.Item1.Minute);
|
|
|
+ if (DateTime.Compare(takeOffTime, takeoffItem1) > 0)
|
|
|
+ {
|
|
|
+ foreach (var addTime in takeoff.Item2)
|
|
|
+ {
|
|
|
+ chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ {
|
|
|
+ Time = addTime,
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ CreateUserId = dto.Userid,
|
|
|
+ ParentId = 0,
|
|
|
+ Details = "公务活动"
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//从成都天府国际机场搭乘四川航空公司3U3961飞往东京
|
|
|
- trip += $"从{start_Object.AirPort}搭乘{aircompany.CnName}{flightcode}飞往{end_Object.City}。\r\n({start_Object.AirPort}/{end_Object.AirPort} 机型:{airModel} 飞行时间{flightTime});\r\n";
|
|
|
+ //trip += $"从{start_Object.AirPort}搭乘{aircompany.CnName}{flightcode}飞往{end_Object.City}。\r\n({start_Object.AirPort}/{end_Object.AirPort} 机型:{airModel} 飞行时间{flightTime});\r\n";
|
|
|
+
|
|
|
+ //乘坐四川航空3U3901次航班由成都飞往加德满都,3小时25分钟
|
|
|
+ trip += $"乘坐{aircompany.CnName}{flightcode}次航班由{start_Object.City}飞往{end_Object.City},{flightTime}";
|
|
|
|
|
|
isTrade = Convert.ToBoolean(item["isTransitShipment"]);
|
|
|
|
|
|
if (isTrade)
|
|
|
{
|
|
|
- trip += $"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼(中转 行李直达)\r\n";
|
|
|
+ //trip += $"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼(中转 行李直达)\r\n";
|
|
|
+ trip += "(转机不出机场)。";
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- trip += "\r\n"; //$"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\r\n";
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
- {
|
|
|
- Time = takeOffTime.ToString("HH:mm") + "-" + fallToTime.ToString("HH:mm"),
|
|
|
- CreateTime = DateTime.Now,
|
|
|
- CreateUserId = dto.Userid,
|
|
|
- ParentId = 0,
|
|
|
- Details = trip
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- //添加乘车语句
|
|
|
- chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
- {
|
|
|
- Time = (fallToTime.AddHours(2.5).ToString("HH:mm") + "-" + fallToTime.AddHours(3).ToString("HH:mm")),
|
|
|
- CreateTime = DateTime.Now,
|
|
|
- CreateUserId = dto.Userid,
|
|
|
- ParentId = 0,
|
|
|
- Details = "乘车前往市区(约xx公里,大约需要xx分钟)"
|
|
|
- });
|
|
|
+ //else
|
|
|
+ //{
|
|
|
+ // trip += "\r\n"; //$"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\r\n";
|
|
|
+ //}
|
|
|
|
|
|
- if (i != timeArr.Count - 1)
|
|
|
- {
|
|
|
- fallToTime = fallToTime.AddHours(2.5);
|
|
|
+ chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ {
|
|
|
+ Time = takeOffTime.ToString("HH:mm") + "-" + fallToTime.ToString("HH:mm"),
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ CreateUserId = dto.Userid,
|
|
|
+ ParentId = 0,
|
|
|
+ Details = trip
|
|
|
+ });
|
|
|
|
|
|
- foreach (var item in Times)
|
|
|
+ //最后一条到达的时间安排公务
|
|
|
+ if (tbSelect.Last().Equals(item) && i != timeArr.Count - 1)
|
|
|
{
|
|
|
- //排列公务时间
|
|
|
- if (fallToTime.Hour < item.Item1)
|
|
|
+ bool isCheckCountry = false;
|
|
|
+ if (end_Object.Country != arriveCountry)
|
|
|
+ {
|
|
|
+ arriveCountry = end_Object.Country;
|
|
|
+ isCheckCountry = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (nextDayNum == 0)
|
|
|
{
|
|
|
- chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ //需要入境的情况
|
|
|
+ if (isCheckCountry)
|
|
|
+ {
|
|
|
+ foreach (var fallTime in fallTimesCheckCountry)
|
|
|
+ {
|
|
|
+ var fallTimeItem1 = NewData.AddHours(fallTime.Item1.Hour).AddMinutes(fallTime.Item1.Minute);
|
|
|
+ if (DateTime.Compare(fallToTime, fallTimeItem1) < 0)
|
|
|
+ {
|
|
|
+ foreach (var addTime in fallTime.Item2)
|
|
|
+ {
|
|
|
+ chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ {
|
|
|
+ Time = addTime,
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ CreateUserId = dto.Userid,
|
|
|
+ ParentId = 0,
|
|
|
+ Details = "公务活动"
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- Time = $"{item.Item2} - {item.Item3}",
|
|
|
- CreateTime = DateTime.Now,
|
|
|
- CreateUserId = dto.Userid,
|
|
|
- ParentId = 0,
|
|
|
- Details = "公务活动"
|
|
|
- });
|
|
|
+ foreach (var fallTime in fallTimesNotCheckCountry)
|
|
|
+ {
|
|
|
+ var fallTimeItem1 = NewData.AddHours(fallTime.Item1.Hour).AddMinutes(fallTime.Item1.Minute);
|
|
|
+ if (DateTime.Compare(fallToTime, fallTimeItem1) < 0)
|
|
|
+ {
|
|
|
+ foreach (var addTime in fallTime.Item2)
|
|
|
+ {
|
|
|
+ chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ {
|
|
|
+ Time = addTime,
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ CreateUserId = dto.Userid,
|
|
|
+ ParentId = 0,
|
|
|
+ Details = "公务活动"
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ //添加乘车语句
|
|
|
+ //chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ //{
|
|
|
+ // Time = (fallToTime.AddHours(2.5).ToString("HH:mm") + "-" + fallToTime.AddHours(3).ToString("HH:mm")),
|
|
|
+ // CreateTime = DateTime.Now,
|
|
|
+ // CreateUserId = dto.Userid,
|
|
|
+ // ParentId = 0,
|
|
|
+ // Details = "乘车前往市区(约xx公里,大约需要xx分钟)"
|
|
|
+ //});
|
|
|
+
|
|
|
+ //if (i != timeArr.Count - 1)
|
|
|
+ //{
|
|
|
+ // fallToTime = fallToTime.AddHours(2.5);
|
|
|
+
|
|
|
+ // foreach (var item in Times)
|
|
|
+ // {
|
|
|
+ // //排列公务时间
|
|
|
+ // if (fallToTime.Hour < item.Item1)
|
|
|
+ // {
|
|
|
+ // chiarr.Add(new Grp_ApprovalTravelDetails
|
|
|
+ // {
|
|
|
+ // Time = $"{item.Item2} - {item.Item3}",
|
|
|
+ // CreateTime = DateTime.Now,
|
|
|
+ // CreateUserId = dto.Userid,
|
|
|
+ // ParentId = 0,
|
|
|
+ // Details = "公务活动"
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
var threeCodeList = _threeCodeRepository.QueryThreeCodeArray(threeCodeStr);
|
|
|
var last = threeCodeStr.Last();
|
|
|
foreach (var item in threeCodeStr)
|
|
@@ -22391,6 +22500,38 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
|
|
|
return Ok(jw);
|
|
|
}
|
|
|
|
|
|
+ private string ParseBlackTime(string time)
|
|
|
+ {
|
|
|
+ // 匹配可能只有分钟的情况
|
|
|
+ string pattern = @"(?:(\d+)H)?(?:(\d+)M)?";
|
|
|
+ System.Text.RegularExpressions.Match match = Regex.Match(time, pattern);
|
|
|
+
|
|
|
+ if (match.Success)
|
|
|
+ {
|
|
|
+ string hours = match.Groups[1].Value;
|
|
|
+ string minutes = match.Groups[2].Value;
|
|
|
+
|
|
|
+ // 如果小时部分为空,则只显示分钟
|
|
|
+ if (string.IsNullOrEmpty(hours))
|
|
|
+ {
|
|
|
+ return $"{minutes}分钟";
|
|
|
+ }
|
|
|
+ // 如果分钟部分为空,则只显示小时
|
|
|
+ else if (string.IsNullOrEmpty(minutes))
|
|
|
+ {
|
|
|
+ return $"{hours}小时";
|
|
|
+ }
|
|
|
+ // 否则显示完整格式
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return $"{hours}小时{minutes}分钟";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return "未知时长";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private string intToString(int numberVal)
|
|
|
{
|