[HttpGet]
[AjaxOnly]
public async Task<IActionResult> GetCalculateWorkingDays(string startDate, int weekdays)
{
DateTime startDateTemp = DateTime.Parse(startDate);
DateTime Date_start = DateTime.Parse(startDateTemp.Year + "-01- 01");
DateTime Date_end = GetCurrentMonthLastDay(DateTime.Parse(startDateTemp.Year + "-12- 01"));
string queryJson = "{\"Date_start\":\"" + Date_start.ToString("yyyy-MM-dd") + "\",\"Date_end\":\"" + Date_end.ToString("yyyy-MM-dd") + "\"}";
//获取一年的节假日
IEnumerable<T_HolidaysTypeEntity> listHolidayType = await _iHolidaysTypeBLL.GetList(queryJson);
List<T_HolidaysTypeEntity> listHolidayTypeA = new List<T_HolidaysTypeEntity>();
listHolidayTypeA.AddRange(listHolidayType);
string endDate = GetEndDate_A(startDate, weekdays, listHolidayTypeA);
// object endDate = await GetEndDate(startDate, weekdays);
return Success("保存成功!", endDate.ToString());
}
//计算工作日,遇到周末跳过去,不减1,直到等于0跳出循环。
public string GetEndDate_A(string startDate, int days, List<T_HolidaysTypeEntity> listHolidayType)
{
DateTime startDateTemp = DateTime.Parse(startDate);
int daysTemp = days;
do
{
startDateTemp = startDateTemp.AddDays(1);
T_HolidaysTypeEntity resultModel = listHolidayType.Find(x => x.Date == startDateTemp);
if (resultModel != null)
{
if (resultModel.Type == 1 || resultModel.Type == 2)//节假日或周末
{
}
else if (resultModel.Type == 3)//补班需要减1
{
daysTemp = daysTemp - 1;
}
}
else
{
daysTemp = daysTemp - 1;
}
} while (daysTemp>0);
return startDateTemp.ToString("yyyy-MM-dd");
}
/// <summary>
/// 获取指定月份的最后一天
/// </summary>
/// <param name="dateTime">传入时间</param>
/// <returns></returns>
private DateTime GetCurrentMonthLastDay(DateTime dateTime)
{
DateTime d1 = new DateTime(dateTime.Year, dateTime.Month, 1);
DateTime d2 = d1.AddMonths(1).AddDays(-1);
return d2;
}