|
@@ -759,7 +759,9 @@ namespace OASystem.API.OAMethodLib
|
|
|
// continue;
|
|
|
//}
|
|
|
|
|
|
- if (Convert.ToDateTime(date_Range.new_begin_dt) < startDt || Convert.ToDateTime(date_Range.new_begin_dt) > endDt)
|
|
|
+ //假期只要开始时间,结束时间在计算时间范围 即纳入计算
|
|
|
+ if ((Convert.ToDateTime(date_Range.new_begin_dt) < startDt || Convert.ToDateTime(date_Range.new_begin_dt) > endDt) &&
|
|
|
+ (Convert.ToDateTime(date_Range.new_end_dt) < startDt || Convert.ToDateTime(date_Range.new_end_dt) > endDt))
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
@@ -793,11 +795,34 @@ namespace OASystem.API.OAMethodLib
|
|
|
if (date_Range.type == "halfday")
|
|
|
{
|
|
|
new_duration = Convert.ToDecimal(date_Range.new_duration) / 86400.00M;
|
|
|
+
|
|
|
+ if (date_Range.new_begin_dt < startDt)
|
|
|
+ {
|
|
|
+ decimal new_duration_count = new_duration;
|
|
|
+ new_duration = 0.00M;
|
|
|
+
|
|
|
+ for (int i = 0; i < new_duration_count; i++)
|
|
|
+ {
|
|
|
+ DateTime thisDt = date_Range.new_begin_dt.AddDays(i);
|
|
|
+ Sys_Calendar sys_Calendar = new Sys_Calendar();
|
|
|
+ sys_Calendar = sys_Calendars.Where(it => it.Dt == thisDt.ToString("yyyy-MM-dd")).FirstOrDefault();
|
|
|
+ if (sys_Calendar != null)
|
|
|
+ {
|
|
|
+ if (sys_Calendar.IsWorkDay)
|
|
|
+ {
|
|
|
+
|
|
|
+ new_duration++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
unit = "天";
|
|
|
startTime = date_Range_new_begin_dt.ToString("yyyy-MM-dd") + " 09:00";
|
|
|
endTime = date_Range_new_end_dt.ToString("yyyy-MM-dd") + " 18:00";
|
|
|
|
|
|
- if (new_duration >= 0.50M)
|
|
|
+ if (new_duration > 0.50M)
|
|
|
{
|
|
|
if (slice_info != null)
|
|
|
{
|
|
@@ -805,7 +830,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
if (slice_info.day_items.Count > 1)
|
|
|
{
|
|
|
-
|
|
|
date_Range_new_begin_dt = slice_info.day_items[0].daytimeDt;
|
|
|
date_Range_new_end_dt = slice_info.day_items[slice_info.day_items.Count - 1].daytimeDt;
|
|
|
|
|
@@ -1255,7 +1279,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
Date_range date_Range = attendance.date_range;
|
|
|
|
|
|
//筛选 不在工作日内的假勤申请
|
|
|
- if (date_Range.new_begin_dt < startDt || date_Range.new_end_dt < endDt)
|
|
|
+ if (date_Range.new_begin_dt < startDt || date_Range.new_end_dt > endDt)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
@@ -1278,10 +1302,10 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
new_duration = Convert.ToDecimal(date_Range.new_duration) / 86400.00M;
|
|
|
unit = "天";
|
|
|
- startTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 09:00";
|
|
|
- endTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 18:00";
|
|
|
- startTime1 = "09:00:00";
|
|
|
- endTime1 = "18:00:00";
|
|
|
+ startTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 00:00";
|
|
|
+ endTime = date_Range.new_end_dt.ToString("yyyy-MM-dd") + " 00:00";
|
|
|
+ startTime1 = "00:00:00";
|
|
|
+ endTime1 = "00:00:00";
|
|
|
}
|
|
|
else if (date_Range.type == "hour")
|
|
|
{
|
|
@@ -1307,20 +1331,28 @@ namespace OASystem.API.OAMethodLib
|
|
|
//处理开始时间 是否在当天工作时间内
|
|
|
if (i == 0) //开始时间
|
|
|
{
|
|
|
- string ccStartTime = thisDt.ToString("HH:mm:ss");
|
|
|
- if (!IsWorkTime(ccStartTime))
|
|
|
+
|
|
|
+ if (!date_Range.type.Equals("halfday"))
|
|
|
{
|
|
|
- continue;
|
|
|
- }
|
|
|
+ string ccStartTime = thisDt.ToString("HH:mm:ss");
|
|
|
+ if (!IsWorkTime(ccStartTime))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//处理结束时间 是否在当天工作时间内
|
|
|
if (i == days - 1)
|
|
|
{
|
|
|
- string ccStartTime = date_Range.new_end_dt.ToString("HH:mm:ss");
|
|
|
- if (!IsWorkTime(ccStartTime))
|
|
|
+ if (!date_Range.type.Equals("halfday"))
|
|
|
{
|
|
|
- continue;
|
|
|
+ string ccStartTime = date_Range.new_end_dt.ToString("HH:mm:ss");
|
|
|
+ if (!IsWorkTime(ccStartTime))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|