PaymentRefundAndOtherMoneyRepository.cs 18 KB

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