using AutoMapper; using MathNet.Numerics.Statistics.Mcmc; using Newtonsoft.Json; using NPOI.SS.Formula.Eval; using NPOI.SS.Formula.Functions; using OASystem.Domain; using OASystem.Domain.AesEncryption; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Financial; using OASystem.Domain.Entities.Groups; using OASystem.Domain.Entities.Resource; using OASystem.Domain.ViewModels.Groups; using OASystem.Domain.ViewModels.QiYeWeChat; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using static NPOI.HSSF.Util.HSSFColor; namespace OASystem.Infrastructure.Repositories.Groups { public class InvitationOfficialActivitiesRepository : BaseRepository { private readonly IMapper _mapper; public InvitationOfficialActivitiesRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar) { this._mapper = mapper; } /// /// 根据商邀费用Id查询C表和商邀资料及费用表 /// /// /// public async Task InvitationOfficialActivitiesById(InvitationOfficialActivitiesByIdDto dto) { Result result = new Result() { Code = -2, Msg = "程序错误" }; try { var grp_Invitation = _sqlSugar.Queryable().First(a => a.Id == dto.Id && a.IsDel == 0); Grp_CreditCardPayment grp_CreditCard = _sqlSugar.Queryable().First(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable==81); Res_InvitationOfficialActivityData res_InvitationOfficialActivityData = new Res_InvitationOfficialActivityData(); if (grp_Invitation!=null) { var exists = new EncryptionMatching { Inviter = grp_Invitation.Inviter, InviterArea = grp_Invitation.InviterArea, }; EncryptionProcessor.EncryptProperties(exists); if (grp_Invitation.DataId > 0) { res_InvitationOfficialActivityData = _sqlSugar.Queryable() .First(a => a.Id == grp_Invitation.DataId && a.IsDel == 0); } else { res_InvitationOfficialActivityData = _sqlSugar.Queryable() .First(a => a.Country == exists.InviterArea && a.UnitName == exists.Inviter && a.IsDel == 0); } EncryptionProcessor.DecryptProperties(res_InvitationOfficialActivityData); if (dto.PortType == 1) { var grp_Invitation1 = _mapper.Map(grp_Invitation); var data = new { _Invitation = grp_Invitation1, _InvitationData = res_InvitationOfficialActivityData, _CreditCard = grp_CreditCard, }; result = new Result() { Code = 0, Msg = "查询成功!", Data = data }; } else { var invitation = _mapper.Map(grp_Invitation); res_InvitationOfficialActivityData ??= new Res_InvitationOfficialActivityData(); invitation.ConsumptionPatterns = grp_CreditCard.ConsumptionPatterns; invitation.ConsumptionDate = grp_CreditCard.ConsumptionDate; invitation.PayDId = grp_CreditCard.PayDId; invitation.ConsumptionPatterns = grp_CreditCard.ConsumptionPatterns; invitation.ConsumptionDate = grp_CreditCard.ConsumptionDate; invitation.BankNo = grp_CreditCard.BankNo; invitation.CardholderName = grp_CreditCard.CardholderName; invitation.CompanyBankNo = grp_CreditCard.CompanyBankNo; invitation.OtherBankName = grp_CreditCard.OtherBankName; invitation.OtherSideNo = grp_CreditCard.OtherSideNo; invitation.OtherSideName = grp_CreditCard.OtherSideName; invitation.PayMoney = grp_CreditCard.PayMoney; invitation.PaymentCurrency = grp_CreditCard.PaymentCurrency; invitation.OrbitalPrivateTransfer = grp_CreditCard.OrbitalPrivateTransfer; invitation.Payee = grp_CreditCard.Payee; invitation.Address = res_InvitationOfficialActivityData.Address; invitation.Contact = res_InvitationOfficialActivityData.Contact; invitation.Job = res_InvitationOfficialActivityData.Job; invitation.Tel = res_InvitationOfficialActivityData.Tel; invitation.Email = res_InvitationOfficialActivityData.Email; invitation.Fax = res_InvitationOfficialActivityData.Fax; invitation.OtherInformation = res_InvitationOfficialActivityData.Remark; invitation.CTDId = grp_CreditCard.CTDId; result = new Result() { Code = 0, Msg = "查询成功!", Data = invitation }; } } else { if (dto.PortType == 1) { var data = new { _Invitation = grp_Invitation, _InvitationData = res_InvitationOfficialActivityData, _CreditCard = grp_CreditCard, }; result = new Result() { Code = 0, Msg = "暂无数据!", Data = data }; } else { InvitationOfficialActivitiesByIdView invitation = _mapper.Map(grp_Invitation); result = new Result() { Code = 0, Msg = "暂无数据!", Data = invitation }; } } } catch (Exception) { result = new Result() { Code = -2, Msg = "程序错误" }; throw; } return result; } /// /// 根据团组id查询商邀费用数据 /// /// /// public async Task InvitationOfficialActivitiesList(InvitationOfficialActivitiesListDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { ListViewBase rst = new ListViewBase() { ReceiveDt=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; string sqlWhere = string.Empty; if (!string.IsNullOrWhiteSpace(dto.Inviter)) { sqlWhere += string.Format(@" And Inviter like '%{0}%'", dto.Inviter); } if (!string.IsNullOrWhiteSpace(dto.StartInviteTime) && !string.IsNullOrWhiteSpace(dto.EndInviteTime)) { sqlWhere += string.Format(@" And i.InviteTime between '{0}' and '{1}'", dto.StartInviteTime, dto.EndInviteTime); } sqlWhere += string.Format(@" And i.DiId={0} And i.IsDel={1}", dto.DiId, 0); string UserId = ""; List gtaUIdList = _sqlSugar.Queryable().Where(a => a.DIId == dto.DiId && a.IsDel == 0 && a.CTId == 81).ToList(); foreach (Grp_GroupsTaskAssignment gta in gtaUIdList) UserId += gta.UId + ","; if (!string.IsNullOrWhiteSpace(UserId)) { UserId = UserId.Substring(0, UserId.Length - 1); } else { UserId = "0"; } sqlWhere += string.Format(@" And i.CreateUserId in ({0})", UserId); //雷怡 2024-05-08 16:19 更改默认值 IsPaySign = -1 if (dto.IsPaySign != -1) { sqlWhere += string.Format(@" And ccp.IsPay = {0} ", dto.IsPaySign); } if (!string.IsNullOrEmpty(sqlWhere.Trim())) { Regex r = new Regex("And"); sqlWhere = r.Replace(sqlWhere, "Where", 1); } //10011 //string sql = string.Format(@"Select Id,DiId,InviterArea,Inviter,InviteTime, // InviteCost,(Select Name From Sys_SetData Where id=i.InviteCurrency And IsDel=0) As InviteCurrency, // SendCost,(Select Name From Sys_SetData Where id=i.SendCurrency And IsDel=0) As SendCurrency, // EventsCost,(Select Name From Sys_SetData Where id=i.EventsCurrency And IsDel=0) As EventsCurrency, // TranslateCost,(Select Name From Sys_SetData Where id=i.TranslateCurrency And IsDel=0) As TranslateCurrency, // IsGoOfficaiaBussiness, // (Select PayMoney From Grp_CreditCardPayment Where CTable=81 And CId=i.Id And IsDel=0) As PayMoney, // (Select (Select Name From Sys_SetData Where Id =ccp.PaymentCurrency And IsDel=0 ) As PaymentCurrency // From Grp_CreditCardPayment ccp Where CTable=81 And CId=i.Id And IsDel=0) As PaymentCurrency, // (Select IsAuditGM From Grp_CreditCardPayment Where CTable=81 And CId=i.Id And IsDel=0) As IsAudit, // Attachment From Grp_InvitationOfficialActivities i {0} Order By i.id Desc", sqlWhere); string sql = string.Format(@" Select i.Id,i.DiId,i.InviterArea,i.Inviter,i.InviteTime,i.InviteCost,sd1.[Name] as InviteCurrency ,i.SendCost,sd2.[Name] as SendCurrency,i.EventsCost,sd3.[Name] as EventsCurrency,i.TranslateCost,sd4.[Name] as TranslateCurrency ,i.IsGoOfficaiaBussiness,ccp.PayMoney,sd5.[Name] as PaymentCurrency,IsAuditGM as IsAudit,i.Attachment,ccp.IsPay From Grp_InvitationOfficialActivities as i With(Nolock) Inner Join Grp_CreditCardPayment as ccp With(Nolock) On i.Id = ccp.CId Left Join Sys_SetData as sd1 On i.InviteCurrency = sd1.Id Left Join Sys_SetData as sd2 On i.SendCurrency = sd2.Id Left Join Sys_SetData as sd3 On i.EventsCurrency = sd3.Id Left Join Sys_SetData as sd4 On i.TranslateCurrency = sd4.Id Left Join Sys_SetData as sd5 On ccp.PaymentCurrency = sd5.Id {0} And ccp.CTable = 81 Order By i.id Desc ", sqlWhere); List _DecreasePayments = await _sqlSugar.SqlQueryable(sql).ToListAsync(); if (_DecreasePayments.Count != 0) { if (dto.PageIndex != 0 && dto.PageSize != 0) { int count = _DecreasePayments.Count; float totalPage = (float)count / dto.PageSize;//总页数 if (totalPage == 0) totalPage = 1; else totalPage = (int)Math.Ceiling((double)totalPage); List invitationOfficialActivities = new List(); for (int i = 0; i < dto.PageSize; i++) { var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize; if (RowIndex < _DecreasePayments.Count) { invitationOfficialActivities.Add(_DecreasePayments[RowIndex]); } else { break; } } rst.DataList = invitationOfficialActivities; rst.DataCount = count; rst.CurrPageIndex = dto.PageIndex; rst.CurrPageSize = dto.PageSize; rst.ReturnDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return result = new Result() { Code = 0, Msg = "查询成功!", Data = rst }; } else { return result = new Result() { Code = 0, Msg = "查询成功!", Data = _DecreasePayments }; } } else { if (dto.PageIndex != 0 && dto.PageSize != 0) { rst.DataList = _DecreasePayments; rst.DataCount = _DecreasePayments.Count; rst.CurrPageIndex = dto.PageIndex; rst.CurrPageSize = dto.PageSize; rst.ReturnDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return result = new Result() { Code = 0, Msg = "暂无数据!", Data = rst }; } else { return result = new Result() { Code = 0, Msg = "暂无数据!", Data = _DecreasePayments }; } } } catch (Exception ex) { return result = new Result() { Code = -2, Msg = ex.Message }; } } /// /// Info Page Basic Data /// /// public async Task _InitBasicData() { Result result = new Result() { Code = -2, Msg = "程序错误!" }; var setDatas = _sqlSugar.Queryable().Where(it => it.IsDel == 0).ToList(); //支付方式 var _payTypeDatas = setDatas.Where(it => it.STid == 14).Select(it => new { Id = it.Id, Name = it.Name, Remark = it.Remark }).ToList(); ///转账标识 var _costIdentificationDatas = new List() { new { Id = 0,Name = "公转" }, new { Id = 1,Name = "私转" } }; //卡类型 var _cardTypeDatas = setDatas.Where(it => it.STid == 15).Select(it => new SetDataCurrencyInfoView { Id = it.Id, Name = it.Name, Remark = it.Remark }).ToList(); var data = new { PayTypeData = _payTypeDatas, CostIdentificationData = _costIdentificationDatas, CardTypeData = _cardTypeDatas }; result.Code = 0; result.Data = data; return result; } /// /// 商邀费用操作(Status:1.新增,2.修改) /// /// /// public async Task OpInvitationOfficialActivities(OpInvitationOfficialActivitiesDto dto, Func> fn) { Result result = new Result() { Code = -2, Msg = "程序错误!" }; BeginTran(); string filePath = string.Empty; if (dto.Attachment.Length > 0) { filePath = JsonConvert.SerializeObject(dto.Attachment); } int id = 0; Grp_InvitationOfficialActivities grp_Invitation = _mapper.Map(dto); grp_Invitation.Attachment = filePath; if (dto.Status == 1)//添加 { #region 添加资料 Res_InvitationOfficialActivityData res_InvitationData = _mapper.Map(dto); res_InvitationData.Country = dto.InviterArea; res_InvitationData.UnitName = dto.Inviter; res_InvitationData.Delegation = dto.DiId.ToString(); res_InvitationData.Remark = dto.OtherInformation; EncryptionProcessor.EncryptProperties(res_InvitationData); int DataID = await _sqlSugar.Insertable(res_InvitationData).ExecuteReturnIdentityAsync(); grp_Invitation.DataId = DataID; #endregion id = await AddAsyncReturnId(grp_Invitation); #region C表数据添加 Grp_CreditCardPayment C = new Grp_CreditCardPayment(); C.PayDId = dto.PayDId; if (C.PayDId == 72) C.IsPay = 1; else C.IsPay = 0; C.ConsumptionPatterns = dto.ConsumptionPatterns; C.ConsumptionDate = dto.ConsumptionDate; C.CTDId = dto.CTDId; C.BankNo = dto.BankNo; C.CardholderName = dto.CardholderName; C.PayMoney = dto.PayMoney; C.PaymentCurrency = dto.PaymentCurrency; C.CompanyBankNo = dto.CompanyBankNo; C.OtherBankName = dto.OtherBankName; C.OtherSideNo = dto.OtherSideNo; C.OtherSideName = dto.OtherSideName; C.Remark = ""; C.CreateUserId = dto.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 = 0; C.AuditGMDate = ""; C.DIId = dto.DiId; C.CId = id; C.CTable = 81; 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; //获取新汇率 int diId,int CId, int currencyId var rate = await fn(dto.DiId, 81, dto.InviteCurrency); if (rate.Code == 0) { var rateInfo = (rate.Data as CurrencyInfo); if (rateInfo is not null) { C.DayRate = rateInfo.Rate; C.RMBPrice = rateInfo.Rate * C.PayMoney; } else { C.DayRate = 1; C.RMBPrice = C.PayMoney; } } int cId = await _sqlSugar.Insertable(C).ExecuteReturnIdentityAsync(); #endregion var data = new { ccpId = cId, sign = 1 }; if (cId != 0) { result = new Result() { Code = 0, Msg = "添加成功!", Data = data }; } else { RollbackTran(); result = new Result() { Code = -1, Msg = "添加失败!" }; } } else//修改 { var thisTime = new DateTime(); DateTime.TryParse(dto.InviteTime, out thisTime); bool res = await UpdateAsync(a => a.Id == grp_Invitation.Id, a => new Grp_InvitationOfficialActivities { DiId = dto.DiId, InviterArea = dto.InviterArea, Inviter = dto.Inviter, InviteTime = thisTime, Attachment = filePath, InviteCost = dto.InviteCost, InviteCurrency = dto.InviteCurrency, SendCost = dto.SendCost, SendCurrency = dto.SendCurrency, EventsCost = dto.EventsCost, EventsCurrency = dto.EventsCurrency, TranslateCost = dto.TranslateCost, TranslateCurrency = dto.TranslateCurrency, IsGoOfficaiaBussiness = dto.IsGoOfficaiaBussiness, Remark = dto.Remark, }); if (res) { Res_InvitationOfficialActivityData res_InvitationData = _mapper.Map(dto); res_InvitationData.Country = dto.InviterArea; res_InvitationData.UnitName = dto.Inviter; res_InvitationData.Delegation = dto.DiId.ToString(); res_InvitationData.Remark = dto.OtherInformation; EncryptionProcessor.EncryptProperties(res_InvitationData); Res_InvitationOfficialActivityData ifNullUp = null; var InvitationOfficialActivities_DB = _sqlSugar.Queryable() .First(x => x.Id == grp_Invitation.Id && x.IsDel == 0); if (InvitationOfficialActivities_DB.DataId > 0) { ifNullUp = _sqlSugar.Queryable() .First(x => x.Id == InvitationOfficialActivities_DB.DataId && x.IsDel == 0); } else { ifNullUp = await _sqlSugar.Queryable().FirstAsync (a => a.Country == res_InvitationData.Country && a.City == res_InvitationData.City && a.UnitName == res_InvitationData.UnitName && a.IsDel == 0); } if (ifNullUp == null)///添加或修改商邀资料 { int DataID = await _sqlSugar.Insertable(res_InvitationData).ExecuteReturnIdentityAsync(); if (DataID != 0) { result = new Result() { Code = 0, Msg = "添加成功!" }; } else { RollbackTran(); result = new Result() { Code = -1, Msg = "添加失败!" }; } } else { int CTable = await _sqlSugar.Updateable() .Where(a => a.Id == ifNullUp.Id) .SetColumns(a => new Res_InvitationOfficialActivityData { UnitName = res_InvitationData.UnitName, Country = res_InvitationData.Country, Contact = res_InvitationData.Contact, Tel = res_InvitationData.Tel, Job = res_InvitationData.Job, Email = res_InvitationData.Email, Fax = res_InvitationData.Fax, Address = res_InvitationData.Address, Remark = res_InvitationData.Remark, }) .ExecuteCommandAsync(); } Grp_CreditCardPayment grp_CreditCardPayment = _sqlSugar.Queryable().First(a => a.CId == grp_Invitation.Id && a.CTable == 81 && a.IsDel == 0); if (grp_CreditCardPayment != null) { if (dto.PayDId == 72) grp_CreditCardPayment.IsPay = 1; else grp_CreditCardPayment.IsPay = 0; grp_CreditCardPayment.PayMoney = dto.PayMoney; grp_CreditCardPayment.PaymentCurrency = dto.PaymentCurrency; grp_CreditCardPayment.Payee = dto.Payee; grp_CreditCardPayment.OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer; //获取新汇率 int diId,int CId, int currencyId var rate = await fn(dto.DiId, 81, dto.InviteCurrency); grp_CreditCardPayment.DayRate = 1; grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney; if (rate.Code == 0) { var rateInfo = (rate.Data as CurrencyInfo); if (rateInfo is not null) { grp_CreditCardPayment.DayRate = rateInfo.Rate; grp_CreditCardPayment.RMBPrice = rateInfo.Rate * grp_CreditCardPayment.PayMoney; } } int CTable = await _sqlSugar.Updateable() .Where(a => a.Id == grp_CreditCardPayment.Id) .SetColumns(a => new Grp_CreditCardPayment { ConsumptionPatterns = dto.ConsumptionPatterns, ConsumptionDate = dto.ConsumptionDate, PayDId = dto.PayDId, IsPay = grp_CreditCardPayment.IsPay, CTDId = dto.CTDId, BankNo = dto.BankNo, CardholderName = dto.CardholderName, CompanyBankNo = dto.CompanyBankNo, OtherBankName = dto.OtherBankName, OtherSideNo = dto.OtherSideNo, OtherSideName = dto.OtherSideName, PayMoney = grp_CreditCardPayment.PayMoney, PaymentCurrency = grp_CreditCardPayment.PaymentCurrency, Payee = grp_CreditCardPayment.Payee, OrbitalPrivateTransfer = grp_CreditCardPayment.OrbitalPrivateTransfer, DayRate = grp_CreditCardPayment.DayRate, RMBPrice = grp_CreditCardPayment.RMBPrice, }).ExecuteCommandAsync(); if (CTable != 0) { var data = new { ccpId = grp_CreditCardPayment.Id, sign = 2 }; result = new Result() { Code = 0, Msg = "修改成功!", Data = data }; } else { result = new Result() { Code = -1, Msg = "修改失败!" }; RollbackTran(); } } else { RollbackTran(); result = new Result() { Code = -1, Msg = "修改失败!" }; } } else { RollbackTran(); result = new Result() { Code = -1, Msg = "修改失败!" }; } } CommitTran(); return result; } } }