71 lines
2.0 KiB
C#
71 lines
2.0 KiB
C#
using Qdp.Pricing.Base.Implementations;
|
|
|
|
namespace YLWebAPI.ApiModule.ManagerApi
|
|
{
|
|
/// <summary>
|
|
/// 工具类API
|
|
/// </summary>
|
|
[ManagerAuth]
|
|
public class CalendarController : BaseApiController
|
|
{
|
|
/// <summary>
|
|
/// 工作日天数计算
|
|
/// 单元测试:CalendarTest.TestGetWorkingDayCount
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("api/v1/calendar/get_workingdaycount")]
|
|
public ApiResponseModel GetWorkingDayCount([FromBody] GetWorkingDayCountRequest req)
|
|
{
|
|
if (req is null)
|
|
{
|
|
return JsonError("参数不能为空");
|
|
}
|
|
|
|
if (req.StartDate.Year < 2000)
|
|
{
|
|
return JsonError("StartDate需为2000年之后的日期");
|
|
}
|
|
|
|
var daycount = 0;
|
|
var calendar = CalendarImpl.Get(req.CalendarName.TrimToNull() ?? "chn");
|
|
|
|
DateTime? startDate = null, endDate = null;
|
|
|
|
for (var date = req.StartDate; date <= req.EndDate; date = date.AddDays(1))
|
|
{
|
|
if (!calendar.IsHoliday(date))
|
|
{
|
|
startDate = date;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (startDate.HasValue)
|
|
{
|
|
daycount = 1;
|
|
|
|
endDate = startDate;
|
|
|
|
for (var date = req.EndDate; date > startDate.Value; date = date.AddDays(-1))
|
|
{
|
|
if (!calendar.IsHoliday(date))
|
|
{
|
|
endDate = date;
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (var date = startDate.Value; date < endDate.Value; date = date.AddDays(1))
|
|
{
|
|
if (!calendar.IsHoliday(date))
|
|
{
|
|
daycount++;
|
|
}
|
|
}
|
|
}
|
|
|
|
return JsonSuccess(new { DayCount = daycount, StartDate = startDate, EndDate = endDate });
|
|
}
|
|
}
|
|
}
|