|
@@ -182,13 +182,23 @@ 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)
|
|
|
+ while (true)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
if (!await IsWorkDay(beginTime))
|
|
|
beginTime = beginTime.AddDays(1);
|
|
|
else
|
|
@@ -197,7 +207,7 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
|
|
|
int w = timeConfig.Count;
|
|
|
int days = 1;
|
|
|
while (true && w != 0)
|
|
|
- {
|
|
|
+ {
|
|
|
if (await IsWorkDay(beginTime.AddDays(days)))
|
|
|
{
|
|
|
beginTime = beginTime.AddDays(days);
|
|
@@ -211,11 +221,11 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
|
|
|
}
|
|
|
}
|
|
|
beginTime = beginTime.AddSeconds(-1);
|
|
|
- while(true)
|
|
|
+ while (true)
|
|
|
{
|
|
|
- if(await IsWorkDay(beginTime))
|
|
|
+ if (await IsWorkDay(beginTime))
|
|
|
{
|
|
|
- if (beginTime< DateTime.Parse(beginTime.ToShortDateString()+" "+ timeConfig.WorkTime[0]+":00"))
|
|
|
+ if (beginTime < DateTime.Parse(beginTime.ToShortDateString() + " " + timeConfig.WorkTime[0] + ":00"))
|
|
|
{
|
|
|
beginTime = DateTime.Parse(beginTime.AddDays(-1).ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00");
|
|
|
}
|
|
@@ -224,20 +234,104 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- else if(!await IsWorkDay(beginTime))
|
|
|
+ else if (!await IsWorkDay(beginTime))
|
|
|
{
|
|
|
- beginTime = DateTime.Parse(beginTime.AddDays(-1).ToShortDateString() +" "+ timeConfig.WorkTime[1] + ":00");
|
|
|
+ beginTime = DateTime.Parse(beginTime.AddDays(-1).ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00");
|
|
|
}
|
|
|
//else
|
|
|
//{
|
|
|
// beginTime = beginTime.AddDays(1);
|
|
|
//}
|
|
|
}
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ //计算即将超期时间
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ if (!await IsWorkDay(startTime))
|
|
|
+ startTime = startTime.AddDays(1);
|
|
|
+ else
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+ totalWorkMinutesType1 = 0;
|
|
|
+ days = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ days++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算50%即将超期时间
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ if (!await IsWorkDay(startTimeOne))
|
|
|
+ startTimeOne = startTimeOne.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 && 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++;
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
case 2:
|
|
|
//计算一天多少个工作小时
|