|
@@ -32,6 +32,7 @@ using OASystem.Domain.ViewModels.Groups;
|
|
|
using OASystem.Infrastructure.Repositories.CRM;
|
|
|
using OASystem.Infrastructure.Repositories.Financial;
|
|
|
using OASystem.Infrastructure.Repositories.Groups;
|
|
|
+using OASystem.Infrastructure.Tools;
|
|
|
using Quartz.Util;
|
|
|
using SqlSugar.Extensions;
|
|
|
using System.Collections;
|
|
@@ -39,6 +40,7 @@ using System.Data;
|
|
|
using System.Diagnostics;
|
|
|
using System.Globalization;
|
|
|
using System.IO.Compression;
|
|
|
+using System.Text.Json;
|
|
|
using TencentCloud.Ocr.V20181119.Models;
|
|
|
using static OASystem.API.OAMethodLib.JWTHelper;
|
|
|
using static OASystem.Infrastructure.Repositories.Groups.AirTicketResRepository;
|
|
@@ -105,6 +107,7 @@ namespace OASystem.API.Controllers
|
|
|
private readonly TableOperationRecordRepository _tableorRep;
|
|
|
private readonly EnterExitCostDraftRepository _enterExitCostDraftRep;
|
|
|
private readonly RestaurantRepository _restaurantRep;
|
|
|
+ private readonly EnterExitCostQuoteRepository _enterExitCostQuoteRep;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 构造函数
|
|
@@ -148,6 +151,7 @@ namespace OASystem.API.Controllers
|
|
|
/// <param name="tableorRep"></param>
|
|
|
/// <param name="enterExitCostDraftRep"></param>
|
|
|
/// <param name="restaurantRep"></param>
|
|
|
+ /// <param name="enterExitCostQuoteRep"></param>
|
|
|
public GroupsController(
|
|
|
ILogger<GroupsController> logger,
|
|
|
IMapper mapper,
|
|
@@ -186,7 +190,8 @@ namespace OASystem.API.Controllers
|
|
|
OpinionaireRepository opinionaireRep,
|
|
|
TableOperationRecordRepository tableorRep,
|
|
|
EnterExitCostDraftRepository enterExitCostDraftRep,
|
|
|
- RestaurantRepository restaurantRep
|
|
|
+ RestaurantRepository restaurantRep,
|
|
|
+ EnterExitCostQuoteRepository enterExitCostQuoteRep
|
|
|
)
|
|
|
{
|
|
|
_logger = logger;
|
|
@@ -243,6 +248,7 @@ namespace OASystem.API.Controllers
|
|
|
_tableorRep = tableorRep;
|
|
|
_enterExitCostDraftRep = enterExitCostDraftRep;
|
|
|
_restaurantRep = restaurantRep;
|
|
|
+ _enterExitCostQuoteRep = enterExitCostQuoteRep;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -5301,58 +5307,6 @@ FROM
|
|
|
|
|
|
#region 团组经理模块 出入境费用
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 团组模块 - 出入境费用 - 子项 地区更改为 nationalTravelFee 的id
|
|
|
- /// </summary>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpPost]
|
|
|
- [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
- public async Task<IActionResult> SetDayAndCostAreaChange()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- var nationalTravelFee = await _sqlSugar.Queryable<Grp_NationalTravelFee>().ToListAsync();
|
|
|
- var dayAndCost = await _sqlSugar.Queryable<Grp_DayAndCost>().Where(it => it.IsDel == 0).ToListAsync();
|
|
|
-
|
|
|
- var unite = dayAndCost.Where(a => nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //交集
|
|
|
-
|
|
|
- var merge = dayAndCost.Where(a => !nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //差集
|
|
|
-
|
|
|
- foreach (var item in unite) //处理交集数据
|
|
|
- {
|
|
|
- dayAndCost.Where(it => it.Id == item.Id).FirstOrDefault().NationalTravelFeeId = nationalTravelFee.Where(it => it.City.Trim() == item.Place.Trim()).FirstOrDefault().Id;
|
|
|
- }
|
|
|
-
|
|
|
- foreach (var item in merge) //处理差集数据
|
|
|
- {
|
|
|
- int nationalTravelFeeId = 0;
|
|
|
-
|
|
|
- var cityData = nationalTravelFee.Where(it => it.City.Trim() == item.Place.Trim()).FirstOrDefault();
|
|
|
-
|
|
|
- if (cityData != null) nationalTravelFeeId = cityData.Id;
|
|
|
- else
|
|
|
- {
|
|
|
- var countryData = nationalTravelFee.Where(it => it.Country.Trim() == item.Place.Trim()).FirstOrDefault();
|
|
|
- if (countryData != null) nationalTravelFeeId = countryData.Id;
|
|
|
- }
|
|
|
-
|
|
|
- dayAndCost.Where(it => it.Id == item.Id).FirstOrDefault().NationalTravelFeeId = nationalTravelFeeId;
|
|
|
- }
|
|
|
-
|
|
|
- //只更新dayAndCost 的 nationalTravelFeeId;
|
|
|
- var result = _sqlSugar.Updateable(dayAndCost).UpdateColumns(it => new { it.NationalTravelFeeId }).ExecuteCommand();
|
|
|
-
|
|
|
- if (result > 0) return Ok(JsonView(true, "nationalTravelFeeId列更新成功!"));
|
|
|
- else return Ok(JsonView(false, "nationalTravelFeeId列更新失败!"));
|
|
|
-
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- return Ok(JsonView(false, ex.Message));
|
|
|
- throw;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型)
|
|
|
/// </summary>
|
|
@@ -11773,6 +11727,81 @@ WHERE
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
+ #region 团组经理模块 出入境费用报价表
|
|
|
+ /// <summary>
|
|
|
+ /// 团组模块 - 出入境费用报价表 - 初始化数据源(币种类型)
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> EnterExitCostQuoteInitData(PortDtoBase dto)
|
|
|
+ {
|
|
|
+ //默认币种显示
|
|
|
+ var currencyInfos = new List<CurrencyInfo>()
|
|
|
+ {
|
|
|
+ new CurrencyInfo (){ CurrencyCode="USD",CurrencyName = "美元",Rate = 7.5000M },
|
|
|
+ new CurrencyInfo (){ CurrencyCode="EUR",CurrencyName = "欧元",Rate = 8.0000M },
|
|
|
+ new CurrencyInfo (){ CurrencyCode="GBP",CurrencyName = "英镑",Rate = 9.5000M },
|
|
|
+ new CurrencyInfo (){ CurrencyCode="JPY",CurrencyName = "日元",Rate = 0.0500M },
|
|
|
+ new CurrencyInfo (){ CurrencyCode="HKD",CurrencyName = "港币",Rate = 0.9500M },
|
|
|
+ };
|
|
|
+
|
|
|
+ var liveRateInfos = new List<LiveRateInfo>();
|
|
|
+ var currencyRate = await _juHeApi.PostItemRateAsync(currencyInfos.Select(it => it.CurrencyCode!).ToArray());
|
|
|
+ if (currencyRate.Any())
|
|
|
+ {
|
|
|
+ foreach (var item in currencyInfos)
|
|
|
+ {
|
|
|
+ var rateInfo = currencyRate.Where(it => it.Name.Equals(item.CurrencyName)).FirstOrDefault();
|
|
|
+
|
|
|
+ if (rateInfo != null)
|
|
|
+ {
|
|
|
+ decimal rate1 = Convert.ToDecimal(rateInfo.FSellPri) / 100.00M;
|
|
|
+
|
|
|
+ if (rateInfo.Name.Equals("日元")) rate1 *= 1.3700M;
|
|
|
+ else rate1 *= 1.035M;
|
|
|
+
|
|
|
+ liveRateInfos.Add(new LiveRateInfo() {
|
|
|
+ CurrencyCode = item.CurrencyCode,
|
|
|
+ CurrencyName = item.CurrencyName,
|
|
|
+ Rate = rate1.TruncDecimals(4),
|
|
|
+ LastUpdTime = $"{rateInfo.Date} {rateInfo.Time}",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(true, "查询成功!", new
|
|
|
+ {
|
|
|
+ DefualtRates = currencyInfos,
|
|
|
+ LiveRates = liveRateInfos
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 团组模块 - 出入境费用报价表 - 报价表名称列表
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> EnterExitCostQuoteNameListDto(EnterExitCostQuoteNameListDto dto)
|
|
|
+ {
|
|
|
+ return Ok(await _enterExitCostQuoteRep.QuoteNameListAsync(dto));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 团组模块 - 出入境费用报价表 - 团组名称列表
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> EnterExitCostGroupNameListDto(EnterExitCostQuoteGroupNameListDto dto)
|
|
|
+ {
|
|
|
+ return Ok(await _enterExitCostQuoteRep.GroupNameListAsync(dto));
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
#region 签证费用录入
|
|
|
|
|
|
/// <summary>
|