Procházet zdrojové kódy

获取团组相关汇率
Update CurrencyList

leiy před 1 rokem
rodič
revize
b9c86b0c87

+ 2 - 129
OASystem/OASystem.Api/Controllers/BusinessController.cs

@@ -273,136 +273,9 @@ namespace OASystem.API.Controllers
 
                 if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3 )
                 {
-                    string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr 
-                                                     Left Join Sys_SetData  sd On sd.IsDel=0 And sd.STid=16  And tr.CTable = sd.Id 
-                                                     Where tr.IsDel = 0 And tr.DiId = {0} And tr.CTable = {1}", dto.DiId,dto.CTable);
+                    var _vew = GeneralMethod.PostGroupTeamRateByDiIdAndCTableId(dto.PortType,dto.DiId,dto.CTable);
 
-                    var teamRateInfo = await _teamRateRep._sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToListAsync();
-
-                    #region 团组汇率
-
-                    TeamRateModelGeneralView teamRateModels = new TeamRateModelGeneralView();
-
-
-                    #region 单独处理Ctable 币种汇率 默认 为CNY
-                    if (dto.CTable == 285)
-                    {
-                        teamRateModels = new TeamRateModelGeneralView()
-                        {
-                            Id = 0,
-                            CTableId = 285,
-                            CTableName = "其他款项与收款退还",
-                            TeamRates = new List<TeamRateDescAddCurrencyIdView>() {
-                                new TeamRateDescAddCurrencyIdView()
-                                {
-                                    CurrencyId = 836,
-                                    CurrencyCode = "CNY",
-                                    CurrencyName = "人民币",
-                                    Rate = 1.0000M,
-                                }
-                            }
-                        };
-                        return Ok(JsonView(true, "操作成功!", teamRateModels));
-                    }
-
-
-                    #endregion
-
-
-                    List<SetDataInfoView> currencyDatas = new List<SetDataInfoView>();    
-                    #region 获取所有币种
-
-                    string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0", 66);
-                    var DBdata = await _setDataRep.GetListBySqlWithNolockAsync(sql);
-
-                    if (DBdata == null || DBdata.Count == 0)
-                    {
-                        return Ok(JsonView(false, "所有币种获取失败!"));
-                    }
-
-                    currencyDatas = DBdata.Select(x => new SetDataInfoView
-                    {
-                        Name = x.Name,
-                        Id = x.Id,
-                        Remark = x.Remark,
-                    }).ToList();
-
-                    #endregion
-
-                    foreach (TeamRateInfoView item in teamRateInfo)
-                    {
-                        TeamRateModelGeneralView teamRateModelInfo = new TeamRateModelGeneralView();
-
-                        teamRateModelInfo.Id = item.Id;
-                        teamRateModelInfo.CTableId = item.CTable;
-                        teamRateModelInfo.CTableName = item.Name;
-                        List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
-
-                        #region 拆分remark里的汇率
-
-                        if (item.Remark.Contains("|"))
-                        {
-                            string[] currencyArr = item.Remark.Split("|");
-                            foreach (string currency in currencyArr)
-                            {
-                                string[] currency1 = currency.Split(":");
-                                string[] currency2 = currency1[0].Split("(");
-
-                                string currencyCode = currency2[1].Replace(")", "").TrimEnd();
-                                SetDataInfoView dataInfoView = new SetDataInfoView();
-                                dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
-                                int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
-                                TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
-                                {
-                                    CurrencyId = dataInfoView.Id,
-                                    CurrencyCode = currencyCode,
-                                    CurrencyName = currency2[0],
-                                    Rate = decimal.Parse(currency1[1]),
-                                };
-                                teamRateDescViews.Add(rateDescView);
-                            }
-                        }
-                        else
-                        {
-                            if (!string.IsNullOrEmpty(item.Remark))
-                            {
-                                string[] currency1 = item.Remark.Split(":");
-                                string[] currency2 = currency1[0].Split("(");
-
-                                string currencyCode = currency2[1].Replace(")", "").TrimEnd();
-                                SetDataInfoView dataInfoView = new SetDataInfoView();
-                                dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
-                                int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
-                                TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
-                                {
-                                    CurrencyId = dataInfoView.Id,
-                                    CurrencyCode = currencyCode,
-                                    CurrencyName = currency2[0],
-                                    Rate = decimal.Parse(currency1[1]),
-                                };
-                                teamRateDescViews.Add(rateDescView);
-                            }
-                        }
-
-                        #endregion
-
-                        if (teamRateDescViews.Count > 0)
-                        {
-                            teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
-                        }
-
-                        teamRateModelInfo.TeamRates = teamRateDescViews;
-                        teamRateModels = teamRateModelInfo;
-                    }
-
-                    if (teamRateModels.TeamRates == null)
-                    {
-                        teamRateModels.TeamRates = new List<TeamRateDescAddCurrencyIdView>();
-                    }
-
-                    #endregion
-
-                    return Ok(JsonView(true, "操作成功!", teamRateModels));
+                    return Ok(JsonView(true, "操作成功!", _vew));
 
                 }
                 else

+ 7 - 4
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -1390,30 +1390,33 @@ namespace OASystem.API.Controllers
                             Grp_HotelReservations hotelReservations = _HotelReservations.Where(s => s.Id == entity.CId).FirstOrDefault();
                             if (hotelReservations != null)
                             {
-                                string GovernmentRentName = "", CityTaxName = "", BreakfastName = "";
+                                string GovernmentRentCode ="",GovernmentRentName = "", CityTaxCode="",CityTaxName = "", BreakfastCode="", BreakfastName = "";
                                 Sys_SetData sdPaymentCurrency_GovernmentRent = currencyItems.Where(s => s.Id == hotelReservations.GovernmentRentCurrency).FirstOrDefault();
                                 if (sdPaymentCurrency_GovernmentRent!= null)
                                 {
+                                    GovernmentRentCode = sdPaymentCurrency_GovernmentRent.Name;
                                     GovernmentRentName = sdPaymentCurrency_GovernmentRent.Remark;
                                 }
 
                                 Sys_SetData sdPaymentCurrency_CityTax = currencyItems.Where(s => s.Id == hotelReservations.CityTaxCurrency).FirstOrDefault(); 
                                 if (sdPaymentCurrency_CityTax != null)
                                 {
+                                    CityTaxCode = sdPaymentCurrency_CityTax.Name;
                                     CityTaxName = sdPaymentCurrency_CityTax.Remark;
                                 }
                                 Sys_SetData sdPaymentCurrency_Breakfast = currencyItems.Where(s => s.Id == hotelReservations.BreakfastCurrency).FirstOrDefault();
                                 if (sdPaymentCurrency_Breakfast != null)
                                 {
+                                    BreakfastCode = sdPaymentCurrency_Breakfast.Name;
                                     BreakfastName = sdPaymentCurrency_Breakfast.Remark;
                                 }
 
                                 string isoppayStr = hotelReservations.Isoppay == 0 ? "是" : "否";
                                 _detail.PriceMsgContent = $"信用卡金额:{_detail.WaitPay} ({hotelCurrncyName})<br/>" +
                                                           $"房间说明: {hotelReservations.Remark} <br/>" +
-                                                          $"地税: {hotelReservations.GovernmentRent} {hotelReservations.GovernmentRentCurrency} ({GovernmentRentName})<br/>" +
-                                                          $"城市税: {hotelReservations.CityTax} {hotelReservations.CityTaxCurrency} ({CityTaxName})<br/>" +
-                                                          $"酒店早餐: {hotelReservations.BreakfastPrice} {hotelReservations.BreakfastCurrency} ({BreakfastName})<br/>"+
+                                                          $"地税: {hotelReservations.GovernmentRent} {GovernmentRentCode} ({GovernmentRentName})<br/>" +
+                                                          $"城市税: {hotelReservations.CityTax} {CityTaxCode} ({CityTaxName})<br/>" +
+                                                          $"酒店早餐: {hotelReservations.BreakfastPrice} {BreakfastCode} ({BreakfastName})<br/>"+
                                                           $"酒店早餐是否由地接代付: {isoppayStr}";
                                 _detail.PriceNameContent = hotelReservations.HotelName;
                             }

+ 18 - 2
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -514,8 +514,6 @@ namespace OASystem.API.OAMethodLib
         {
             string str = "";
 
-
-
             List<string> currencyRates = new List<string>();
             TeamRateModelView hotelRateData = teamRateModels.Where(it => it.CTableId == cTable).FirstOrDefault();
             if (hotelRateData != null)
@@ -548,6 +546,24 @@ namespace OASystem.API.OAMethodLib
             return str;
         }
 
+        /// <summary>
+        /// 团组汇率 币种 Item (来源:团组汇率)
+        /// 根据 团组Id And 业务类型(CTable)Id
+        /// api处理CTable = 285,默认返回CNY
+        /// </summary>
+        /// <param name="portType"></param>
+        /// <param name="diId"></param>
+        /// <param name="cTable"></param>
+        /// <returns></returns>
+        public static async Task<TeamRateModelGeneralView> PostGroupTeamRateByDiIdAndCTableId( int portType,int diId,int cTable)
+        {
+
+            TeamRateModelGeneralView _view = new TeamRateModelGeneralView();
+            _view = await _teamRateRep.PostGroupTeamRateByDiIdAndCTableId(portType, diId, cTable);
+            return _view;
+        }
+        
+
         #endregion
 
         #region 汉字转换拼音

+ 8 - 10
OASystem/OASystem.Infrastructure/Repositories/Groups/CustomersRepository.cs

@@ -22,11 +22,13 @@ namespace OASystem.Infrastructure.Repositories.Groups
     public class CustomersRepository : BaseRepository<Grp_Customers, Grp_Ommission>
     {
         private readonly IMapper _mapper;
-        private readonly HotelPriceRepository _hotel;
-        public CustomersRepository(SqlSugarClient sqlSugar, IMapper mapper, HotelPriceRepository hotel) : base(sqlSugar)
+        private readonly TeamRateRepository _teamRateRep;
+
+        public CustomersRepository(SqlSugarClient sqlSugar, IMapper mapper, TeamRateRepository teamRateRep) 
+            : base(sqlSugar)
         {
             _mapper = mapper;
-            _hotel= hotel;
+            _teamRateRep = teamRateRep;
         }
         /// <summary>
         /// 根据团组Id查询保险费用列表
@@ -335,17 +337,13 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 PostGroupTeamRatedto.DiId = dto.DiId;
                 PostGroupTeamRatedto.CTable = 82;
                 PostGroupTeamRatedto.PortType = dto.PortType;
-                Result teamRateDescAddCurrencyIdViews = _hotel.PostGroupTeamRateByDiIdAndCTableId(PostGroupTeamRatedto);
-                List<TeamRateDescAddCurrencyIdView> Currency = new List<TeamRateDescAddCurrencyIdView>();
-                if (teamRateDescAddCurrencyIdViews.Code == 0)
-                {
-                    Currency = teamRateDescAddCurrencyIdViews.Data;
-                }
 
+                var _teamRate = _teamRateRep.PostGroupTeamRateItemByDiIdAndCTableId(dto.PortType, dto.DiId, 82);
+                
                 var data = new
                 {
                     Payment = _Payment,
-                    CurrencyList = Currency,
+                    CurrencyList = _teamRate,
                     BankCard = _BankCard,
                     insuranceCost = insuranceCostViews,
                 };

+ 6 - 128
OASystem/OASystem.Infrastructure/Repositories/Groups/HotelPriceRepository.cs

@@ -37,8 +37,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
         #region 保留
 
-        
-
         /// <summary>
         /// 付款金额计算
         /// </summary>
@@ -381,17 +379,13 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     PostGroupTeamRatedto.DiId= dto.DiId;
                     PostGroupTeamRatedto.CTable = 76;
                     PostGroupTeamRatedto.PortType= dto.PortType;
-                    Result teamRateDescAddCurrencyIdViews = PostGroupTeamRateByDiIdAndCTableId(PostGroupTeamRatedto);
-                    List<TeamRateDescAddCurrencyIdView> Currency=new List<TeamRateDescAddCurrencyIdView>();
-                    if (teamRateDescAddCurrencyIdViews.Code==0)
-                    {
-                        Currency = teamRateDescAddCurrencyIdViews.Data;
-                    }
+                    var _teamRateView = _teamRateRep.PostGroupTeamRateItemByDiIdAndCTableId(dto.PortType, dto.DiId, 76);
+
                     var data = new
                     {
                         GuestType = _GuestType,
                         Payment = _Payment,
-                        CurrencyList = Currency,
+                        CurrencyList = _teamRateView,
                         BankCard = _BankCard,
                         BookingWebsite = _BookingWebsite,
                     };
@@ -598,112 +592,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
             return result;
         }
-        public Result PostGroupTeamRateByDiIdAndCTableId(GeneralTeamRateInfoDto dto)
-        {
-            Result result = new Result() { Code = -2, Msg = "未知错误" };
-            try
-            {
-                if (dto == null)
-                {
-                    return result = new Result() { Code = -2, Msg = "请输入参数" };
-                }
-
-                if (dto.DiId == 0)
-                {
-                    return result = new Result() { Code = -2, Msg = "请输入正确的团组Id!" };
-                }
-                if (dto.CTable == 0)
-                {
-                    return result = new Result() { Code = -2, Msg = "请输入正确的业务类型(CTable)Id!" };
-                }
-
-
-                if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)
-                {
-                    string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr 
-                                                     Left Join Sys_SetData  sd On sd.IsDel=0 And sd.STid=16  And tr.CTable = sd.Id 
-                                                     Where tr.IsDel = 0 And tr.DiId = {0} And tr.CTable = {1}", dto.DiId, dto.CTable);
-
-                    var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
-
-                    #region 团组汇率
-
-                    TeamRateModelGeneralView teamRateModels = new TeamRateModelGeneralView();
-
-
-                    List<SetDataInfoView> currencyDatas = new List<SetDataInfoView>();
-                    #region 获取所有币种
-
-                    string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0", 66);
-                    List<SetDataInfoView> DBdata = _sqlSugar.SqlQueryable<SetDataInfoView>(sql).ToList();
-                    if (DBdata == null || DBdata.Count == 0)
-                    {
-                        return result = new Result() { Code = -2, Msg = "所有币种获取失败!" };
-                    }
-
-                    currencyDatas = DBdata.Select(x => new SetDataInfoView
-                    {
-                        Name = x.Name,
-                        Id = x.Id,
-                        Remark = x.Remark,
-                    }).ToList();
-
-                    #endregion
-                    List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
-                    foreach (TeamRateInfoView item in teamRateInfo)
-                    {
-
-                        #region 拆分remark里的汇率
-
-                        if (item.Remark.Contains("|"))
-                        {
-                            string[] currencyArr = item.Remark.Split("|");
-                            foreach (string currency in currencyArr)
-                            {
-                                string[] currency1 = currency.Split(":");
-                                string[] currency2 = currency1[0].Split("(");
-
-                                string currencyCode = currency2[1].Replace(")", "").TrimEnd();
-                                SetDataInfoView dataInfoView = new SetDataInfoView();
-                                dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
-                                int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
-                                TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
-                                {
-                                    CurrencyId = dataInfoView.Id,
-                                    CurrencyCode = currencyCode,
-                                    CurrencyName = currency2[0],
-                                    Rate = decimal.Parse(currency1[1]),
-                                };
-                                teamRateDescViews.Add(rateDescView);
-                            }
-                        }
-
-                        #endregion
-
-                        if (teamRateDescViews.Count > 0)
-                        {
-                            teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
-                        }
-                    }
-
-                    #endregion
-                    return result = new Result() { Code = 0, Msg = "操作成功!",Data= teamRateDescViews };
-                    
-                }
-                else
-                {
-                    return result = new Result() { Code = -2, Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;" };
-                }
-
-
-
-            }
-            catch (Exception ex)
-            {
-                return result = new Result() { Code = -2, Msg = "未知错误" };
-            }
-        }
-
+       
         #endregion
 
         /// <summary>
@@ -775,18 +664,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 List<Sys_SetData> CheckPerson = _dataSouruce.Where(a => a.STid == 71).ToList();
                 List<SetDataInfoView> _CheckPerson = _mapper.Map<List<SetDataInfoView>>(CheckPerson);
 
-                GeneralTeamRateInfoDto postGroupTeamRatedto = new GeneralTeamRateInfoDto()
-                {
-                    DiId = diId,
-                    CTable = 76, //酒店预定
-                    PortType = portType
-                };
-                Result teamRateDescAddCurrencyIdViews = PostGroupTeamRateByDiIdAndCTableId(postGroupTeamRatedto);
-                List<TeamRateDescAddCurrencyIdView> TeamCurrencyRate = new List<TeamRateDescAddCurrencyIdView>();
-                if (teamRateDescAddCurrencyIdViews.Code == 0)
-                {
-                    TeamCurrencyRate = teamRateDescAddCurrencyIdViews.Data;
-                }
+                var _teamRateView = _teamRateRep.PostGroupTeamRateItemByDiIdAndCTableId(portType, diId, 76);
 
                 string _CheckVolumeNo = string.Empty;
                 var checkVoumeNoData = _CreateCheckVolumeNo(diId);
@@ -802,7 +680,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 {
                     GuestType = _GuestType, //客人分类
                     Payment = _Payment,
-                    CurrencyList = TeamCurrencyRate,
+                    CurrencyList = _teamRateView,
                     BankCard = _BankCard,
                     BookingWebsite = _BookingWebsite,
                     CheckPerson = _CheckPerson,

+ 190 - 21
OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs

@@ -42,7 +42,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             Result result = new() { Code = -2 };
 
-            GroupNameDto groupNameDto = new GroupNameDto() { PortType = dto.PortType};
+            GroupNameDto groupNameDto = new GroupNameDto() { PortType = dto.PortType };
             var groups = await _deleInfoRep.GetGroupNameList(groupNameDto);
 
             var teamRateDatas = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); // STid=66 全球币种
@@ -54,9 +54,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 List<Sys_SetData> sys_SetDatas = new List<Sys_SetData>();
                 sys_SetDatas = JsonConvert.DeserializeObject<List<Sys_SetData>>(JsonConvert.SerializeObject(teamRateDatas.Data));
                 List<TeamRateDescView> teamRateDescViews = new List<TeamRateDescView>();
-                foreach (Sys_SetData item in sys_SetDatas) 
+                foreach (Sys_SetData item in sys_SetDatas)
                 {
-                    teamRateDescViews.Add(new TeamRateDescView() {
+                    teamRateDescViews.Add(new TeamRateDescView()
+                    {
                         CurrencyName = item.Remark,
                         CurrencyCode = item.Name,
                         Rate = 0.0000M
@@ -95,7 +96,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             Result result = new() { Code = -2 };
 
-           
+
 
             string teamRateInfoSql = string.Format(@"Select * From Grp_TeamRate tr Where tr.IsDel = 0");
 
@@ -103,7 +104,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             dynamic _data = null;
 
-           
+
             #region 团组汇率 - 详细汇率信息
 
             List<SetDataInfoView> otherCurrencyData1 = new List<SetDataInfoView>();
@@ -176,12 +177,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     {
                         rateStr = rateStr.Substring(0, rateStr.Length - 1);
                     }
-                    
+
                 }
 
                 item1.Remark = rateStr;
 
-                
+
             }
 
 
@@ -193,9 +194,9 @@ namespace OASystem.Infrastructure.Repositories.Groups
             {
 
                 var _result = _sqlSugar.Updateable(teamRateInfo)
-                    .UpdateColumns(it => new {it.Remark} ) //更新列
-                    .WhereColumns(it => new { it.DiId,it.CTable })     //更新条件
-                    .ExecuteCommand(); 
+                    .UpdateColumns(it => new { it.Remark }) //更新列
+                    .WhereColumns(it => new { it.DiId, it.CTable })     //更新条件
+                    .ExecuteCommand();
 
                 result.Code = 0;
                 result.Msg = "数据修改成功!";
@@ -221,12 +222,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             Result result = new() { Code = -2 };
 
-            GroupInfoDto groupInfoDto = new GroupInfoDto() { Id = dto.Diid,PortType = dto.PortType, PageIndex = dto.PageIndex, PageSize = dto.PageSize };
+            GroupInfoDto groupInfoDto = new GroupInfoDto() { Id = dto.Diid, PortType = dto.PortType, PageIndex = dto.PageIndex, PageSize = dto.PageSize };
             var groupInfo = await _deleInfoRep.GetGroupInfo(groupInfoDto);
 
             string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr 
                                                      Left Join Sys_SetData  sd On sd.IsDel=0 And sd.STid=16  And tr.CTable = sd.Id 
-                                                     Where tr.DiId = {0} And tr.IsDel = 0",dto.Diid);
+                                                     Where tr.DiId = {0} And tr.IsDel = 0", dto.Diid);
 
             var teamRateInfo = await _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToListAsync();
 
@@ -318,12 +319,13 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     if (item.Remark.Contains("|"))
                     {
                         string[] currencyArr = item.Remark.Split("|");
-                        foreach (string currency in currencyArr) 
+                        foreach (string currency in currencyArr)
                         {
                             string[] currency1 = currency.Split(":");
                             string[] currency2 = currency1[0].Split("(");
 
-                            TeamRateDescView rateDescView = new TeamRateDescView() {
+                            TeamRateDescView rateDescView = new TeamRateDescView()
+                            {
                                 CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
                                 CurrencyName = currency2[0],
                                 Rate = decimal.Parse(currency1[1]),
@@ -418,14 +420,14 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             {
                                 addCount++;
                             }
-                            
+
                         }
                         else //修改
                         {
                             teamRateInfo.Id = teamRateDetails.Id;
                             res = await _sqlSugar.Updateable(teamRateInfo)
                                         .UpdateColumns(it => it.Remark)
-                                        .WhereColumns(it => new { it.Id,it.DiId,it.CTable })
+                                        .WhereColumns(it => new { it.Id, it.DiId, it.CTable })
                                         .ExecuteCommandAsync();
                             if (res > 0)
                             {
@@ -454,7 +456,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
                     result.Msg = ex.Message;
                 }
-                
+
 
             }
             else if (dto.PortType == 2)
@@ -467,15 +469,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
 
             result.Code = 0;
-            result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount,updateCount);
+            result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount, updateCount);
 
             return result;
 
         }
 
-        
-
-
         /// <summary>
         /// 团组汇率 Rep
         /// 根据团组Id 查询汇率
@@ -536,5 +535,175 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return teamRateModels;
 
         }
+
+
+        /// <summary>
+        /// 团组汇率 币种 Item (来源:团组汇率)
+        /// 根据 团组Id And 业务类型(CTable)Id
+        /// api处理CTable = 285,默认返回CNY
+        /// </summary>
+        /// <param name="portType"></param>
+        /// <param name="diId"></param>
+        /// <param name="cTable"></param>
+        /// <returns></returns>
+        public async Task<TeamRateModelGeneralView> PostGroupTeamRateByDiIdAndCTableId(int portType, int diId, int cTable)
+        {
+
+            TeamRateModelGeneralView _view = new TeamRateModelGeneralView();
+
+            if (diId < 1)
+            {
+                return _view;
+            }
+            if (cTable < 1)
+            {
+                return _view;
+            }
+
+            if (portType == 1 || portType == 2 || portType == 3)
+            {
+                string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr 
+                                                     Left Join Sys_SetData  sd On sd.IsDel=0 And sd.STid=16  And tr.CTable = sd.Id 
+                                                     Where tr.IsDel = 0 And tr.DiId = {0} And tr.CTable = {1}", diId, cTable);
+
+                var teamRateInfo = await _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToListAsync();
+
+                #region 团组汇率
+
+                #region 单独处理Ctable 币种汇率 默认 为CNY
+                if (cTable == 285)
+                {
+                    _view = new TeamRateModelGeneralView()
+                    {
+                        Id = 0,
+                        CTableId = 285,
+                        CTableName = "其他款项与收款退还",
+                        TeamRates = new List<TeamRateDescAddCurrencyIdView>() {
+                                new TeamRateDescAddCurrencyIdView()
+                                {
+                                    CurrencyId = 836,
+                                    CurrencyCode = "CNY",
+                                    CurrencyName = "人民币",
+                                    Rate = 1.0000M,
+                                }
+                            }
+                    };
+                    return _view;
+                }
+
+                #endregion
+
+                List<SetDataInfoView> currencyDatas = new List<SetDataInfoView>();
+                #region 获取所有币种
+
+                string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0", 66);
+                var DBdata = await _setDataRep.GetListBySqlWithNolockAsync(sql);
+
+                if (DBdata == null || DBdata.Count == 0)
+                {
+                    return _view;
+                }
+
+                currencyDatas = DBdata.Select(x => new SetDataInfoView
+                {
+                    Name = x.Name,
+                    Id = x.Id,
+                    Remark = x.Remark,
+                }).ToList();
+
+                #endregion
+
+                foreach (TeamRateInfoView item in teamRateInfo)
+                {
+                    TeamRateModelGeneralView teamRateModelInfo = new TeamRateModelGeneralView();
+
+                    teamRateModelInfo.Id = item.Id;
+                    teamRateModelInfo.CTableId = item.CTable;
+                    teamRateModelInfo.CTableName = item.Name;
+                    List<TeamRateDescAddCurrencyIdView> teamRateDescViews = new List<TeamRateDescAddCurrencyIdView>();
+
+                    #region 拆分remark里的汇率
+
+                    if (item.Remark.Contains("|"))
+                    {
+                        string[] currencyArr = item.Remark.Split("|");
+                        foreach (string currency in currencyArr)
+                        {
+                            string[] currency1 = currency.Split(":");
+                            string[] currency2 = currency1[0].Split("(");
+
+                            string currencyCode = currency2[1].Replace(")", "").TrimEnd();
+                            SetDataInfoView dataInfoView = new SetDataInfoView();
+                            dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
+                            int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
+                            TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
+                            {
+                                CurrencyId = dataInfoView.Id,
+                                CurrencyCode = currencyCode,
+                                CurrencyName = currency2[0],
+                                Rate = decimal.Parse(currency1[1]),
+                            };
+                            teamRateDescViews.Add(rateDescView);
+                        }
+                    }
+                    else
+                    {
+                        if (!string.IsNullOrEmpty(item.Remark))
+                        {
+                            string[] currency1 = item.Remark.Split(":");
+                            string[] currency2 = currency1[0].Split("(");
+
+                            string currencyCode = currency2[1].Replace(")", "").TrimEnd();
+                            SetDataInfoView dataInfoView = new SetDataInfoView();
+                            dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault();
+                            int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id;
+                            TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView()
+                            {
+                                CurrencyId = dataInfoView.Id,
+                                CurrencyCode = currencyCode,
+                                CurrencyName = currency2[0],
+                                Rate = decimal.Parse(currency1[1]),
+                            };
+                            teamRateDescViews.Add(rateDescView);
+                        }
+                    }
+
+                    #endregion
+
+                    if (teamRateDescViews.Count > 0)
+                    {
+                        teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList();
+                    }
+
+                    teamRateModelInfo.TeamRates = teamRateDescViews;
+                    _view = teamRateModelInfo;
+                }
+
+                if (_view.TeamRates == null)
+                {
+                    _view.TeamRates = new List<TeamRateDescAddCurrencyIdView>();
+                }
+
+                #endregion
+
+            }
+            return _view;
+        }
+
+        /// <summary>
+        /// 获取团组相关模块的currencyList
+        /// </summary>
+        /// <param name="portType"></param>
+        /// <param name="diId"></param>
+        /// <param name="cTable"></param>
+        /// <returns></returns>
+        public async Task<List<TeamRateDescAddCurrencyIdView>?> PostGroupTeamRateItemByDiIdAndCTableId(int portType, int diId, int cTable)
+        {
+            List<TeamRateDescAddCurrencyIdView>? teamRateDescAddCurrencyIdViews = new List<TeamRateDescAddCurrencyIdView>();
+            TeamRateModelGeneralView teamRateModelGeneralView = await PostGroupTeamRateByDiIdAndCTableId(portType, diId, cTable);
+            teamRateDescAddCurrencyIdViews = teamRateModelGeneralView.TeamRates;
+
+            return teamRateDescAddCurrencyIdViews;
+        }
     }
 }

+ 2 - 0
OASystem/OASystem.Infrastructure/Tools/CommonFun.cs

@@ -472,4 +472,6 @@ public static class CommonFun
         return _returnTable;
 
     }
+
+
 }