|
@@ -67,6 +67,7 @@ using OASystem.API.OAMethodLib.YouDaoAPI;
|
|
|
using NPOI.XSSF.Streaming.Values;
|
|
|
using OASystem.API.OAMethodLib.Quartz.Business;
|
|
|
using System.Linq;
|
|
|
+using NPOI.POIFS.NIO;
|
|
|
|
|
|
namespace OASystem.API.Controllers
|
|
|
{
|
|
@@ -9004,10 +9005,12 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 生成VOUCHER
|
|
|
/// </summary>
|
|
|
- /// <param name=""></param>
|
|
|
+ /// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
@@ -9201,6 +9204,7 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 导出确认单
|
|
|
/// </summary>
|
|
@@ -9638,12 +9642,13 @@ namespace OASystem.API.Controllers
|
|
|
/// <summary>
|
|
|
/// 酒店预订
|
|
|
/// 生成VOUCHER
|
|
|
+ /// 2024.05.06 之前版本
|
|
|
/// </summary>
|
|
|
/// <param name="_dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
- public async Task<IActionResult> PostHotelReservationsCreateVoucher(HotelReservationsCreateVoucherDto _dto)
|
|
|
+ public async Task<IActionResult> PostHotelReservationsCreateVoucher1(HotelReservationsCreateVoucherDto _dto)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
@@ -9903,6 +9908,170 @@ namespace OASystem.API.Controllers
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 酒店预订
|
|
|
+ /// 生成VOUCHER
|
|
|
+ /// 2024.05.06 之后版本
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="_dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> PostHotelReservationsCreateVoucher(HotelReservationsCreateVoucherDto _dto)
|
|
|
+ {
|
|
|
+ #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
|
|
|
+
|
|
|
+ List<Grp_HotelReservations> hrDtas = await _sqlSugar.Queryable<Grp_HotelReservations>().Where(it => it.IsDel == 0 && it.DiId == _dto.DiId).ToListAsync();
|
|
|
+
|
|
|
+ //判断数据是否完整
|
|
|
+ if (hrDtas.Count < 1) return Ok(JsonView(false, "请先录入酒店预订信息!"));
|
|
|
+
|
|
|
+ hrDtas = hrDtas.OrderBy(it => it.CheckInDate).ToList();
|
|
|
+ string strFileName = "HotelStatement/";
|
|
|
+
|
|
|
+ string guestNames = ""; //格式Mr.xxx Ms.xxx
|
|
|
+ List<HotelVoucherInfoView> vouchers = new List<HotelVoucherInfoView>();
|
|
|
+
|
|
|
+ #region 数据处理
|
|
|
+
|
|
|
+ List<int> guestIds = new List<int>();
|
|
|
+ int index = 0;
|
|
|
+ foreach (var item in hrDtas)
|
|
|
+ {
|
|
|
+ if (item.GuestName.Contains(","))
|
|
|
+ {
|
|
|
+ string[] guestIdArr = item.GuestName.Split(',');
|
|
|
+ foreach (var guestIdStr in guestIdArr)
|
|
|
+ {
|
|
|
+ bool guestBool = int.TryParse(guestIdStr,out int guestId);
|
|
|
+ if (guestBool)
|
|
|
+ {
|
|
|
+ guestIds.Add(guestId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else guestNames += item.GuestName;
|
|
|
+
|
|
|
+
|
|
|
+ var voucherInfo = new HotelVoucherInfoView()
|
|
|
+ {
|
|
|
+ HotelName = item.HotelName,
|
|
|
+ CheckInDate = item.CheckInDate,
|
|
|
+ CheckOutDate = item.CheckOutDate,
|
|
|
+ ConfirmationNumber = item.DetermineNo.Trim(),
|
|
|
+ RoomType = item.RoomExplanation
|
|
|
+ };
|
|
|
+ vouchers.Add(voucherInfo);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (guestIds.Count > 0)
|
|
|
+ {
|
|
|
+ guestIds = guestIds.Distinct().ToList();
|
|
|
+
|
|
|
+ var guestDatas = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0 && guestIds.Contains(it.Id)).ToListAsync();
|
|
|
+ if (guestDatas.Count > 0 )
|
|
|
+ {
|
|
|
+ guestNames = "";
|
|
|
+ foreach ( var guest in guestDatas )
|
|
|
+ {
|
|
|
+ string guestName = "";
|
|
|
+ if (guest.Sex == 0) guestName += @"MR.";
|
|
|
+ else if (guest.Sex == 1) guestName += @"MS.";
|
|
|
+
|
|
|
+ if (guest.Pinyin == null) guestName += $"{string.Join("", guest.LastName.GetTotalPingYin()).ToUpper()}/{string.Join("", guest.FirstName.GetTotalPingYin()).ToUpper()}";
|
|
|
+ else guestName += @$"{guest.Pinyin.Replace(" ","")}";
|
|
|
+
|
|
|
+ guestNames += @$"{guestName.Trim()}、";
|
|
|
+ }
|
|
|
+ if (guestNames.Length > 0 )
|
|
|
+ {
|
|
|
+ guestNames = guestNames.Substring(0, guestNames.Length - 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ //载入模板
|
|
|
+ string sss = AppSettingsHelper.Get("WordBasePath") + "Template/Voucher-2024Versions.docx";
|
|
|
+
|
|
|
+ Document doc = new Document(sss);
|
|
|
+ DocumentBuilder builder = new DocumentBuilder(doc);
|
|
|
+
|
|
|
+ if (doc.Range.Bookmarks["GuestName"] != null)
|
|
|
+ {
|
|
|
+ Bookmark mark = doc.Range.Bookmarks["GuestName"];
|
|
|
+ mark.Text = guestNames;
|
|
|
+ }
|
|
|
+
|
|
|
+ NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
|
|
|
+ Aspose.Words.Tables.Table table = allTables[0] as Aspose.Words.Tables.Table;
|
|
|
+
|
|
|
+ vouchers = vouchers.OrderBy(it => it.CheckInDate).ToList();
|
|
|
+ for (int i = 1; i <= vouchers.Count; i++)
|
|
|
+ {
|
|
|
+
|
|
|
+ HotelVoucherInfoView hviv = vouchers[i-1];
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i, 0, 0);
|
|
|
+ builder.Write(hviv.HotelName);
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i, 1, 0);
|
|
|
+ builder.Write(hviv.CheckInDate);
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i, 2, 0);
|
|
|
+ builder.Write(hviv.CheckOutDate);
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i, 3, 0);
|
|
|
+ builder.Write(hviv.RoomType);
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i, 4, 0);
|
|
|
+ builder.Write(hviv.ConfirmationNumber);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除多余行
|
|
|
+ int currRowIndex = vouchers.Count+1;
|
|
|
+ int delRows = 21 - currRowIndex;
|
|
|
+ if (delRows > 0)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < delRows; i++)
|
|
|
+ {
|
|
|
+ table.Rows.RemoveAt(currRowIndex);
|
|
|
+ //cultivateRowIndex++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ strFileName += "VOUCHER.docx";
|
|
|
+
|
|
|
+ var fileDir = AppSettingsHelper.Get("WordBasePath") + strFileName;
|
|
|
+ doc.Save(fileDir);
|
|
|
+ string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/" + strFileName;
|
|
|
+ return Ok(JsonView(true, "操作成功!", Url));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 酒店预订
|
|
|
/// 确认单
|
|
@@ -11127,7 +11296,7 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> PostVisaFeeAddAndUpdate(VisaFeeAddAndUpdateDto _dto)
|
|
|
{
|
|
|
- var _view = await _visaFeeInfoRep._AddAndUpdate(_dto);
|
|
|
+ var _view = await _visaFeeInfoRep._Update(_dto);
|
|
|
if (_view.Code != 0)
|
|
|
{
|
|
|
return Ok(JsonView(false, _view.Msg));
|