|
@@ -65,6 +65,8 @@ namespace OASystem.API.Controllers
|
|
|
private readonly CustomersRepository _customersRep;
|
|
|
private readonly MessageRepository _message;
|
|
|
private readonly SqlSugarClient _sqlSugar;
|
|
|
+ private readonly TourClientListRepository _tourClientListRep;
|
|
|
+
|
|
|
#region 成本相关
|
|
|
private readonly CheckBoxsRepository _checkBoxs;
|
|
|
private readonly GroupCostRepository _GroupCostRepository;
|
|
@@ -83,7 +85,8 @@ namespace OASystem.API.Controllers
|
|
|
InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep
|
|
|
, DelegationVisaRepository delegationVisaRep, MessageRepository message, VisaPriceRepository visaPriceRep, CarTouristGuideGroundRepository carTouristGuideGroundRep,
|
|
|
CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
|
|
|
- GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep, CustomersRepository customersRep, SetDataRepository setDataRep)
|
|
|
+ GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep, CustomersRepository customersRep, SetDataRepository setDataRep,
|
|
|
+ TourClientListRepository tourClientListRep)
|
|
|
{
|
|
|
_mapper = mapper;
|
|
|
_grpScheduleRep = grpScheduleRep;
|
|
@@ -112,6 +115,7 @@ namespace OASystem.API.Controllers
|
|
|
_hotelPriceRep = hotelPriceRep;
|
|
|
_customersRep = customersRep;
|
|
|
_setDataRep = setDataRep;
|
|
|
+ _tourClientListRep = tourClientListRep;
|
|
|
}
|
|
|
|
|
|
#region 流程管控
|
|
@@ -2778,9 +2782,9 @@ namespace OASystem.API.Controllers
|
|
|
if (item.CrmCompanyId != 0)
|
|
|
{
|
|
|
Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id == item.CrmCompanyId && a.IsDel == 0);
|
|
|
- if (!transDic.ContainsKey(crm_Customer.CompanyName))
|
|
|
+ if (!transDic.ContainsKey(crm_Customer.CompanyFullName))
|
|
|
{
|
|
|
- texts.Add(crm_Customer.CompanyName);
|
|
|
+ texts.Add(crm_Customer.CompanyFullName);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2820,7 +2824,7 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
guestList.DOB = dele.BirthDay.Replace('-', '.');
|
|
|
Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id == dele.CrmCompanyId && a.IsDel == 0);
|
|
|
- string jobName = transDic.Where(s => s.Key == crm_Customer.CompanyName).FirstOrDefault().Value + " " + transDic.Where(s => s.Key == dele.Job).FirstOrDefault().Value;
|
|
|
+ string jobName = transDic.Where(s => s.Key == crm_Customer.CompanyFullName).FirstOrDefault().Value + " " + transDic.Where(s => s.Key == dele.Job).FirstOrDefault().Value;
|
|
|
|
|
|
guestList.Job = jobName;
|
|
|
list.Add(guestList);
|
|
@@ -2972,21 +2976,25 @@ namespace OASystem.API.Controllers
|
|
|
{
|
|
|
var groupNameData = await _groupRepository.GetGroupNameList(new GroupNameDto { PortType = dto.PortType });
|
|
|
|
|
|
- string currencySql = string.Format("Select * From Sys_SetData Where STid = 66 And IsDel = 0");
|
|
|
- var currencyData = await _sqlSugar.SqlQueryable<SetDataInfoView>(currencySql).ToListAsync();
|
|
|
+ string sql = string.Format("Select * From Sys_SetData Where IsDel = 0");
|
|
|
+ //SetDataInfoView
|
|
|
+ var dataSource = await _sqlSugar.SqlQueryable<Sys_SetData>(sql).ToListAsync();
|
|
|
|
|
|
+ var currencyData = dataSource.Where(it => it.STid == 66).ToList(); //所有币种
|
|
|
+ List<SetDataInfoView> _CurrencyData = _mapper.Map<List<SetDataInfoView>>(currencyData);
|
|
|
|
|
|
- //string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
|
|
|
- // Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
|
|
|
- // Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id
|
|
|
- // Where gntf.Isdel = 0");
|
|
|
- //var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
|
|
|
+ var wordTypeData = dataSource.Where(it => it.STid == 72).ToList(); //三公费用-Word明细类型
|
|
|
+ List<SetDataInfoView> _WordTypeData = _mapper.Map<List<SetDataInfoView>>(wordTypeData);
|
|
|
|
|
|
+ var excelTypeData = dataSource.Where(it => it.STid == 73).ToList(); //三公费用-Excel明细类型
|
|
|
+ List<SetDataInfoView> _ExcelTypeData = _mapper.Map<List<SetDataInfoView>>(excelTypeData);
|
|
|
|
|
|
return Ok(JsonView(true, "查询成功!", new
|
|
|
{
|
|
|
GroupNameData = groupNameData.Data,
|
|
|
- CurrencyData = currencyData,
|
|
|
+ CurrencyData = _CurrencyData,
|
|
|
+ WordTypeData = _WordTypeData,
|
|
|
+ ExcelTypeData = _ExcelTypeData
|
|
|
//NationalTravelFeeData = nationalTravelFeeData
|
|
|
}));
|
|
|
}
|
|
@@ -3072,6 +3080,9 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 团组模块 - 出入境费用 - 子项删除
|
|
|
/// </summary>
|
|
@@ -4255,8 +4266,6 @@ namespace OASystem.API.Controllers
|
|
|
string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/" + strFileName;
|
|
|
return Ok(JsonView(true, "成功!", Url));
|
|
|
|
|
|
- //保存为doc,并打开
|
|
|
-
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -4286,7 +4295,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);
|
|
|
|
|
|
//酒店数据
|
|
@@ -4332,14 +4340,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);
|
|
@@ -4396,8 +4402,6 @@ namespace OASystem.API.Controllers
|
|
|
throw;
|
|
|
}
|
|
|
|
|
|
- //doc.Save(HttpUtility.UrlEncode(strFileName, Encoding.UTF8), Aspose.Words.SaveFormat.Doc, Aspose.Words.SaveType.OpenInWord, Response);
|
|
|
-
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 酒店费用删除
|
|
@@ -4519,6 +4523,53 @@ namespace OASystem.API.Controllers
|
|
|
return Ok(JsonView(true, data.Msg, data.Data));
|
|
|
|
|
|
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "Catch:"+ex.Message));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <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)
|
|
|
{
|
|
@@ -4621,6 +4672,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 团组状态
|
|
@@ -4948,5 +5409,150 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
+
|
|
|
+ #region 接团客户名单 PageId 104
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 接团客户名单
|
|
|
+ /// 根据团组Id查询List
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public async Task<IActionResult> PostTourClientListByDiId(TourClientListByDiIdDto _dto)
|
|
|
+ {
|
|
|
+ #region 参数验证
|
|
|
+ if (_dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId"));
|
|
|
+ if (_dto.PageId < 1) _dto.PageId = 104; //接团客户名单PageId
|
|
|
+ if (_dto.DiId < 1) return Ok(JsonView(false, "请传入有效的DiId!"));
|
|
|
+
|
|
|
+ PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
|
|
|
+
|
|
|
+ #region 页面操作权限验证
|
|
|
+ pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
|
|
|
+
|
|
|
+ if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, "您没有查看权限!"));
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ var viewData = await _tourClientListRep._ItemByDiId(_dto.PortType,_dto.DiId);
|
|
|
+ if (viewData.Code != 0)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, viewData.Msg));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(viewData.Data));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 接团客户名单
|
|
|
+ /// 基础数据 Init
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="_dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public async Task<IActionResult> PostTourClientListBasicDataInit(TourClientListBasicDataInitDto _dto)
|
|
|
+ {
|
|
|
+
|
|
|
+ #region 参数验证
|
|
|
+ if (_dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数"));
|
|
|
+ if (_dto.PageId < 1) _dto.PageId = 104; //接团客户名单PageId
|
|
|
+
|
|
|
+ PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
|
|
|
+
|
|
|
+ #region 页面操作权限验证
|
|
|
+ pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
|
|
|
+
|
|
|
+ if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, "您没有查看权限!"));
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ var viewData = await _tourClientListRep._BasicDataInit(_dto.PortType);
|
|
|
+ if (viewData.Code != 0)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, viewData.Msg));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(viewData.Data));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 接团客户名单
|
|
|
+ /// 根据 Id查询 Details
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public async Task<IActionResult> PostTourClientListDetails(TourClientListDetailsDto _dto)
|
|
|
+ {
|
|
|
+
|
|
|
+ #region 参数验证
|
|
|
+ if (_dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数"));
|
|
|
+ if (_dto.PageId < 1) _dto.PageId = 104; //接团客户名单PageId
|
|
|
+ if (_dto.Id < 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
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ var viewData = await _tourClientListRep._Details(_dto.PortType, _dto.Id);
|
|
|
+ if (viewData.Code != 0)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, viewData.Msg));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(viewData.Data));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 接团客户名单
|
|
|
+ /// 根据 Id查询 Details
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public async Task<IActionResult> PostTourClientListAddOrEdit(TourClientListAddOrEditDto _dto)
|
|
|
+ {
|
|
|
+
|
|
|
+ #region 参数验证
|
|
|
+ if (_dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数"));
|
|
|
+ if (_dto.PageId < 1) _dto.PageId = 104; //接团客户名单PageId
|
|
|
+ if (_dto.Id < 0) return Ok(JsonView(false, "请传入有效的Id参数!"));
|
|
|
+
|
|
|
+ PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
|
|
|
+
|
|
|
+ #region 页面操作权限验证
|
|
|
+ pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
|
|
|
+
|
|
|
+ if (_dto.Id == 0) //添加
|
|
|
+ {
|
|
|
+ if (pageFunAuthView.AddAuth == 0) return Ok(JsonView(false, "您没有添加权限!"));
|
|
|
+ }else if (_dto.Id >= 0) //修改
|
|
|
+ {
|
|
|
+ if (pageFunAuthView.EditAuth == 0) return Ok(JsonView(false, "您没有编辑权限!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ var viewData = await _tourClientListRep._Details(_dto.PortType, _dto.Id);
|
|
|
+ if (viewData.Code != 0)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, viewData.Msg));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(viewData.Data));
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|