using Qdp.Pricing.Base.Implementations; namespace YLWebAPI.ApiModule.ManagerApi { /// /// 工具类API /// [ManagerAuth] public class CalendarController : BaseApiController { /// /// 工作日天数计算 /// 单元测试:CalendarTest.TestGetWorkingDayCount /// [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 }); } } }