Преглед на файлове

New 酒店预订
生成 入住卷号
删除
文件下载

leiy преди 1 година
родител
ревизия
8159b21e55

+ 410 - 8
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -4259,8 +4259,6 @@ namespace OASystem.API.Controllers
                         string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/" + strFileName;
                         return Ok(JsonView(true, "成功!", Url));
 
-                        //保存为doc,并打开 
-
                     }
                     catch (Exception ex)
                     {
@@ -4292,7 +4290,6 @@ namespace OASystem.API.Controllers
         public async Task<IActionResult> ConfirmWord(HotelReservationsByIdDto dto)
         {
             //团组信息
-
             Grp_DelegationInfo di = _sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id == dto.Id);
 
             //酒店数据
@@ -4338,14 +4335,12 @@ namespace OASystem.API.Controllers
                 }
             }
 
-
             Dictionary<string, string> dic = new Dictionary<string, string>();
             dic.Add("Dele", di.TeamName);
             dic.Add("City", di.VisitCountry);
 
 
             //模板路径
-            //string sss = AppSettingsHelper.Get("WordBasePath") + "Template/酒店预订模板.doc";
             string tempPath = AppSettingsHelper.Get("WordBasePath") + "Template/酒店用房确认单-模板.doc";
             //载入模板
             Aspose.Words.Document doc = new Aspose.Words.Document(tempPath);
@@ -4402,8 +4397,6 @@ namespace OASystem.API.Controllers
                 throw;
             }
 
-            //doc.Save(HttpUtility.UrlEncode(strFileName, Encoding.UTF8), Aspose.Words.SaveFormat.Doc, Aspose.Words.SaveType.OpenInWord, Response);
-
         }
 
         /// <summary>
@@ -4533,7 +4526,6 @@ namespace OASystem.API.Controllers
             }
         }
 
-        //_
         /// <summary>
         /// 酒店预订
         /// 创建 入住卷号码
@@ -4676,6 +4668,416 @@ namespace OASystem.API.Controllers
             }
         }
 
+        /// <summary>
+        /// 酒店预订
+        /// Del 
+        /// </summary>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostHotelReservationsDel(HotelReservationsDelDto _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为空"));
+
+                #region 团组操作权限验证 76 酒店预定模块
+                var groupAuthView = await GeneralMethod.PostGroupOperationAuth(_dto.DiId, _dto.UserId, 76);
+                if (groupAuthView.Code != 0) return Ok(JsonView(false, groupAuthView.Msg));
+                #endregion
+
+                PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+                #region 页面操作权限验证
+                pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+                if (pageFunAuthView.DeleteAuth == 0) return Ok(JsonView(false, "您没有删除权限!"));
+
+
+                #endregion
+
+                #endregion
+
+                Result data = await _hotelPriceRep._Del(_dto.Id, _dto.UserId);
+                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>
+        /// 酒店预订
+        /// 生成VOUCHER
+        /// </summary>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostHotelReservationsCreateVoucher(HotelReservationsCreateVoucherDto _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为空"));
+
+                #region 团组操作权限验证 76 酒店预定模块
+                var groupAuthView = await GeneralMethod.PostGroupOperationAuth(_dto.DiId, _dto.UserId, 76);
+                if (groupAuthView.Code != 0) return Ok(JsonView(false, groupAuthView.Msg));
+                #endregion
+
+                PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+                #region 页面操作权限验证
+                pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+                if (pageFunAuthView.FilesDownloadAuth == 0) return Ok(JsonView(false, "您没有文件下载权限!"));
+
+                #endregion
+
+                #endregion
+
+
+                Grp_HotelReservations hr = await _sqlSugar.Queryable<Grp_HotelReservations>().Where(it => it.IsDel == 0 && it.Id == _dto.Id).FirstAsync();
+
+                //判断数据是否完整
+                if (hr != null)
+                {
+                    if (!string.IsNullOrEmpty(hr.DetermineNo))
+                    {
+                        string strFileName = "HotelStatement/";
+                        Grp_DelegationInfo dele = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && it.Id == _dto.DiId).FirstAsync();
+                        if (dele != null)
+                            strFileName += dele.TourCode;
+
+
+                        //载入模板
+                        string sss = AppSettingsHelper.Get("WordBasePath") + "Template/酒店预订模板.doc";
+
+                        Document doc = new Document(sss);
+                        DocumentBuilder builder = new DocumentBuilder(doc);
+
+                        #region 替换Word模板书签内容
+
+                        //这里可以创建个DataTable循环添加书签的值,这里提示一下就不多做修改了
+                        //入住卷预定号码
+
+                        if (doc.Range.Bookmarks["VNO"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["VNO"];
+                            mark.Text = hr.CheckNumber;
+                        }
+                        //酒店时间
+                        if (doc.Range.Bookmarks["Date"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Date"];
+                            mark.Text = Convert.ToDateTime(hr.CreateTime).ToString("yyyy-MM-dd");
+                        }
+                        //团号
+                        if (doc.Range.Bookmarks["TNo"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["TNo"];
+                            mark.Text = dele.TourCode;
+                        }
+                        //预定号码
+                        if (doc.Range.Bookmarks["BookingId"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["BookingId"];
+                            mark.Text = hr.ReservationsNo;
+                        }
+
+                        if (doc.Range.Bookmarks["HotelConfirmNo"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["HotelConfirmNo"];
+                            mark.Text = hr.DetermineNo;
+                        }
+
+                        //酒店城市
+                        if (doc.Range.Bookmarks["City"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["City"];
+                            mark.Text = hr.City;
+                        }
+                        //酒店名称
+                        if (doc.Range.Bookmarks["HName"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["HName"];
+                            mark.Text = hr.HotelName;
+                        }
+                        //酒店地址
+                        if (doc.Range.Bookmarks["Address"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Address"];
+                            mark.Text = hr.HotelAddress;
+                        }
+                        //酒店电话
+                        if (doc.Range.Bookmarks["Tel"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Tel"];
+                            mark.Text = hr.HotelTel;
+                        }
+                        //酒店传真
+                        if (doc.Range.Bookmarks["Fax"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Fax"];
+                            if (!string.IsNullOrWhiteSpace(hr.HotelFax))
+                            {
+                                mark.Text = hr.HotelFax;
+                            }
+
+                        }
+                        //入住时间
+                        if (doc.Range.Bookmarks["CIn"] != null)
+                        {
+                            DateTime dtCheckIn = Convert.ToDateTime(hr.CheckInDate);
+                            Bookmark mark = doc.Range.Bookmarks["CIn"];
+                            mark.Text = dtCheckIn.Day + " " + dtCheckIn.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckIn.Year;
+                        }
+                        //退房时间
+                        if (doc.Range.Bookmarks["COut"] != null)
+                        {
+                            DateTime dtCheckOut = Convert.ToDateTime(hr.CheckOutDate);
+                            Bookmark mark = doc.Range.Bookmarks["COut"];
+                            mark.Text = dtCheckOut.Day + " " + dtCheckOut.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckOut.Year;
+                        }
+                        //客户名称
+                        if (doc.Range.Bookmarks["GName"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["GName"];
+                            mark.Text = hr.GuestName;
+                        }
+
+                        //房间介绍
+                        if (doc.Range.Bookmarks["ROOM"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["ROOM"];
+                            mark.Text = hr.RoomExplanation;
+                        }
+
+                        //报价描述
+                        if (doc.Range.Bookmarks["NOTE"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["NOTE"];
+                            Sys_SetData ss = _sqlSugar.Queryable<Sys_SetData>().First(a => a.Id == hr.ReservationsWebsite);
+                            if (ss != null)
+                                mark.Text = ss.Name;
+                        }
+                        //入住时间
+                        if (doc.Range.Bookmarks["CheckIn"] != null)
+                        {
+                            DateTime dtCheckIn = Convert.ToDateTime(hr.CheckInDate);
+                            Bookmark mark = doc.Range.Bookmarks["CheckIn"];
+                            mark.Text = dtCheckIn.Day + " " + dtCheckIn.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckIn.Year + " ";
+                        }
+                        //退房时间
+                        if (doc.Range.Bookmarks["CheckOut"] != null)
+                        {
+                            DateTime dtCheckOut = Convert.ToDateTime(hr.CheckOutDate);
+                            Bookmark mark = doc.Range.Bookmarks["CheckOut"];
+                            mark.Text = " " + dtCheckOut.Day + " " + dtCheckOut.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckOut.Year;
+                        }
+                        //日期
+                        if (doc.Range.Bookmarks["DT"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["DT"];
+                            mark.Text = Convert.ToDateTime(hr.CreateTime).ToString("yyyy-MM-dd");
+                        }
+                        //名称
+                        if (doc.Range.Bookmarks["VName"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["VName"];
+                            mark.Text = hr.HotelName;
+                        }
+                        //号码
+                        if (doc.Range.Bookmarks["VOUCHERNO"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["VOUCHERNO"];
+                            mark.Text = hr.CheckNumber;
+                        }
+
+                        #endregion
+
+                        strFileName += "VOUCHER.doc";
+
+                        var fileDir = AppSettingsHelper.Get("WordBasePath") + strFileName;
+                        doc.Save(fileDir);
+                        string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/" + strFileName;
+                        return Ok(JsonView(true, "操作成功!", Url));
+
+                    }
+                    else
+                    {
+                        return Ok(JsonView(false, "酒店确定号码未填写,无法生成Voucher!"));
+                    }
+                }
+                else
+                {
+                    return Ok(JsonView(false, "该条数据已删除或不存在!"));
+                }
+
+            }
+            catch (Exception ex)
+            {
+
+                return Ok(JsonView(false, ex.Message));
+            }
+
+           
+
+        }
+
+        /// <summary>
+        /// 酒店预订
+        /// 确认单
+        /// </summary>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostHotelReservationsConfirmationSlip(HotelReservationsConfirmationSlipDto _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为空"));
+
+                #region 团组操作权限验证 76 酒店预定模块
+                var groupAuthView = await GeneralMethod.PostGroupOperationAuth(_dto.DiId, _dto.UserId, 76);
+                if (groupAuthView.Code != 0) return Ok(JsonView(false, groupAuthView.Msg));
+                #endregion
+
+                PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+                #region 页面操作权限验证
+                pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+                if (pageFunAuthView.FilesDownloadAuth == 0) return Ok(JsonView(false, "您没有文件下载权限!"));
+
+                #endregion
+
+                #endregion
+
+                //团组信息
+                Grp_DelegationInfo di = _sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id == _dto.DiId);
+
+                //酒店数据
+                List<Grp_HotelReservations> listhoteldata = await _sqlSugar.Queryable<Grp_HotelReservations>().Where(a => a.DiId == _dto.DiId && a.IsDel == 0).ToListAsync();
+
+                if (listhoteldata.Count < 0)
+                {
+                    return Ok(JsonView(false, "当前团组暂无酒店预订信息!"));
+                }
+
+                //利datatable存储
+                DataTable dt = new DataTable();
+                dt.Columns.Add("CheckInDate", typeof(string));
+                dt.Columns.Add("City", typeof(string));
+                dt.Columns.Add("Hotel", typeof(string));
+                dt.Columns.Add("Room", typeof(string));
+
+                for (int i = 0; i < listhoteldata.Count; i++)
+                {
+                    DateTime dayStart = Convert.ToDateTime(listhoteldata[i].CheckInDate);
+                    DateTime dayEnd = Convert.ToDateTime(listhoteldata[i].CheckOutDate);
+                    while (dayStart < dayEnd)
+                    {
+                        string temp = "";
+                        DataRow row = dt.NewRow();
+                        row["CheckInDate"] = dayStart.ToString("yyyy-MM-dd");
+                        row["City"] = listhoteldata[i].City;
+                        row["Hotel"] = listhoteldata[i].HotelName;
+                        if (listhoteldata[i].SingleRoomCount > 0)
+                        {
+                            temp = listhoteldata[i].SingleRoomCount + "个单间" + "\r\n";
+                        }
+                        if (listhoteldata[i].DoubleRoomCount > 0)
+                        {
+                            temp = temp + listhoteldata[i].DoubleRoomCount + "个标间" + "\r\n";
+                        }
+                        if (listhoteldata[i].SuiteRoomCount > 0)
+                        {
+                            temp = temp + listhoteldata[i].SuiteRoomCount + "个套房" + "\r\n";
+                        }
+                        if (listhoteldata[i].OtherRoomCount > 0)
+                        {
+                            temp = temp + listhoteldata[i].OtherRoomCount + "个其他房型" + "\r\n";
+                        }
+                        row["Room"] = temp;
+                        dt.Rows.Add(row);
+                        dayStart = dayStart.AddDays(1);
+                    }
+                }
+
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add("Dele", di.TeamName);
+                dic.Add("City", di.VisitCountry);
+
+
+                //模板路径
+                string tempPath = AppSettingsHelper.Get("WordBasePath") + "Template/酒店用房确认单-模板.doc";
+                //载入模板
+                Aspose.Words.Document doc = new Aspose.Words.Document(tempPath);
+                DocumentBuilder builder = new DocumentBuilder(doc);
+
+                foreach (var key in dic.Keys)
+                {
+                    builder.MoveToBookmark(key);
+                    builder.Write(dic[key]);
+                }
+
+                //获取word里所有表格
+                NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
+                //获取所填表格的序数
+                Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
+                var rowStart = tableOne.Rows[0]; //获取第1行
+
+                //循环赋值
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    builder.MoveToCell(0, i + 1, 0, 0);
+                    builder.Write(dt.Rows[i]["CheckInDate"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 1, 0);
+                    builder.Write(dt.Rows[i]["City"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 2, 0);
+                    builder.Write(dt.Rows[i]["Hotel"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 3, 0);
+                    builder.Write(dt.Rows[i]["Room"].ToString());
+                }
+
+                //删除多余行
+                while (tableOne.Rows.Count > dt.Rows.Count + 1)
+                {
+                    tableOne.Rows.RemoveAt(dt.Rows.Count + 1);
+                }
+                string strFileName = di.TeamName + "酒店确认单.doc";
+               
+                doc.Save(AppSettingsHelper.Get("WordBasePath") + "HotelStatement/" + strFileName);
+                string url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/HotelStatement/" + strFileName;
+                return Ok(JsonView(true, "成功", url));
+                
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
         #endregion
 
         #region 团组状态

+ 34 - 0
OASystem/OASystem.Domain/Dtos/Groups/HotelReservationsDto.cs

@@ -263,9 +263,43 @@ namespace OASystem.Domain.Dtos.Groups
         public string? CcpRemark { get; set; }
     }
 
+    /// <summary>
+    /// 酒店预定
+    /// Del
+    /// </summary>
+    public class HotelReservationsDelDto : UserPageFuncDtoBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
 
+    }
 
 
+    /// <summary>
+    /// 酒店预订
+    /// 生成VOUCHER
+    /// </summary>
+    public class HotelReservationsCreateVoucherDto : UserPageFuncDtoBase
+    {
+        public int DiId { get; set; }
+        public int Id { get; set; }
+    }
+
+    /// <summary>
+    /// 酒店预订
+    /// 确认单
+    /// </summary>
+    public class HotelReservationsConfirmationSlipDto : UserPageFuncDtoBase
+    {
+        public int DiId { get; set; }
+    }
 
 
 

+ 35 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/HotelPriceRepository.cs

@@ -1107,5 +1107,40 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             return _result;
         }
+
+        /// <summary>
+        /// 酒店预定
+        /// Del
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> _Del(int id,int userId)
+        {
+            Grp_HotelReservations _HotelReservations = new Grp_HotelReservations()
+            {
+                Id = id,
+                IsDel = 1,
+                DeleteUserId = userId,
+                DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+            };
+            int hrStatus = await _sqlSugar.Updateable<Grp_HotelReservations>(_HotelReservations)
+                                        .UpdateColumns(it => new
+                                        {
+                                            it.IsDel,
+                                            it.DeleteUserId,
+                                            it.DeleteTime,
+                                        })
+                                        .WhereColumns(it => it.Id)
+                                        .ExecuteCommandAsync();
+            if (hrStatus < 0)
+            {
+                _result.Msg = "操作失败!";
+                return _result;
+            }
+
+            _result.Msg = "操作成功!";
+            _result.Code = 0;
+
+            return _result;
+        }
     }
 }