using AutoMapper; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using OASystem.Domain; using OASystem.Domain.AesEncryption; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Customer; using OASystem.Domain.Entities.Financial; using OASystem.Domain.Entities.Groups; using OASystem.Domain.Entities.Resource; using OASystem.Domain.ViewModels.Groups; using System.Security.Cryptography; namespace OASystem.Infrastructure.Repositories.Groups { public class AirTicketResRepository : BaseRepository { private readonly IMapper _mapper; public AirTicketResRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar) { _mapper = mapper; } public async Task AirTicketResById(AirTicketResByIdDto dto) { var result = new Result() { Code = -2, Msg = "未知错误" }; try { Grp_AirTicketReservations grp_AirTicket = _sqlSugar.Queryable().First(a => a.Id == dto.Id && a.IsDel == 0); if (grp_AirTicket == null) { return result = new Result() { Code = -1, Msg = "暂无数据" }; } else { Grp_CreditCardPayment grp_CreditCard = _sqlSugar.Queryable().First(a => a.CId == grp_AirTicket.Id && a.IsDel == 0 && a.CTable == 85); if (grp_CreditCard == null) { return result = new Result() { Code = -1, Msg = "暂无数据" }; } return result = new Result() { Code = 0, Msg = "查询成功!", Data = new { AirTicket = grp_AirTicket, CreditCard = grp_CreditCard, } }; } } catch (Exception) { return result = new Result() { Code = -2, Msg = "未知错误" }; throw; } } public async Task AirTicketResList(AirTicketResDto dto) { var result = new Result() { Code = -2, Msg = "未知错误" }; Grp_DelegationInfo _DelegationInfo = _sqlSugar.Queryable().First(it => it.Id == dto.DiId); if (_DelegationInfo != null) { string UserId = ""; List gtaUIdList = _sqlSugar.Queryable().Where(a => a.DIId == dto.DiId && a.IsDel == 0 && a.CTId == 85).ToList(); foreach (Grp_GroupsTaskAssignment gta in gtaUIdList) UserId += gta.UId + ","; if (!string.IsNullOrWhiteSpace(UserId)) { UserId = UserId[..^1]; } else { UserId = "0"; } string sqlWhere = ""; if (dto.IsPaySign != -1) { sqlWhere += string.Format(@" And ccp.IsPay = {0} ", dto.IsPaySign); } string sql = string.Format(@"Select atr.*,ccp.IsAuditGM,sd1.Name As CTypeName,sd2.Name As PreCurrencyStr,sd3.Name As CurrencyStr,ccp.IsPay From Grp_AirTicketReservations atr Left Join Grp_CreditCardPayment ccp On atr.Id = ccp.CId And atr.DIId = ccp.DIId And ccp.IsDel = 0 Left Join Sys_SetData sd1 On sd1.Id = atr.ctype Left Join Sys_SetData sd2 On sd2.Id = atr.PreCurrency Left Join Sys_SetData sd3 On sd3.Id = atr.Currency Where atr.IsDel = 0 And atr.DIId={0} {1} Order By atr.FlightsDate Asc", dto.DiId, sqlWhere); List _AirTicketReservations = _sqlSugar.SqlQueryable(sql).ToList(); foreach (var item in _AirTicketReservations) { if (item.FlightsDescription.Contains("\n")) { var spilitArr = Regex.Split(item.FlightsDescription, "\n"); int rowindex = 1; foreach (var spilitItem in spilitArr) { try { var spDotandEmpty = spilitItem.Split('.')[1].Split(' ').Where(x => !string.IsNullOrEmpty(x)).ToList(); var depCode = spDotandEmpty[3].Substring(0, 3); var arrCode = spDotandEmpty[3].Substring(3, 3); Res_ThreeCode depData = _sqlSugar.Queryable().First(it => it.IsDel == 0 && it.Three == depCode); Res_ThreeCode arrData = _sqlSugar.Queryable().First(it => it.IsDel == 0 && it.Three == arrCode); string day = spDotandEmpty[2].Substring(2, 2);//日 string monthAbbreviations = spDotandEmpty[2].Substring(4, 3).ToUpper();//月份 switch (monthAbbreviations) { case "JAN": monthAbbreviations = "1"; break; case "FEB": monthAbbreviations = "2"; break; case "MAR": monthAbbreviations = "3"; break; case "APR": monthAbbreviations = "4"; break; case "MAY": monthAbbreviations = "5"; break; case "JUN": monthAbbreviations = "6"; break; case "JUL": monthAbbreviations = "7"; break; case "AUG": monthAbbreviations = "8"; break; case "SEP": monthAbbreviations = "9"; break; case "OCT": monthAbbreviations = "10"; break; case "NOV": monthAbbreviations = "11"; break; case "DEC": monthAbbreviations = "12"; break; } string tate = $"{monthAbbreviations}月{day}日"; item.FlightDescription += rowindex + ". " + depData.AirPort + " " + arrData.AirPort + " (" + tate + ")\r\n"; } catch (Exception ex) { item.FlightDescription = "录入数据不规范!请检查"; break; } rowindex++; } } else { try { var spDotandEmpty = item.FlightsDescription.Split('.')[1].Split(' ').Where(x => !string.IsNullOrEmpty(x)).ToList(); var depCode = spDotandEmpty[3].Substring(0, 3); var arrCode = spDotandEmpty[3].Substring(3, 3); Res_ThreeCode depData = _sqlSugar.Queryable().First(it => it.IsDel == 0 && it.Three == depCode); Res_ThreeCode arrData = _sqlSugar.Queryable().First(it => it.IsDel == 0 && it.Three == arrCode); string day = spDotandEmpty[2].Substring(2, 2);//日 string monthAbbreviations = spDotandEmpty[2].Substring(4, 3).ToUpper();//月份 switch (monthAbbreviations) { case "JAN": monthAbbreviations = "1"; break; case "FEB": monthAbbreviations = "2"; break; case "MAR": monthAbbreviations = "3"; break; case "APR": monthAbbreviations = "4"; break; case "MAY": monthAbbreviations = "5"; break; case "JUN": monthAbbreviations = "6"; break; case "JUL": monthAbbreviations = "7"; break; case "AUG": monthAbbreviations = "8"; break; case "SEP": monthAbbreviations = "9"; break; case "OCT": monthAbbreviations = "10"; break; case "NOV": monthAbbreviations = "11"; break; case "DEC": monthAbbreviations = "12"; break; } string tate = $"{monthAbbreviations}月{day}日"; item.FlightDescription += depData.AirPort + " " + arrData.AirPort + " (" + tate + ")\r\n"; } catch (Exception) { item.FlightDescription = "录入数据不规范!请检查"; } } } //团组成本预算表查询 Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable().First(a => a.DiId == dto.DiId && a.IsDel == 0 && a.CostType == "A" && a.IsShare == 1); AirGroupCostParameterView _AirgroupCostParameter = _mapper.Map(_GroupCostParameter); for (int i = 0; i < _AirTicketReservations.Count; i++) { string[] ClientArr = _AirTicketReservations[i].ClientName.Split(',').Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); foreach (var item in ClientArr) { bool isNumeric = int.TryParse(item, out _); if (isNumeric) { if (item == "-1") { _AirTicketReservations[i].ClientNameStr += "行程单,"; } else { Crm_DeleClient DeleClient = _sqlSugar.Queryable().Where(a => a.IsDel == 0 && a.Id == int.Parse(item)).First(); EncryptionProcessor.DecryptProperties(DeleClient); _AirTicketReservations[i].ClientNameStr += DeleClient.Pinyin + ','; } } else { _AirTicketReservations[i].ClientNameStr += item; } } if (_AirTicketReservations[i].ClientNameStr is not null) { _AirTicketReservations[i].ClientNameStr = _AirTicketReservations[i].ClientNameStr.Substring(0, _AirTicketReservations[i].ClientNameStr.Length - 1); } } if (dto.PortType == 1) { var data = new { DelegationInfo = _DelegationInfo, AirTicketReservations = _AirTicketReservations, AirGroupCostParameter = _AirgroupCostParameter }; return result = new Result() { Code = 0, Msg = "查询成功!", Data = data }; } else if (dto.PortType == 2 || dto.PortType == 3) { int count = _AirTicketReservations.Count; float totalPage = (float)count / dto.PageSize;//总页数 if (totalPage == 0) totalPage = 1; else totalPage = (int)Math.Ceiling((double)totalPage); var grp_AirTickets = new List(); for (int i = 0; i < dto.PageSize; i++) { var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize; if (RowIndex < _AirTicketReservations.Count) { grp_AirTickets.Add(_AirTicketReservations[RowIndex]); } else { break; } } var rst = new ListViewBase { DataList = grp_AirTickets, DataCount = count, CurrPageIndex = dto.PageIndex, CurrPageSize = dto.PageSize }; var data = new { AirData = rst, AirGroupCostParameter = _AirgroupCostParameter }; return new Result() { Code = 0, Msg = "查询成功!", Data = data }; } else { return new Result() { Code = -1, Msg = "请传入PortType参数!1:Web,2:Android,3:IOS!" }; } } else { return new Result() { Code = -1, Msg = "暂无团组数据!" }; } } public async Task AirTicketResSelect(AirTicketResDto dto) { var result = new Result() { Code = -2, Msg = "未知错误" }; try { if (dto.DiId < 1) { dto.DiId = -1; } #region 团组下拉框 List grp_GroupsTaskAssignment = Query(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == 85).ToList(); var grp_NameView = new List(); string DiId = ""; foreach (var item in grp_GroupsTaskAssignment) { DiId += item.DIId + ","; } if (DiId.Length > 1) { DiId = DiId.Substring(0, DiId.Length - 1); string sql = string.Format(@"select * from Grp_DelegationInfo where Id in({0}) and IsDel={1} Order By Id Desc", DiId, 0); List grp_Delegations = _sqlSugar.SqlQueryable(sql).ToList(); if (grp_Delegations.Count == 0) { return result = new Result() { Code = -1, Msg = "查询失败!" }; } foreach (var item in grp_Delegations) { var groupNameView = new GroupNameView { Id = item.Id, GroupName = item.TeamName }; grp_NameView.Add(groupNameView); } } #endregion #region 其他下拉框查询 //舱位类型 List TicketClass = _sqlSugar.Queryable().Where(a => a.STid == 44 && a.IsDel == 0).ToList(); List _TicketClassa = _mapper.Map>(TicketClass); //支付方式 List Payment = _sqlSugar.Queryable().Where(a => a.STid == 14 && a.IsDel == 0).ToList(); List _Payment = _mapper.Map>(Payment); //卡类型 List CardType = _sqlSugar.Queryable().Where(a => a.STid == 15 && a.IsDel == 0).ToList(); List _CardType = _mapper.Map>(CardType); //合作方资料 List _AirTicketAgents = _sqlSugar.Queryable().Where(a => a.IsDel == 0).ToList(); foreach (var item in _AirTicketAgents) { EncryptionProcessor.DecryptProperties(item); } #endregion #region 客人名单下拉框 if (dto.DiId == -1) { var dele = _AirTicketAgents.FirstOrDefault(); dto.DiId = dele != null ? dele.Id : dto.DiId; } string sqlClient = string.Format("select b.Id,b.Pinyin,b.lastName,b.firstName,b.phone from Grp_TourClientList a, Crm_DeleClient b where a.clientid = b.id and a.isdel = 0 and a.diid = {0}", dto.DiId); var clientArr = _sqlSugar.SqlQueryable(sqlClient).ToList(); foreach (var item in clientArr) { EncryptionProcessor.DecryptProperties(item); } #endregion var data = new { TicketClass = _TicketClassa, Payment = _Payment, CardType = _CardType, GroupName = grp_NameView, AirTicketAgents = _AirTicketAgents, clientArr }; return result = new Result() { Code = 0, Msg = "查询成功!", Data = data }; } catch (Exception ex) { return result = new Result() { Code = -2, Msg = "程序错误" }; } } public async Task OpAirTicketRes(AirTicketResOpDto dto, Func> fn) { var result = new Result() { Code = -2, Msg = "未知错误" }; try { BeginTran(); int id = 0; var grp_AirTicket = _mapper.Map(dto.AirTicketResOpData); if (dto.Status == 1) { //string selectSql = string.Format(@"select * from Grp_AirTicketReservations where CONVERT(nvarchar,ClientName)= '{0}' and IsDel={1} and FlightsCode='{2}'" // , dto.AirTicketResOpData.ClientName, 0,dto.AirTicketResOpData.FlightsCode); //var DeleClient = await _sqlSugar.SqlQueryable(selectSql).FirstAsync();//查询是否存在 //if (DeleClient != null) //{ // return result = new Result() { Code = -1, Msg = "该机票信息已存在,请勿重复添加!" }; //} //else//不存在,可添加 //{ //grp_AirTicket.ArrivedTime = ""; //grp_AirTicket.LeaveDescription = ""; //grp_AirTicket.FlightsDescription = ""; //grp_AirTicket.DeleteUserId = 0; //grp_AirTicket.DeleteTime = ""; //grp_AirTicket.ReturnDescription = ""; grp_AirTicket.FlightsDate = DateTime.Parse(grp_AirTicket.FlightsDate).ToString("yyyy-MM-dd"); id = await AddAsyncReturnId(grp_AirTicket); if (id == 0) { result = new Result() { Code = -1, Msg = "添加失败!" }; } else { result = new Result() { Code = 0, Msg = "添加成功!" }; } // } if (result.Code == 0) { Grp_CreditCardPayment grp_CreditCard = _mapper.Map(dto.CardPaymentOpData); //PayDId == 刷卡 IsPay == 1 if (dto.CardPaymentOpData.PayDId == 72) grp_CreditCard.IsPay = 1; else grp_CreditCard.IsPay = 0; //获取新汇率 int diId,int CId, int currencyId var rate = await fn(dto.AirTicketResOpData.DiId, 85, dto.AirTicketResOpData.Currency); if (rate.Code == 0) { var rateInfo = (rate.Data as CurrencyInfo); if (rateInfo is not null) { grp_CreditCard.DayRate = rateInfo.Rate; grp_CreditCard.RMBPrice = rateInfo.Rate * grp_CreditCard.PayMoney; } else { grp_CreditCard.DayRate = 1; grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney; } } //换算 #region 老汇率处理方式 //Grp_TeamRate _TeamRate = _sqlSugar.Queryable().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85); //if (_TeamRate != null) //{ // if (grp_CreditCard.PaymentCurrency == 49) // { // grp_CreditCard.DayRate = _TeamRate.RateU; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU); // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); // } // else if (grp_CreditCard.PaymentCurrency == 51) // { // grp_CreditCard.DayRate = _TeamRate.RateE; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE); // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); // } // else // { // grp_CreditCard.DayRate = 1M; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney; // } //} //else //{ // grp_CreditCard.DayRate = 1M; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney; //} #endregion //判断是否超出成本 #region 自动审核(暂时屏蔽) //Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0); //if (grp_AirTicket.CType == 460)//经济舱 //{ // if (_GroupCostParameter != null) // { // if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice) // { // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 3;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 0; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } // else // { // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB); // var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum); // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } // } // else // { // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 0; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } //} //else if (grp_AirTicket.CType == 458) //{ // if (_GroupCostParameter != null) // { // if (Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice) // { // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 3;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } // else // { // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB); // var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum); // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } // } // else // { // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } //} //else //{ // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 0; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; //} #endregion grp_CreditCard.CId = id; grp_CreditCard.CTable = 85; grp_CreditCard.PayPercentage = 100; #region 查询上一次付款(注释) ////查询上一次付款信息 //Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1); //if (_CreditCardPayment != null) //{ // grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次 // grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次 // grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次 //} //else //{ // grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次 // grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次 // grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次 //} #endregion id = await _sqlSugar.Insertable(grp_CreditCard).ExecuteReturnIdentityAsync(); if (id == 0) { RollbackTran(); return result = new Result() { Code = -1, Msg = "添加失败!" }; } await UpdateAsync(a => a.Id == id, a => new Grp_AirTicketReservations { FlightsDescription = dto.AirTicketResOpData.FlightsDescription, }); CommitTran(); var data = new { ccpId = id, sign = 1 }; return result = new Result() { Code = 0, Msg = "添加成功!", Data = data }; } else { RollbackTran(); return result = new Result() { Code = -1, Msg = "添加失败!" }; } } else if (dto.Status == 2) { id = dto.AirTicketResOpData.Id; bool res = await UpdateAsync(a => a.Id == dto.AirTicketResOpData.Id, a => new Grp_AirTicketReservations { CType = dto.AirTicketResOpData.CType, PrePrice = dto.AirTicketResOpData.PrePrice, PreCurrency = dto.AirTicketResOpData.PreCurrency, Price = dto.AirTicketResOpData.Price, Currency = dto.AirTicketResOpData.Currency, ClientNum = dto.AirTicketResOpData.ClientNum, ClientName = dto.AirTicketResOpData.ClientName, IsCheckIn = dto.AirTicketResOpData.IsCheckIn, IsSetSeat = dto.AirTicketResOpData.IsSetSeat, IsPackage = dto.AirTicketResOpData.IsPackage, IsBagHandle = dto.AirTicketResOpData.IsBagHandle, IsTrain = dto.AirTicketResOpData.IsTrain, FlightsCode = dto.AirTicketResOpData.FlightsCode, FlightsCity = dto.AirTicketResOpData.FlightsCity, FlightsDescription = dto.AirTicketResOpData.FlightsDescription, PriceDescription = dto.AirTicketResOpData.PriceDescription, TicketNumber = dto.AirTicketResOpData.TicketNumber, TicketCode = dto.AirTicketResOpData.TicketCode, Remark = dto.AirTicketResOpData.Remark, }); if (!res) { result = new Result() { Code = -1, Msg = "修改失败!" }; } else { result = new Result() { Code = 0, Msg = "修改成功!" }; } if (result.Code == 0) { //C表操作 Grp_CreditCardPayment grp_CreditCard = _mapper.Map(dto.CardPaymentOpData); //PayDId == 刷卡 IsPay == 1 if (grp_CreditCard.PayDId == 72) grp_CreditCard.IsPay = 1; else grp_CreditCard.IsPay = 0; //获取新汇率 int diId,int CId, int currencyId var rate = await fn(dto.AirTicketResOpData.DiId, 85, dto.AirTicketResOpData.Currency); if (rate.Code == 0) { var rateInfo = (rate.Data as CurrencyInfo); if (rateInfo is not null) { grp_CreditCard.DayRate = rateInfo.Rate; grp_CreditCard.RMBPrice = rateInfo.Rate * grp_CreditCard.PayMoney; } else { grp_CreditCard.DayRate = 1; grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney; } } #region 老汇率修改(注释) //换算 Grp_TeamRate _TeamRate = _sqlSugar.Queryable().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85); //if (_TeamRate != null) //{ // if (grp_CreditCard.PaymentCurrency == 49) // { // grp_CreditCard.DayRate = _TeamRate.RateU; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU); // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); // } // else if (grp_CreditCard.PaymentCurrency == 51) // { // grp_CreditCard.DayRate = _TeamRate.RateE; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE); // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); // } // else // { // grp_CreditCard.DayRate = 1M; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney; // } //} //else //{ // grp_CreditCard.DayRate = 1M; // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney; //} #endregion #region 自动审核(注释) //Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0); //if (grp_AirTicket.CType == 460)//经济舱 //{ // if (_GroupCostParameter != null) // { // if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice) // { // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 3;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 0; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 1; // } // else // { // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB); // var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum); // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 1; // } // } // else // { // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } //} //else if (grp_AirTicket.CType == 458) //{ // if (_GroupCostParameter != null) // { // if ((_GroupCostParameter != null ? _GroupCostParameter.GWCB : 0) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice) // { // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 3;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 1; // } // else // { // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB); // var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum); // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 1; // } // } // else // { // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算 // grp_CreditCard.IsAuditGM = 0;//3 为自动审核 // grp_CreditCard.AuditGMOperate = 21; // grp_CreditCard.AuditGMDate = ""; // grp_CreditCard.IsPay = 0; // } //} #endregion grp_CreditCard.CId = id; grp_CreditCard.CTable = 85; grp_CreditCard.PayPercentage = 100; #region 查询上一次付款信息(注释) ////查询上一次付款信息 //Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1); //if (_CreditCardPayment != null) //{ // grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次 // grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次 // grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次 //} //else //{ // grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次 // grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次 // grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次 //} #endregion int CTable = await _sqlSugar.Updateable().Where(a => a.Id == dto.CardPaymentOpData.Id).SetColumns(a => new Grp_CreditCardPayment { PayDId = grp_CreditCard.PayDId, ConsumptionPatterns = grp_CreditCard.ConsumptionPatterns, ConsumptionDate = grp_CreditCard.ConsumptionDate, CTDId = grp_CreditCard.CTDId, BankNo = grp_CreditCard.BankNo, CardholderName = grp_CreditCard.CardholderName, PayMoney = grp_CreditCard.PayMoney, PaymentCurrency = grp_CreditCard.PaymentCurrency, DayRate = grp_CreditCard.DayRate, CompanyBankNo = grp_CreditCard.CompanyBankNo, OtherBankName = grp_CreditCard.OtherBankName, OtherSideNo = grp_CreditCard.OtherSideNo, OtherSideName = grp_CreditCard.OtherSideName, IsAuditGM = grp_CreditCard.IsAuditGM, AuditGMOperate = grp_CreditCard.AuditGMOperate, AuditGMDate = grp_CreditCard.AuditGMDate, IsPay = grp_CreditCard.IsPay, PayPercentage = grp_CreditCard.PayPercentage, PayThenMoney = grp_CreditCard.PayThenMoney, PayPercentageOld = grp_CreditCard.PayPercentageOld, PayThenMoneyOld = grp_CreditCard.PayThenMoneyOld, UpdateDate = grp_CreditCard.UpdateDate, Payee = grp_CreditCard.Payee, RMBPrice = grp_CreditCard.RMBPrice, OrbitalPrivateTransfer = grp_CreditCard.OrbitalPrivateTransfer, ExceedBudget = grp_CreditCard.ExceedBudget, Remark = grp_CreditCard.Remark, }).ExecuteCommandAsync(); if (CTable == 0) { RollbackTran(); return result = new Result() { Code = -1, Msg = "修改失败!" }; } else { Grp_CreditCardPayment ccp = Query(a => a.Id == dto.CardPaymentOpData.Id).First(); var data = new { ccpId = ccp.Id, sign = 2 }; result = new Result() { Code = 0, Msg = "修改成功!", Data = data }; } } else { result = new Result() { Code = -1, Msg = "修改失败!" }; RollbackTran(); } } CommitTran(); } catch (Exception ex) { RollbackTran(); return result = new Result() { Code = -2, Msg = "程序错误" }; throw; } return result; } /// /// 导出机票费用报表 /// /// /// /// public async Task DeriveAirTicketRes(AirTicketResDto dto) { var result = new Result() { Code = -2, Msg = "未知错误" }; try { string sql = string.Format(@"Select atr.*,ccp.IsAuditGM,sd1.Name As 'CTypeName',sd2.Name As 'PreCurrencyStr',sd3.Name As CurrencyStr From Grp_AirTicketReservations atr Left Join Grp_CreditCardPayment ccp On atr.Id = ccp.CId And atr.DIId = ccp.DIId And ccp.IsDel = 0 Left Join Sys_SetData sd1 On sd1.Id = atr.ctype Left Join Sys_SetData sd2 On sd2.Id = atr.PreCurrency Left Join Sys_SetData sd3 On sd3.Id = atr.Currency Where atr.IsDel = 0 And atr.DIId={0} Order By atr.FlightsDate Asc", dto.DiId); List _AirTicketReservations = _sqlSugar.SqlQueryable(sql).ToList(); if (_AirTicketReservations.Count != 0) { Grp_DelegationInfo grp_Delegation = _sqlSugar.Queryable().First(a => a.Id == dto.DiId && a.IsDel == 0); Sys_Users _Users = _sqlSugar.Queryable().First(a => a.Id == dto.UserId && a.IsDel == 0); return result = new Result() { Code = 0, Msg = "成功", Data = new { Delegation = grp_Delegation, AirTicketRes = _AirTicketReservations, Users = _Users } }; } else { return result = new Result() { Code = -1, Msg = "暂无数据", Data = null }; } } catch (Exception) { return result = new Result() { Code = -2, Msg = "未知错误" }; } } public async Task ItineraryAirTicketRes(ItineraryAirTicketResDto dto) { try { string sql = string.Format(@"select a.*,c.IsAuditGM,(select Name from Sys_SetData where Id=a.cType) as 'CTypeName',(select Name from Sys_SetData where Id=a.PreCurrency) as 'PreCurrencyStr',(select Name from Sys_SetData where Id=a.Currency) as 'CurrencyStr' from Grp_AirTicketReservations a,Grp_CreditCardPayment c where a.id=c.CId and a.isdel={1} and a.DIId={0} Order By a.CreateTime desc", dto.DiId, 0); List _AirTicketReservations = _sqlSugar.SqlQueryable(sql).ToList(); if (_AirTicketReservations.Count == 0) { return new Result() { Code = -1, Msg = "暂无数据", Data = null }; } else { return new Result() { Code = 0, Msg = "查询成功", Data = _AirTicketReservations }; } } catch (Exception) { return new Result() { Code = -2, Msg = "未知错误" }; } } public async Task> ReTransBatch(List list, string aimlanguage) { var reultStr = new List(); if (list.Count < 0) { return reultStr; } //待翻译内容,必须是UTF-8编码 string q = ""; string Qtext = ""; foreach (var item in list) { q += item; Qtext += "q=" + item + "&"; } if (Qtext.Length > 0) { Qtext = Qtext[..^1]; } var dic = new Dictionary(); string url = "https://openapi.youdao.com/v2/api"; //应用ID string appKey = "0fe3bc01e109ed36"; //应用应用密钥 string appSecret = "1f2x9TrqJfSBEJ8iH9GEFGgTyaYGjEry"; //UUID string salt = DateTime.Now.Millisecond.ToString(); //源语言 dic.Add("from", "zh-CHS"); //目标语言 dic.Add("to", aimlanguage); //签名类型 dic.Add("signType", "v3"); //时间戳 string curtime = ((GetBeijingTime().ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString(); dic.Add("curtime", curtime); string signStr = appKey + Truncate(q) + salt + curtime + appSecret; ; string sign = ComputeHash(signStr, SHA256.Create()); dic.Add("q", Qtext); dic.Add("appKey", appKey); dic.Add("salt", salt); dic.Add("sign", sign); try { //Thread.Sleep(500); string jsonStr = await TransSync(url, dic); JObject trans = (JObject)JsonConvert.DeserializeObject(jsonStr); string errorCode = trans["errorCode"].ToString(); if (errorCode == "0") { reultStr = JsonConvert.DeserializeObject>(trans["translateResults"].ToString()); } return reultStr; } catch (Exception) { return reultStr; } } public string Processing(string str)//处理这段英文的方法 { if (string.IsNullOrEmpty(str)) { return ""; } string[] strArray; if (str.Contains(" ")) strArray = str.Split(" ".ToCharArray()); else if (str.Contains(",")) strArray = str.Split(",".ToCharArray()); else if (str.Contains(" ") && str.Contains(",")) strArray = str.Split(",".ToCharArray()); else strArray = new string[] { str }; string result = string.Empty;//定义一个空字符串 foreach (string s in strArray)//循环处理数组里面每一个字符串 { //result += System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(s) + " "; result += string.Concat(s[..1].ToUpper(), s.AsSpan(1), " "); //.Substring(0, 1).ToUpper()把循环到的字符串第一个字母截取并转换为大写,并用s.Substring(1)得到循环到的字符串除第一个字符后的所有字符拼装到首字母后面。 } return result; } protected static async Task TransSync(string url, Dictionary dic) { string result = ""; using (var client = new HttpClient()) { var content = new FormUrlEncodedContent(dic); HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); if (response.Content.Headers.ContentType.MediaType.ToLower().Equals("audio/mp3")) { await SaveBinaryFile(response, "合成的音频存储路径"); } else { result = await response.Content.ReadAsStringAsync(); } } return result; } private static async Task SaveBinaryFile(HttpResponseMessage response, string FileName) { string FilePath = FileName + DateTime.Now.Millisecond.ToString() + ".mp3"; bool Value = true; byte[] buffer = new byte[1024]; try { if (File.Exists(FilePath)) File.Delete(FilePath); using Stream outStream = File.Create(FilePath); using Stream inStream = await response.Content.ReadAsStreamAsync(); int l; do { l = await inStream.ReadAsync(buffer); if (l > 0) await outStream.WriteAsync(buffer.AsMemory(0, l)); } while (l > 0); } catch { Value = false; } return Value; } protected static string ComputeHash(string input, HashAlgorithm algorithm) { byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] hashedBytes = algorithm.ComputeHash(inputBytes); return BitConverter.ToString(hashedBytes).Replace("-", ""); } protected static string Truncate(string q) { if (q == null) { return null; } int len = q.Length; return len <= 20 ? q : q.Substring(0, 10) + len + q.Substring(len - 10, 10); } public static DateTime GetBeijingTime() { string datetime = string.Empty; try { using (var client = new HttpClient()) { client.Timeout = TimeSpan.FromSeconds(3); HttpResponseMessage response = client.GetAsync("https://www.baidu.com").Result; response.EnsureSuccessStatusCode(); datetime = response.Headers.Date?.ToString() ?? DateTime.Now.ToString(); } return Convert.ToDateTime(datetime); } catch (Exception) { return DateTime.Now; } } public class TranslateResult { public string Query { get; set; } public string Translation { get; set; } public string Type { get; set; } public string VerifyResult { get; set; } } } }