AirTicketResRepository.cs 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194
  1. using AutoMapper;
  2. using Newtonsoft.Json.Linq;
  3. using Newtonsoft.Json;
  4. using OASystem.Domain;
  5. using OASystem.Domain.Dtos.Groups;
  6. using OASystem.Domain.Dtos.UserDto;
  7. using OASystem.Domain.Entities.Business;
  8. using OASystem.Domain.Entities.Customer;
  9. using OASystem.Domain.Entities.Groups;
  10. using OASystem.Domain.Entities.Resource;
  11. using OASystem.Domain.ViewModels.Groups;
  12. using OASystem.Infrastructure.Tools;
  13. using Org.BouncyCastle.Asn1.Ocsp;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.IO;
  17. using System.Linq;
  18. using System.Security.Cryptography;
  19. using System.Security.Policy;
  20. using System.Text;
  21. using System.Threading.Tasks;
  22. using System.Web;
  23. using System.Xml.Linq;
  24. using System.Net;
  25. using NPOI.XWPF.UserModel;
  26. using NPOI.OpenXmlFormats.Wordprocessing;
  27. using System.Collections;
  28. using Aspose.Words.Tables;
  29. using Aspose.Words;
  30. using System.Reflection;
  31. using OASystem.Domain.Entities.Financial;
  32. using NPOI.SS.Formula.Functions;
  33. namespace OASystem.Infrastructure.Repositories.Groups
  34. {
  35. public class AirTicketResRepository : BaseRepository<Grp_AirTicketReservations, Grp_AirTicketReservations>
  36. {
  37. private readonly IMapper _mapper;
  38. public AirTicketResRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
  39. {
  40. _mapper = mapper;
  41. }
  42. public async Task<Result> AirTicketResById(AirTicketResByIdDto dto)
  43. {
  44. Result result = new Result() { Code = -2, Msg = "未知错误" };
  45. try
  46. {
  47. Grp_AirTicketReservations grp_AirTicket = _sqlSugar.Queryable<Grp_AirTicketReservations>().First(a => a.Id == dto.Id && a.IsDel == 0);
  48. if (grp_AirTicket == null)
  49. {
  50. return result = new Result() { Code = -1, Msg = "暂无数据" };
  51. }
  52. else
  53. {
  54. Grp_CreditCardPayment grp_CreditCard = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == grp_AirTicket.Id && a.IsDel == 0 && a.CTable==85);
  55. if (grp_CreditCard == null) { return result = new Result() { Code = -1, Msg = "暂无数据" }; }
  56. return result = new Result()
  57. {
  58. Code = 0,
  59. Msg = "查询成功!",
  60. Data = new
  61. {
  62. AirTicket = grp_AirTicket,
  63. CreditCard = grp_CreditCard,
  64. }
  65. };
  66. }
  67. }
  68. catch (Exception)
  69. {
  70. return result = new Result() { Code = -2, Msg = "未知错误" };
  71. throw;
  72. }
  73. }
  74. public async Task<Result> AirTicketResList(AirTicketResDto dto)
  75. {
  76. Result result = new Result() { Code = -2, Msg = "未知错误" };
  77. Grp_DelegationInfo _DelegationInfo = _sqlSugar.Queryable<Grp_DelegationInfo>().First(it => it.Id == dto.DiId);
  78. if (_DelegationInfo != null)
  79. {
  80. string UserId = "";
  81. List<Grp_GroupsTaskAssignment> gtaUIdList = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(a=>a.DIId==dto.DiId && a.IsDel==0 && a.CTId==85).ToList();
  82. foreach (Grp_GroupsTaskAssignment gta in gtaUIdList)
  83. UserId += gta.UId + ",";
  84. if (!string.IsNullOrWhiteSpace(UserId))
  85. {
  86. UserId = UserId.Substring(0, UserId.Length - 1);
  87. }
  88. else
  89. {
  90. UserId = "0";
  91. }
  92. string sqlWhere = "";
  93. if (dto.IsPaySign != -1)
  94. {
  95. sqlWhere += string.Format(@" And ccp.IsPay = {0} ", dto.IsPaySign);
  96. }
  97. string sql = string.Format(@"Select atr.*,ccp.IsAuditGM,sd1.Name As CTypeName,sd2.Name As PreCurrencyStr,sd3.Name As CurrencyStr,ccp.IsPay
  98. From Grp_AirTicketReservations atr
  99. Left Join Grp_CreditCardPayment ccp On atr.Id = ccp.CId And atr.DIId = ccp.DIId And ccp.IsDel = 0
  100. Left Join Sys_SetData sd1 On sd1.Id = atr.ctype
  101. Left Join Sys_SetData sd2 On sd2.Id = atr.PreCurrency
  102. Left Join Sys_SetData sd3 On sd3.Id = atr.Currency
  103. Where atr.IsDel = 0 And atr.DIId={0} {1}
  104. Order By atr.FlightsDate Asc", dto.DiId, sqlWhere);
  105. List<AirTicketReservationsView> _AirTicketReservations = _sqlSugar.SqlQueryable<AirTicketReservationsView>(sql).ToList();
  106. foreach (var item in _AirTicketReservations)
  107. {
  108. if (item.FlightsDescription.Contains("\n"))
  109. {
  110. var spilitArr = Regex.Split(item.FlightsDescription, "\n");
  111. int rowindex = 1;
  112. foreach (var spilitItem in spilitArr)
  113. {
  114. try
  115. {
  116. var spDotandEmpty = spilitItem.Split('.')[1].Split(' ').Where(x => !string.IsNullOrEmpty(x)).ToList();
  117. var depCode = spDotandEmpty[3].Substring(0, 3);
  118. var arrCode = spDotandEmpty[3].Substring(3, 3);
  119. Res_ThreeCode depData = _sqlSugar.Queryable<Res_ThreeCode>().First(it => it.IsDel == 0 && it.Three == depCode);
  120. Res_ThreeCode arrData = _sqlSugar.Queryable<Res_ThreeCode>().First(it => it.IsDel == 0 && it.Three == arrCode);
  121. string day = spDotandEmpty[2].Substring(2, 2);//日
  122. string monthAbbreviations = spDotandEmpty[2].Substring(4, 3).ToUpper();//月份
  123. switch (monthAbbreviations)
  124. {
  125. case "JAN":
  126. monthAbbreviations = "1";
  127. break;
  128. case "FEB":
  129. monthAbbreviations = "2";
  130. break;
  131. case "MAR":
  132. monthAbbreviations = "3";
  133. break;
  134. case "APR":
  135. monthAbbreviations = "4";
  136. break;
  137. case "MAY":
  138. monthAbbreviations = "5";
  139. break;
  140. case "JUN":
  141. monthAbbreviations = "6";
  142. break;
  143. case "JUL":
  144. monthAbbreviations = "7";
  145. break;
  146. case "AUG":
  147. monthAbbreviations = "8";
  148. break;
  149. case "SEP":
  150. monthAbbreviations = "9";
  151. break;
  152. case "OCT":
  153. monthAbbreviations = "10";
  154. break;
  155. case "NOV":
  156. monthAbbreviations = "11";
  157. break;
  158. case "DEC":
  159. monthAbbreviations = "12";
  160. break;
  161. }
  162. string tate = $"{monthAbbreviations}月{day}日";
  163. item.FlightDescription += rowindex + ". " + depData.AirPort + " " + arrData.AirPort + " (" + tate + ")\r\n";
  164. }
  165. catch (Exception ex)
  166. {
  167. item.FlightDescription = "录入数据不规范!请检查";
  168. break;
  169. }
  170. rowindex++;
  171. }
  172. }
  173. else
  174. {
  175. try
  176. {
  177. var spDotandEmpty = item.FlightsDescription.Split('.')[1].Split(' ').Where(x => !string.IsNullOrEmpty(x)).ToList();
  178. var depCode = spDotandEmpty[3].Substring(0, 3);
  179. var arrCode = spDotandEmpty[3].Substring(3, 3);
  180. Res_ThreeCode depData = _sqlSugar.Queryable<Res_ThreeCode>().First(it => it.IsDel == 0 && it.Three == depCode);
  181. Res_ThreeCode arrData = _sqlSugar.Queryable<Res_ThreeCode>().First(it => it.IsDel == 0 && it.Three == arrCode);
  182. string day = spDotandEmpty[2].Substring(2, 2);//日
  183. string monthAbbreviations = spDotandEmpty[2].Substring(4, 3).ToUpper();//月份
  184. switch (monthAbbreviations)
  185. {
  186. case "JAN":
  187. monthAbbreviations = "1";
  188. break;
  189. case "FEB":
  190. monthAbbreviations = "2";
  191. break;
  192. case "MAR":
  193. monthAbbreviations = "3";
  194. break;
  195. case "APR":
  196. monthAbbreviations = "4";
  197. break;
  198. case "MAY":
  199. monthAbbreviations = "5";
  200. break;
  201. case "JUN":
  202. monthAbbreviations = "6";
  203. break;
  204. case "JUL":
  205. monthAbbreviations = "7";
  206. break;
  207. case "AUG":
  208. monthAbbreviations = "8";
  209. break;
  210. case "SEP":
  211. monthAbbreviations = "9";
  212. break;
  213. case "OCT":
  214. monthAbbreviations = "10";
  215. break;
  216. case "NOV":
  217. monthAbbreviations = "11";
  218. break;
  219. case "DEC":
  220. monthAbbreviations = "12";
  221. break;
  222. }
  223. string tate = $"{monthAbbreviations}月{day}日";
  224. item.FlightDescription += depData.AirPort + " " + arrData.AirPort + " (" + tate + ")\r\n";
  225. }
  226. catch (Exception)
  227. {
  228. item.FlightDescription = "录入数据不规范!请检查";
  229. }
  230. }
  231. }
  232. //团组成本预算表查询
  233. Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == dto.DiId && a.IsDel==0 && a.CostType =="A" && a.IsShare == 1);
  234. AirGroupCostParameterView _AirgroupCostParameter = _mapper.Map<AirGroupCostParameterView>(_GroupCostParameter);
  235. for (int i = 0; i <_AirTicketReservations.Count; i++)
  236. {
  237. string [] ClientArr= _AirTicketReservations[i].ClientName.Split(',').Where(x=>!string.IsNullOrWhiteSpace(x)).ToArray();
  238. foreach (var item in ClientArr)
  239. {
  240. bool isNumeric = int.TryParse(item, out _);
  241. if (isNumeric)
  242. {
  243. if (item == "-1")
  244. {
  245. _AirTicketReservations[i].ClientNameStr += "行程单,";
  246. }
  247. else
  248. {
  249. Crm_DeleClient DeleClient = _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.IsDel == 0 && a.Id == int.Parse(item)).First();
  250. _AirTicketReservations[i].ClientNameStr += DeleClient.Pinyin + ',';
  251. }
  252. }
  253. else
  254. {
  255. _AirTicketReservations[i].ClientNameStr += item;
  256. }
  257. }
  258. if (_AirTicketReservations[i].ClientNameStr is not null)
  259. {
  260. _AirTicketReservations[i].ClientNameStr = _AirTicketReservations[i].ClientNameStr.Substring(0, _AirTicketReservations[i].ClientNameStr.Length - 1);
  261. }
  262. }
  263. if (dto.PortType==1)
  264. {
  265. var data = new
  266. {
  267. DelegationInfo = _DelegationInfo,
  268. AirTicketReservations = _AirTicketReservations,
  269. AirGroupCostParameter = _AirgroupCostParameter
  270. };
  271. return result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
  272. }
  273. else if(dto.PortType == 2 || dto.PortType==3)
  274. {
  275. int count = _AirTicketReservations.Count;
  276. float totalPage = (float)count / dto.PageSize;//总页数
  277. if (totalPage == 0) totalPage = 1;
  278. else totalPage = (int)Math.Ceiling((double)totalPage);
  279. List<AirTicketReservationsView> grp_AirTickets = new List<AirTicketReservationsView>();
  280. for (int i = 0; i < dto.PageSize; i++)
  281. {
  282. var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize;
  283. if (RowIndex < _AirTicketReservations.Count)
  284. {
  285. grp_AirTickets.Add(_AirTicketReservations[RowIndex]);
  286. }
  287. else
  288. {
  289. break;
  290. }
  291. }
  292. ListViewBase<AirTicketReservationsView> rst = new ListViewBase<AirTicketReservationsView>();
  293. rst.DataList = grp_AirTickets;
  294. rst.DataCount = count;
  295. rst.CurrPageIndex = dto.PageIndex;
  296. rst.CurrPageSize = dto.PageSize;
  297. var data = new
  298. {
  299. AirData= rst,
  300. AirGroupCostParameter = _AirgroupCostParameter
  301. };
  302. return result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
  303. }
  304. else
  305. {
  306. return result = new Result() { Code = -1, Msg = "请传入PortType参数!1:Web,2:Android,3:IOS!" };
  307. }
  308. }
  309. else
  310. {
  311. return result = new Result() { Code = -1, Msg = "暂无团组数据!" };
  312. }
  313. }
  314. public async Task<Result> AirTicketResSelect(AirTicketResDto dto)
  315. {
  316. Result result = new Result() { Code = -2, Msg = "未知错误" };
  317. try
  318. {
  319. if (dto.DiId < 1)
  320. {
  321. dto.DiId = -1;
  322. }
  323. #region 团组下拉框
  324. List<Grp_GroupsTaskAssignment> grp_GroupsTaskAssignment = Query<Grp_GroupsTaskAssignment>(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == 85).ToList();
  325. List<GroupNameView> grp_NameView = new List<GroupNameView>();
  326. string DiId = "";
  327. foreach (var item in grp_GroupsTaskAssignment)
  328. {
  329. DiId += item.DIId + ",";
  330. }
  331. if (DiId.Length>1)
  332. {
  333. DiId = DiId.Substring(0, DiId.Length - 1);
  334. string sql = string.Format(@"select * from Grp_DelegationInfo where Id in({0}) and IsDel={1} Order By Id Desc", DiId, 0);
  335. List<Grp_DelegationInfo> grp_Delegations = _sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
  336. if (grp_Delegations.Count == 0)
  337. {
  338. return result = new Result() { Code = -1, Msg = "查询失败!" };
  339. }
  340. foreach (var item in grp_Delegations)
  341. {
  342. GroupNameView groupNameView = new GroupNameView();
  343. groupNameView.Id = item.Id;
  344. groupNameView.GroupName = item.TeamName;
  345. grp_NameView.Add(groupNameView);
  346. }
  347. }
  348. #endregion
  349. #region 其他下拉框查询
  350. //舱位类型
  351. List<Sys_SetData> TicketClass = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 44 && a.IsDel == 0).ToList();
  352. List<SetDataInfoView> _TicketClassa = _mapper.Map<List<SetDataInfoView>>(TicketClass);
  353. //支付方式
  354. List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList();
  355. List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment);
  356. //卡类型
  357. List<Sys_SetData> CardType = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 15 && a.IsDel == 0).ToList();
  358. List<SetDataInfoView> _CardType = _mapper.Map<List<SetDataInfoView>>(CardType);
  359. //合作方资料
  360. List<Res_AirTicketAgent> _AirTicketAgents = _sqlSugar.Queryable<Res_AirTicketAgent>().Where(a => a.IsDel == 0).ToList();
  361. #endregion
  362. #region 客人名单下拉框
  363. if (dto.DiId == -1)
  364. {
  365. var dele = _AirTicketAgents.FirstOrDefault();
  366. dto.DiId = dele != null ? dele.Id : dto.DiId;
  367. }
  368. 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);
  369. var clientArr = _sqlSugar.SqlQueryable<SimplClientInfo>(sqlClient).ToList();
  370. #endregion
  371. var data = new
  372. {
  373. TicketClass = _TicketClassa,
  374. Payment = _Payment,
  375. CardType = _CardType,
  376. GroupName = grp_NameView,
  377. AirTicketAgents = _AirTicketAgents,
  378. clientArr
  379. };
  380. return result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
  381. }
  382. catch (Exception ex)
  383. {
  384. return result = new Result() { Code = -2, Msg = "程序错误" };
  385. }
  386. }
  387. public async Task<Result> OpAirTicketRes(AirTicketResOpDto dto,Func<int,int,int,Task<Result>> fn)
  388. {
  389. Result result = new Result() { Code = -2, Msg = "未知错误" };
  390. try
  391. {
  392. BeginTran();
  393. int id = 0;
  394. Grp_AirTicketReservations grp_AirTicket = _mapper.Map<Grp_AirTicketReservations>(dto.AirTicketResOpData);
  395. if (dto.Status == 1)
  396. {
  397. //string selectSql = string.Format(@"select * from Grp_AirTicketReservations where CONVERT(nvarchar,ClientName)= '{0}' and IsDel={1} and FlightsCode='{2}'"
  398. // , dto.AirTicketResOpData.ClientName, 0,dto.AirTicketResOpData.FlightsCode);
  399. //var DeleClient = await _sqlSugar.SqlQueryable<Grp_AirTicketReservations>(selectSql).FirstAsync();//查询是否存在
  400. //if (DeleClient != null)
  401. //{
  402. // return result = new Result() { Code = -1, Msg = "该机票信息已存在,请勿重复添加!" };
  403. //}
  404. //else//不存在,可添加
  405. //{
  406. //grp_AirTicket.ArrivedTime = "";
  407. //grp_AirTicket.LeaveDescription = "";
  408. //grp_AirTicket.FlightsDescription = "";
  409. //grp_AirTicket.DeleteUserId = 0;
  410. //grp_AirTicket.DeleteTime = "";
  411. //grp_AirTicket.ReturnDescription = "";
  412. grp_AirTicket.FlightsDate= DateTime.Parse(grp_AirTicket.FlightsDate).ToString("yyyy-MM-dd");
  413. id = await AddAsyncReturnId(grp_AirTicket);
  414. if (id == 0)
  415. {
  416. result = new Result() { Code = -1, Msg = "添加失败!" };
  417. }
  418. else
  419. {
  420. result = new Result() { Code = 0, Msg = "添加成功!" };
  421. }
  422. // }
  423. if (result.Code == 0)
  424. {
  425. Grp_CreditCardPayment grp_CreditCard = _mapper.Map<Grp_CreditCardPayment>(dto.CardPaymentOpData);
  426. //PayDId == 刷卡 IsPay == 1
  427. //if (dto.CardPaymentOpData.PayDId == 72)
  428. //{
  429. // grp_CreditCard.IsPay = 1;
  430. //}
  431. //else grp_CreditCard.IsPay = 0;
  432. grp_CreditCard.IsPay = 0;
  433. //获取新汇率 int diId,int CId, int currencyId
  434. var rate = await fn(dto.AirTicketResOpData.DiId,85,dto.AirTicketResOpData.Currency);
  435. if (rate.Code == 0)
  436. {
  437. var rateInfo = (rate.Data as CurrencyInfo);
  438. if (rateInfo is not null)
  439. {
  440. grp_CreditCard.DayRate = rateInfo.Rate;
  441. grp_CreditCard.RMBPrice = rateInfo.Rate * grp_CreditCard.PayMoney;
  442. }
  443. else
  444. {
  445. grp_CreditCard.DayRate = 1;
  446. grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
  447. }
  448. }
  449. //换算
  450. #region 老汇率处理方式
  451. //Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85);
  452. //if (_TeamRate != null)
  453. //{
  454. // if (grp_CreditCard.PaymentCurrency == 49)
  455. // {
  456. // grp_CreditCard.DayRate = _TeamRate.RateU;
  457. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
  458. // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU);
  459. // }
  460. // else if (grp_CreditCard.PaymentCurrency == 51)
  461. // {
  462. // grp_CreditCard.DayRate = _TeamRate.RateE;
  463. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
  464. // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE);
  465. // }
  466. // else
  467. // {
  468. // grp_CreditCard.DayRate = 1M;
  469. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
  470. // }
  471. //}
  472. //else
  473. //{
  474. // grp_CreditCard.DayRate = 1M;
  475. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
  476. //}
  477. #endregion
  478. //判断是否超出成本
  479. #region 自动审核(暂时屏蔽)
  480. //Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0);
  481. //if (grp_AirTicket.CType == 460)//经济舱
  482. //{
  483. // if (_GroupCostParameter != null)
  484. // {
  485. // if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
  486. // {
  487. // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
  488. // grp_CreditCard.IsAuditGM = 3;//3 为自动审核
  489. // grp_CreditCard.AuditGMOperate = 0;
  490. // grp_CreditCard.AuditGMDate = "";
  491. // grp_CreditCard.IsPay = 0;
  492. // }
  493. // else
  494. // {
  495. // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB);
  496. // var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
  497. // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
  498. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  499. // grp_CreditCard.AuditGMOperate = 21;
  500. // grp_CreditCard.AuditGMDate = "";
  501. // grp_CreditCard.IsPay = 0;
  502. // }
  503. // }
  504. // else
  505. // {
  506. // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
  507. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  508. // grp_CreditCard.AuditGMOperate = 0;
  509. // grp_CreditCard.AuditGMDate = "";
  510. // grp_CreditCard.IsPay = 0;
  511. // }
  512. //}
  513. //else if (grp_AirTicket.CType == 458)
  514. //{
  515. // if (_GroupCostParameter != null)
  516. // {
  517. // if (Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
  518. // {
  519. // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
  520. // grp_CreditCard.IsAuditGM = 3;//3 为自动审核
  521. // grp_CreditCard.AuditGMOperate = 21;
  522. // grp_CreditCard.AuditGMDate = "";
  523. // grp_CreditCard.IsPay = 0;
  524. // }
  525. // else
  526. // {
  527. // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB);
  528. // var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
  529. // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
  530. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  531. // grp_CreditCard.AuditGMOperate = 21;
  532. // grp_CreditCard.AuditGMDate = "";
  533. // grp_CreditCard.IsPay = 0;
  534. // }
  535. // }
  536. // else
  537. // {
  538. // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
  539. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  540. // grp_CreditCard.AuditGMOperate = 21;
  541. // grp_CreditCard.AuditGMDate = "";
  542. // grp_CreditCard.IsPay = 0;
  543. // }
  544. //}
  545. //else
  546. //{
  547. // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
  548. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  549. // grp_CreditCard.AuditGMOperate = 0;
  550. // grp_CreditCard.AuditGMDate = "";
  551. // grp_CreditCard.IsPay = 0;
  552. //}
  553. #endregion
  554. grp_CreditCard.CId = id;
  555. grp_CreditCard.CTable = 85;
  556. grp_CreditCard.PayPercentage = 100;
  557. #region 查询上一次付款(注释)
  558. ////查询上一次付款信息
  559. //Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1);
  560. //if (_CreditCardPayment != null)
  561. //{
  562. // grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次
  563. // grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次
  564. // grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次
  565. //}
  566. //else
  567. //{
  568. // grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次
  569. // grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次
  570. // grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次
  571. //}
  572. #endregion
  573. id = await _sqlSugar.Insertable(grp_CreditCard).ExecuteReturnIdentityAsync();
  574. if (id == 0)
  575. {
  576. RollbackTran();
  577. return result = new Result() { Code = -1, Msg = "添加失败!" };
  578. }
  579. await UpdateAsync(a => a.Id == id, a => new Grp_AirTicketReservations
  580. {
  581. FlightsDescription = dto.AirTicketResOpData.FlightsDescription,
  582. });
  583. CommitTran();
  584. var data = new { ccpId = id, sign = 1 };
  585. return result = new Result() { Code = 0, Msg = "添加成功!", Data = data };
  586. }
  587. else
  588. {
  589. RollbackTran();
  590. return result = new Result() { Code = -1, Msg = "添加失败!" };
  591. }
  592. }
  593. else if (dto.Status == 2)
  594. {
  595. id = dto.AirTicketResOpData.Id;
  596. bool res = await UpdateAsync(a => a.Id == dto.AirTicketResOpData.Id, a => new Grp_AirTicketReservations
  597. {
  598. CType = dto.AirTicketResOpData.CType,
  599. PrePrice = dto.AirTicketResOpData.PrePrice,
  600. PreCurrency = dto.AirTicketResOpData.PreCurrency,
  601. Price = dto.AirTicketResOpData.Price,
  602. Currency = dto.AirTicketResOpData.Currency,
  603. ClientNum = dto.AirTicketResOpData.ClientNum,
  604. ClientName = dto.AirTicketResOpData.ClientName,
  605. IsCheckIn = dto.AirTicketResOpData.IsCheckIn,
  606. IsSetSeat = dto.AirTicketResOpData.IsSetSeat,
  607. IsPackage = dto.AirTicketResOpData.IsPackage,
  608. IsBagHandle = dto.AirTicketResOpData.IsBagHandle,
  609. IsTrain = dto.AirTicketResOpData.IsTrain,
  610. FlightsCode = dto.AirTicketResOpData.FlightsCode,
  611. FlightsCity = dto.AirTicketResOpData.FlightsCity,
  612. FlightsDescription = dto.AirTicketResOpData.FlightsDescription,
  613. PriceDescription = dto.AirTicketResOpData.PriceDescription,
  614. TicketNumber = dto.AirTicketResOpData.TicketNumber,
  615. TicketCode = dto.AirTicketResOpData.TicketCode,
  616. Remark = dto.AirTicketResOpData.Remark,
  617. });
  618. if (!res){result = new Result() { Code = -1, Msg = "修改失败!" }; }
  619. else { result = new Result() { Code = 0, Msg = "修改成功!" }; }
  620. if (result.Code == 0)
  621. {
  622. //C表操作
  623. Grp_CreditCardPayment grp_CreditCard = _mapper.Map<Grp_CreditCardPayment>(dto.CardPaymentOpData);
  624. //PayDId == 刷卡 IsPay == 1
  625. //if (grp_CreditCard.PayDId == 72) grp_CreditCard.IsPay = 1;
  626. //else grp_CreditCard.IsPay = 0;
  627. grp_CreditCard.IsPay = 0;
  628. //获取新汇率 int diId,int CId, int currencyId
  629. var rate = await fn(dto.AirTicketResOpData.DiId, 85, dto.AirTicketResOpData.Currency);
  630. if (rate.Code == 0)
  631. {
  632. var rateInfo = (rate.Data as CurrencyInfo);
  633. if (rateInfo is not null)
  634. {
  635. grp_CreditCard.DayRate = rateInfo.Rate;
  636. grp_CreditCard.RMBPrice = rateInfo.Rate * grp_CreditCard.PayMoney;
  637. }
  638. else
  639. {
  640. grp_CreditCard.DayRate = 1;
  641. grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
  642. }
  643. }
  644. #region 老汇率修改(注释)
  645. //换算
  646. Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85);
  647. //if (_TeamRate != null)
  648. //{
  649. // if (grp_CreditCard.PaymentCurrency == 49)
  650. // {
  651. // grp_CreditCard.DayRate = _TeamRate.RateU;
  652. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
  653. // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU);
  654. // }
  655. // else if (grp_CreditCard.PaymentCurrency == 51)
  656. // {
  657. // grp_CreditCard.DayRate = _TeamRate.RateE;
  658. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
  659. // //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE);
  660. // }
  661. // else
  662. // {
  663. // grp_CreditCard.DayRate = 1M;
  664. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
  665. // }
  666. //}
  667. //else
  668. //{
  669. // grp_CreditCard.DayRate = 1M;
  670. // grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
  671. //}
  672. #endregion
  673. #region 自动审核(注释)
  674. //Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0);
  675. //if (grp_AirTicket.CType == 460)//经济舱
  676. //{
  677. // if (_GroupCostParameter != null)
  678. // {
  679. // if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
  680. // {
  681. // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
  682. // grp_CreditCard.IsAuditGM = 3;//3 为自动审核
  683. // grp_CreditCard.AuditGMOperate = 0;
  684. // grp_CreditCard.AuditGMDate = "";
  685. // grp_CreditCard.IsPay = 1;
  686. // }
  687. // else
  688. // {
  689. // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB);
  690. // var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
  691. // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
  692. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  693. // grp_CreditCard.AuditGMOperate = 21;
  694. // grp_CreditCard.AuditGMDate = "";
  695. // grp_CreditCard.IsPay = 1;
  696. // }
  697. // }
  698. // else
  699. // {
  700. // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
  701. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  702. // grp_CreditCard.AuditGMOperate = 21;
  703. // grp_CreditCard.AuditGMDate = "";
  704. // grp_CreditCard.IsPay = 0;
  705. // }
  706. //}
  707. //else if (grp_AirTicket.CType == 458)
  708. //{
  709. // if (_GroupCostParameter != null)
  710. // {
  711. // if ((_GroupCostParameter != null ? _GroupCostParameter.GWCB : 0) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
  712. // {
  713. // grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
  714. // grp_CreditCard.IsAuditGM = 3;//3 为自动审核
  715. // grp_CreditCard.AuditGMOperate = 21;
  716. // grp_CreditCard.AuditGMDate = "";
  717. // grp_CreditCard.IsPay = 1;
  718. // }
  719. // else
  720. // {
  721. // var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB);
  722. // var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
  723. // grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
  724. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  725. // grp_CreditCard.AuditGMOperate = 21;
  726. // grp_CreditCard.AuditGMDate = "";
  727. // grp_CreditCard.IsPay = 1;
  728. // }
  729. // }
  730. // else
  731. // {
  732. // grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
  733. // grp_CreditCard.IsAuditGM = 0;//3 为自动审核
  734. // grp_CreditCard.AuditGMOperate = 21;
  735. // grp_CreditCard.AuditGMDate = "";
  736. // grp_CreditCard.IsPay = 0;
  737. // }
  738. //}
  739. #endregion
  740. grp_CreditCard.CId = id;
  741. grp_CreditCard.CTable = 85;
  742. grp_CreditCard.PayPercentage = 100;
  743. #region 查询上一次付款信息(注释)
  744. ////查询上一次付款信息
  745. //Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1);
  746. //if (_CreditCardPayment != null)
  747. //{
  748. // grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次
  749. // grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次
  750. // grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次
  751. //}
  752. //else
  753. //{
  754. // grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次
  755. // grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次
  756. // grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次
  757. //}
  758. #endregion
  759. int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.Id == dto.CardPaymentOpData.Id).SetColumns(a => new Grp_CreditCardPayment
  760. {
  761. PayDId = grp_CreditCard.PayDId,
  762. ConsumptionPatterns = grp_CreditCard.ConsumptionPatterns,
  763. ConsumptionDate = grp_CreditCard.ConsumptionDate,
  764. CTDId = grp_CreditCard.CTDId,
  765. BankNo = grp_CreditCard.BankNo,
  766. CardholderName = grp_CreditCard.CardholderName,
  767. PayMoney = grp_CreditCard.PayMoney,
  768. PaymentCurrency = grp_CreditCard.PaymentCurrency,
  769. DayRate = grp_CreditCard.DayRate,
  770. CompanyBankNo = grp_CreditCard.CompanyBankNo,
  771. OtherBankName = grp_CreditCard.OtherBankName,
  772. OtherSideNo = grp_CreditCard.OtherSideNo,
  773. OtherSideName = grp_CreditCard.OtherSideName,
  774. IsAuditGM = grp_CreditCard.IsAuditGM,
  775. AuditGMOperate = grp_CreditCard.AuditGMOperate,
  776. AuditGMDate = grp_CreditCard.AuditGMDate,
  777. IsPay = grp_CreditCard.IsPay,
  778. PayPercentage = grp_CreditCard.PayPercentage,
  779. PayThenMoney = grp_CreditCard.PayThenMoney,
  780. PayPercentageOld = grp_CreditCard.PayPercentageOld,
  781. PayThenMoneyOld = grp_CreditCard.PayThenMoneyOld,
  782. UpdateDate = grp_CreditCard.UpdateDate,
  783. Payee = grp_CreditCard.Payee,
  784. RMBPrice = grp_CreditCard.RMBPrice,
  785. OrbitalPrivateTransfer = grp_CreditCard.OrbitalPrivateTransfer,
  786. ExceedBudget = grp_CreditCard.ExceedBudget,
  787. Remark= grp_CreditCard.Remark,
  788. }).ExecuteCommandAsync();
  789. if (CTable == 0)
  790. {
  791. RollbackTran();
  792. return result = new Result() { Code = -1, Msg = "修改失败!" };
  793. }
  794. else
  795. {
  796. Grp_CreditCardPayment ccp = Query<Grp_CreditCardPayment>(a => a.Id == dto.CardPaymentOpData.Id).First();
  797. var data = new { ccpId = ccp.Id, sign = 2 };
  798. result = new Result() { Code = 0, Msg = "修改成功!", Data = data };
  799. }
  800. }
  801. else
  802. {
  803. result = new Result() { Code = -1, Msg = "修改失败!" };
  804. RollbackTran();
  805. }
  806. }
  807. CommitTran();
  808. }
  809. catch (Exception ex)
  810. {
  811. RollbackTran();
  812. return result = new Result() { Code = -2, Msg = "程序错误" };
  813. throw;
  814. }
  815. return result;
  816. }
  817. /// <summary>
  818. /// 导出机票费用报表
  819. /// </summary>
  820. /// <param name="dto"></param>
  821. /// <returns></returns>
  822. /// <exception cref="NotImplementedException"></exception>
  823. public async Task<Result> DeriveAirTicketRes(AirTicketResDto dto)
  824. {
  825. Result result = new Result() { Code = -2, Msg = "未知错误" };
  826. try
  827. {
  828. string sql = string.Format(@"Select atr.*,ccp.IsAuditGM,sd1.Name As 'CTypeName',sd2.Name As 'PreCurrencyStr',sd3.Name As CurrencyStr
  829. From Grp_AirTicketReservations atr
  830. Left Join Grp_CreditCardPayment ccp On atr.Id = ccp.CId And atr.DIId = ccp.DIId And ccp.IsDel = 0
  831. Left Join Sys_SetData sd1 On sd1.Id = atr.ctype
  832. Left Join Sys_SetData sd2 On sd2.Id = atr.PreCurrency
  833. Left Join Sys_SetData sd3 On sd3.Id = atr.Currency
  834. Where atr.IsDel = 0 And atr.DIId={0}
  835. Order By atr.FlightsDate Asc", dto.DiId);
  836. List<AirTicketReservationsPayView> _AirTicketReservations = _sqlSugar.SqlQueryable<AirTicketReservationsPayView>(sql).ToList();
  837. if (_AirTicketReservations.Count != 0)
  838. {
  839. Grp_DelegationInfo grp_Delegation = _sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id == dto.DiId && a.IsDel == 0);
  840. Sys_Users _Users = _sqlSugar.Queryable<Sys_Users>().First(a => a.Id == dto.UserId && a.IsDel == 0);
  841. return result = new Result() { Code = 0, Msg = "成功", Data = new { Delegation = grp_Delegation, AirTicketRes = _AirTicketReservations, Users = _Users } };
  842. }
  843. else
  844. {
  845. return result = new Result() { Code = -1, Msg = "暂无数据", Data = null };
  846. }
  847. }
  848. catch (Exception)
  849. {
  850. return result = new Result() { Code = -2, Msg = "未知错误" };
  851. }
  852. }
  853. public async Task<Result> ItineraryAirTicketRes(ItineraryAirTicketResDto dto)
  854. {
  855. Result result = new Result() { Code = -2, Msg = "未知错误" };
  856. try
  857. {
  858. string sql = string.Format(@"select a.*,c.IsAuditGM,(select Name from Sys_SetData where Id=a.cType) as 'CTypeName',(select Name from
  859. Sys_SetData where Id=a.PreCurrency) as 'PreCurrencyStr',(select Name from Sys_SetData where Id=a.Currency)
  860. as 'CurrencyStr' from Grp_AirTicketReservations a,Grp_CreditCardPayment c where a.id=c.CId and a.isdel={1}
  861. and a.DIId={0} Order By a.CreateTime desc", dto.DiId, 0);
  862. List<AirTicketReservationsView> _AirTicketReservations = _sqlSugar.SqlQueryable<AirTicketReservationsView>(sql).ToList();
  863. if (_AirTicketReservations.Count == 0)
  864. {
  865. return result = new Result() { Code = -1, Msg = "暂无数据", Data = null };
  866. }
  867. else
  868. {
  869. return result = new Result() { Code = 0, Msg = "查询成功", Data = _AirTicketReservations };
  870. }
  871. }
  872. catch (Exception)
  873. {
  874. return result = new Result() { Code = -2, Msg = "未知错误" };
  875. throw;
  876. }
  877. }
  878. public List<TranslateResult> ReTransBatch(List<string> list, string aimlanguage)
  879. {
  880. List<TranslateResult> reultStr = new List<TranslateResult>();
  881. if (list.Count < 0)
  882. {
  883. return reultStr;
  884. }
  885. //待翻译内容,必须是UTF-8编码
  886. string q = "";
  887. string Qtext = "";
  888. foreach (var item in list)
  889. {
  890. q += item;
  891. Qtext += "q=" + item + "&";
  892. }
  893. if (Qtext.Length > 0)
  894. {
  895. Qtext = Qtext.Substring(0, Qtext.Length - 1);
  896. }
  897. Dictionary<string, string> dic = new Dictionary<string, string>();
  898. string url = "https://openapi.youdao.com/v2/api";
  899. //应用ID
  900. string appKey = "0fe3bc01e109ed36";
  901. //应用应用密钥
  902. string appSecret = "1f2x9TrqJfSBEJ8iH9GEFGgTyaYGjEry";
  903. //UUID
  904. string salt = DateTime.Now.Millisecond.ToString();
  905. //源语言
  906. dic.Add("from", "zh-CHS");
  907. //目标语言
  908. dic.Add("to", aimlanguage);
  909. //签名类型
  910. dic.Add("signType", "v3");
  911. //时间戳
  912. string curtime = ((GetBeijingTime().ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString();
  913. dic.Add("curtime", curtime);
  914. string signStr = appKey + Truncate(q) + salt + curtime + appSecret; ;
  915. string sign = ComputeHash(signStr, new SHA256CryptoServiceProvider());
  916. dic.Add("q", Qtext);
  917. dic.Add("appKey", appKey);
  918. dic.Add("salt", salt);
  919. dic.Add("sign", sign);
  920. string jsonStr = "";
  921. try
  922. {
  923. //Thread.Sleep(500);
  924. jsonStr = TransSync(url, dic);
  925. JObject trans = (JObject)JsonConvert.DeserializeObject(jsonStr);
  926. string errorCode = trans["errorCode"].ToString();
  927. if (errorCode == "0")
  928. {
  929. reultStr = JsonConvert.DeserializeObject<List<TranslateResult>>(trans["translateResults"].ToString());
  930. }
  931. return reultStr;
  932. }
  933. catch (Exception ex)
  934. {
  935. string msg = ex.Message;
  936. return reultStr;
  937. }
  938. }
  939. public string Processing(string str)//处理这段英文的方法
  940. {
  941. if (string.IsNullOrEmpty(str)) { return ""; }
  942. string[] strArray = new string[] { };
  943. if (str.Contains(" ")) strArray = str.Split(" ".ToCharArray());
  944. else if (str.Contains(",")) strArray = str.Split(",".ToCharArray());
  945. else if (str.Contains(" ") && str.Contains(",")) strArray = str.Split(",".ToCharArray());
  946. else strArray = new string[] { str };
  947. string result = string.Empty;//定义一个空字符串
  948. foreach (string s in strArray)//循环处理数组里面每一个字符串
  949. {
  950. //result += System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(s) + " ";
  951. result += s.Substring(0, 1).ToUpper() + s.Substring(1) + " ";
  952. //.Substring(0, 1).ToUpper()把循环到的字符串第一个字母截取并转换为大写,并用s.Substring(1)得到循环到的字符串除第一个字符后的所有字符拼装到首字母后面。
  953. }
  954. return result;
  955. }
  956. protected string TransSync(string url, Dictionary<string, string> dic)
  957. {
  958. string result = "";
  959. HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
  960. req.Method = "POST";
  961. req.ContentType = "application/x-www-form-urlencoded";
  962. StringBuilder builder = new StringBuilder();
  963. int i = 0;
  964. foreach (var item in dic)
  965. {
  966. if (i > 0)
  967. builder.Append("&");
  968. if (item.Key == "q")
  969. {
  970. builder.AppendFormat(item.Value);
  971. }
  972. else
  973. {
  974. builder.AppendFormat("{0}={1}", item.Key, item.Value);
  975. }
  976. i++;
  977. }
  978. byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
  979. req.ContentLength = data.Length;
  980. using (Stream reqStream = req.GetRequestStream())
  981. {
  982. reqStream.Write(data, 0, data.Length);
  983. reqStream.Close();
  984. }
  985. HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  986. if (resp.ContentType.ToLower().Equals("audio/mp3"))
  987. {
  988. SaveBinaryFile(resp, "合成的音频存储路径");
  989. }
  990. else
  991. {
  992. Stream stream = resp.GetResponseStream();
  993. using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
  994. {
  995. result = reader.ReadToEnd();
  996. }
  997. }
  998. return result;
  999. }
  1000. private static bool SaveBinaryFile(WebResponse response, string FileName)
  1001. {
  1002. string FilePath = FileName + DateTime.Now.Millisecond.ToString() + ".mp3";
  1003. bool Value = true;
  1004. byte[] buffer = new byte[1024];
  1005. try
  1006. {
  1007. if (File.Exists(FilePath))
  1008. File.Delete(FilePath);
  1009. Stream outStream = File.Create(FilePath);
  1010. Stream inStream = response.GetResponseStream();
  1011. int l;
  1012. do
  1013. {
  1014. l = inStream.Read(buffer, 0, buffer.Length);
  1015. if (l > 0)
  1016. outStream.Write(buffer, 0, l);
  1017. }
  1018. while (l > 0);
  1019. outStream.Close();
  1020. inStream.Close();
  1021. }
  1022. catch
  1023. {
  1024. Value = false;
  1025. }
  1026. return Value;
  1027. }
  1028. protected static string ComputeHash(string input, HashAlgorithm algorithm)
  1029. {
  1030. byte[] inputBytes = Encoding.UTF8.GetBytes(input);
  1031. byte[] hashedBytes = algorithm.ComputeHash(inputBytes);
  1032. return BitConverter.ToString(hashedBytes).Replace("-", "");
  1033. }
  1034. protected static string Truncate(string q)
  1035. {
  1036. if (q == null)
  1037. {
  1038. return null;
  1039. }
  1040. int len = q.Length;
  1041. return len <= 20 ? q : q.Substring(0, 10) + len + q.Substring(len - 10, 10);
  1042. }
  1043. public static DateTime GetBeijingTime()
  1044. {
  1045. WebRequest request = null;
  1046. WebResponse response = null;
  1047. WebHeaderCollection headerCollection = null;
  1048. string datetime = string.Empty;
  1049. try
  1050. {
  1051. request = WebRequest.Create("https://www.baidu.com");
  1052. request.Timeout = 3000;
  1053. request.Credentials = CredentialCache.DefaultCredentials;
  1054. response = request.GetResponse();
  1055. headerCollection = response.Headers;
  1056. foreach (var h in headerCollection.AllKeys)
  1057. {
  1058. if (h == "Date")
  1059. {
  1060. datetime = headerCollection[h];
  1061. }
  1062. }
  1063. return Convert.ToDateTime(datetime);
  1064. }
  1065. catch (Exception)
  1066. {
  1067. return DateTime.Now;
  1068. }
  1069. finally
  1070. {
  1071. if (request != null)
  1072. {
  1073. request.Abort();
  1074. }
  1075. if (response != null)
  1076. {
  1077. response.Close();
  1078. }
  1079. if (headerCollection != null)
  1080. {
  1081. headerCollection.Clear();
  1082. }
  1083. }
  1084. }
  1085. public class TranslateResult
  1086. {
  1087. public string Query { get; set; }
  1088. public string Translation { get; set; }
  1089. public string Type { get; set; }
  1090. public string VerifyResult { get; set; }
  1091. }
  1092. }
  1093. }