|
@@ -24,6 +24,9 @@ using OASystem.Domain.Entities.Customer;
|
|
|
using System.IO.Compression;
|
|
|
using NPOI.SS.UserModel;
|
|
|
using System.Net.Http;
|
|
|
+using Google.Protobuf;
|
|
|
+using NPOI.SS.Formula.Functions;
|
|
|
+using System.Globalization;
|
|
|
|
|
|
namespace OASystem.API.Controllers
|
|
|
{
|
|
@@ -1734,7 +1737,7 @@ Where c.CTable = 1015 And c.IsPay = 1 And f.IsDel = 0 And c.IsDel = 0 And f.DiId
|
|
|
#region 付款申请
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 应收报表
|
|
|
+ /// 付款申请
|
|
|
/// 查询 根据日期范围
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
@@ -1743,16 +1746,160 @@ Where c.CTable = 1015 And c.IsPay = 1 And f.IsDel = 0 And c.IsDel = 0 And f.DiId
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> PostPayRequest_Center(PostPayRequestByDateRangeDto dto)
|
|
|
{
|
|
|
- tree_Fin_DailyFeePaymentResult dailyResult = PayRequest_DailyByDateRange(dto.beginDt, dto.endDt);
|
|
|
+ #region 验证
|
|
|
+ DateTime beginDt, endDt;
|
|
|
+ string format = "yyyy-MM-dd";
|
|
|
+ if (!DateTime.TryParseExact(dto.beginDt, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out beginDt))
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "开始日期格式不正确!正确格式:yyyy-MM-dd"));
|
|
|
+ }
|
|
|
+ if (!DateTime.TryParseExact(dto.endDt, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out endDt))
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "结束日期格式不正确!正确格式:yyyy-MM-dd"));
|
|
|
+ }
|
|
|
|
|
|
+ #endregion
|
|
|
+ try
|
|
|
+ {
|
|
|
+ tree_Fin_DailyFeePaymentResult dailyResult = PayRequest_DailyByDateRange(dto.beginDt, dto.endDt);
|
|
|
+ tree_Group_DailyFeePaymentResult groupResult = PayRequest_PaymentByDateRange(dto.beginDt, dto.endDt);
|
|
|
|
|
|
- return Ok(JsonView(true, "获取成功", new { daily = dailyResult }));
|
|
|
+ return Ok(JsonView(true, "获取成功", new { daily = dailyResult, group = groupResult }));
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, ex.Message));
|
|
|
+ }
|
|
|
|
|
|
- return Ok(JsonView(false, "获取失败"));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 付款申请
|
|
|
+ /// 付款申请(日付申请相关)
|
|
|
+ /// 查询 根据日期范围
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private tree_Group_DailyFeePaymentResult PayRequest_PaymentByDateRange(string beginDt, string endDt)
|
|
|
+ {
|
|
|
+ tree_Group_DailyFeePaymentResult _DailyFeePaymentResult = new tree_Group_DailyFeePaymentResult();
|
|
|
+ List<tree_Group_DailyFeePaymentPageListView> dataList = new List<tree_Group_DailyFeePaymentPageListView>();
|
|
|
+ #region sql条件处理
|
|
|
+ string sqlWhere = string.Format(@"And (AuditGMDate Between '{0} 00:00:00' And '{1} 23:59:59') ", beginDt, endDt);
|
|
|
+ string sql_1 = string.Format(@"Select * From Grp_CreditCardPayment Where IsDel = 0 And IsPay = 0 And IsAuditGM = 1 {0}", sqlWhere);
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ var _paymentDatas = _sqlSugar.SqlQueryable<Grp_CreditCardPayment>(sql_1).ToList();//付款信息
|
|
|
+ _DailyFeePaymentResult.gz = _paymentDatas.Where(it => it.OrbitalPrivateTransfer == 0).Sum(it => ((it.PayMoney * it.DayRate) / 100) * it.PayPercentage); //公转
|
|
|
+ _DailyFeePaymentResult.sz = _paymentDatas.Where(it => it.OrbitalPrivateTransfer == 1).Sum(it => ((it.PayMoney * it.DayRate) / 100) * it.PayPercentage); ; //私转
|
|
|
+ List<int> groupIds = _paymentDatas.Select(it => it.DIId).Distinct().ToList();
|
|
|
+ List<int> teamDids = new List<int> { 300, 302, 248 }; //团组类型 不含
|
|
|
+ var _groupDatas = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && groupIds.Contains(it.Id) && !teamDids.Contains(it.TeamDid)).ToList();
|
|
|
+
|
|
|
+ #region 相关基础数据源
|
|
|
+ var userDatas = _sqlSugar.Queryable<Sys_Users>().ToList();
|
|
|
+ var setDatas = _sqlSugar.Queryable<Sys_SetData>().ToList();
|
|
|
+
|
|
|
+ var hotelDatas = _sqlSugar.Queryable<Grp_HotelReservations>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
|
|
|
+ var opDatas = _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
|
|
|
+ var visaDatas = _sqlSugar.Queryable<Grp_VisaInfo>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DIId)).ToList();
|
|
|
+ var ioaDatas = _sqlSugar.Queryable<Grp_InvitationOfficialActivities>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
|
|
|
+ var insureDatas = _sqlSugar.Queryable<Grp_Customers>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
|
|
|
+ var airDatas = _sqlSugar.Queryable<Grp_AirTicketReservations>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DIId)).ToList();
|
|
|
+ var otherMoneyDatas = _sqlSugar.Queryable<Fin_OtherPrice>().Where(it => it.IsDel == 0 && groupIds.Contains(it.Diid)).ToList();
|
|
|
+ var refundPaymentDatas = _sqlSugar.Queryable<Fin_PaymentRefundAndOtherMoney>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
|
|
|
+ var ExtraCostDatas = _sqlSugar.Queryable<Fin_GroupExtraCost>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ foreach ( var groupInfo in _groupDatas)
|
|
|
+ {
|
|
|
+ List<Group_DailyFeePaymentContentInfolView> childList = new List<Group_DailyFeePaymentContentInfolView>();
|
|
|
+
|
|
|
+ var groupPaymentDatas = _paymentDatas.Where(it => groupInfo.Id == it.DIId).ToList();
|
|
|
+ int rouNumber = 1;
|
|
|
+ foreach (var payInfo in groupPaymentDatas)
|
|
|
+ {
|
|
|
+ string priName = "";
|
|
|
+
|
|
|
+ switch (payInfo.CTable)
|
|
|
+ {
|
|
|
+ case 76: //76 酒店预订
|
|
|
+ priName = hotelDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.HotelName ?? "";
|
|
|
+ break;
|
|
|
+ case 79: //79 车/导游地接
|
|
|
+ var opData = opDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id);
|
|
|
+ if (opData != null)
|
|
|
+ {
|
|
|
+ if (payInfo.OrbitalPrivateTransfer == 0) //公转
|
|
|
+ {
|
|
|
+ priName = "【四川泛美交流有限公司】" + "【公转】" + "【导游:" + opData.ServiceGuide + "】" + opData.Area;
|
|
|
+ }
|
|
|
+ else if (payInfo.OrbitalPrivateTransfer == 1) //私转
|
|
|
+ {
|
|
|
+ priName = "【四川泛美交流有限公司】" + "【私转】" + "【导游:" + opData.ServiceGuide + "】" + opData.Area;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 80: // 80 签证
|
|
|
+ priName = visaDatas.Find(it => payInfo.DIId == it.DIId && payInfo.CId == it.Id)?.VisaClient ?? "";
|
|
|
+ break;
|
|
|
+ case 81: // 81 邀请/公务活动
|
|
|
+ priName = ioaDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.Inviter ?? "";
|
|
|
+ break;
|
|
|
+ case 82: // 82 团组客户保险
|
|
|
+ priName = insureDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.ClientName ?? "";
|
|
|
+ break;
|
|
|
+ case 85: // 85 机票预订
|
|
|
+ string flightsCode = airDatas.Find(it => payInfo.DIId == it.DIId && payInfo.CId == it.Id)?.FlightsCode ?? "";
|
|
|
+ string airPayType = setDatas.Find(it => it.Id == payInfo.PayDId)?.Name ?? "";
|
|
|
+ priName = $"{flightsCode}【{airPayType}】";
|
|
|
+ break;
|
|
|
+ case 98: // 98 其他款项
|
|
|
+ priName = otherMoneyDatas.Find(it => payInfo.DIId == it.Diid && payInfo.CId == it.Id)?.PriceName ?? "";
|
|
|
+ break;
|
|
|
+ case 285: // 285 收款退还
|
|
|
+ priName = refundPaymentDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.PriceName ?? "";
|
|
|
+ break;
|
|
|
+ case 1015: // 1015 超支费用
|
|
|
+ priName = ExtraCostDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.PriceName ?? "";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ priName = "";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ childList.Add(new Group_DailyFeePaymentContentInfolView()
|
|
|
+ {
|
|
|
+ Id = payInfo.Id,
|
|
|
+ Payee = payInfo.Payee,
|
|
|
+ RowNumber = rouNumber,
|
|
|
+ Applicant = userDatas.Find(it => it.Id == payInfo.CreateUserId)?.CnName ?? "",
|
|
|
+ PayType = setDatas.Find(it => it.Id == payInfo.PayDId)?.Name ?? "",
|
|
|
+ PriceName = priName,
|
|
|
+ ModuleName = setDatas.Find(it => it.Id == payInfo.CTable)?.Name ?? "",
|
|
|
+ PayCurrCode = setDatas.Find(it => it.Id == payInfo.PaymentCurrency)?.Name ?? "",
|
|
|
+ PaymentAmount = payInfo.PayMoney,
|
|
|
+ PayRate = payInfo.DayRate,
|
|
|
+ CNYSubTotalAmount = ((payInfo.DayRate * payInfo.PayMoney) / 100) * payInfo.PayPercentage //此次付款金额
|
|
|
+ }) ;
|
|
|
+ rouNumber++;
|
|
|
+ }
|
|
|
+
|
|
|
+ dataList.Add(new tree_Group_DailyFeePaymentPageListView()
|
|
|
+ {
|
|
|
+ GroupName = groupInfo.TeamName,
|
|
|
+ CNYTotalAmount = childList.Sum(it => it.CNYSubTotalAmount),
|
|
|
+ ChildList = childList,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ _DailyFeePaymentResult.dataList = dataList;
|
|
|
+ return _DailyFeePaymentResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 付款申请(日付申请相关)
|
|
|
/// 查询 根据日期范围
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|