TeamRateRepository.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. using Newtonsoft.Json;
  2. using OASystem.Domain;
  3. using OASystem.Domain.Dtos.Financial;
  4. using OASystem.Domain.Dtos.Groups;
  5. using OASystem.Domain.Entities.Financial;
  6. using OASystem.Domain.Entities.Groups;
  7. using OASystem.Domain.ViewModels.Financial;
  8. using OASystem.Domain.ViewModels.Groups;
  9. using OASystem.Infrastructure.Repositories.System;
  10. using Serilog;
  11. using SqlSugar;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Diagnostics;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Threading.Tasks;
  18. namespace OASystem.Infrastructure.Repositories.Groups
  19. {
  20. /// <summary>
  21. /// 团组汇率 仓库
  22. /// </summary>
  23. public class TeamRateRepository : BaseRepository<Grp_TeamRate, TeamRateView>
  24. {
  25. private readonly SetDataRepository _setDataRep;
  26. private readonly DelegationInfoRepository _deleInfoRep;
  27. public TeamRateRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRep, DelegationInfoRepository deleInfoRep)
  28. : base(sqlSugar)
  29. {
  30. _setDataRep = setDataRep;
  31. _deleInfoRep = deleInfoRep;
  32. }
  33. /// <summary>
  34. /// 团组汇率 Rep
  35. /// </summary>
  36. /// <param name="dto"></param>
  37. /// <returns></returns>
  38. public async Task<Result> GetGroupRateDataSource(TeamRateDto dto)
  39. {
  40. Result result = new() { Code = -2 };
  41. Stopwatch stopwatch = Stopwatch.StartNew();
  42. GroupNameDto groupNameDto = new GroupNameDto() { PortType = dto.PortType };
  43. var groups = await _deleInfoRep.GetGroupNameList(groupNameDto);
  44. var teamRateDatas = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); // STid=66 全球币种
  45. dynamic _data = null;
  46. if (dto.PortType == 1)
  47. {
  48. //List<Sys_SetData> sys_SetDatas = new List<Sys_SetData>();
  49. //sys_SetDatas = JsonConvert.DeserializeObject<List<Sys_SetData>>(JsonConvert.SerializeObject(teamRateDatas.Data));
  50. //List<TeamRateDescView> teamRateDescViews = new List<TeamRateDescView>();
  51. //teamRateDescViews = sys_SetDatas.Select(it => new TeamRateDescView() { CurrencyName = it.Remark, CurrencyCode = it.Name, Rate = 0.0000M }).ToList();
  52. ///*
  53. // * 放在首位币种
  54. // * 人名币 CNY Rate = 1,美元 USD,欧元 EUR,港币 HKD,日元 JPY ,澳大利 AUD,英镑 GBP
  55. // * 依次排序
  56. // */
  57. ////人名币
  58. //var cnyData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("CNY"));
  59. //if (cnyData != null) { teamRateDescViews.Remove(cnyData); cnyData.Rate = 1.0000M; teamRateDescViews.Insert(0, cnyData); }
  60. ////美元
  61. //var usdData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("USD"));
  62. //if (usdData != null) { teamRateDescViews.Remove(usdData); teamRateDescViews.Insert(1, usdData); }
  63. ////欧元
  64. //var eurData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("EUR"));
  65. //if (eurData != null) { teamRateDescViews.Remove(eurData); teamRateDescViews.Insert(2, eurData); }
  66. ////港币
  67. //var hkdData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("HKD"));
  68. //if (hkdData != null) { teamRateDescViews.Remove(hkdData); teamRateDescViews.Insert(3, hkdData); }
  69. ////日元
  70. //var jpyData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("JPY"));
  71. //if (jpyData != null) { teamRateDescViews.Remove(jpyData); teamRateDescViews.Insert(4, jpyData); }
  72. ////澳大利
  73. //var audData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("AUD"));
  74. //if (audData != null) { teamRateDescViews.Remove(audData); teamRateDescViews.Insert(5, audData); }
  75. ////英镑
  76. //var gbpData = teamRateDescViews.Find(it => it.CurrencyCode.Equals("GBP"));
  77. //if (gbpData != null) { teamRateDescViews.Remove(gbpData); teamRateDescViews.Insert(6, gbpData); }
  78. _data = new { GroupData = groups.Data, TeamRateData = await PostGroupTeamRateHot() };
  79. }
  80. else if (dto.PortType == 2)
  81. {
  82. }
  83. else if (dto.PortType == 3)
  84. {
  85. }
  86. stopwatch.Stop();
  87. result.Code = 0;
  88. result.Msg = $"查询成功!耗时:{stopwatch.ElapsedMilliseconds / 1000}s";
  89. result.Data = _data;
  90. return result;
  91. }
  92. /// <summary>
  93. /// 团组汇率 更改数据
  94. /// </summary>
  95. /// <param name="dto"></param>
  96. /// <returns></returns>
  97. public async Task<Result> GetGroupRateChangeData()
  98. {
  99. Result result = new() { Code = -2 };
  100. string teamRateInfoSql = string.Format(@"Select * From Grp_TeamRate tr Where tr.IsDel = 0");
  101. var teamRateInfo = await _sqlSugar.SqlQueryable<Grp_TeamRate>(teamRateInfoSql).ToListAsync();
  102. dynamic _data = null;
  103. #region 团组汇率 - 详细汇率信息
  104. List<SetDataInfoView> otherCurrencyData1 = new List<SetDataInfoView>();
  105. var otherCurrencyData = await _setDataRep.GetSetDataBySTId(_setDataRep, 13);
  106. if (otherCurrencyData.Code == 0 && otherCurrencyData.Data != null)
  107. {
  108. string otherCurrencyStr = JsonConvert.SerializeObject(otherCurrencyData.Data);
  109. otherCurrencyData1 = JsonConvert.DeserializeObject<List<SetDataInfoView>>(otherCurrencyStr);
  110. //var otherCurrency = otherCurrencyData1
  111. }
  112. foreach (Grp_TeamRate item1 in teamRateInfo)
  113. {
  114. string rateStr = string.Empty;
  115. if (item1.RateU != 0) rateStr += "美元(USD):" + item1.RateU + "|";
  116. if (item1.RateE != 0) rateStr += "欧元(EUR):" + item1.RateE + "|";
  117. if (item1.RateJ != 0)
  118. rateStr += "日元(JPY):" + item1.RateJ + "|";
  119. if (item1.RateH != 0)
  120. rateStr += "港币(HKD):" + item1.RateH + "|";
  121. if (item1.RateN != 0)
  122. rateStr += "新西兰元(NZD):" + item1.RateN + "|";
  123. if (item1.RateS != 0)
  124. rateStr += "新加坡币(SGD):" + item1.RateS + "|";
  125. if (item1.RateA != 0)
  126. rateStr += "澳大利亚元(AUD):" + item1.RateA + "|";
  127. if (item1.RateC != 0)
  128. rateStr += "加拿大元(CAD):" + item1.RateC + "|";
  129. if (item1.RateT != 0)
  130. rateStr += "泰国铢(THB):" + item1.RateT + "|";
  131. if (item1.RateBL != 0)
  132. rateStr += "波兰兹罗提(PLN):" + item1.RateBL + "|";
  133. if (item1.RateHB != 0)
  134. rateStr += "韩国元(KRW):" + item1.RateHB + "|";
  135. if (item1.RateFJD != 0)
  136. rateStr += "斐济元(FJD):" + item1.RateFJD + "|";
  137. if (item1.RateTL != 0)
  138. rateStr += "土耳其里拉(TRY):" + item1.RateTL + "|";
  139. if (item1.RateRP != 0)
  140. rateStr += "印度尼西亚卢比(IDR):" + item1.RateRP + "|";
  141. if (item1.RatePeso != 0)
  142. rateStr += "菲律宾比索(PHP):" + item1.RatePeso + "|";
  143. if (item1.RateMYR != 0)
  144. rateStr += "林吉特(MYR):" + item1.RateMYR + "|";
  145. if (item1.RateCZK != 0)
  146. rateStr += "捷克货币(CZK):" + item1.RateCZK + "|";
  147. if (item1.RateMXN != 0)
  148. rateStr += "墨西哥比索(MXN):" + item1.RateMXN + "|";
  149. if (item1.RateMOP != 0)
  150. rateStr += "澳门元(MOP):" + item1.RateMOP + "|";
  151. if (item1.RateARS != 0)
  152. rateStr += "阿根廷比索(ARS):" + item1.RateARS + "|";
  153. if (item1.RateHUF != 0)
  154. rateStr += "匈牙利福林(HUF):" + item1.RateHUF + "|";
  155. if (item1.RateRUB != 0)
  156. rateStr += "卢布(RUB):" + item1.RateRUB + "|";
  157. if (!string.IsNullOrEmpty(item1.OtherRateCode))
  158. {
  159. rateStr += $"{otherCurrencyData1.Find(it => it.Name.Equals(item1.OtherRateCode))?.Remark ?? "Unknown"}({item1.OtherRateCode}):{item1.OtherPrice}|";
  160. }
  161. if (!rateStr.Contains("CNY"))
  162. {
  163. rateStr += "人名币(CNY):1.0000|";
  164. }
  165. if (rateStr.Length > 0)
  166. {
  167. rateStr = rateStr.Substring(0, rateStr.Length - 1);
  168. }
  169. item1.Remark = rateStr;
  170. }
  171. #endregion
  172. try
  173. {
  174. var _result = _sqlSugar.Updateable(teamRateInfo)
  175. .UpdateColumns(it => new { it.Remark }) //更新列
  176. .WhereColumns(it => new { it.DiId, it.CTable }) //更新条件
  177. .ExecuteCommand();
  178. result.Code = 0;
  179. result.Msg = "数据修改成功!";
  180. result.Data = _data;
  181. }
  182. catch (Exception ex)
  183. {
  184. result.Msg = ex.Message;
  185. }
  186. return result;
  187. }
  188. /// <summary>
  189. /// 团组汇率 Rep
  190. /// </summary>
  191. /// <param name="dto"></param>
  192. /// <returns></returns>
  193. public async Task<Result> GetGroupRateInfoByDiid(TeamRateInfoDto dto)
  194. {
  195. Result result = new() { Code = -2 };
  196. GroupInfoDto groupInfoDto = new GroupInfoDto() { Id = dto.Diid, PortType = dto.PortType, PageIndex = dto.PageIndex, PageSize = dto.PageSize };
  197. var groupInfo = await _deleInfoRep.GetGroupInfo(groupInfoDto);
  198. string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr
  199. Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id
  200. Where tr.DiId = {0} And tr.IsDel = 0", dto.Diid);
  201. var teamRateInfo = await _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToListAsync();
  202. dynamic _data = null;
  203. if (dto.PortType == 1)
  204. {
  205. #region 团组汇率
  206. List<TeamRateModelView> teamRateModels = new List<TeamRateModelView>();
  207. foreach (TeamRateInfoView item in teamRateInfo)
  208. {
  209. TeamRateModelView teamRateModelInfo = new TeamRateModelView();
  210. teamRateModelInfo.Id = item.Id;
  211. teamRateModelInfo.CTableId = item.CTable;
  212. teamRateModelInfo.CTableName = item.Name;
  213. List<TeamRateDescView> teamRateDescViews = new List<TeamRateDescView>();
  214. #region 拆分remark里的汇率
  215. if (item.Remark.Contains("|"))
  216. {
  217. string[] currencyArr = item.Remark.Split("|");
  218. foreach (string currency in currencyArr)
  219. {
  220. string[] currency1 = currency.Split(":");
  221. string[] currency2 = currency1[0].Split("(");
  222. TeamRateDescView rateDescView = new TeamRateDescView()
  223. {
  224. CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
  225. CurrencyName = currency2[0],
  226. Rate = decimal.Parse(currency1[1]),
  227. };
  228. teamRateDescViews.Add(rateDescView);
  229. }
  230. }
  231. else
  232. {
  233. if (!string.IsNullOrEmpty(item.Remark))
  234. {
  235. string[] currency1 = item.Remark.Split(":");
  236. string[] currency2 = currency1[0].Split("(");
  237. TeamRateDescView rateDescView = new TeamRateDescView()
  238. {
  239. CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
  240. CurrencyName = currency2[0],
  241. Rate = decimal.Parse(currency1[1]),
  242. };
  243. teamRateDescViews.Add(rateDescView);
  244. }
  245. }
  246. #endregion
  247. teamRateModelInfo.TeamRates = teamRateDescViews;
  248. teamRateModels.Add(teamRateModelInfo);
  249. }
  250. #endregion
  251. _data = new { GroupInfo = groupInfo.Data, TeamRateData = teamRateModels };
  252. }
  253. else if (dto.PortType == 2)
  254. {
  255. }
  256. else if (dto.PortType == 3)
  257. {
  258. }
  259. result.Code = 0;
  260. result.Msg = "查询成功!";
  261. result.Data = _data;
  262. return result;
  263. }
  264. /// <summary>
  265. /// 团组汇率 更新 or 添加
  266. /// </summary>
  267. /// <param name="dto"></param>
  268. /// <returns></returns>
  269. public async Task<Result> PostGroupRateUpdate(TeamRateUpdateDto dto)
  270. {
  271. Result result = new() { Code = -2 };
  272. int addCount = 0, updateCount = 0;
  273. if (dto.PortType == 1)
  274. {
  275. try
  276. {
  277. _sqlSugar.BeginTran();
  278. int res = -1;
  279. foreach (TeamRateUpdateInfo item in dto.teamRateUpdateInfos)
  280. {
  281. Grp_TeamRate teamRateInfo = new Grp_TeamRate();
  282. string currencyStr = string.Empty;
  283. foreach (TeamRateDescView currency in item.teamRates)
  284. {
  285. currencyStr += string.Format(@"{0}({1}):{2}|", currency.CurrencyName, currency.CurrencyCode, currency.Rate);
  286. }
  287. if (currencyStr.Length > 0)
  288. {
  289. currencyStr = currencyStr.Substring(0, currencyStr.Length - 1);
  290. }
  291. teamRateInfo.DiId = dto.DiId;
  292. teamRateInfo.CreateUserId = dto.CreateUserId;
  293. teamRateInfo.Id = item.Id;
  294. teamRateInfo.CreateTime = DateTime.Now;
  295. teamRateInfo.CTable = item.CTable;
  296. teamRateInfo.Remark = currencyStr;
  297. var teamRateDetails = _sqlSugar.Queryable<Grp_TeamRate>().Where(it => it.DiId == dto.DiId && it.CTable == item.CTable).First();
  298. if (teamRateDetails == null) //添加
  299. {
  300. res = await _sqlSugar.Insertable(teamRateInfo).ExecuteCommandAsync();
  301. if (res > 0)
  302. {
  303. addCount++;
  304. }
  305. }
  306. else //修改
  307. {
  308. teamRateInfo.Id = teamRateDetails.Id;
  309. res = await _sqlSugar.Updateable(teamRateInfo)
  310. .UpdateColumns(it => it.Remark)
  311. .WhereColumns(it => new { it.DiId, it.CTable })
  312. .ExecuteCommandAsync();
  313. if (res > 0)
  314. {
  315. updateCount++;
  316. }
  317. }
  318. if (res < 1)
  319. {
  320. _sqlSugar.RollbackTran();
  321. result.Msg = "操作失败!";
  322. break;
  323. }
  324. }
  325. if (res > 0)
  326. {
  327. _sqlSugar.CommitTran();
  328. result.Code = 0;
  329. result.Msg = "操作成功";
  330. }
  331. }
  332. catch (Exception ex)
  333. {
  334. result.Msg = ex.Message;
  335. }
  336. }
  337. else if (dto.PortType == 2)
  338. {
  339. }
  340. else if (dto.PortType == 3)
  341. {
  342. }
  343. result.Code = 0;
  344. result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount, updateCount);
  345. return result;
  346. }
  347. /// <summary>
  348. /// 团组汇率 Rep
  349. /// 根据团组Id 查询汇率
  350. /// </summary>
  351. /// <param name="dto"></param>
  352. /// <returns></returns>
  353. public async Task<List<TeamRateModelView>> PostGroupRateInfoByDiId(int diId)
  354. {
  355. List<TeamRateModelView> teamRateModels = new List<TeamRateModelView>();
  356. string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr
  357. Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id
  358. Where tr.DiId = {0} And tr.IsDel = 0", diId);
  359. var teamRateInfo = await _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToListAsync();
  360. #region 团组汇率
  361. foreach (TeamRateInfoView item in teamRateInfo)
  362. {
  363. TeamRateModelView teamRateModelInfo = new TeamRateModelView();
  364. teamRateModelInfo.Id = item.Id;
  365. teamRateModelInfo.CTableId = item.CTable;
  366. teamRateModelInfo.CTableName = item.Name;
  367. List<TeamRateDescView> teamRateDescViews = new List<TeamRateDescView>();
  368. #region 拆分remark里的汇率
  369. if (item.Remark.Contains("|"))
  370. {
  371. string[] currencyArr = item.Remark.Split("|");
  372. foreach (string currency in currencyArr)
  373. {
  374. string[] currency1 = currency.Split(":");
  375. string[] currency2 = currency1[0].Split("(");
  376. TeamRateDescView rateDescView = new TeamRateDescView()
  377. {
  378. CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
  379. CurrencyName = currency2[0],
  380. Rate = decimal.Parse(currency1[1]),
  381. };
  382. teamRateDescViews.Add(rateDescView);
  383. }
  384. }
  385. #endregion
  386. teamRateModelInfo.TeamRates = teamRateDescViews;
  387. teamRateModels.Add(teamRateModelInfo);
  388. }
  389. #endregion
  390. return teamRateModels;
  391. }
  392. /// <summary>
  393. /// 团组汇率 币种 Item (来源:团组汇率)
  394. /// 根据 团组Id And 业务类型(CTable)Id
  395. /// api处理CTable = 285,默认返回CNY
  396. /// </summary>
  397. /// <param name="portType"></param>
  398. /// <param name="diId"></param>
  399. /// <param name="cTable"></param>
  400. /// <returns></returns>
  401. public async Task<TeamRateModelGeneralView> PostGroupTeamRateByDiIdAndCTableId(int portType, int diId, int cTable)
  402. {
  403. TeamRateModelGeneralView _view = new TeamRateModelGeneralView();
  404. if (diId < 1)
  405. {
  406. return _view;
  407. }
  408. if (cTable < 1)
  409. {
  410. return _view;
  411. }
  412. if (portType == 1 || portType == 2 || portType == 3)
  413. {
  414. string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr
  415. Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id
  416. Where tr.IsDel = 0 And tr.DiId = {0} And tr.CTable = {1}", diId, cTable);
  417. var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
  418. #region 团组汇率
  419. #region 单独处理Ctable 币种汇率 默认 为CNY
  420. if (cTable == 285)
  421. {
  422. _view = new TeamRateModelGeneralView()
  423. {
  424. Id = 0,
  425. CTableId = 285,
  426. CTableName = "其他款项与收款退还",
  427. TeamRates = new List<TeamRateDescAddCurrencyIdView>() {
  428. new TeamRateDescAddCurrencyIdView()
  429. {
  430. CurrencyId = 836,
  431. CurrencyCode = "CNY",
  432. CurrencyName = "人民币",
  433. Rate = 1.0000M,
  434. }
  435. }
  436. };
  437. return _view;
  438. }
  439. #endregion
  440. List<SetDataInfoView> currencyDatas = new List<SetDataInfoView>();
  441. #region 获取所有币种
  442. string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0", 66);
  443. var DBdata = _setDataRep.GetListBySqlWithNolock(sql);
  444. if (DBdata == null || DBdata.Count == 0)
  445. {
  446. return _view;
  447. }
  448. currencyDatas = DBdata.Select(x => new SetDataInfoView
  449. {
  450. Name = x.Name,
  451. Id = x.Id,
  452. Remark = x.Remark,
  453. }).ToList();
  454. #endregion
  455. foreach (TeamRateInfoView item in teamRateInfo)
  456. {
  457. TeamRateModelGeneralView teamRateModelInfo = new TeamRateModelGeneralView();
  458. teamRateModelInfo.Id = item.Id;
  459. teamRateModelInfo.CTableId = item.CTable;
  460. teamRateModelInfo.CTableName = item.Name;
  461. List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
  462. #region 拆分remark里的汇率
  463. if (item.Remark.Contains("|"))
  464. {
  465. string[] currencyArr = item.Remark.Split("|");
  466. foreach (string currency in currencyArr)
  467. {
  468. string[] currency1 = currency.Split(":");
  469. string[] currency2 = currency1[0].Split("(");
  470. string currencyCode = currency2[1].Replace(")", "").TrimEnd();
  471. SetDataInfoView dataInfoView = new SetDataInfoView();
  472. dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
  473. int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
  474. TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
  475. {
  476. CurrencyId = dataInfoView.Id,
  477. CurrencyCode = currencyCode,
  478. CurrencyName = currency2[0],
  479. Rate = decimal.Parse(currency1[1]),
  480. };
  481. teamRateDescViews.Add(rateDescView);
  482. }
  483. }
  484. else
  485. {
  486. if (!string.IsNullOrEmpty(item.Remark))
  487. {
  488. string[] currency1 = item.Remark.Split(":");
  489. string[] currency2 = currency1[0].Split("(");
  490. string currencyCode = currency2[1].Replace(")", "").TrimEnd();
  491. SetDataInfoView dataInfoView = new SetDataInfoView();
  492. dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
  493. int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
  494. TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
  495. {
  496. CurrencyId = dataInfoView.Id,
  497. CurrencyCode = currencyCode,
  498. CurrencyName = currency2[0],
  499. Rate = decimal.Parse(currency1[1]),
  500. };
  501. teamRateDescViews.Add(rateDescView);
  502. }
  503. }
  504. #endregion
  505. if (teamRateDescViews.Count > 0)
  506. {
  507. teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
  508. }
  509. teamRateModelInfo.TeamRates = teamRateDescViews;
  510. _view = teamRateModelInfo;
  511. }
  512. if (_view.TeamRates == null)
  513. {
  514. _view.TeamRates = new List<TeamRateDescAddCurrencyIdView>();
  515. }
  516. #endregion
  517. }
  518. return _view;
  519. }
  520. /// <summary>
  521. /// 获取团组相关模块的currencyList
  522. /// </summary>
  523. /// <param name="portType"></param>
  524. /// <param name="diId"></param>
  525. /// <param name="cTable"></param>
  526. /// <returns></returns>
  527. public async Task<List<TeamRateDescAddCurrencyIdView>> PostGroupTeamRateItemByDiIdAndCTableId(int portType, int diId, int cTable)
  528. {
  529. List<TeamRateDescAddCurrencyIdView> teamRateDescAddCurrencyIdViews = new List<TeamRateDescAddCurrencyIdView>();
  530. TeamRateModelGeneralView teamRateModelGeneralView = await PostGroupTeamRateByDiIdAndCTableId(portType, diId, cTable);
  531. teamRateDescAddCurrencyIdViews = teamRateModelGeneralView.TeamRates;
  532. return teamRateDescAddCurrencyIdViews;
  533. }
  534. /// <summary>
  535. /// 获取团组汇率 币种使用次数
  536. /// </summary>
  537. /// <returns></returns>
  538. public async Task<List<CurrencyHot>> PostGroupTeamRateHot()
  539. {
  540. List<CurrencyHot> _view = new List<CurrencyHot>();
  541. string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr
  542. Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id
  543. Where tr.IsDel = 0 ");
  544. var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
  545. #region 获取所有币种
  546. string sql = string.Format(@"Select * From Sys_SetData Where STid = {0} And IsDel = 0", 66);
  547. var currencyDatas = _sqlSugar.SqlQueryable<SetDataInfoView>(sql).ToList();
  548. _view = currencyDatas.Select(it => new CurrencyHot() { CurrencyId = it.Id, CurrencyCode = it.Name, CurrencyName = it.Remark}).ToList();
  549. #endregion
  550. List<TeamRateDescAddCurrencyIdView> teamRateDatas = new List<TeamRateDescAddCurrencyIdView>();
  551. foreach (TeamRateInfoView item in teamRateInfo)
  552. {
  553. List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
  554. #region 拆分remark里的汇率
  555. if (item.Remark.Contains("|"))
  556. {
  557. string[] currencyArr = item.Remark.Split("|");
  558. foreach (string currency in currencyArr)
  559. {
  560. string[] currency1 = currency.Split(":");
  561. string[] currency2 = currency1[0].Split("(");
  562. string currencyCode = currency2[1].Replace(")", "").TrimEnd();
  563. SetDataInfoView dataInfoView = new SetDataInfoView();
  564. dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
  565. int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
  566. TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
  567. {
  568. CurrencyId = dataInfoView.Id,
  569. CurrencyCode = currencyCode,
  570. CurrencyName = currency2[0],
  571. Rate = decimal.Parse(currency1[1]),
  572. };
  573. teamRateDescViews.Add(rateDescView);
  574. }
  575. }
  576. else
  577. {
  578. if (!string.IsNullOrEmpty(item.Remark))
  579. {
  580. string[] currency1 = item.Remark.Split(":");
  581. string[] currency2 = currency1[0].Split("(");
  582. string currencyCode = currency2[1].Replace(")", "").TrimEnd();
  583. SetDataInfoView dataInfoView = new SetDataInfoView();
  584. dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
  585. int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
  586. TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
  587. {
  588. CurrencyId = dataInfoView.Id,
  589. CurrencyCode = currencyCode,
  590. CurrencyName = currency2[0],
  591. Rate = decimal.Parse(currency1[1]),
  592. };
  593. teamRateDescViews.Add(rateDescView);
  594. }
  595. }
  596. #endregion
  597. if (teamRateDescViews.Count > 0)
  598. {
  599. teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
  600. teamRateDatas.AddRange(teamRateDescViews);
  601. }
  602. }
  603. foreach (var item in _view)
  604. {
  605. if (item.CurrencyId == 836) // 人名币
  606. {
  607. item.Rate = 1.0000M;
  608. }
  609. item.Number = teamRateDatas.Where(it => item.CurrencyId == it.CurrencyId).ToList().Count;
  610. }
  611. if (_view.Count > 0)
  612. {
  613. _view = _view.OrderByDescending(it => it.Number).ToList();
  614. }
  615. return _view;
  616. }
  617. }
  618. }