PaymentRefundAndOtherMoneyRepository.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. using AutoMapper;
  2. using Newtonsoft.Json;
  3. using OASystem.Domain;
  4. using OASystem.Domain.Dtos;
  5. using OASystem.Domain.Dtos.Financial;
  6. using OASystem.Domain.Dtos.UserDto;
  7. using OASystem.Domain.Entities.Financial;
  8. using OASystem.Domain.Entities.Groups;
  9. using OASystem.Domain.ViewModels.Financial;
  10. using OASystem.Infrastructure.Repositories.Groups;
  11. using OASystem.Infrastructure.Repositories.System;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using System.Security.Cryptography;
  16. using System.Text;
  17. using System.Threading.Tasks;
  18. namespace OASystem.Infrastructure.Repositories.Financial
  19. {
  20. /// <summary>
  21. /// 财务 - 收款退还与其他款项
  22. /// </summary>
  23. public class PaymentRefundAndOtherMoneyRepository:BaseRepository<Fin_PaymentRefundAndOtherMoney, Fin_PaymentRefundAndOtherMoneyView>
  24. {
  25. private readonly IMapper _mapper;
  26. private readonly Result _result;
  27. private readonly SetDataRepository _setDataRep;
  28. private readonly TeamRateRepository _teamRateRep;
  29. /// <summary>
  30. /// 初始化
  31. /// </summary>
  32. /// <param name="sqlSugar"></param>
  33. /// <param name="mapper"></param>
  34. public PaymentRefundAndOtherMoneyRepository(SqlSugarClient sqlSugar, IMapper mapper, SetDataRepository setDataRep, TeamRateRepository teamRateRep)
  35. : base(sqlSugar)
  36. {
  37. _mapper = mapper;
  38. _result = new Result() { Code = -2 };
  39. _setDataRep = setDataRep;
  40. _teamRateRep = teamRateRep;
  41. }
  42. /// <summary>
  43. /// 根据团组ID 查询
  44. /// </summary>
  45. /// <param name="diId"></param>
  46. /// <returns></returns>
  47. public async Task<Result> _ItemByDiId(int diId)
  48. {
  49. string sql = string.Format(@"Select prom.Id,prom.PriceName,prom.Price,sd.Name As CurrencyCode,
  50. prom.Remark,u.CnName As CreateUserName,prom.CreateTime,ccp.IsAuditGM,
  51. u1.CnName As AuditGMName,ccp.AuditGMDate
  52. From Fin_PaymentRefundAndOtherMoney prom
  53. Left Join Grp_CreditCardPayment ccp On ccp.CTable = 285 And
  54. ccp.CId = prom.Id And ccp.DIId = prom.DiId
  55. Left Join Sys_SetData sd On prom.CurrencyId = sd.Id
  56. Left Join Sys_Users u On u.Id = prom.CreateUserId
  57. Left Join Sys_Users u1 On u1.Id = ccp.AuditGMOperate
  58. Where prom.IsDel = 0 And ccp.IsDel = 0 And prom.DiId = {0}", diId);
  59. var data = await _sqlSugar.SqlQueryable<Fin_PaymentRefundAndOtherMoneyItemView>(sql).ToListAsync();
  60. _result.Data = data;
  61. _result.Code = 0;
  62. _result.Msg = "查询成功!";
  63. return _result;
  64. }
  65. /// <summary>
  66. /// 删除
  67. /// </summary>
  68. /// <param name="diId"></param>
  69. /// <returns></returns>
  70. public async Task<Result> _Del(PaymentRefundAndOtherMoneyDelDto dto)
  71. {
  72. Fin_PaymentRefundAndOtherMoney _PaymentRefundAndOtherMoney = new Fin_PaymentRefundAndOtherMoney() {
  73. Id = dto.Id,
  74. DeleteUserId = dto.UserId,
  75. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  76. IsDel = 1
  77. };
  78. _sqlSugar.BeginTran();
  79. var prom_del = await _sqlSugar.Updateable( _PaymentRefundAndOtherMoney )
  80. .UpdateColumns(it => new { it.DeleteUserId,it.DeleteTime,it.IsDel })
  81. .WhereColumns(it => new { it.Id})
  82. .ExecuteCommandAsync();
  83. Fin_PaymentRefundAndOtherMoney _PaymentRefundAndOtherMoneyInfo = new Fin_PaymentRefundAndOtherMoney();
  84. _PaymentRefundAndOtherMoneyInfo = await _sqlSugar.Queryable<Fin_PaymentRefundAndOtherMoney>().Where(it => it.Id == dto.Id).FirstAsync();
  85. if (_PaymentRefundAndOtherMoneyInfo != null)
  86. {
  87. Grp_CreditCardPayment _CreditCardPayment = new Grp_CreditCardPayment() {
  88. CId = _PaymentRefundAndOtherMoneyInfo.Id,
  89. DIId = _PaymentRefundAndOtherMoneyInfo.DiId,
  90. DeleteUserId = dto.UserId,
  91. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  92. IsDel = 1
  93. };
  94. var ccp_del = await _sqlSugar.Updateable(_CreditCardPayment)
  95. .UpdateColumns(it => new { it.DeleteUserId, it.DeleteTime, it.IsDel })
  96. .WhereColumns(it => new { it.CId,it.DIId })
  97. .ExecuteCommandAsync();
  98. }
  99. if (prom_del > 0 )
  100. {
  101. _result.Code = 0;
  102. _result.Msg = "操作成功!";
  103. }
  104. else
  105. {
  106. _result.Msg = "操作失败!";
  107. }
  108. _sqlSugar.CommitTran();
  109. return _result;
  110. }
  111. /// <summary>
  112. /// 详情 数据源
  113. /// </summary>
  114. /// <param name="diId"></param>
  115. /// <returns></returns>
  116. public async Task<Result> _InfoDataSource(PortDtoBase dto)
  117. {
  118. if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) //1 Web 2 Android 3 Ios
  119. {
  120. var setDatas = _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0).ToList();
  121. dynamic _currencyData = null, _payTypeData = null;
  122. _currencyData = setDatas.Where(it => it.STid == 66).Select(it => new { it.Id, it.Name, it.Remark }); //币种类型
  123. _payTypeData = setDatas.Where(it => it.STid == 14).Select(it => new { it.Id, it.Name, it.Remark }); //支付类型
  124. List<dynamic> _priceTypeDatas = new List<dynamic>();
  125. _priceTypeDatas.Add(new { Id = 0, Name = "其他", Remark = "" });
  126. _priceTypeDatas.Add(new { Id = 1, Name = "退多付款", Remark = "" });
  127. List<dynamic> _orbitalPrivateTransferDatas = new List<dynamic>();
  128. _orbitalPrivateTransferDatas.Add(new { Id = 0, Name = "公转", Remark = "" });
  129. _orbitalPrivateTransferDatas.Add(new { Id = 1, Name = "私转", Remark = "" });
  130. dynamic _InfoDataSource = new
  131. {
  132. CurrencyDatas = _currencyData,
  133. PayTypeDatas = _payTypeData,
  134. OrbitalPrivateTransferDatas = _orbitalPrivateTransferDatas,
  135. PriceTypeDatas = _priceTypeDatas
  136. };
  137. _result.Data = _InfoDataSource;
  138. _result.Code = 0;
  139. _result.Msg = "查询成功!";
  140. }
  141. else
  142. {
  143. _result.Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;";
  144. }
  145. return _result;
  146. }
  147. /// <summary>
  148. /// 详情
  149. /// </summary>
  150. /// <param name="diId"></param>
  151. /// <returns></returns>
  152. public async Task<JsonView> _Info(PaymentRefundAndOtherMoneyInfoDto dto)
  153. {
  154. var _view = new JsonView() { Code = StatusCodes.Status204NoContent };
  155. if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) //1 Web 2 Android 3 Ios
  156. {
  157. string sql = string.Format(@"
  158. SELECT
  159. prom.Id,
  160. ccp.Id CcpId,
  161. prom.DiId,
  162. prom.PriceName,
  163. prom.Price,
  164. prom.CurrencyId,
  165. ccp.Payee,
  166. ccp.PayDId,
  167. ccp.OrbitalPrivateTransfer,
  168. ccp.ConsumptionPatterns,
  169. prom.PayType,
  170. prom.Remark,
  171. ccp.OtherBankName,
  172. ccp.OtherBankName
  173. FROM
  174. Fin_PaymentRefundAndOtherMoney prom
  175. LEFT JOIN Grp_CreditCardPayment ccp ON ccp.CId = prom.id
  176. AND ccp.CTable = 285
  177. AND ccp.IsDel = 0
  178. WHERE
  179. prom.IsDel = 0
  180. AND ccp.DIId = prom.DiId
  181. AND prom.Id = {0}", dto.Id);
  182. var data = await _sqlSugar.SqlQueryable<Fin_PaymentRefundAndOtherMoneyInfoView>(sql).FirstAsync();
  183. if (data != null)
  184. {
  185. _view.Data = data;
  186. _view.Code = 200;
  187. _view.Msg = "查询成功!";
  188. }
  189. else
  190. {
  191. _result.Msg = "查询失败!";
  192. }
  193. }
  194. else
  195. {
  196. _view.Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;";
  197. }
  198. return _view;
  199. }
  200. /// <summary>
  201. /// 操作(Add Or Edit)
  202. /// </summary>
  203. /// <param name="diId"></param>
  204. /// <returns></returns>
  205. public async Task<JsonView> _AddOrEdit(PaymentRefundAndOtherMoneyAddOrEditDto dto)
  206. {
  207. var _view = new JsonView() { Code = StatusCodes.Status204NoContent };
  208. if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) //1 Web 2 Android 3 Ios
  209. {
  210. #region 参数处理
  211. Fin_PaymentRefundAndOtherMoney _PaymentRefundAndOtherMoney = new Fin_PaymentRefundAndOtherMoney() {
  212. //Id = dto.Id,
  213. DiId = dto.DiId,
  214. PriceName = dto.PriceName.Trim(),
  215. Price = dto.Price,
  216. CurrencyId = dto.CurrencyId,
  217. PayType = dto.PayType,
  218. //PriceType = dto.PriceType,
  219. CreateUserId = dto.UserId,
  220. Remark = dto.Remark
  221. };
  222. //处理团组汇率
  223. decimal dayRate = 0.00M;
  224. decimal CNY_Price = 0.00M;
  225. decimal payThenMoney = 0.00M;
  226. #region 收款退还 团组汇率 验证 暂时注释
  227. if (dto.CurrencyId == 836) //人民币币种Id
  228. {
  229. dayRate = 1.0000M;
  230. CNY_Price = dto.Price;
  231. payThenMoney = dto.Price;
  232. }
  233. //else //其他币种Id
  234. //{
  235. // List<TeamRateModelView> teamReteDatas = await _teamRateRep.PostGroupRateInfoByDiId(dto.DiId);
  236. // if (teamReteDatas.Count <= 0)
  237. // {
  238. // _result.Msg = "该团未设置团组汇率,请先设置!";
  239. // return _result;
  240. // }
  241. // var teamReteData1 = teamReteDatas.Where(it => it.CTableId == 98).FirstOrDefault();
  242. // if (teamReteData1 == null)
  243. // {
  244. // _result.Msg = "该团下的“其他款项”未设置团组汇率,请先设置!";
  245. // return _result;
  246. // }
  247. // var teamReteData2 = teamReteData1.TeamRates.Where(it => it.CurrencyCode == dto.CurrencyCode).FirstOrDefault();
  248. // if (teamReteData2 == null)
  249. // {
  250. // _result.Msg = $"该团下的“其他款项”币种 “{dto.CurrencyCode}”未设置团组汇率,请先设置!";
  251. // return _result;
  252. // }
  253. // dayRate = teamReteData2.Rate;
  254. // CNY_Price = dayRate * dayRate;
  255. // payThenMoney = dayRate * dayRate;
  256. //}
  257. #endregion
  258. int ispay = 0;
  259. if (dto.PayDId == 72) ispay = 1;
  260. Grp_CreditCardPayment _CreditCardPayment = new Grp_CreditCardPayment() {
  261. //Id = dto.CcpId,
  262. //CId = dto.CcpId,
  263. DIId = dto.DiId,
  264. CTable = 285,// 285
  265. PayDId = dto.PayDId,
  266. ConsumptionPatterns = dto.ConsumptionPatterns,
  267. ConsumptionDate = string.Empty,
  268. CTDId = 0,
  269. BankNo = string.Empty,
  270. CardholderName = string.Empty,
  271. PayMoney = dto.Price,
  272. PaymentCurrency = dto.CurrencyId,
  273. DayRate = dayRate,
  274. CompanyBankNo = string.Empty,
  275. OtherBankName = dto.OtherBankName,
  276. OtherSideNo = dto.OtherSideNo,
  277. OtherSideName = string.Empty,
  278. MFOperator = 0,
  279. MFOperatorDate = string.Empty,
  280. IsAuditDM = 0,
  281. AuditDMOperate = 0,
  282. AuditDMDate = string.Empty,
  283. IsAuditMF = 0,
  284. AuditMFOperate = 0,
  285. AuditMFDate = string.Empty,
  286. IsAuditGM = 0,
  287. AuditGMOperate = 0,
  288. AuditGMDate = string.Empty,
  289. IsPay = ispay,
  290. PayPercentage = 100.00M,
  291. PayThenMoney = payThenMoney,
  292. PayPercentageOld = 0.00M,
  293. PayThenMoneyOld = 0.00M,
  294. UpdateDate = string.Empty,
  295. Payee = dto.Payee,
  296. RMBPrice = CNY_Price,
  297. OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer,
  298. ExceedBudget = 0.00M,
  299. CreateUserId = dto.UserId,
  300. DeleteUserId = null,
  301. DeleteTime = string.Empty,
  302. Remark = string.Empty,
  303. IsDel = 0
  304. };
  305. #endregion
  306. if (dto.Status == 1) //添加
  307. {
  308. #region 添加数据验证
  309. string sql = string.Format(@"
  310. SELECT
  311. prom.Id,
  312. ccp.Id CcpId,
  313. prom.DiId,
  314. prom.PriceName,
  315. prom.Price,
  316. prom.CurrencyId,
  317. ccp.Payee,
  318. ccp.PayDId,
  319. ccp.OrbitalPrivateTransfer,
  320. ccp.ConsumptionPatterns,
  321. prom.PayType,
  322. prom.Remark
  323. FROM
  324. Fin_PaymentRefundAndOtherMoney prom
  325. LEFT JOIN Grp_CreditCardPayment ccp ON ccp.CId = prom.id
  326. AND ccp.CTable = 285
  327. WHERE
  328. prom.IsDel = 0
  329. AND ccp.IsDel = 0
  330. AND ccp.DIId = prom.DiId
  331. AND prom.PriceName = '{0}'",_PaymentRefundAndOtherMoney.PriceName);
  332. var data = await _sqlSugar.SqlQueryable<Fin_PaymentRefundAndOtherMoneyInfoView>(sql).FirstAsync();
  333. if (data != null)
  334. {
  335. _view.Msg = "费用名称已存在,请勿重新添加!";
  336. return _view;
  337. }
  338. #endregion
  339. _sqlSugar.BeginTran();
  340. var addReturnId = await _sqlSugar.Insertable(_PaymentRefundAndOtherMoney).ExecuteReturnIdentityAsync();
  341. if (addReturnId <= 0)
  342. {
  343. _view.Msg = "操作失败!收款退还与其他款项添加失败!";
  344. _sqlSugar.RollbackTran();
  345. return _view;
  346. }
  347. _CreditCardPayment.CId = addReturnId;
  348. var addStatus = await _sqlSugar.Insertable(_CreditCardPayment).ExecuteReturnIdentityAsync();
  349. if (addStatus <= 0)
  350. {
  351. _view.Msg = "操作失败!付款类型添加失败!";
  352. _sqlSugar.RollbackTran();
  353. return _view;
  354. }
  355. _sqlSugar.CommitTran();
  356. _view.Msg = "操作成功!";
  357. _view.Code = 200;
  358. }
  359. else if (dto.Status == 2) //修改
  360. {
  361. _PaymentRefundAndOtherMoney.Id = dto.Id;
  362. _CreditCardPayment.Id = dto.CcpId;
  363. _CreditCardPayment.CId = dto.Id;
  364. _sqlSugar.BeginTran();
  365. var prom_update = await _sqlSugar.Updateable(_PaymentRefundAndOtherMoney)
  366. .IgnoreColumns(it => new { it.CreateUserId, it.CreateTime, it.DeleteUserId, it.DeleteTime, it.IsDel })
  367. .WhereColumns(it => new { it.Id })
  368. .ExecuteCommandAsync();
  369. if (prom_update <= 0)
  370. {
  371. _view.Msg = "操作失败!收款退还与其他款项修改失败!";
  372. _sqlSugar.RollbackTran();
  373. return _view;
  374. }
  375. var ccp_update = await _sqlSugar.Updateable(_CreditCardPayment)
  376. .UpdateColumns(it => new
  377. {
  378. it.PayDId,
  379. it.IsPay,
  380. it.ConsumptionPatterns,
  381. it.PayMoney,
  382. it.PaymentCurrency,
  383. it.DayRate,
  384. it.PayThenMoney,
  385. it.Payee,
  386. it.OrbitalPrivateTransfer
  387. })
  388. .WhereColumns(it => new { it.Id })
  389. .ExecuteCommandAsync();
  390. if (ccp_update <= 0)
  391. {
  392. _view.Msg = "操作失败!付款信息修改失败!";
  393. _sqlSugar.RollbackTran();
  394. return _view;
  395. }
  396. _sqlSugar.CommitTran();
  397. _view.Msg = "操作成功!";
  398. _view.Code = 200;
  399. }
  400. else _view.Msg = "请输入正确的操作状态! 1 添加 2 修改;";
  401. }
  402. else _view.Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;";
  403. return _view;
  404. }
  405. }
  406. }