Sfoglia il codice sorgente

New 酒店预订
Add Or Edit
创建 入住卷号

leiy 1 anno fa
parent
commit
cb43345852

+ 48 - 0
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -4533,6 +4533,54 @@ namespace OASystem.API.Controllers
             }
         }
 
+        //_
+        /// <summary>
+        /// 酒店预订
+        /// 创建 入住卷号码
+        /// </summary>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostHotelReservationsCreateCheckVolumeNo(HotelReservationBasicsDataInitDto _dto)
+        {
+            try
+            {
+                #region  参数验证
+                if (_dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
+                if (_dto.PageId < 1) _dto.PageId = 28; //酒店预定Id
+                if (_dto.DiId < 1) return Ok(JsonView(false, "团组Id为空"));
+
+                PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+                #region 页面操作权限验证
+                pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+                if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, "您没有查看权限!"));
+                #endregion
+
+                #region 团组操作权限验证 76 酒店预定模块
+                var groupAuthView = await GeneralMethod.PostGroupOperationAuth(_dto.DiId, _dto.UserId, 76);
+                if (groupAuthView.Code != 0) return Ok(JsonView(false, groupAuthView.Msg));
+                #endregion
+
+                #endregion
+
+                Result data = await _hotelPriceRep._CreateCheckVolumeNo(_dto.DiId);
+                if (data.Code != 0)
+                {
+                    return Ok(JsonView(false, data.Msg));
+                }
+                return Ok(JsonView(true, data.Msg, data.Data));
+
+
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
         /// <summary>
         /// 酒店预订
         /// 详情

+ 2 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_HotelReservations.cs

@@ -194,9 +194,11 @@ namespace OASystem.Domain.Entities.Groups
 
         /// <summary>
         /// 由地接支付
+        /// 0 是 1否
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Isoppay { get; set; }
+
         /// <summary>
         /// 是否有单间
         /// 弃用 弃用时间 2023-12-28 17:30

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

@@ -24,11 +24,13 @@ namespace OASystem.Infrastructure.Repositories.Groups
     {
         private readonly IMapper _mapper;
         private readonly Result _result;
-        public HotelPriceRepository(SqlSugarClient sqlSugar, IMapper mapper) :
+        private readonly TeamRateRepository _teamRateRep;
+        public HotelPriceRepository(SqlSugarClient sqlSugar, IMapper mapper, TeamRateRepository teamRateRep) :
             base(sqlSugar)
         {
             this._mapper = mapper;
             _result = new Result() { Code = -1, Msg = "操作失败!" };
+            _teamRateRep = teamRateRep;
         }
 
         #region 保留
@@ -703,7 +705,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         #endregion
 
         /// <summary>
-        /// 酒店预定费用
+        /// 酒店预定
         /// Items By DiId
         /// </summary>
         /// <param name="dto"></param>
@@ -806,6 +808,42 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return _result;
         }
 
+        /// <summary>
+        /// 酒店预定
+        /// 创建 入住卷号码
+        /// </summary>
+        /// <param name="DiId"></param>
+        /// <returns></returns>
+        public async Task<Result> _CreateCheckVolumeNo(int DiId)
+        {
+            var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.Id == DiId && it.IsDel == 0).FirstAsync();
+            if (groupInfo != null)
+            {
+                if (!string.IsNullOrEmpty(groupInfo.VisitCountry))
+                {
+                    string no = string.Empty;
+
+                    string[] countrys = new string[] { };
+                    countrys = groupInfo.VisitCountry.Split('|');
+                    foreach (string country in countrys)
+                    {
+                        //国家城市三字码 未挪数据 暂时用随机数代替
+
+
+                    }
+                    no = CommonFun.GetRandomLetter(countrys.Length).ToUpper();
+
+                    no += CommonFun.GetRandomNumber(2);
+
+                    _result.Code = 0;
+                    _result.Data = no;
+                    _result.Msg = "入住卷号码 获取成功!";
+                }
+            }
+
+            return _result;
+        }
+
         /// <summary>
         /// 酒店预定
         /// details
@@ -866,6 +904,72 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 #region 参数处理
                 _HotelReservations = _mapper.Map<Grp_HotelReservations>(_dto);
                 _CreditCardPayment = _mapper.Map<Grp_CreditCardPayment>(_dto);
+
+                _HotelReservations.DiId = _dto.DiId;
+                _HotelReservations.CreateUserId = _dto.UserId;
+                _HotelReservations.Remark = _dto.HotelRemark;
+
+                #region CCP 表参数
+                _CreditCardPayment.CreateUserId = _dto.UserId;
+                _CreditCardPayment.DIId = _dto.DiId;
+                _CreditCardPayment.CTable = 76;
+                _CreditCardPayment.PayPercentage = 100.00M;
+                _CreditCardPayment.PayThenMoney = _CreditCardPayment.PayMoney;
+
+                string paymentCurrencyCode = string.Empty;
+                List<Sys_SetData> currencySouruce = await _sqlSugar.Queryable<Sys_SetData>().Where(a => a.IsDel == 0 && a.STid == 66).ToListAsync();
+                if (currencySouruce.Count > 0)
+                {
+                    Sys_SetData currency = new Sys_SetData();
+                    currency = currencySouruce.Where(it => it.Id == _CreditCardPayment.PaymentCurrency).FirstOrDefault();
+                    if (currency != null)
+                    {
+                        paymentCurrencyCode = currency.Name;
+                    }
+                }
+
+                List<TeamRateModelView> teamRateModelViews = new List<TeamRateModelView>();
+                teamRateModelViews = await _teamRateRep.PostGroupRateInfoByDiId(_dto.DiId);
+                if (teamRateModelViews.Count < 0)
+                {
+                    _result.Msg = "该团未设置酒店预订模块相关币种汇率!";
+                    return _result;
+                }
+                TeamRateModelView teamRateModels_hotel = new TeamRateModelView();
+                teamRateModels_hotel = teamRateModelViews.Where(it => it.CTableId == 76).FirstOrDefault();
+                if (teamRateModels_hotel == null)
+                {
+                    _result.Msg = "该团未设置酒店预订模块相关币种汇率!";
+                    return _result;
+                }
+
+                List<TeamRateDescView> teamRateDescViews = new List<TeamRateDescView>();
+                teamRateDescViews = teamRateModels_hotel.TeamRates;
+                if (teamRateDescViews.Count < 0)
+                {
+                    _result.Msg = "该团未设置酒店预订模块相关币种汇率!";
+                    return _result;
+                }
+                TeamRateDescView teamRateDescView = new TeamRateDescView();
+                teamRateDescView = teamRateDescViews.Where(it => it.CurrencyCode == paymentCurrencyCode).FirstOrDefault();
+                if (teamRateDescView == null)
+                {
+                    _result.Msg = "该团未设置酒店预订模块相关币种汇率!";
+                    return _result;
+                }
+                _CreditCardPayment.DayRate = teamRateDescView.Rate;
+                _CreditCardPayment.RMBPrice = (_CreditCardPayment.DayRate * _CreditCardPayment.PayMoney).DecimalsKeepTwo();
+
+                if (_CreditCardPayment.PayDId == 72) //刷卡
+                {
+                    _CreditCardPayment.BankNo = "6222 **** **** 7990";
+                    _CreditCardPayment.CardholderName = "Zhang Hailin";
+                }
+
+
+                _CreditCardPayment.Remark = _dto.CcpRemark;
+                #endregion
+
                 #endregion
 
                 if (_dto.Id == 0) // Add
@@ -890,6 +994,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         return _result;
                     }
                     _result.Msg = "操作成功!";
+                    _result.Code = 0;
                     _sqlSugar.CommitTran(); // 提交
                 }
                 else if (_dto.Id > 0) //Edit
@@ -910,17 +1015,83 @@ namespace OASystem.Infrastructure.Repositories.Groups
                                                          it.GuestName,
                                                          it.CheckInDate,
                                                          it.CheckOutDate,
-
+                                                         it.CheckType,
+                                                         it.RoomExplanation,
+                                                         it.SingleRoomPrice,
+                                                         it.SingleRoomCount,
+                                                         it.DoubleRoomPrice,
+                                                         it.DoubleRoomCount,
+                                                         it.SuiteRoomPrice,
+                                                         it.SuiteRoomCount,
+                                                         it.OtherRoomPrice, 
+                                                         it.OtherRoomCount,
+                                                         it.CardPrice,
+                                                         it.CardPriceCurrency,
+                                                         it.Isoppay,
+                                                         it.BreakfastPrice,
+                                                         it.BreakfastCurrency,
+                                                         it.GovernmentRent,
+                                                         it.GovernmentRentCurrency,
+                                                         it.CityTax,
+                                                         it.CityTaxCurrency,
+                                                         it.Remark,
                                                      })
                                                      .WhereColumns(it => it.Id)
                                                      .ExecuteCommandAsync();
 
-                    var hotelInfo = await _sqlSugar.Queryable<Grp_HotelReservations>().FirstAsync();
+                    if (hotelStatus < 0)
+                    {
+                        _result.Msg = "酒店预定信息修改失败!";
+                        _sqlSugar.RollbackTran(); //回滚
+                        return _result;
 
+                    }
 
+                    var hotelInfo = await _sqlSugar.Queryable<Grp_CreditCardPayment>()
+                                                   .Where(it => it.DIId == _dto.DiId && it.CId == _dto.Id && it.CTable == 76 && it.IsDel == 0)
+                                                   .FirstAsync();
+                    if (hotelInfo == null) //ccp表 Add
+                    {
 
-                    _sqlSugar.CommitTran();
-                    _sqlSugar.RollbackTran();
+                    }
+                    else //ccp表 Edit
+                    {
+                        _CreditCardPayment.Id = hotelInfo.Id;
+
+                        int creditCardStatus = await _sqlSugar.Updateable<Grp_CreditCardPayment>(_CreditCardPayment)
+                                                    .UpdateColumns(it => new
+                                                    {
+                                                       it.PayDId,
+                                                       it.ConsumptionPatterns,
+                                                       it.ConsumptionDate,
+                                                       it.PayMoney,
+                                                       it.PaymentCurrency,
+                                                       it.PayThenMoney,
+                                                       it.DayRate,
+                                                       it.RMBPrice,
+                                                       it.BankNo,
+                                                       it.CardholderName,
+                                                       it.OtherBankName,
+                                                       it.OtherSideNo,
+                                                       it.OtherSideName,
+                                                       it.Payee,
+                                                       it.OrbitalPrivateTransfer,
+                                                       it.Remark,
+                                                    })
+                                                    .WhereColumns(it => it.Id)
+                                                    .ExecuteCommandAsync();
+                        if (creditCardStatus < 0)
+                        {
+                            _result.Msg = "付款信息表修改失败!";
+                            _sqlSugar.RollbackTran(); //回滚
+                            return _result;
+                        }
+
+                    }
+
+                    _result.Msg = "操作成功!";
+                    _result.Code = 0;
+                    _sqlSugar.CommitTran(); // 提交
                 }
                 else if (_dto.Id < 0) //不正确的Id
                 {

+ 0 - 2
OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs

@@ -45,8 +45,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             var teamRateDatas = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); // STid=66 全球币种
 
-            
-
             dynamic _data = null;
 
             if (dto.PortType == 1)

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

@@ -199,6 +199,57 @@ public static class CommonFun
         return sb.ToString();
     }
 
+
+    /// <summary>
+    /// 根据自定义随机包含的字符获取指定长度的随机字母(含大小写)
+    /// </summary>
+    /// <param name="length">随机字符长度</param>
+    /// <returns>随机字符</returns>
+    public static string GetRandomLetter(int length)
+    {
+        string a = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjklmnpqrstuvwxyz";
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < length; i++)
+        {
+            sb.Append(a[new Random(Guid.NewGuid().GetHashCode()).Next(0, a.Length - 1)]);
+        }
+
+        return sb.ToString();
+    }
+
+    /// <summary>
+    /// 生成不重复随机数字
+    /// 操作者:037
+    /// 2021-07-26 15:39
+    /// </summary>
+    /// <param name="CodeCount">输入字符串长度</param>
+    /// <returns>字符串</returns>
+    public static string GetRandomNumber(int len)
+    {
+        string allChar = "0,1,2,3,4,5,6,7,8,9";
+        string[] allCharArray = allChar.Split(',');
+        string RandomCode = "";
+        int temp = -1;
+        Random rand = new Random();
+
+        for (int i = 0; i < len; i++)
+        {
+            if (temp != -1)
+            {
+                rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
+            }
+            int t = rand.Next(allCharArray.Length - 1);
+            while (temp == t)
+
+            {
+                t = rand.Next(allCharArray.Length - 1);
+            }
+            temp = t;
+            RandomCode += allCharArray[t];
+        }
+        return RandomCode;
+    }
+
     #endregion
 
     #region decimal 截取
@@ -239,6 +290,21 @@ public static class CommonFun
 
     #endregion
 
+    #region decimal 保留两位小数
+
+    /// <summary>
+    /// decimal 保留两位小数 不四舍五入
+    /// </summary>
+    /// <param name="number"></param>
+    /// <returns></returns>
+    public static decimal DecimalsKeepTwo(this decimal myDecimal)
+    {
+        var subDecimal = Math.Floor(myDecimal * 100) / 100;//保留两位小数,直接截取
+        return subDecimal;
+    }
+
+    #endregion
+
     #region 团组模块 - 汇率相关存储解析
     /// <summary>
     /// 团组模块 - 汇率相关 To List