using AutoMapper; using NPOI.SS.Formula.Functions; using OASystem.Domain; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Financial; using OASystem.Domain.Entities.Groups; using OASystem.Domain.Entities.Resource; using OASystem.Domain.ViewModels.Financial; using OASystem.Domain.ViewModels.Groups; using OASystem.Domain.ViewModels.QiYeWeChat; using OASystem.Domain.ViewModels.Resource; using OASystem.Infrastructure.Repositories.System; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Intrinsics.Arm; using System.Text; using System.Threading.Tasks; namespace OASystem.Infrastructure.Repositories.Groups { public class DecreasePaymentsRepository : BaseRepository<Grp_DecreasePayments, Grp_DecreasePayments> { private readonly IMapper _mapper; private readonly TeamRateRepository _teamRateRep; public DecreasePaymentsRepository(SqlSugarClient sqlSugar, IMapper mapper, TeamRateRepository teamRateRep) : base(sqlSugar) { this._mapper = mapper; _teamRateRep = teamRateRep; } /// <summary> /// 根据团组Id查询数据 /// </summary> /// <param name="dto"></param> /// <returns></returns> public async Task<Result> DecreasePaymentsList(DecreasePaymentsListDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { //string UserId = "0"; //List<Grp_GroupsTaskAssignment> gtaUIdList = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(a => a.DIId == dto.DiId && a.IsDel == 0 && a.CTId == 98).ToList(); //UserId = string.Join(",", gtaUIdList.Select(it => it.UId).ToList()); //string sql = string.Format(@"select Id,DiId,PriceName,Price,(select name from Sys_SetData where id=s.Currency) as Currency,FilePath, // (select CnName from Sys_Users where Id=s.CreateUserId) as 'CreateUserName',CreateTime,(select IsAuditGM from // Grp_CreditCardPayment where CTable=98 and CId=s.Id and DiId = {0} and IsDel=0) as 'isAudit' from Grp_DecreasePayments s // where DIID={0} and IsDel=0 and s.CreateUserId in ({1}) ", dto.DiId, dto.UserId); string sqlWhere = ""; if (dto.IsPaySign != -1) { sqlWhere += string.Format(@" And ccp.IsPay = {0} ", dto.IsPaySign); } //雷怡 2024-5-8 15:14 新增View字段 CreateTime string sql = string.Format(@" Select gdp.Id,gdp.DiId,gdp.PriceName,gdp.Price,sd1.[Name] as Currency,gdp.FilePath,su.CnName as CreateUserName, ccp.IsAuditGM as isAudit,ccp.IsPay,gdp.CreateTime From Grp_DecreasePayments as gdp With(Nolock) Left Join Grp_CreditCardPayment as ccp With(Nolock) On gdp.Id = ccp.CId Left Join Sys_SetData as sd1 On gdp.Currency = sd1.Id Left Join Sys_Users as su On gdp.CreateUserId = su.Id Where gdp.DiId = {0} And ccp.CTable = 98 {2} And ccp.IsDel = 0 And gdp.IsDel = 0 And gdp.CreateUserId in ({1}) ", dto.DiId, dto.UserId, sqlWhere); List<DecreasePaymentsView> _DecreasePayments = await _sqlSugar.SqlQueryable<DecreasePaymentsView>(sql).ToListAsync(); if (_DecreasePayments.Count > 0) { result = new Result() { Code = 0, Msg = "查询成功!", Data = _DecreasePayments }; } else { result = new Result() { Code = 0, Msg = "暂无数据!", Data = _DecreasePayments }; } } catch (Exception ex) { result = new Result() { Code = -2, Msg = ex.Message }; } return result; } public async Task<Result> DecreasePaymentsSelect(DecreasePaymentsDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; #region 团组下拉框 List<Grp_GroupsTaskAssignment> grp_GroupsTaskAssignment = Query<Grp_GroupsTaskAssignment>(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == dto.CTId).ToList(); string DiId = ""; List<DecreasePaymentGroupView> _Delegations = new List<DecreasePaymentGroupView>(); if (grp_GroupsTaskAssignment.Count > 0) { foreach (var item in grp_GroupsTaskAssignment) { DiId += item.DIId + ","; } if (DiId != "0") { DiId = DiId.Substring(0, DiId.Length - 1); } string sql = string.Format($@"Select di.Id, di.TeamName, di.ClientUnit, di.ClientName, di.TourCode, di.TeamDid, sd.[Name] As TeamTypeName, di.VisitCountry, di.VisitStartDate, di.VisitEndDate, di.VisitDays, di.VisitPNumber, di.CreateTime From Grp_DelegationInfo di With(NoLock) Left Join Sys_SetData sd On di.TeamDid = sd.Id Where di.Id in({DiId}) and di.IsDel=0 Order By di.CreateTime Desc"); //DecreasePaymentGroupView _Delegations = _sqlSugar.SqlQueryable<DecreasePaymentGroupView>(sql).ToList(); } #endregion #region 其他下拉框查询 //支付方式 List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList(); List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment); //供应商 supplier List<Sys_SetData> supplier = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 21 && a.IsDel == 0).ToList(); List<SetDataInfoView> _supplier = _mapper.Map<List<SetDataInfoView>>(supplier); if (_supplier.Count > 0) { var d1 = _supplier.Find(it => it.Name.Equals("策划 公司")); if (d1 != null) _supplier.Remove(d1); var d2 = _supplier.Find(it => it.Name.Equals("礼仪")); if (d2 != null) _supplier.Remove(d2); var d3 = _supplier.Find(it => it.Name.Equals("日常办公用品")); if (d3 != null) _supplier.Remove(d3); var d4 = _supplier.Find(it => it.Name.Equals("其他")); if (d4 != null) { _supplier.Remove(d4); _supplier.Add(d4); } } List<dynamic> _supplierArea = new List<dynamic>() { new { id=0,name = "未选择" }, new { id=1,name = "国内" }, new { id=2,name = "国外" }, }; #endregion var data = new { payment = _Payment, groupName = _Delegations, supplier = _supplier, supplierArea = _supplierArea }; return result = new Result() { Code = 0, Msg = "查询成功!", Data = data }; } public async Task<Result> OpDecreasePayments(DecreasePaymentsOpDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; BeginTran(); try { int id = 0; Grp_DecreasePayments grp_Decrease = _mapper.Map<Grp_DecreasePayments>(dto); //处理费用总计 if (grp_Decrease.FeeTotal == 0.00M) { grp_Decrease.FeeTotal = grp_Decrease.Price * grp_Decrease.Price; } List<TeamRateDescAddCurrencyIdView> teamRates = await _teamRateRep.PostGroupTeamRateItemByDiIdAndCTableId(1, dto.DiId, 98); if (dto.Status == 1)//添加 { string selectSql = string.Format(@"select * from Grp_DecreasePayments where PriceName='{0}' and IsDel={1} and DiId={2}" , dto.PriceName, 0, dto.DiId); var DecreasePayments = await _sqlSugar.SqlQueryable<Grp_DecreasePayments>(selectSql).FirstAsync();//查询是否存在 if (DecreasePayments != null) { return new Result() { Code = -1, Msg = "该数据已存在,请勿重复添加!" }; } else//不存在,可添加 { id = await AddAsyncReturnId(grp_Decrease); if (id < 1) { RollbackTran(); return new Result() { Code = -1, Msg = "添加失败!" }; } //进行C表添加 Grp_CreditCardPayment C = new Grp_CreditCardPayment(); C.PayDId = dto.PayDId; C.ConsumptionPatterns = ""; C.ConsumptionDate = ""; C.CTDId = 0; C.BankNo = ""; C.CardholderName = ""; C.PayMoney = grp_Decrease.FeeTotal; C.PaymentCurrency = grp_Decrease.Currency; //当天汇率 //if (!string.IsNullOrEmpty(hfRate.Value)) // C.DayRate = hfRate.Value; //else //C.DayRate = ""; C.CompanyBankNo = ""; C.OtherBankName = ""; C.OtherSideNo = ""; C.OtherSideName = ""; C.Remark = ""; C.CreateUserId = grp_Decrease.CreateUserId; C.MFOperator = 0; C.MFOperatorDate = ""; C.IsAuditDM = 0; C.AuditDMOperate = 0; C.AuditDMDate = ""; C.IsAuditMF = 0; C.AuditMFOperate = 0; C.AuditMFDate = ""; C.IsAuditGM = 0; C.AuditGMOperate = 21; C.AuditGMDate = ""; if (C.PayDId == 72) C.IsPay = 1; else C.IsPay = 0; C.DIId = grp_Decrease.DiId; C.CId = id; C.CTable = 98; C.PayPercentage = 100; C.PayThenMoney = 0; C.PayPercentageOld = 0; C.PayThenMoneyOld = 0; C.UpdateDate = ""; C.Payee = dto.Payee; C.OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer; C.ExceedBudget = 0; //C.RMBPrice = 0.00f; //设置该团组的汇率 TeamRateDescAddCurrencyIdView teamRate = teamRates.Where(it => it.CurrencyId == grp_Decrease.Currency).FirstOrDefault(); //Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_Decrease.DiId && a.IsDel == 0 && a.CTable == 98); if (teamRate != null) { if (teamRate.CurrencyCode.Equals("CNY")) { C.DayRate = 1.0000M; C.RMBPrice = C.PayMoney; } else { C.DayRate = teamRate.Rate; C.RMBPrice = C.PayMoney * C.DayRate; } } else { RollbackTran(); return new Result() { Code = -1, Msg = $"添加失败!团组汇率未设置{_sqlSugar.Queryable<Sys_SetData>().First(it => it.IsDel == 0 && it.Id == grp_Decrease.Currency)?.Name ?? ""}该币种汇率!" }; } int cId = await _sqlSugar.Insertable(C).ExecuteReturnIdentityAsync(); if (cId != 0) { CommitTran(); var data = new { ccpId = cId, sign = 1 }; return new Result() { Code = 0, Msg = "添加成功!", Data = data }; } else { RollbackTran(); return new Result() { Code = -1, Msg = "添加失败!" }; } } } else if (dto.Status == 2) { bool res = await UpdateAsync(a => a.Id == grp_Decrease.Id, a => new Grp_DecreasePayments { DiId = grp_Decrease.DiId, SupplierArea = grp_Decrease.SupplierArea, SupplierTypeId = grp_Decrease.SupplierTypeId, PriceName = grp_Decrease.PriceName, Price = grp_Decrease.Price, Quantity = grp_Decrease.Quantity, FeeTotal = grp_Decrease.FeeTotal, Currency = grp_Decrease.Currency, FilePath = grp_Decrease.FilePath, Remark = grp_Decrease.Remark, }); if (res) { Grp_CreditCardPayment grp_CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == grp_Decrease.Id && a.CTable == 98 && a.CId == grp_Decrease.Id && a.IsDel == 0); if (grp_CreditCardPayment != null) { //设置该团组的汇率 TeamRateDescAddCurrencyIdView teamRate = teamRates.Where(it => it.CurrencyId == grp_Decrease.Currency).FirstOrDefault(); if (teamRate != null) { if (teamRate.CurrencyCode.Equals("CNY")) { grp_CreditCardPayment.DayRate = 1.0000M; grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney; } else { grp_CreditCardPayment.DayRate = teamRate.Rate; grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney * grp_CreditCardPayment.DayRate; } } else { RollbackTran(); return new Result() { Code = -1, Msg = "修改失败!" }; } int ispay = 0; if (dto.PayDId == 72) ispay = 1; int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>() .Where(a => a.Id == grp_CreditCardPayment.Id) .SetColumns(a => new Grp_CreditCardPayment { PayDId = dto.PayDId, IsPay = ispay, PayMoney = grp_Decrease.FeeTotal, PaymentCurrency = grp_Decrease.Currency, Payee = dto.Payee, OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer, DayRate = grp_CreditCardPayment.DayRate, RMBPrice = grp_CreditCardPayment.RMBPrice, }).ExecuteCommandAsync(); if (CTable > 0) { CommitTran(); var data = new { ccpId = grp_CreditCardPayment.Id, sign = 2 }; return new Result() { Code = 0, Msg = "修改成功!", Data = data }; } else { RollbackTran(); return new Result() { Code = -1, Msg = "修改失败!" }; } } else { RollbackTran(); return new Result() { Code = -1, Msg = "修改失败!" }; } } else { RollbackTran(); return new Result() { Code = -1, Msg = "修改失败!" }; } } } catch (Exception ex) { RollbackTran(); return new Result() { Code = -2, Msg = ex.Message }; } return result; } public async Task<Result> PostGroupNameAndEasy(DecreasePaymentsDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { #region 团组下拉框 List<Grp_GroupsTaskAssignment> grp_GroupsTaskAssignment = Query<Grp_GroupsTaskAssignment>(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == dto.CTId).ToList(); string DiId = ""; foreach (var item in grp_GroupsTaskAssignment) { DiId += item.DIId + ","; } if (!string.IsNullOrWhiteSpace(DiId)) { DiId = DiId.Substring(0, DiId.Length - 1); } else { DiId = "0"; } string sql = string.Format(@"select Id,TourCode,TeamName,ClientName,VisitStartDate,VisitEndDate,VisitCountry,VisitDays,VisitPNumber from Grp_DelegationInfo where Id in({0}) and IsDel={1}", DiId, 0); List<DelegationEasyView> grp_Delegations = _sqlSugar.SqlQueryable<DelegationEasyView>(sql).ToList(); if (grp_Delegations.Count != 0) { int count = grp_Delegations.Count; float totalPage = (float)count / dto.PageSize;//总页数 if (totalPage == 0) totalPage = 1; else totalPage = (int)Math.Ceiling((double)totalPage); List<DelegationEasyView> delegationEasyViews = new List<DelegationEasyView>(); for (int i = 0; i < dto.PageSize; i++) { var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize; if (RowIndex < grp_Delegations.Count) { delegationEasyViews.Add(grp_Delegations[RowIndex]); } else { break; } } ListViewBase<DelegationEasyView> rst = new ListViewBase<DelegationEasyView>(); rst.DataList = delegationEasyViews; rst.DataCount = count; rst.CurrPageIndex = dto.PageIndex; rst.CurrPageSize = dto.PageSize; return result = new Result() { Code = 0, Msg = "查询成功!", Data = rst }; } else { ListViewBase<DelegationEasyView> rst = new ListViewBase<DelegationEasyView>(); rst.DataList = new List<DelegationEasyView>(); return result = new Result() { Code = 0, Msg = "暂无数据!", Data = rst }; } #endregion } catch (Exception ex) { return result = new Result() { Code = -2, Msg = "程序错误" }; throw; } } /// <summary> /// 根据团组增减款项表Id查询数据 /// </summary> /// <param name="dto"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public async Task<Result> QueryDecreasePaymentsById(DecreasePaymentsByIdDto dto) { Result result = new Result() { Code = -2, Msg = "程序错误" }; try { Grp_DecreasePayments grp_Decrease = _sqlSugar.Queryable<Grp_DecreasePayments>().First(a => a.Id == dto.Id && a.IsDel == 0); Grp_CreditCardPayment grp_CreditCard = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable == 98); var data = new { _Decrease = grp_Decrease, _CreditCard = grp_CreditCard, }; result = new Result() { Code = 0, Msg = "查询成功!", Data = data }; } catch (Exception ex) { result = new Result() { Code = -2, Msg = "程序错误" }; throw; } return result; } /// <summary> /// Del /// </summary> /// <param name="dto"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public async Task<Result> _Del(int id, int userId) { Result result = new Result() { Code = -2, Msg = "删除失败!" }; _sqlSugar.BeginTran(); var del = await _sqlSugar.Updateable<Grp_DecreasePayments>() .SetColumns(it => new Grp_DecreasePayments() { IsDel = 1, DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }).Where(it => it.Id == id) .ExecuteCommandAsync(); if (del > 0) { var del1 = await _sqlSugar.Updateable<Grp_CreditCardPayment>() .SetColumns(a => new Grp_CreditCardPayment() { IsDel = 1, DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }) .Where(a => a.CId == id && a.CTable == 98) .ExecuteCommandAsync(); if (del1 > 0) { _sqlSugar.CommitTran(); result.Code = 0; result.Msg = "删除成功!"; return result; } } _sqlSugar.RollbackTran(); return result; } } }