TeamRateRepository.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779
  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. //拆分remark里的汇率
  368. teamRateModelInfo.TeamRates = GroupCurrencySplittings(item.Remark);
  369. teamRateModels.Add(teamRateModelInfo);
  370. }
  371. #endregion
  372. return teamRateModels;
  373. }
  374. /// <summary>
  375. /// 团组汇率币种拆分
  376. /// 团组币种按指定格式拆分 返回集合
  377. /// </summary>
  378. /// <param name="currStr"></param>
  379. /// <returns></returns>
  380. public List<TeamRateDescView> GroupCurrencySplittings(string currStr)
  381. {
  382. List<TeamRateDescView> _view = new List<TeamRateDescView>();
  383. if (!string.IsNullOrEmpty(currStr))
  384. {
  385. if (currStr.Contains("|"))
  386. {
  387. string[] currencyArr = currStr.Split("|");
  388. foreach (string currency in currencyArr)
  389. {
  390. _view.Add(GroupCurrencySplittingSingle(currency));
  391. }
  392. }
  393. else
  394. {
  395. _view.Add(GroupCurrencySplittingSingle(currStr));
  396. }
  397. }
  398. return _view;
  399. }
  400. /// <summary>
  401. /// 团组汇率币种拆分
  402. /// 团组币种按指定格式拆分 返回集合
  403. /// return TeamRateDescView
  404. /// </summary>
  405. /// <param name="currStr"></param>
  406. /// <returns></returns>
  407. public TeamRateDescView GroupCurrencySplittingSingle(string currStr)
  408. {
  409. TeamRateDescView _view = new TeamRateDescView();
  410. if (!string.IsNullOrEmpty(currStr))
  411. {
  412. string[] currency1 = currStr.Split(":");
  413. string[] currency2 = currency1[0].Split("(");
  414. _view = new TeamRateDescView()
  415. {
  416. CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
  417. CurrencyName = currency2[0],
  418. Rate = decimal.Parse(currency1[1]),
  419. };
  420. }
  421. return _view;
  422. }
  423. /// <summary>
  424. /// 团组汇率币种拆分 注意返回 实体类
  425. /// 团组币种按指定格式拆分 返回集合
  426. /// return TeamRateDescView
  427. /// </summary>
  428. /// <param name="currStr"></param>
  429. /// <returns></returns>
  430. public TeamRateDescAddCurrencyIdView GroupCurrencySplittingSingle(List<SetDataInfoView> currs,string currStr)
  431. {
  432. TeamRateDescAddCurrencyIdView _view = new TeamRateDescAddCurrencyIdView();
  433. if (!string.IsNullOrEmpty(currStr))
  434. {
  435. string[] currency1 = currStr.Split(":");
  436. string[] currency2 = currency1[0].Split("(");
  437. string currencyCode = currency2[1].Replace(")", "").TrimEnd();
  438. SetDataInfoView dataInfoView = new SetDataInfoView();
  439. dataInfoView = currs.Where(it => it.Name == currencyCode).FirstOrDefault();
  440. int currencyId = currs.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
  441. _view = new TeamRateDescAddCurrencyIdView()
  442. {
  443. CurrencyId = dataInfoView.Id,
  444. CurrencyCode = currencyCode,
  445. CurrencyName = currency2[0],
  446. Rate = decimal.Parse(currency1[1]),
  447. };
  448. }
  449. return _view;
  450. }
  451. /// <summary>
  452. /// 团组汇率 币种 Item (来源:团组汇率)
  453. /// 根据 团组Id And 业务类型(CTable)Id
  454. /// api处理CTable = 285,默认返回CNY
  455. /// </summary>
  456. /// <param name="portType"></param>
  457. /// <param name="diId"></param>
  458. /// <param name="cTable"></param>
  459. /// <returns></returns>
  460. public async Task<TeamRateModelGeneralView> PostGroupTeamRateByDiIdAndCTableId(int portType, int diId, int cTable)
  461. {
  462. TeamRateModelGeneralView _view = new TeamRateModelGeneralView();
  463. if (diId < 1)
  464. {
  465. return _view;
  466. }
  467. if (cTable < 1)
  468. {
  469. return _view;
  470. }
  471. if (portType == 1 || portType == 2 || portType == 3)
  472. {
  473. string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr
  474. Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id
  475. Where tr.IsDel = 0 And tr.DiId = {0} And tr.CTable = {1}", diId, cTable);
  476. var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
  477. #region 团组汇率
  478. #region 单独处理Ctable 币种汇率 默认 为CNY
  479. if (cTable == 285)
  480. {
  481. _view = new TeamRateModelGeneralView()
  482. {
  483. Id = 0,
  484. CTableId = 285,
  485. CTableName = "其他款项与收款退还",
  486. TeamRates = new List<TeamRateDescAddCurrencyIdView>() {
  487. new TeamRateDescAddCurrencyIdView()
  488. {
  489. CurrencyId = 836,
  490. CurrencyCode = "CNY",
  491. CurrencyName = "人民币",
  492. Rate = 1.0000M,
  493. }
  494. }
  495. };
  496. return _view;
  497. }
  498. #endregion
  499. List<SetDataInfoView> currencyDatas = new List<SetDataInfoView>();
  500. #region 获取所有币种
  501. string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0", 66);
  502. var DBdata = _setDataRep.GetListBySqlWithNolock(sql);
  503. if (DBdata == null || DBdata.Count == 0)
  504. {
  505. return _view;
  506. }
  507. currencyDatas = DBdata.Select(x => new SetDataInfoView
  508. {
  509. Name = x.Name,
  510. Id = x.Id,
  511. Remark = x.Remark,
  512. }).ToList();
  513. #endregion
  514. foreach (TeamRateInfoView item in teamRateInfo)
  515. {
  516. TeamRateModelGeneralView teamRateModelInfo = new TeamRateModelGeneralView();
  517. teamRateModelInfo.Id = item.Id;
  518. teamRateModelInfo.CTableId = item.CTable;
  519. teamRateModelInfo.CTableName = item.Name;
  520. List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
  521. #region 拆分remark里的汇率
  522. if (item.Remark.Contains("|"))
  523. {
  524. string[] currencyArr = item.Remark.Split("|");
  525. foreach (string currency in currencyArr)
  526. {
  527. teamRateDescViews.Add(GroupCurrencySplittingSingle(currencyDatas, currency));
  528. }
  529. }
  530. else
  531. {
  532. teamRateDescViews.Add(GroupCurrencySplittingSingle(currencyDatas, item.Remark));
  533. }
  534. #endregion
  535. if (teamRateDescViews.Count > 0)
  536. {
  537. teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
  538. }
  539. teamRateModelInfo.TeamRates = teamRateDescViews;
  540. _view = teamRateModelInfo;
  541. }
  542. if (_view.TeamRates == null)
  543. {
  544. _view.TeamRates = new List<TeamRateDescAddCurrencyIdView>();
  545. }
  546. #endregion
  547. }
  548. return _view;
  549. }
  550. /// <summary>
  551. /// 获取团组相关模块的currencyList
  552. /// </summary>
  553. /// <param name="portType"></param>
  554. /// <param name="diId"></param>
  555. /// <param name="cTable"></param>
  556. /// <returns></returns>
  557. public async Task<List<TeamRateDescAddCurrencyIdView>> PostGroupTeamRateItemByDiIdAndCTableId(int portType, int diId, int cTable)
  558. {
  559. List<TeamRateDescAddCurrencyIdView> teamRateDescAddCurrencyIdViews = new List<TeamRateDescAddCurrencyIdView>();
  560. TeamRateModelGeneralView teamRateModelGeneralView = await PostGroupTeamRateByDiIdAndCTableId(portType, diId, cTable);
  561. teamRateDescAddCurrencyIdViews = teamRateModelGeneralView.TeamRates;
  562. return teamRateDescAddCurrencyIdViews;
  563. }
  564. /// <summary>
  565. /// 获取团组汇率 币种使用次数
  566. /// </summary>
  567. /// <returns></returns>
  568. public async Task<List<CurrencyHot>> PostGroupTeamRateHot()
  569. {
  570. List<CurrencyHot> _view = new List<CurrencyHot>();
  571. string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr
  572. Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id
  573. Where tr.IsDel = 0 ");
  574. var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
  575. #region 获取所有币种
  576. string sql = string.Format(@"Select * From Sys_SetData Where STid = {0} And IsDel = 0", 66);
  577. var currencyDatas = _sqlSugar.SqlQueryable<SetDataInfoView>(sql).ToList();
  578. _view = currencyDatas.Select(it => new CurrencyHot() { CurrencyId = it.Id, CurrencyCode = it.Name, CurrencyName = it.Remark}).ToList();
  579. #endregion
  580. List<TeamRateDescAddCurrencyIdView> teamRateDatas = new List<TeamRateDescAddCurrencyIdView>();
  581. foreach (TeamRateInfoView item in teamRateInfo)
  582. {
  583. List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
  584. #region 拆分remark里的汇率
  585. if (item.Remark.Contains("|"))
  586. {
  587. string[] currencyArr = item.Remark.Split("|");
  588. foreach (string currency in currencyArr)
  589. {
  590. teamRateDescViews.Add(GroupCurrencySplittingSingle(currencyDatas, currency));
  591. }
  592. }
  593. else
  594. {
  595. teamRateDescViews.Add(GroupCurrencySplittingSingle(currencyDatas, item.Remark));
  596. }
  597. #endregion
  598. if (teamRateDescViews.Count > 0)
  599. {
  600. teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
  601. teamRateDatas.AddRange(teamRateDescViews);
  602. }
  603. }
  604. foreach (var item in _view)
  605. {
  606. if (item.CurrencyId == 836) // 人民币
  607. {
  608. item.Rate = 1.0000M;
  609. }
  610. item.Number = teamRateDatas.Where(it => item.CurrencyId == it.CurrencyId).ToList().Count;
  611. }
  612. if (_view.Count > 0)
  613. {
  614. _view = _view.OrderByDescending(it => it.Number).ToList();
  615. }
  616. return _view;
  617. }
  618. }
  619. }