|
@@ -1,11 +1,15 @@
|
|
|
using AutoMapper;
|
|
|
+using EyeSoft.Collections.Generic;
|
|
|
+using EyeSoft.Extensions;
|
|
|
using OASystem.Domain;
|
|
|
using OASystem.Domain.Dtos.Resource;
|
|
|
using OASystem.Domain.Entities.Groups;
|
|
|
using OASystem.Domain.Entities.Resource;
|
|
|
using OASystem.Domain.ViewModels.Groups;
|
|
|
using OASystem.Domain.ViewModels.Resource;
|
|
|
+using SqlSugar.Extensions;
|
|
|
using System;
|
|
|
+using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
@@ -210,5 +214,282 @@ namespace OASystem.Infrastructure.Repositories.Resource
|
|
|
|
|
|
return new Result() { Code = -1,Msg="操作失败" };
|
|
|
}
|
|
|
+
|
|
|
+ public Result DescBlackToVisa(int diid)
|
|
|
+ {
|
|
|
+ Result rt = new Result();
|
|
|
+ rt.Data = Array.Empty<string>();
|
|
|
+
|
|
|
+ var group = _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
|
+ .First(x => x.Id == diid && x.IsDel == 0);
|
|
|
+
|
|
|
+ Func<string,string> RemoveSpecialCharacters = ( string input ) => {
|
|
|
+ string pattern = @"[^\u4e00-\u9fa5]+";
|
|
|
+ // 用空字符串替换所有匹配到的字符
|
|
|
+ return Regex.Replace(input, pattern, "|");
|
|
|
+ };
|
|
|
+
|
|
|
+ if (group != null)
|
|
|
+ {
|
|
|
+ var country = RemoveSpecialCharacters(group.VisitCountry);
|
|
|
+ if (!country.IsNullOrWhiteSpace())
|
|
|
+ {
|
|
|
+ var countryArr = country.Split('|');
|
|
|
+ var blackCode = _sqlSugar.Queryable<Air_TicketBlackCode>().First(x => x.IsDel == 0 && x.DiId == diid);
|
|
|
+ //去除序号
|
|
|
+ string[] CodeList = Regex.Split(blackCode.BlackCode, "\\d+\\.", RegexOptions.IgnoreCase)
|
|
|
+ .Where(str => !string.IsNullOrWhiteSpace(str)).ToArray();
|
|
|
+
|
|
|
+ var threeCodeList = new int[10].Select(x => new
|
|
|
+ {
|
|
|
+ code = "",
|
|
|
+ startTime = DateTime.MinValue,
|
|
|
+ endTime = DateTime.MinValue,
|
|
|
+ country = ""
|
|
|
+ }).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);
|
|
|
+ var threeCode = Info[2];
|
|
|
+ var startTimeStr = Info[3];
|
|
|
+ var endTimeStr = Info[4];
|
|
|
+
|
|
|
+ var monthEn = Info[1].Substring(4, 3);
|
|
|
+
|
|
|
+ //月
|
|
|
+ int month = Convert.ToInt32(GetLonger(monthEn));
|
|
|
+ //日
|
|
|
+ int day = Convert.ToInt32(Info[1].Substring(2, 2));
|
|
|
+
|
|
|
+ var startTime = new DateTime(DateTime.Now.Year, month, day, startTimeStr.Substring(0,2).ObjToInt(), startTimeStr.Substring(2, 2).ObjToInt(), 00); //
|
|
|
+
|
|
|
+ var endTime = new DateTime(DateTime.Now.Year, month, day, endTimeStr.Substring(0, 2).ObjToInt(), endTimeStr.Substring(2, 2).ObjToInt(), 00); //
|
|
|
+
|
|
|
+ if (!threeCode.IsNullOrWhiteSpace() && threeCode.Length > 5)
|
|
|
+ {
|
|
|
+ var start = threeCode.Substring(0, 3).ToLower();
|
|
|
+ var end = threeCode.Substring(3, 3).ToLower();
|
|
|
+ if (!threeCodeList.Select(x => x.code).Contains(end)) {
|
|
|
+
|
|
|
+ var temp = threeCodeList[0] with
|
|
|
+ {
|
|
|
+ code = end,
|
|
|
+ startTime = startTime,
|
|
|
+ endTime = endTime,
|
|
|
+ country = ""
|
|
|
+ };
|
|
|
+
|
|
|
+ for (int i = 0; i < threeCodeList.Length; i++)
|
|
|
+ {
|
|
|
+ if (threeCodeList[i].code.IsNullOrWhiteSpace())
|
|
|
+ {
|
|
|
+ threeCodeList[i] = temp;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var dbThreeCode = _sqlSugar.Queryable<Res_ThreeCode>()
|
|
|
+ .Where(x => x.IsDel == 0 && threeCodeList.Select(x => x.code).Contains(x.Three.ToLower()))
|
|
|
+ .ToList();
|
|
|
+ var data = new ArrayList();
|
|
|
+ var info = new List<string>();
|
|
|
+
|
|
|
+ foreach (var code in dbThreeCode)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < threeCodeList.Length; i++)
|
|
|
+ {
|
|
|
+ if (threeCodeList[i].code == code.Three.ToLower()) {
|
|
|
+ threeCodeList[i] = threeCodeList[i] with
|
|
|
+ {
|
|
|
+ country = code.Country,
|
|
|
+ };
|
|
|
+ if (countryArr.Contains(code.Country))
|
|
|
+ {
|
|
|
+ data.Add(threeCodeList[i]);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ info.Add($@"{code.Country} 抵达时间:{threeCodeList[i].endTime.ToString("yyyy-MM-dd HH:mm")} 离开时间:{threeCodeList[i + 1].startTime.ToString("yyyy-MM-dd HH:mm")} ");
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
+ info.Add($@"{code.Country} 抵达时间:{threeCodeList[i].endTime.ToString("yyyy-MM-dd HH:mm")} 离开时间: 未知 ");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rt.Msg = "SUCCESS!";
|
|
|
+ rt.Code = 0;
|
|
|
+ rt.Data = new
|
|
|
+ {
|
|
|
+ data = data,
|
|
|
+ info = info
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return rt;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
}
|
|
|
}
|