Selaa lähdekoodia

修改机票商邀汇率获取

yuanrf 1 vuosi sitten
vanhempi
commit
3f58d9f61a

+ 2 - 2
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -1768,7 +1768,7 @@ namespace OASystem.API.Controllers
         {
             try
             {
-                Result groupData = await _airTicketResRep.OpAirTicketRes(dto);
+                Result groupData = await _airTicketResRep.OpAirTicketRes(dto, _setDataRep.PostCurrencyByDiid);
                 if (groupData.Code != 0)
                 {
                     return Ok(JsonView(false, groupData.Msg));
@@ -2812,7 +2812,7 @@ namespace OASystem.API.Controllers
         {
             try
             {
-                Result groupData = await _InvitationOfficialActivitiesRep.OpInvitationOfficialActivities(dto);
+                Result groupData = await _InvitationOfficialActivitiesRep.OpInvitationOfficialActivities(dto,_setDataRep.PostCurrencyByDiid);
                 if (groupData.Code != 0)
                 {
                     return Ok(JsonView(false, groupData.Msg));

+ 266 - 214
OASystem/OASystem.Infrastructure/Repositories/Groups/AirTicketResRepository.cs

@@ -385,7 +385,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
         }
 
-        public async Task<Result> OpAirTicketRes(AirTicketResOpDto dto)
+        public async Task<Result> OpAirTicketRes(AirTicketResOpDto dto,Func<int,int,int,Task<Result>> fn)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             try
@@ -426,130 +426,159 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     if (result.Code == 0)
                     {
                         Grp_CreditCardPayment grp_CreditCard = _mapper.Map<Grp_CreditCardPayment>(dto.CardPaymentOpData);
-                        //换算
-                        Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85);
-                        if (_TeamRate != null)
+
+                        //获取新汇率  int diId,int CId, int currencyId
+                        var rate = await fn(dto.AirTicketResOpData.DiId,85,dto.AirTicketResOpData.Currency);
+
+                        if (rate.Code == 0)
                         {
-                            if (grp_CreditCard.PaymentCurrency == 49)
-                            {
-                                grp_CreditCard.DayRate = _TeamRate.RateU;
-                                grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
-                                //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
-                            }
-                            else if (grp_CreditCard.PaymentCurrency == 51)
+                            var rateInfo =  (rate.Data as CurrencyInfo);
+                            if (rateInfo is not null)
                             {
-                                grp_CreditCard.DayRate = _TeamRate.RateE;
-                                grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
-                                //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
+
+                                grp_CreditCard.DayRate = rateInfo.Rate;
+                                grp_CreditCard.RMBPrice = rateInfo.Rate * grp_CreditCard.PayMoney;
                             }
                             else
                             {
-                                grp_CreditCard.DayRate = 1M;
+                                grp_CreditCard.DayRate = 1;
                                 grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
                             }
                         }
-                        else
-                        {
-                            grp_CreditCard.DayRate = 1M;
-                            grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
-                        }
 
-                        //判断是否超出成本
-                        Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0);
-                        if (grp_AirTicket.CType == 460)//经济舱
-                        {
-                            if (_GroupCostParameter != null)
-                            {
-
-                                if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
-                                {
-                                    grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
-                                    grp_CreditCard.IsAuditGM = 3;//3 为自动审核
-                                    grp_CreditCard.AuditGMOperate = 0;
-                                    grp_CreditCard.AuditGMDate = "";
-                                    grp_CreditCard.IsPay = 0;
-                                }
-                                else
-                                {
-                                    var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB);
-                                    var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
-                                    grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
-                                    grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                    grp_CreditCard.AuditGMOperate = 21;
-                                    grp_CreditCard.AuditGMDate = "";
-                                    grp_CreditCard.IsPay = 0;
-                                }
-
-                            }
-                            else
-                            {
-                                grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 0;
-                            }
+                        //换算
+                        #region 老汇率处理方式
+                        //Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85);
+                        //if (_TeamRate != null)
+                        //{
+                        //    if (grp_CreditCard.PaymentCurrency == 49)
+                        //    {
+                        //        grp_CreditCard.DayRate = _TeamRate.RateU;
+                        //        grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
+                        //        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
+                        //    }
+                        //    else if (grp_CreditCard.PaymentCurrency == 51)
+                        //    {
+                        //        grp_CreditCard.DayRate = _TeamRate.RateE;
+                        //        grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
+                        //        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
+                        //    }
+                        //    else
+                        //    {
+                        //        grp_CreditCard.DayRate = 1M;
+                        //        grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    grp_CreditCard.DayRate = 1M;
+                        //    grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
+                        //}
+                        #endregion
 
-                        }
-                        else if (grp_AirTicket.CType == 458)
-                        {
-                            if (_GroupCostParameter != null)
-                            {
 
+                        //判断是否超出成本
+                        #region 自动审核(暂时屏蔽)
+                        //Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0);
+                        //if (grp_AirTicket.CType == 460)//经济舱
+                        //{
+                        //    if (_GroupCostParameter != null)
+                        //    {
+                               
+                        //        if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
+                        //        {
+                        //            grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 3;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 0;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 0;
+                        //        }
+                        //        else
+                        //        {
+                        //            var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB);
+                        //            var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
+                        //            grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 21;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 0;
+                        //        }
+                               
+                        //    }
+                        //    else
+                        //    {
+                        //        grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
+                        //        grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //        grp_CreditCard.AuditGMOperate = 0;
+                        //        grp_CreditCard.AuditGMDate = "";
+                        //        grp_CreditCard.IsPay = 0;
+                        //    }
+
+                        //}
+                        //else if (grp_AirTicket.CType == 458)
+                        //{
+                        //    if (_GroupCostParameter != null)
+                        //    {
+
+
+                        //        if (Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
+                        //        {
+                        //            grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 3;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 21;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 0;
+                        //        }
+                        //        else
+                        //        {
+                        //            var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB);
+                        //            var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
+                        //            grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 21;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 0;
+                        //        }
+                        //    }
+                        //    else
+                        //    {
+                        //        grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
+                        //        grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //        grp_CreditCard.AuditGMOperate = 21;
+                        //        grp_CreditCard.AuditGMDate = "";
+                        //        grp_CreditCard.IsPay = 0;
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
+                        //    grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //    grp_CreditCard.AuditGMOperate = 0;
+                        //    grp_CreditCard.AuditGMDate = "";
+                        //    grp_CreditCard.IsPay = 0;
+                        //}
+                        #endregion
 
-                                if (Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
-                                {
-                                    grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
-                                    grp_CreditCard.IsAuditGM = 3;//3 为自动审核
-                                    grp_CreditCard.AuditGMOperate = 21;
-                                    grp_CreditCard.AuditGMDate = "";
-                                    grp_CreditCard.IsPay = 0;
-                                }
-                                else
-                                {
-                                    var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB);
-                                    var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
-                                    grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
-                                    grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                    grp_CreditCard.AuditGMOperate = 21;
-                                    grp_CreditCard.AuditGMDate = "";
-                                    grp_CreditCard.IsPay = 0;
-                                }
-                            }
-                            else
-                            {
-                                grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 0;
-                            }
-                        }
-                        else
-                        {
-                            grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
-                            grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                            grp_CreditCard.AuditGMOperate = 21;
-                            grp_CreditCard.AuditGMDate = "";
-                            grp_CreditCard.IsPay = 0;
-                        }
                         grp_CreditCard.CId = id;
                         grp_CreditCard.CTable = 85;
                         grp_CreditCard.PayPercentage = 100;
-                        //查询上一次付款信息
-                        Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1);
-                        if (_CreditCardPayment != null)
-                        {
-                            grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次
-                            grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次
-                            grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次
-                        }
-                        else
-                        {
-                            grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次
-                            grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次
-                            grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次
-                        }
+
+                        #region 查询上一次付款(注释)
+                        ////查询上一次付款信息
+                        //Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1);
+                        //if (_CreditCardPayment != null)
+                        //{
+                        //    grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次
+                        //    grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次
+                        //    grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次
+                        //}
+                        //else
+                        //{
+                        //    grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次
+                        //    grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次
+                        //    grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次
+                        //}
+                        #endregion
 
                         id = await _sqlSugar.Insertable(grp_CreditCard).ExecuteReturnIdentityAsync();
                         if (id == 0)
@@ -565,7 +594,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         CommitTran();
                         
                         return result = new Result() { Code = 0, Msg = "添加成功!" };
-                        //C表操作
                     }
                     else
                     {
@@ -608,121 +636,146 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         //C表操作
                         Grp_CreditCardPayment grp_CreditCard = _mapper.Map<Grp_CreditCardPayment>(dto.CardPaymentOpData);
 
-                        //换算
-                        Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85);
-                        if (_TeamRate != null)
-                        {
-                            if (grp_CreditCard.PaymentCurrency == 49)
-                            {
-                                grp_CreditCard.DayRate = _TeamRate.RateU;
-                                grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
-                                //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
-                            }
-                            else if (grp_CreditCard.PaymentCurrency == 51)
-                            {
-                                grp_CreditCard.DayRate = _TeamRate.RateE;
-                                grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
-                                //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
-                            }
-                            else
-                            {
-                                grp_CreditCard.DayRate = 1M;
-                                grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
-                            }
-                        }
-                        else
-                        {
-                            grp_CreditCard.DayRate = 1M;
-                            grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
-                        }
-                        //grp_CreditCard.PayMoney = grp_CreditCard.PayMoney;
-                        //判断是否超出成本
-                        Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0);
-                        if (grp_AirTicket.CType == 460)//经济舱
-                        {
-                            if (_GroupCostParameter != null)
-                            {
+                        //获取新汇率  int diId,int CId, int currencyId
+                        var rate = await fn(dto.AirTicketResOpData.DiId, 85, dto.AirTicketResOpData.Currency);
 
-                            
-                            if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
-                            {
-                                grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 3;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 0;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 1;
-                            }
-                            else
-                            {
-                                var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB);
-                                var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
-                                grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 1;
-                            }
-                            }
-                            else
-                            {
-                                grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 0;
-                            }
-                        }
-                        else if (grp_AirTicket.CType == 458)
+                        if (rate.Code == 0)
                         {
-                            if (_GroupCostParameter != null)
+                            var rateInfo = (rate.Data as CurrencyInfo);
+                            if (rateInfo is not null)
                             {
+
+                                grp_CreditCard.DayRate = rateInfo.Rate;
+                                grp_CreditCard.RMBPrice = rateInfo.Rate * grp_CreditCard.PayMoney;
                             }
                             else
                             {
-                                grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 0;
-                            }
-                            if ((_GroupCostParameter != null ? _GroupCostParameter.GWCB : 0) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
-                            {
-                                grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 3;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 1;
-                            }
-                            else
-                            {
-                                var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB);
-                                var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
-                                grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
-                                grp_CreditCard.IsAuditGM = 0;//3 为自动审核
-                                grp_CreditCard.AuditGMOperate = 21;
-                                grp_CreditCard.AuditGMDate = "";
-                                grp_CreditCard.IsPay = 1;
+                                grp_CreditCard.DayRate = 1;
+                                grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
                             }
                         }
 
+                        #region 老汇率修改(注释)
+                        //换算
+                        Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0 && a.CTable == 85);
+                        //if (_TeamRate != null)
+                        //{
+                        //    if (grp_CreditCard.PaymentCurrency == 49)
+                        //    {
+                        //        grp_CreditCard.DayRate = _TeamRate.RateU;
+                        //        grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
+                        //        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
+                        //    }
+                        //    else if (grp_CreditCard.PaymentCurrency == 51)
+                        //    {
+                        //        grp_CreditCard.DayRate = _TeamRate.RateE;
+                        //        grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
+                        //        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
+                        //    }
+                        //    else
+                        //    {
+                        //        grp_CreditCard.DayRate = 1M;
+                        //        grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    grp_CreditCard.DayRate = 1M;
+                        //    grp_CreditCard.RMBPrice = grp_CreditCard.PayMoney;
+                        //}
+                        #endregion
+
+                        #region 自动审核(注释)
+                        //Grp_GroupCostParameter _GroupCostParameter = _sqlSugar.Queryable<Grp_GroupCostParameter>().First(a => a.DiId == grp_AirTicket.DIId && a.IsDel == 0);
+                        //if (grp_AirTicket.CType == 460)//经济舱
+                        //{
+                        //    if (_GroupCostParameter != null)
+                        //    {
+
+
+                        //        if (Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
+                        //        {
+                        //            grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 3;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 0;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 1;
+                        //        }
+                        //        else
+                        //        {
+                        //            var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.JJCCB);
+                        //            var b = a / Convert.ToDecimal(_GroupCostParameter.JJCCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
+                        //            grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 21;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 1;
+                        //        }
+                        //    }
+                        //    else
+                        //    {
+                        //        grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
+                        //        grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //        grp_CreditCard.AuditGMOperate = 21;
+                        //        grp_CreditCard.AuditGMDate = "";
+                        //        grp_CreditCard.IsPay = 0;
+                        //    }
+                        //}
+                        //else if (grp_AirTicket.CType == 458)
+                        //{
+                        //    if (_GroupCostParameter != null)
+                        //    {
+                        //        if ((_GroupCostParameter != null ? _GroupCostParameter.GWCB : 0) * Convert.ToDecimal(grp_AirTicket.ClientNum) > grp_CreditCard.RMBPrice)
+                        //        {
+                        //            grp_CreditCard.ExceedBudget = 0;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 3;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 21;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 1;
+                        //        }
+                        //        else
+                        //        {
+                        //            var a = grp_CreditCard.RMBPrice - Convert.ToDecimal(_GroupCostParameter.GWCB);
+                        //            var b = a / Convert.ToDecimal(_GroupCostParameter.GWCB) * Convert.ToDecimal(grp_AirTicket.ClientNum);
+                        //            grp_CreditCard.ExceedBudget = b;// 超出预算比例 换算
+                        //            grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //            grp_CreditCard.AuditGMOperate = 21;
+                        //            grp_CreditCard.AuditGMDate = "";
+                        //            grp_CreditCard.IsPay = 1;
+                        //        }
+                        //    }
+                        //    else
+                        //    {
+                        //        grp_CreditCard.ExceedBudget = 0.00M;// 超出预算比例 换算
+                        //        grp_CreditCard.IsAuditGM = 0;//3 为自动审核
+                        //        grp_CreditCard.AuditGMOperate = 21;
+                        //        grp_CreditCard.AuditGMDate = "";
+                        //        grp_CreditCard.IsPay = 0;
+                        //    }
+                        //}
+                        #endregion
 
                         grp_CreditCard.CId = id;
                         grp_CreditCard.CTable = 85;
                         grp_CreditCard.PayPercentage = 100;
-                        //查询上一次付款信息
-                        Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1);
-                        if (_CreditCardPayment != null)
-                        {
-                            grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次
-                            grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次
-                            grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次
-                        }
-                        else
-                        {
-                            grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次
-                            grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次
-                            grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次
-                        }
+
+                        #region 查询上一次付款信息(注释)
+                        ////查询上一次付款信息
+                        //Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().OrderByDescending(x => x.CreateUserId).First(a => a.DIId == grp_AirTicket.DIId && a.IsDel == 0 && a.IsPay == 1);
+                        //if (_CreditCardPayment != null)
+                        //{
+                        //    grp_CreditCard.PayPercentageOld = _CreditCardPayment.PayPercentageOld;// 上次付款百分比 查询并计算最近一次
+                        //    grp_CreditCard.PayThenMoneyOld = _CreditCardPayment.PayMoney;// 上次付款金额 查询上一次
+                        //    grp_CreditCard.UpdateDate = _CreditCardPayment.UpdateDate;// 上次付款时间 查询上一次
+                        //}
+                        //else
+                        //{
+                        //    grp_CreditCard.PayPercentageOld = 0;// 上次付款百分比 查询并计算最近一次
+                        //    grp_CreditCard.PayThenMoneyOld = 0;// 上次付款金额 查询上一次
+                        //    grp_CreditCard.UpdateDate = "";// 上次付款时间 查询上一次
+                        //}
+                        #endregion
+
                         int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.Id == dto.CardPaymentOpData.Id).SetColumns(a => new Grp_CreditCardPayment
                         {
                             PayDId = grp_CreditCard.PayDId,
@@ -757,7 +810,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         {
                             RollbackTran();
                             return result = new Result() { Code = -1, Msg = "修改失败!" };
-
                         }
                         else
                         {

+ 102 - 94
OASystem/OASystem.Infrastructure/Repositories/Groups/InvitationOfficialActivitiesRepository.cs

@@ -204,7 +204,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async Task<Result> OpInvitationOfficialActivities(OpInvitationOfficialActivitiesDto dto)
+        public async Task<Result> OpInvitationOfficialActivities(OpInvitationOfficialActivitiesDto dto, Func<int, int, int, Task<Result>> fn)
         {
             Result result = new Result() { Code = -2, Msg = "程序错误!" };
             BeginTran();
@@ -251,14 +251,15 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             {
                                 int CTable = await _sqlSugar.Updateable<Res_InvitationOfficialActivityData>().Where(a => a.Id == ifNullUp.Id).SetColumns(a => new Res_InvitationOfficialActivityData
                                 {
-                                   Contact=dto.Contact,
-                                   Tel=dto.Tel,
-                                   Email=dto.Email,
-                                   Fax=dto.Fax,
-                                   Address=dto.Address,
-                                   Remark=dto.OtherInformation,
+                                    Contact = dto.Contact,
+                                    Tel = dto.Tel,
+                                    Email = dto.Email,
+                                    Fax = dto.Fax,
+                                    Address = dto.Address,
+                                    Remark = dto.OtherInformation,
                                 }).ExecuteCommandAsync();
                             }
+
                             Grp_CreditCardPayment C = new Grp_CreditCardPayment();
                             C.PayDId = dto.PayDId;
                             C.ConsumptionPatterns = "";
@@ -268,11 +269,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             C.CardholderName = "";
                             C.PayMoney = dto.InviteCost + dto.SendCost;
                             C.PaymentCurrency = dto.inviteCurrency;
-                            //当天汇率
-                            //if (!string.IsNullOrEmpty(hfRate.Value))
-                            //    C.DayRate = hfRate.Value;
-                            //else
-                            //C.DayRate = "";
                             C.CompanyBankNo = "";
                             C.OtherBankName = "";
                             C.OtherSideNo = "";
@@ -288,7 +284,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             C.AuditMFOperate = 0;
                             C.AuditMFDate = "";
                             C.IsAuditGM = 0;
-                            C.AuditGMOperate = 21;
+                            C.AuditGMOperate = 0;
                             C.AuditGMDate = "";
                             C.IsPay = 0;
                             C.DIId = dto.DiId;
@@ -302,35 +298,56 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             C.Payee = dto.Payee;
                             C.OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer;
                             C.ExceedBudget = 0;
-                            //C.RMBPrice = 0.00f;
 
-                            //设置该团组的汇率
-                            Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == dto.DiId && a.IsDel == 0 && a.CTable == 81);
-                            if (_TeamRate != null)
+                            //获取新汇率  int diId,int CId, int currencyId
+                            var rate = await fn(dto.DiId, 81, dto.inviteCurrency);
+
+                            if (rate.Code == 0)
                             {
-                                if (dto.inviteCurrency == 49)
-                                {
-                                    C.DayRate = _TeamRate.RateU;
-                                    C.RMBPrice = C.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
-                                    //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
-                                }
-                                else if (dto.inviteCurrency == 51)
+                                var rateInfo = (rate.Data as CurrencyInfo);
+                                if (rateInfo is not null)
                                 {
-                                    C.DayRate = _TeamRate.RateE;
-                                    C.RMBPrice = C.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
-                                    //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
+
+                                    C.DayRate = rateInfo.Rate;
+                                    C.RMBPrice = rateInfo.Rate * C.PayMoney;
                                 }
                                 else
                                 {
-                                    C.DayRate = 1M;
+                                    C.DayRate = 1;
                                     C.RMBPrice = C.PayMoney;
                                 }
                             }
-                            else
-                            {
-                                C.DayRate = 1M;
-                                C.RMBPrice = C.PayMoney;
-                            }
+
+                            #region 旧汇率注释
+                            //设置该团组的汇率
+                            //Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == dto.DiId && a.IsDel == 0 && a.CTable == 81);
+                            //if (_TeamRate != null)
+                            //{
+                            //    if (dto.inviteCurrency == 49)
+                            //    {
+                            //        C.DayRate = _TeamRate.RateU;
+                            //        C.RMBPrice = C.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
+                            //        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
+                            //    }
+                            //    else if (dto.inviteCurrency == 51)
+                            //    {
+                            //        C.DayRate = _TeamRate.RateE;
+                            //        C.RMBPrice = C.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
+                            //        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
+                            //    }
+                            //    else
+                            //    {
+                            //        C.DayRate = 1M;
+                            //        C.RMBPrice = C.PayMoney;
+                            //    }
+                            //}
+                            //else
+                            //{
+                            //    C.DayRate = 1M;
+                            //    C.RMBPrice = C.PayMoney;
+                            //}
+                            #endregion
+
                             int cId = await _sqlSugar.Insertable(C).ExecuteReturnIdentityAsync();
                             if (cId != 0)
                             {
@@ -370,7 +387,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             (a => a.Country == res_InvitationData.Country && a.City == res_InvitationData.City && a.UnitName == res_InvitationData.UnitName);
                         if (ifNullUp == null)///添加或修改商邀资料
                         {
-                            res_InvitationData.Remark =dto.OtherInformation;
+                            res_InvitationData.Remark = dto.OtherInformation;
                             res_InvitationData.Delegation = dto.DiId.ToString();
 
                             int DataID = await _sqlSugar.Insertable(res_InvitationData).ExecuteReturnIdentityAsync();
@@ -383,77 +400,68 @@ namespace OASystem.Infrastructure.Repositories.Groups
                                 RollbackTran();
                                 result = new Result() { Code = -1, Msg = "添加失败!" };
                             }
-                                
-                        } else
+
+                        }
+                        else
+                        {
+                            int CTable = await _sqlSugar.Updateable<Res_InvitationOfficialActivityData>().Where(a => a.Id == ifNullUp.Id).SetColumns(a => new Res_InvitationOfficialActivityData
                             {
-                                int CTable = await _sqlSugar.Updateable<Res_InvitationOfficialActivityData>().Where(a => a.Id == ifNullUp.Id).SetColumns(a => new Res_InvitationOfficialActivityData
-                                {
-                                   Contact=dto.Contact,
-                                   Tel=dto.Tel,
-                                   Email=dto.Email,
-                                   Fax=dto.Fax,
-                                   Address=dto.Address,
-                                   Remark=dto.OtherInformation,
-                                }).ExecuteCommandAsync();
-                            }
-                       
-                            Grp_CreditCardPayment grp_CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == grp_Invitation.Id && a.CTable==81 && a.IsDel == 0);
-                            if (grp_CreditCardPayment != null)
+                                Contact = dto.Contact,
+                                Tel = dto.Tel,
+                                Email = dto.Email,
+                                Fax = dto.Fax,
+                                Address = dto.Address,
+                                Remark = dto.OtherInformation,
+                            }).ExecuteCommandAsync();
+                        }
+
+                        Grp_CreditCardPayment grp_CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == grp_Invitation.Id && a.CTable == 81 && a.IsDel == 0);
+                        if (grp_CreditCardPayment != null)
+                        {
+                            grp_CreditCardPayment.PayMoney = dto.InviteCost + dto.SendCost;
+
+                            //获取新汇率  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)
                             {
-                                grp_CreditCardPayment.PayMoney = dto.InviteCost + dto.SendCost;
-                                Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == grp_Invitation.DiId && a.IsDel == 0 && a.IsDel==0 && a.CTable == 81);
-                                if (_TeamRate != null)
+                                var rateInfo = (rate.Data as CurrencyInfo);
+                                if (rateInfo is not null)
                                 {
 
-                                    if (grp_Invitation.InviteCurrency == 49)
-                                    {
-                                        grp_CreditCardPayment.DayRate = _TeamRate.RateU;
-                                        grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney * Convert.ToDecimal(_TeamRate.RateU);
-                                        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateU); 
-                                    }
-                                    else if (grp_Invitation.InviteCurrency == 51)
-                                    {
-                                        grp_CreditCardPayment.DayRate = _TeamRate.RateE;
-                                        grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney * Convert.ToDecimal(_TeamRate.RateE);
-                                        //ccp.PayMoney = ccp.PayMoney * float.Parse(tr.RateE); 
-                                    }
-                                    else
-                                    {
-                                        grp_CreditCardPayment.DayRate = 1M;
-                                        grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney;
-                                    }
-                                }
-                                else
-                                {
-                                    grp_CreditCardPayment.DayRate = 1M;
-                                    grp_CreditCardPayment.RMBPrice = grp_CreditCardPayment.PayMoney;
+                                    grp_CreditCardPayment.DayRate = rateInfo.Rate;
+                                    grp_CreditCardPayment.RMBPrice = rateInfo.Rate * grp_CreditCardPayment.PayMoney;
                                 }
-                                int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.Id == grp_CreditCardPayment.Id).SetColumns(a => new Grp_CreditCardPayment
-                                {
-                                    PayDId = dto.PayDId,
-                                    PayMoney = grp_CreditCardPayment.PayMoney,
-                                    PaymentCurrency = grp_Invitation.InviteCurrency,
-                                    Payee = dto.Payee,
-                                    OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer,
-                                    DayRate = grp_CreditCardPayment.DayRate,
-                                    RMBPrice = grp_CreditCardPayment.RMBPrice,
+                            }
 
-                                }).ExecuteCommandAsync();
-                                if (CTable != 0)
-                                {
-                                    result = new Result() { Code = 0, Msg = "修改成功!" };
-                                }
-                                else
-                                {
-                                    result = new Result() { Code = -1, Msg = "修改失败!" };
-                                    RollbackTran();
-                                }
+                            int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.Id == grp_CreditCardPayment.Id).SetColumns(a => new Grp_CreditCardPayment
+                            {
+                                PayDId = dto.PayDId,
+                                PayMoney = grp_CreditCardPayment.PayMoney,
+                                PaymentCurrency = grp_Invitation.InviteCurrency,
+                                Payee = dto.Payee,
+                                OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer,
+                                DayRate = grp_CreditCardPayment.DayRate,
+                                RMBPrice = grp_CreditCardPayment.RMBPrice,
+
+                            }).ExecuteCommandAsync();
+                            if (CTable != 0)
+                            {
+                                result = new Result() { Code = 0, Msg = "修改成功!" };
                             }
                             else
                             {
-                                RollbackTran();
                                 result = new Result() { Code = -1, Msg = "修改失败!" };
+                                RollbackTran();
                             }
+                        }
+                        else
+                        {
+                            RollbackTran();
+                            result = new Result() { Code = -1, Msg = "修改失败!" };
+                        }
                     }
                     else
                     {