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 { private readonly IMapper _mapper; private readonly TeamRateRepository _teamRateRep; private readonly SetDataRepository _setDataRepository; public DecreasePaymentsRepository(SqlSugarClient sqlSugar, IMapper mapper, TeamRateRepository teamRateRep, SetDataRepository setDataRepository ) : base(sqlSugar) { this._mapper = mapper; _teamRateRep = teamRateRep; this._setDataRepository = setDataRepository; } /// /// 根据团组Id查询数据 /// /// /// public async Task DecreasePaymentsList(DecreasePaymentsListDto dto) { 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.FeeTotal,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 _DecreasePayments = await _sqlSugar.SqlQueryable(sql).ToListAsync(); return new JsonView() { Code = 200, Msg = MsgTips.Succeed, Data = _DecreasePayments }; } public async Task DecreasePaymentsSelect(DecreasePaymentsDto dto) { #region 团组下拉框 List grp_GroupsTaskAssignment = Query(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == dto.CTId).ToList(); string DiId = ""; List _Delegations = new List(); 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 (select ssd.name from Sys_SetData ssd WHERE ssd.id = di.TeamLevSId) as TeamLevSId, 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(sql).ToList(); } #endregion #region 其他下拉框查询 //支付方式 List Payment = _sqlSugar.Queryable().Where(a => a.STid == 14 && a.IsDel == 0).ToList(); List _Payment = _mapper.Map>(Payment); //供应商 supplier List supplier = _sqlSugar.Queryable().Where(a => a.STid == 21 && a.IsDel == 0).ToList(); List _supplier = _mapper.Map>(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 _supplierArea = new List() { new { id=1,name = "国内" }, new { id=2,name = "国外" }, }; #endregion var data = new { payment = _Payment, groupName = _Delegations, supplier = _supplier, supplierArea = _supplierArea }; return new JsonView() { Code = 200, Msg = MsgTips.Succeed, Data = data }; } public async Task OpDecreasePayments(DecreasePaymentsOpDto dto) { BeginTran(); int id = 0; var grp_Decrease = _mapper.Map(dto); //处理费用总计 if (grp_Decrease.FeeTotal == 0.00M) { grp_Decrease.FeeTotal = grp_Decrease.Price * grp_Decrease.Price; } List 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(selectSql).FirstAsync();//查询是否存在 if (DecreasePayments != null) { return new JsonView() { Code = 400, Msg = "该数据已存在,请勿重复添加!" }; } else//不存在,可添加 { id = await AddAsyncReturnId(grp_Decrease); if (id < 1) { RollbackTran(); return new JsonView() { Code = 400, 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 = dto.OtherBankName; C.OtherSideNo = dto.OtherSideNo; C.OtherSideName = dto.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.SupplierName; C.OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer; C.ExceedBudget = 0; //C.RMBPrice = 0.00f; //设置该团组的汇率 var teamRate = teamRates.Where(it => it.CurrencyId == grp_Decrease.Currency).FirstOrDefault(); //Grp_TeamRate _TeamRate = _sqlSugar.Queryable().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 JsonView() { Code = 400, Msg = $"添加失败!团组汇率未设置{_sqlSugar.Queryable().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,dataId = id }; return new JsonView() { Code = 200, Msg = "添加成功!", Data = data }; } else { RollbackTran(); return new JsonView() { Code = 400, 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, SupplierName = grp_Decrease.SupplierName, SupplierContact = grp_Decrease.SupplierContact, SupplierContactNumber = grp_Decrease.SupplierContactNumber, SupplierSocialAccount = grp_Decrease.SupplierSocialAccount, SupplierEmail = grp_Decrease.SupplierEmail, SupplierAddress = grp_Decrease.SupplierAddress, PriceName = grp_Decrease.PriceName, Price = grp_Decrease.Price, Quantity = grp_Decrease.Quantity, FeeTotal = grp_Decrease.FeeTotal, Currency = grp_Decrease.Currency, FilePath = grp_Decrease.FilePath, OTAOrderNo = grp_Decrease.OTAOrderNo, Remark = grp_Decrease.Remark, }); if (res) { var grp_CreditCardPayment = _sqlSugar.Queryable().First(a => a.CId == grp_Decrease.Id && a.CTable == 98 && a.CId == grp_Decrease.Id && a.IsDel == 0); if (grp_CreditCardPayment != null) { //设置该团组的汇率 var 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 JsonView() { Code = 400, Msg = "修改失败!" }; } int ispay = 0; if (dto.PayDId == 72) ispay = 1; int CTable = await _sqlSugar.Updateable() .Where(a => a.Id == grp_CreditCardPayment.Id) .SetColumns(a => new Grp_CreditCardPayment { OtherSideName = dto.OtherSideName, OtherSideNo = dto.OtherSideNo, OtherBankName = dto.OtherBankName, PayDId = dto.PayDId, IsPay = ispay, PayMoney = grp_Decrease.FeeTotal, PaymentCurrency = grp_Decrease.Currency, Payee = dto.SupplierName, OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer, DayRate = grp_CreditCardPayment.DayRate, RMBPrice = grp_CreditCardPayment.RMBPrice, //IsAuditGM = auto ? 3 : grp_CreditCardPayment.IsAuditGM }) .ExecuteCommandAsync(); if (CTable > 0) { CommitTran(); var data = new { ccpId = grp_CreditCardPayment.Id, sign = 2,dataId = grp_Decrease.Id }; return new JsonView() { Code = 200, Msg = "修改成功!", Data = data }; } } } RollbackTran(); return new JsonView() { Code = 400, Msg = "修改失败!" }; } RollbackTran(); return new JsonView() { Code = 400, Msg = MsgTips.Fail }; ; } public async Task PostGroupNameAndEasy(DecreasePaymentsDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { #region 团组下拉框 List grp_GroupsTaskAssignment = Query(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 grp_Delegations = _sqlSugar.SqlQueryable(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 delegationEasyViews = new List(); 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 rst = new ListViewBase(); 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 rst = new ListViewBase(); rst.DataList = new List(); return result = new Result() { Code = 0, Msg = "暂无数据!", Data = rst }; } #endregion } catch (Exception ex) { return result = new Result() { Code = -2, Msg = "程序错误" }; throw; } } /// /// 根据团组增减款项表Id查询数据 /// /// /// /// public async Task QueryDecreasePaymentsById(DecreasePaymentsByIdDto dto) { string sql = string.Format($@"Select dp.Id, dp.DiId, dp.SupplierArea, dp.SupplierTypeId, dp.SupplierName, dp.SupplierContact, dp.SupplierContactNumber, dp.SupplierSocialAccount, dp.SupplierEmail, dp.SupplierAddress, dp.PriceName, dp.Price, dp.Quantity, dp.FeeTotal, dp.Currency, dp.FilePath, dp.OTAOrderNo, dp.Remark, ccp.PayDId, ccp.OrbitalPrivateTransfer, ccp.OtherBankName, ccp.OtherSideName, ccp.OtherSideNo, ccp.IsAuditGM From Grp_DecreasePayments dp With(NoLock) Left Join Grp_CreditCardPayment ccp With(NoLock) On dp.Id = ccp.CId And dp.DiId = ccp.DIId And ccp.CTable = 98 Where dp.IsDel = 0 And dp.Id = {dto.Id}"); var info = await _sqlSugar.SqlQueryable(sql).FirstAsync(); return new JsonView() { Code = 200, Msg = MsgTips.Succeed, Data = info }; } /// /// Del /// /// /// /// public async Task _Del(int id, int userId) { Result result = new Result() { Code = -2, Msg = "删除失败!" }; _sqlSugar.BeginTran(); var del = await _sqlSugar.Updateable() .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() .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; } } }