|
@@ -1,4 +1,5 @@
|
|
|
using Aspose.Cells;
|
|
|
+using NPOI.SS.Formula.Functions;
|
|
|
using OASystem.API.OAMethodLib;
|
|
|
using OASystem.Domain.Dtos.Statistics;
|
|
|
using OASystem.Domain.Entities.Customer;
|
|
@@ -7,6 +8,7 @@ using OASystem.Domain.ViewModels.Financial;
|
|
|
using OASystem.Domain.ViewModels.QiYeWeChat;
|
|
|
using OASystem.Domain.ViewModels.Statistics;
|
|
|
using OASystem.Infrastructure.Repositories.Groups;
|
|
|
+using System;
|
|
|
using System.Data;
|
|
|
using static OASystem.API.OAMethodLib.GeneralMethod;
|
|
|
using TypeInfo = OASystem.Domain.ViewModels.Statistics.TypeInfo;
|
|
@@ -3667,7 +3669,7 @@ SELECT
|
|
|
CAST(
|
|
|
SUM(
|
|
|
(
|
|
|
- ((ccp.PayMoney * ccp.DayRate) / ccp.PayPercentage) * 100
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
)
|
|
|
) AS DECIMAL(12, 2)
|
|
|
)
|
|
@@ -3686,7 +3688,7 @@ SELECT
|
|
|
SELECT
|
|
|
CAST(
|
|
|
SUM(
|
|
|
- ((ccp.PayMoney * ccp.DayRate) / ccp.PayPercentage) * 100
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
) AS DECIMAL(12, 2)
|
|
|
)
|
|
|
FROM
|
|
@@ -3704,7 +3706,7 @@ SELECT
|
|
|
SELECT
|
|
|
CAST(
|
|
|
SUM(
|
|
|
- ((ccp.PayMoney * ccp.DayRate) / ccp.PayPercentage) * 100
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
) AS DECIMAL(12, 2)
|
|
|
)
|
|
|
FROM
|
|
@@ -3714,14 +3716,15 @@ SELECT
|
|
|
AND ic.Id = ccp.CId
|
|
|
WHERE
|
|
|
ic.IsDel = 0
|
|
|
- AND ccp.IsAuditGM = 1And ccp.IsPay = 1
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.IsPay = 1
|
|
|
AND di.Id = ic.DiId
|
|
|
) AS InsureAmount,
|
|
|
(
|
|
|
SELECT
|
|
|
CAST(
|
|
|
SUM(
|
|
|
- ((ccp.PayMoney * ccp.DayRate) / ccp.PayPercentage) * 100
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
) AS DECIMAL(12, 2)
|
|
|
)
|
|
|
FROM
|
|
@@ -3733,7 +3736,7 @@ SELECT
|
|
|
AND ccp.CTable = 76
|
|
|
AND ccp.IsAuditGM = 1
|
|
|
AND ccp.PayMoney <> 0
|
|
|
- AND ccp.IsPay = 0
|
|
|
+ AND ccp.IsPay = 1
|
|
|
AND di.Id = hr.DiId
|
|
|
) AS HotelAmount,
|
|
|
(
|
|
@@ -3755,7 +3758,7 @@ SELECT
|
|
|
SELECT
|
|
|
CAST(
|
|
|
SUM(
|
|
|
- ((ccp.PayMoney * ccp.DayRate) / ccp.PayPercentage) * 100
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
) AS DECIMAL(12, 2)
|
|
|
)
|
|
|
FROM
|
|
@@ -4760,6 +4763,411 @@ ORDER BY
|
|
|
}
|
|
|
return Ok(JsonView(false, "操作失败!"));
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 团组数据统计
|
|
|
+ /// 团组预算/实际成本
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="_dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("StatisticsGroupCost")]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> StatisticsBRCost(StatisticsBRCostDto _dto)
|
|
|
+ {
|
|
|
+ if (_dto.Year < 1) return Ok(JsonView(false, "Year参数错误!"));
|
|
|
+
|
|
|
+ string beginDt = $"{_dto.Year}-01-01 00:00:00",
|
|
|
+ endDt = $"{_dto.Year}-12-31 23:59:59";
|
|
|
+
|
|
|
+ var sql = string.Format(@"
|
|
|
+SELECT
|
|
|
+ ROW_NUMBER() OVER(
|
|
|
+ ORDER BY
|
|
|
+ di.VisitDate DESC
|
|
|
+ ) AS 'RowNumber',
|
|
|
+ di.Id,
|
|
|
+ di.TeamName AS 'GroupName',
|
|
|
+ di.ClientUnit,
|
|
|
+ di.VisitDate,
|
|
|
+ di.VisitDays,
|
|
|
+ di.VisitPNumber,
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ TOP 1 CASE
|
|
|
+ ISNUMERIC (gcp.Currency)
|
|
|
+ WHEN 1 THEN (
|
|
|
+ SELECT
|
|
|
+ Name
|
|
|
+ FROM
|
|
|
+ Sys_SetData sd
|
|
|
+ WHERE
|
|
|
+ CAST(gcp.Currency AS INT) = sd.Id
|
|
|
+ )
|
|
|
+ ELSE gcp.Currency
|
|
|
+ END AS 'CurrencyCode'
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.Id
|
|
|
+ ) Budget_CurrencyCode,
|
|
|
+ --预算币种
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ TOP 1 CAST(COALESCE(gcp.Rate, 0.0000) AS DECIMAL(12, 4))
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.Id
|
|
|
+ ) Budget_Rate,
|
|
|
+ --预算汇率
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(COALESCE(gcp.VisaCB, 0) * COALESCE(gcp.VisaRS, 0)) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.id
|
|
|
+ ) Budget_VisaAmount,
|
|
|
+ -- 预算签证成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ (
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
+ )
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_VisaInfo vi
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON ccp.isdel = 0
|
|
|
+ AND ccp.CTable = 80
|
|
|
+ AND vi.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ vi.IsDel = 0
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.IsPay = 1
|
|
|
+ AND di.Id = vi.DIId
|
|
|
+ ) AS Reality_VisaAmount,
|
|
|
+ -- 实际签证成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ COALESCE(gcp.JJCCB, 0) * COALESCE(gcp.JJCRS, 0) + COALESCE(gcp.GWCCB, 0) * COALESCE(gcp.GWCRS, 0) + COALESCE(gcp.TDCCB, 0) * COALESCE(gcp.TDCRS, 0)
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.id
|
|
|
+ ) Budget_AirTicketAmount,
|
|
|
+ -- 预算机票成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ (
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
+ )
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_AirTicketReservations atr
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON ccp.isdel = 0
|
|
|
+ AND ccp.CTable = 85
|
|
|
+ AND atr.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ atr.IsDel = 0
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.IsPay = 1
|
|
|
+ AND di.Id = atr.DiId
|
|
|
+ ) Reality_AirTicketAmount,
|
|
|
+ --实际机票
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ COALESCE(gcp.SGRCB, 0) * COALESCE(gcp.SGRNumber, 0) + COALESCE(gcp.TBRCB, 0) * COALESCE(gcp.TBRNumber, 0) + COALESCE(gcp.SUITECB, 0) * COALESCE(gcp.SUITENumber, 0) + COALESCE(gcp.SUITENumber, 0) * COALESCE(gcp.JSESXS, 0)
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.id
|
|
|
+ ) Budget_HotelAmount,
|
|
|
+ -- 预算酒店成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_HotelReservations hr
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON hr.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ hr.IsDel = 0
|
|
|
+ AND ccp.IsDel = 0
|
|
|
+ AND ccp.CTable = 76
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.PayMoney <> 0
|
|
|
+ AND ccp.IsPay = 1
|
|
|
+ AND di.Id = hr.DiId
|
|
|
+ ) AS Reality_HotelAmount,
|
|
|
+ -- 实际酒店成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(COALESCE(gcp.DJCB, 0) * COALESCE(gcp.DJRS, 0)) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.id
|
|
|
+ ) Budget_OPAmount,
|
|
|
+ -- 预算 OP
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ (
|
|
|
+ ctggr.ServiceQuotedPrice * (ccp.PayPercentage / 100) * ccp.DayRate
|
|
|
+ )
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_CarTouristGuideGroundReservations ctggr
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON ccp.IsDel = 0
|
|
|
+ AND ccp.CTable = 79
|
|
|
+ AND ctggr.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ ctggr.IsDel = 0
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.IsPay = 1
|
|
|
+ AND di.Id = ctggr.DiId
|
|
|
+ ) AS Reality_OPAmount,
|
|
|
+ -- 实际 OP
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(COALESCE(gcp.GWCB, 0) * COALESCE(gcp.GWRS, 0)) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.id
|
|
|
+ ) Budget_OAAmount,
|
|
|
+ -- 预算 商邀
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_InvitationOfficialActivities ioa
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON ccp.isdel = 0
|
|
|
+ AND ccp.CTable = 81
|
|
|
+ AND ioa.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ ioa.IsDel = 0
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.IsPay = 1
|
|
|
+ AND di.Id = ioa.Diid
|
|
|
+ ) AS Reality_OAAmount,
|
|
|
+ -- 实际 商邀
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ COALESCE(gcp.BXCB, 0) * COALESCE(gcp.BXRS, 0) + COALESCE(gcp.HCPCB, 0) * COALESCE(gcp.HCPRS, 0) + COALESCE(gcp.CPCB, 0) * COALESCE(gcp.CPRS, 0) + COALESCE(gcp.HSCB, 0) * COALESCE(gcp.HSRS, 0) + COALESCE(gcp.LYJCB, 0) * COALESCE(gcp.LYJRS, 0)
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_GroupCostParameter gcp
|
|
|
+ WHERE
|
|
|
+ gcp.IsDel = 0
|
|
|
+ AND gcp.DiId = di.id
|
|
|
+ ) Budget_OtherAmount,
|
|
|
+ -- 预算其他成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(
|
|
|
+ SUM(
|
|
|
+ (ccp.PayMoney * ccp.DayRate)
|
|
|
+ ) AS DECIMAL(12, 2)
|
|
|
+ )
|
|
|
+ FROM
|
|
|
+ Grp_Customers ic
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON ccp.isdel = 0
|
|
|
+ AND ccp.CTable = 82
|
|
|
+ AND ic.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ ic.IsDel = 0
|
|
|
+ AND ccp.IsAuditGM = 1And ccp.IsPay = 1
|
|
|
+ AND di.Id = ic.DiId
|
|
|
+ ) AS Reality_InsureAmount,
|
|
|
+ -- 实际保险成本
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ CAST(SUM((ccp.PayMoney * ccp.DayRate)) AS DECIMAL(12, 2))
|
|
|
+ FROM
|
|
|
+ Grp_DecreasePayments dp
|
|
|
+ INNER JOIN Grp_CreditCardPayment ccp ON ccp.isdel = 0
|
|
|
+ AND ccp.CTable = 98
|
|
|
+ AND dp.Id = ccp.CId
|
|
|
+ WHERE
|
|
|
+ dp.IsDel = 0
|
|
|
+ AND ccp.Ctable = 98
|
|
|
+ AND ccp.IsAuditGM = 1
|
|
|
+ AND ccp.IsPay = 1
|
|
|
+ AND di.Id = dp.Diid
|
|
|
+ ) AS Reality_OtherCostAmount -- 实际其他款项
|
|
|
+FROM
|
|
|
+ Grp_DelegationInfo di
|
|
|
+WHERE
|
|
|
+ di.IsDel = 0
|
|
|
+ AND di.TeamDid IN (38, 39, 40, 1048)
|
|
|
+ AND di.VisitDate BETWEEN '{0}' AND '{1}'
|
|
|
+", beginDt, endDt);
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(_dto.Search))
|
|
|
+ {
|
|
|
+ sql += $"AND di.TeamName Like '%{_dto.Search}%'";
|
|
|
+ }
|
|
|
+
|
|
|
+ var view = await _sqlSugar.SqlQueryable<StatisticsBRCostView>(sql).ToListAsync();
|
|
|
+ view = view.OrderByDescending(x => x.Id).ToList();
|
|
|
+ var total = view.Count;
|
|
|
+ var toSkip = (_dto.PageIndex - 1) * _dto.PageSize;
|
|
|
+ var data = view.Skip(toSkip).Take(_dto.PageSize).ToList();
|
|
|
+ if (data.Count > 0)
|
|
|
+ {
|
|
|
+ var diIds = data.Select(x => x.Id).ToList();
|
|
|
+ var currencyData = await _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.STid == 66).ToListAsync();
|
|
|
+ var ccpData = await _sqlSugar.Queryable<Grp_CreditCardPayment>()
|
|
|
+ .Where(x => x.IsDel == 0 &&
|
|
|
+ diIds.Contains(x.DIId) &&
|
|
|
+ x.IsPay == 1 &&
|
|
|
+ x.IsAuditGM == 1
|
|
|
+ )
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+ for (int i = 0; i < data.Count; i++)
|
|
|
+ {
|
|
|
+ var info = data[i];
|
|
|
+
|
|
|
+ info.RowNumber = i + 1;
|
|
|
+
|
|
|
+ #region 1:签证 80
|
|
|
+ var visaDatas = ccpData.Where(x => x.DIId == info.Id && x.CTable == 80).ToList();
|
|
|
+ var visaDesc = "-";
|
|
|
+ if (visaDatas.Count > 0)
|
|
|
+ {
|
|
|
+ visaDesc = $"实际币种金额:";
|
|
|
+ foreach (var visa in visaDatas)
|
|
|
+ {
|
|
|
+ var currencyCode = currencyData.Find(x => x.Id == visa.PaymentCurrency)?.Name;
|
|
|
+ visaDesc += $"{visa.PayMoney} {currencyCode} 汇率:{visa.DayRate.ToString("#0.0000")};";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.Reality_VisaAmountDesc = visaDesc;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 2:机票 85
|
|
|
+ var airDatas = ccpData.Where(x => x.DIId == info.Id && x.CTable == 85).ToList();
|
|
|
+ var airDesc = "-";
|
|
|
+ if (airDatas.Count > 0)
|
|
|
+ {
|
|
|
+ airDesc = $"实际币种金额:";
|
|
|
+ foreach (var air in airDatas)
|
|
|
+ {
|
|
|
+ var currencyCode = currencyData.Find(x => x.Id == air.PaymentCurrency)?.Name;
|
|
|
+ airDesc += $"{air.PayMoney} {currencyCode} 汇率:{air.DayRate.ToString("#0.0000")};";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.Reality_AirTicketAmountDesc = airDesc;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 3:酒店 76
|
|
|
+ var hotelDatas = ccpData.Where(x => x.DIId == info.Id && x.CTable == 76 && x.PayMoney != 0 ).ToList();
|
|
|
+ var hotelDesc = "-";
|
|
|
+ if (hotelDatas.Count > 0)
|
|
|
+ {
|
|
|
+ hotelDesc = $"实际币种金额:";
|
|
|
+ foreach (var hotel in hotelDatas)
|
|
|
+ {
|
|
|
+ var currencyCode = currencyData.Find(x => x.Id == hotel.PaymentCurrency)?.Name;
|
|
|
+ hotelDesc += $"{hotel.PayMoney} {currencyCode} 汇率:{hotel.DayRate.ToString("#0.0000")};";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.Reality_HotelAmountDesc = hotelDesc;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 4:OP 79
|
|
|
+ var opDatas = ccpData.Where(x => x.DIId == info.Id && x.CTable == 79 && x.PayMoney != 0).ToList();
|
|
|
+ var opDesc = "-";
|
|
|
+ if (opDatas.Count > 0)
|
|
|
+ {
|
|
|
+ opDesc = $"实际币种金额;";
|
|
|
+ foreach (var op in opDatas)
|
|
|
+ {
|
|
|
+ var currencyCode = currencyData.Find(x => x.Id == op.PaymentCurrency)?.Name;
|
|
|
+ opDesc += $"{op.PayMoney} {currencyCode} 汇率:{op.DayRate.ToString("#0.0000")};";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.Reality_OPAmountDesc = opDesc;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 5:商邀 81
|
|
|
+ var oaDatas = ccpData.Where(x => x.DIId == info.Id && x.CTable == 81 && x.PayMoney != 0).ToList();
|
|
|
+ var oaDesc = "-";
|
|
|
+ if (oaDatas.Count > 0)
|
|
|
+ {
|
|
|
+ oaDesc = $"实际币种金额:";
|
|
|
+ foreach (var oa in oaDatas)
|
|
|
+ {
|
|
|
+ var currencyCode = currencyData.Find(x => x.Id == oa.PaymentCurrency)?.Name;
|
|
|
+ oaDesc += $"{oa.PayMoney} {currencyCode} 汇率:{oa.DayRate.ToString("#0.0000")};";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.Reality_OAAmountDesc = oaDesc;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 6:其他款项(保险 82、其他款项 98)
|
|
|
+ var cTables = new List<int>() { 82, 98 };
|
|
|
+ var otherDatas = ccpData.Where(x => x.DIId == info.Id && cTables.Contains(x.CTable) && x.PayMoney != 0).ToList();
|
|
|
+ var otherDesc = "-";
|
|
|
+ if (otherDatas.Count > 0)
|
|
|
+ {
|
|
|
+ otherDesc = $"实际币种金额:";
|
|
|
+ foreach (var other in otherDatas)
|
|
|
+ {
|
|
|
+ var currencyCode = currencyData.Find(x => x.Id == other.PaymentCurrency)?.Name;
|
|
|
+ otherDesc += $"{other.PayMoney} {currencyCode} 汇率:{other.DayRate.ToString("#0.0000")};";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.Reality_OtherCostAmountDesc = otherDesc;
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var briefData = _mapper.Map<List<StatisticsBRCostBriefView>>(data);
|
|
|
+ return Ok(JsonView(briefData, total));
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
}
|