|
@@ -49,6 +49,10 @@ namespace OASystem.API.OAMethodLib
|
|
|
userNames = nameData.Data;
|
|
|
}
|
|
|
|
|
|
+ //计算时间段内工作日
|
|
|
+
|
|
|
+ int work_days = GetWorkDays(startDt, endDt);
|
|
|
+
|
|
|
//获取所有打卡数据
|
|
|
CheckInView checkIn = await _qiYeWeChatApiService.GetCheckin_MonthDataAsync(startDt, endDt); //时间段内所有 打卡数据
|
|
|
if (checkIn.errcode != 0)
|
|
@@ -112,8 +116,8 @@ namespace OASystem.API.OAMethodLib
|
|
|
Summary_Info? summary_Info = checkInData.summary_info;
|
|
|
if (summary_Info == null) { continue; }
|
|
|
|
|
|
- int work_days = summary_Info.work_days -1; //应出勤天数
|
|
|
- int regular_days = summary_Info.regular_days - 1; //正常出勤天数
|
|
|
+ //int work_days = summary_Info.work_days -1; //应出勤天数
|
|
|
+ //int regular_days = summary_Info.regular_days - 1; //正常出勤天数
|
|
|
|
|
|
meal_subsidy = work_days * 10; //应发放餐补
|
|
|
|
|
@@ -638,7 +642,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
pm_wsInfo.StartDate = startDt.ToString("yyyy-MM-dd");
|
|
|
pm_wsInfo.EndDate = endDt.AddDays(-1).ToString("yyyy-MM-dd");
|
|
|
pm_wsInfo.WorkDays = work_days; //当月应出勤天数
|
|
|
- pm_wsInfo.RegularDays = regular_days; //当月正常出勤天数
|
|
|
+ //pm_wsInfo.RegularDays = regular_days; //当月正常出勤天数
|
|
|
|
|
|
pm_wsInfo.SickLeave = sickLeaveTotal; //病假
|
|
|
pm_wsInfo.SomethingFalse = personalLeaveTotal; //事假
|
|
@@ -1031,58 +1035,89 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 获取时间段内节假日
|
|
|
+ /// 获取时间段内除周末 节假日外的 工作日
|
|
|
/// </summary>
|
|
|
/// <param name="startDt"></param>
|
|
|
/// <param name="endDt"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static async Task<Result> GetHoilDays(DateTime startDt,DateTime endDt)
|
|
|
+ public static int GetWorkDays(DateTime startDt,DateTime endDt)
|
|
|
{
|
|
|
- Result result = new Result();
|
|
|
-
|
|
|
+ //{
|
|
|
+ // "userId": 0,
|
|
|
+ // "yearMonth": "2023-09",
|
|
|
+ // "startDt": "2023-08-28",
|
|
|
+ // "endDt": "2023-09-27"
|
|
|
+ // }
|
|
|
+
|
|
|
+ string startYear = startDt.ToString("yyyy");
|
|
|
+ string endYear = endDt.ToString("yyyy");
|
|
|
+
|
|
|
+ var holidays = AppSettingsHelper.Get<HoliDaysDataSourceView>("HoliDayDataSource");
|
|
|
+ List<HoliDaysDataSourceView> holiDatas = new List<HoliDaysDataSourceView>();
|
|
|
+ if (startYear.Equals(endYear))
|
|
|
+ {
|
|
|
+ holiDatas.Add(holidays.Where(it => it.Year == startYear).FirstOrDefault());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ holiDatas.Add(holidays.Where(it => it.Year == startYear).FirstOrDefault());
|
|
|
+ holiDatas.Add(holidays.Where(it => it.Year == endYear).FirstOrDefault());
|
|
|
+ }
|
|
|
|
|
|
- HttpClient _httpClient = new HttpClient();
|
|
|
- var res = await _httpClient.GetAsync("https://timor.tech/api/holiday/year/"+ startDt.ToString("yyyy"));
|
|
|
+ int _totalDays = (int)(endDt - startDt).TotalDays;
|
|
|
+ List<HolidaysInfo> _holidays = new List<HolidaysInfo>();
|
|
|
+ List<HolidaysInfo> _weekdys = new List<HolidaysInfo>();
|
|
|
+ List<HolidaysInfo> _workdays = new List<HolidaysInfo>();
|
|
|
+ string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
|
|
|
|
|
|
- if (res.IsSuccessStatusCode)
|
|
|
+ for (int i = 0; i < _totalDays; i++)
|
|
|
{
|
|
|
- var stringResponse = await res.Content.ReadAsStringAsync();
|
|
|
-
|
|
|
- HoiDaysRes obj = JsonConvert.DeserializeObject<HoiDaysRes>(stringResponse);
|
|
|
+ string thisYear = startDt.ToString("yyyy");
|
|
|
+ string thisDt = startDt.ToString("MM-dd");
|
|
|
+ string thisYMD = startDt.ToString("yyyy-MM-dd");
|
|
|
+ string thisWeek = Day[Convert.ToInt32(startDt.DayOfWeek.ToString("d"))].ToString();
|
|
|
|
|
|
|
|
|
-
|
|
|
- if (obj.code == 0)
|
|
|
+ HoliDaysDataSourceView holiDaysData = new HoliDaysDataSourceView();
|
|
|
+ holiDaysData = holiDatas.Where(it => it.Year == thisYear).FirstOrDefault();
|
|
|
+ //周末
|
|
|
+ if (thisWeek.Equals("星期六") || thisWeek.Equals("星期日"))
|
|
|
{
|
|
|
- int hoilDays = 0;
|
|
|
- while (true)
|
|
|
+ HolidaysInfo holidaysInfo = new HolidaysInfo();
|
|
|
+ holidaysInfo = holiDaysData.Holidays.Where(it => it.HoliDate == thisDt).FirstOrDefault();
|
|
|
+ if (holidaysInfo != null)
|
|
|
{
|
|
|
- string dt = startDt.ToString("MM-dd");
|
|
|
-
|
|
|
- if (startDt == endDt)
|
|
|
+ if (holidaysInfo.HoliName.Equals("工作日"))
|
|
|
{
|
|
|
+ _workdays.Add(new HolidaysInfo { HoliDate = thisYMD, HoliName = Day[Convert.ToInt32(startDt.DayOfWeek.ToString("d"))].ToString() });
|
|
|
+ startDt = startDt.AddDays(1);
|
|
|
continue;
|
|
|
}
|
|
|
- startDt.AddDays(1);
|
|
|
}
|
|
|
-
|
|
|
- result.Code = 0;
|
|
|
- result.Data = hoilDays;
|
|
|
+ _weekdys.Add(new HolidaysInfo { HoliDate = thisYMD, HoliName = thisWeek });
|
|
|
+ startDt = startDt.AddDays(1);
|
|
|
+ continue;
|
|
|
}
|
|
|
- int code = obj.code;
|
|
|
|
|
|
- }
|
|
|
-
|
|
|
- return result;
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
+ //节假日
|
|
|
+ if (holiDaysData != null)
|
|
|
+ {
|
|
|
+ HolidaysInfo holidaysInfo = new HolidaysInfo();
|
|
|
+ holidaysInfo = holiDaysData.Holidays.Where(it => it.HoliDate == thisDt).FirstOrDefault();
|
|
|
+ if (holidaysInfo != null)
|
|
|
+ {
|
|
|
+ _holidays.Add(new HolidaysInfo { HoliDate = thisYMD, HoliName = holidaysInfo.HoliName });
|
|
|
+ startDt = startDt.AddDays(1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //工作日
|
|
|
+ _workdays.Add(new HolidaysInfo { HoliDate = thisYMD, HoliName = Day[Convert.ToInt32(startDt.DayOfWeek.ToString("d"))].ToString() });
|
|
|
|
|
|
- public class HoiDaysRes
|
|
|
- {
|
|
|
- public int code { get; set; }
|
|
|
+ startDt = startDt.AddDays(1);
|
|
|
+ }
|
|
|
|
|
|
- public object holiday { get; set; }
|
|
|
+ return _workdays.Count();
|
|
|
}
|
|
|
}
|
|
|
}
|