|
@@ -182,9 +182,19 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
|
|
|
startTimeOne = startTimeOne.AddSeconds(scondsOne);
|
|
|
break;
|
|
|
case 1:
|
|
|
+
|
|
|
+ //计算一天多少个工作小时
|
|
|
+ var durationType1 = WorkEndTime - WorkBeginTime;
|
|
|
+ double workMinutesType1 = durationType1.TotalMinutes;
|
|
|
+ double totalWorkMinutesType1 = (workMinutesType1 * timeConfig.Count) * (timeConfig.Percentage / 100.00);
|
|
|
+ double totalWorkMinutesOneType1 = (workMinutesType1 * timeConfig.Count) * (timeConfig.PercentageOne / 100.00);
|
|
|
+
|
|
|
+ #region 计算期满时间
|
|
|
if (!isWorkSend)
|
|
|
{
|
|
|
beginTime = WorkBeginTime;
|
|
|
+ startTime = WorkBeginTime;
|
|
|
+ startTimeOne = WorkBeginTime;
|
|
|
}
|
|
|
while(true)
|
|
|
{
|
|
@@ -211,7 +221,7 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
|
|
|
}
|
|
|
}
|
|
|
beginTime = beginTime.AddSeconds(-1);
|
|
|
- while(true)
|
|
|
+ while (true)
|
|
|
{
|
|
|
if(await IsWorkDay(beginTime))
|
|
|
{
|
|
@@ -233,11 +243,99 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
|
|
|
// beginTime = beginTime.AddDays(1);
|
|
|
//}
|
|
|
}
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ //计算即将超期时间
|
|
|
+ while(true)
|
|
|
+ {
|
|
|
+ if (!await IsWorkDay(startTime))
|
|
|
+ startTime = startTime.AddDays(1);
|
|
|
+ else
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- var scondsPlan = (beginTime - startTime).TotalSeconds * (timeConfig.Percentage / 100.00);
|
|
|
- startTime = startTime.AddSeconds(scondsPlan);
|
|
|
- var scondsPlanOne = (beginTime - startTimeOne).TotalSeconds * (timeConfig.PercentageOne / 100.00);
|
|
|
- startTimeOne = startTimeOne.AddSeconds(scondsPlanOne);
|
|
|
+ days = 1;
|
|
|
+ while(true && totalWorkMinutesType1!=0)
|
|
|
+ {
|
|
|
+ if(await IsWorkDay(startTime.AddDays(days)))
|
|
|
+ {
|
|
|
+ if (totalWorkMinutesType1> workMinutesType1)
|
|
|
+ {
|
|
|
+ startTime = startTime.AddDays(days);
|
|
|
+ totalWorkMinutesType1 = totalWorkMinutesType1 - workMinutesType1;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (startTime.AddMinutes(totalWorkMinutesType1) > DateTime.Parse(startTime.ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00"))
|
|
|
+ {
|
|
|
+ totalWorkMinutesType1 = totalWorkMinutesType1 - ((DateTime.Parse(startTime.ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00") - startTime).TotalMinutes);
|
|
|
+ startTime = startTime.AddDays(days);
|
|
|
+ startTime = DateTime.Parse(startTime.ToShortDateString() + " " + timeConfig.WorkTime[0] + ":00").AddMinutes(totalWorkMinutesType1);
|
|
|
+ totalWorkMinutesType1 = 0;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ startTime = startTime.AddMinutes(totalWorkMinutesType1);
|
|
|
+ totalWorkMinutesOneType1 = 0;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ days++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算50%即将超期时间
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ if (!await IsWorkDay(startTimeOne))
|
|
|
+ startTimeOne = startTimeOne.AddDays(1);
|
|
|
+ else
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ days = 1;
|
|
|
+ while (true && totalWorkMinutesOneType1 != 0)
|
|
|
+ {
|
|
|
+ if (await IsWorkDay(startTimeOne.AddDays(days)))
|
|
|
+ {
|
|
|
+ if (totalWorkMinutesOneType1 > workMinutesType1)
|
|
|
+ {
|
|
|
+ startTimeOne = startTimeOne.AddDays(days);
|
|
|
+ totalWorkMinutesOneType1 = totalWorkMinutesOneType1 - workMinutesType1;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ else if (totalWorkMinutesOneType1 <= workMinutesType1)
|
|
|
+ {
|
|
|
+ if (startTimeOne.AddMinutes(totalWorkMinutesOneType1) > DateTime.Parse(startTimeOne.ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00"))
|
|
|
+ {
|
|
|
+ totalWorkMinutesOneType1 = totalWorkMinutesOneType1 - ((DateTime.Parse(startTimeOne.ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00") - startTimeOne).TotalMinutes);
|
|
|
+ startTimeOne = startTimeOne.AddDays(days);
|
|
|
+ startTimeOne = DateTime.Parse(startTimeOne.ToShortDateString() + " " + timeConfig.WorkTime[0] + ":00").AddMinutes(totalWorkMinutesOneType1);
|
|
|
+ totalWorkMinutesOneType1 = 0;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ startTimeOne = startTimeOne.AddMinutes(totalWorkMinutesOneType1);
|
|
|
+ totalWorkMinutesOneType1 = 0;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ days++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //var scondsPlan = (beginTime - startTime).TotalSeconds * (timeConfig.Percentage / 100.00);
|
|
|
+ //startTime = startTime.AddSeconds(scondsPlan);
|
|
|
+ //var scondsPlanOne = (beginTime - startTimeOne).TotalSeconds * (timeConfig.PercentageOne / 100.00);
|
|
|
+ //startTimeOne = startTimeOne.AddSeconds(scondsPlanOne);
|
|
|
break;
|
|
|
case 2:
|
|
|
//计算一天多少个工作小时
|