|
@@ -35,15 +35,18 @@ namespace Hotline.Application.TimeLimits
|
|
|
//新增工作日
|
|
|
case ETimeType.WorkDay:
|
|
|
//检查时间段内是否存在休息日或者工作日
|
|
|
+ int day = 1;
|
|
|
for (int i = 1; i < timeValue+1; i++)
|
|
|
{
|
|
|
- if(IsWorkDay(beginTime.AddDays(1)))
|
|
|
+ if(IsWorkDay(beginTime.AddDays(day)))
|
|
|
{
|
|
|
- beginTime = beginTime.AddDays(1);
|
|
|
+ beginTime = beginTime.AddDays(day);
|
|
|
+ day = 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
i--;
|
|
|
+ day++;
|
|
|
}
|
|
|
}
|
|
|
return new TimeResult { EndTime = beginTime, RuleStr = timeValue + "个工作日" };
|
|
@@ -62,7 +65,7 @@ namespace Hotline.Application.TimeLimits
|
|
|
|
|
|
|
|
|
|
|
|
- //public async Task Get(string WorkflowCode, DateTime BeginTime, Dictionary<string, string> param)
|
|
|
+ //public async Task<TimeResult> Get(string WorkflowCode, DateTime BeginTime, Dictionary<string, string> param)
|
|
|
//{
|
|
|
// //1>> 取出对应已启用的配置
|
|
|
// var model = await _timeLimitRepository.GetAsync(x => x.WorkflowCode == WorkflowCode && x.TimeLimitState == Share.Enums.Settings.ETimeLimitState.Enable);
|
|
@@ -70,18 +73,50 @@ namespace Hotline.Application.TimeLimits
|
|
|
// {
|
|
|
// #region 组合优先级
|
|
|
// //2>> 优先级 组合逻辑判定 (组合重复取最短时间)
|
|
|
- // //if (model.Combination?.Count > 0)
|
|
|
- // //{
|
|
|
- // // foreach (var item in model.Combination)
|
|
|
- // // {
|
|
|
- // // int countx = item.CombinationParam.Count(x=> param.Any(d=>d.Key == x.Code && d.Value == x.ParamValue));
|
|
|
-
|
|
|
- // // if (countx== item.CombinationParam.Count)
|
|
|
- // // {
|
|
|
-
|
|
|
- // // }
|
|
|
- // // }
|
|
|
- // //}
|
|
|
+ // if (model.Combination?.Count > 0)
|
|
|
+ // {
|
|
|
+ // //待计算集合
|
|
|
+ // List<CombinationModel> list = new List<CombinationModel>();
|
|
|
+ // foreach (var item in model.Combination)
|
|
|
+ // {
|
|
|
+ // //判断是否包含当前组合的所有参数
|
|
|
+ // int countx = item.CombinationParam.Count(x => param.Any(d => d.Key == x.Code && d.Value == x.ParamValue));
|
|
|
+ // //如果包含 就加入到待计算的集合中
|
|
|
+ // if (countx == item.CombinationParam.Count)
|
|
|
+ // {
|
|
|
+ // list.Add(item);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // if (list.Count>0)
|
|
|
+ // {
|
|
|
+ // //获取符合参数条件的组合最小时间单位
|
|
|
+ // var comHavMinParam = list.OrderBy(x => x.Hour).FirstOrDefault();
|
|
|
+ // if (comHavMinParam != null && comHavMinParam?.TimeLimit != ETimeType.WorkDay)
|
|
|
+ // {
|
|
|
+ // return CalcEndTime(BeginTime, comHavMinParam.TimeLimit, comHavMinParam.TimeLimitValue);
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // //获取符合参数条件的组合(工作日)最小单位
|
|
|
+ // var comHavMinParamWorkDay = list.OrderBy(x => x.Hour).FirstOrDefault(x => x.TimeLimit == ETimeType.WorkDay);
|
|
|
+
|
|
|
+ // //如果符合条件的组合和符合条件的组合(工作日)都存在
|
|
|
+ // if (comHavMinParam != null && comHavMinParamWorkDay != null)
|
|
|
+ // {
|
|
|
+ // var comMinParamResult = CalcEndTime(BeginTime, comHavMinParam.TimeLimit, comHavMinParam.TimeLimitValue);
|
|
|
+ // var comMinParamWorkDayResult = CalcEndTime(BeginTime, comHavMinParamWorkDay.TimeLimit, comHavMinParamWorkDay.TimeLimitValue);
|
|
|
+ // if (comMinParamResult.EndTime != null && comMinParamWorkDayResult.EndTime != null && DateTime.Compare(comMinParamResult.EndTime.Value, comMinParamWorkDayResult.EndTime.Value) <= 0)
|
|
|
+ // {
|
|
|
+ // return comMinParamResult;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // return comMinParamWorkDayResult;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
// #endregion
|
|
|
|
|
|
// #region 排序优先级
|
|
@@ -89,15 +124,52 @@ namespace Hotline.Application.TimeLimits
|
|
|
// if (model.Priority?.Count > 0)
|
|
|
// {
|
|
|
// var firstModel = model.Priority.OrderBy(x => x.Sort).FirstOrDefault(x => param.Any(d => d.Key == x.Code && d.Value == x.ParamTypeValue));
|
|
|
- // #region 计算结束时间
|
|
|
+ // //如果找到排序条件 走排序逻辑
|
|
|
+ // if (firstModel!=null)
|
|
|
+ // {
|
|
|
+ // var CanUseModel = model.ParamArr?.FirstOrDefault(x => x.ParamType == firstModel.ParamType && x.Id == firstModel.Code);
|
|
|
+ // if(CanUseModel!=null)
|
|
|
+ // {
|
|
|
+ // #region 计算结束时间
|
|
|
+ // return CalcEndTime(BeginTime, CanUseModel.TimeLimitType, CanUseModel.TimeLimitValue);
|
|
|
+ // #endregion
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
-
|
|
|
- // #endregion
|
|
|
// }
|
|
|
// #endregion
|
|
|
|
|
|
// #region 配置优先级
|
|
|
-
|
|
|
+ // // 4>> 优先级 配置逻辑判定
|
|
|
+ // if (model.ParamArr?.Count>0)
|
|
|
+ // {
|
|
|
+ // //获取符合参数条件的配置最小时间单位
|
|
|
+ // var havMinParam = model.ParamArr.OrderBy(x=>x.Hour).FirstOrDefault(x => x.TimeLimitType != ETimeType.WorkDay && param.Any(d => d.Key == x.ParamType && d.Value == x.Id));
|
|
|
+ // //获取符合参数条件的配置(工作日)最小时间单位
|
|
|
+ // var havMinParamWorkDay = model.ParamArr.OrderBy(x => x.Hour).FirstOrDefault(x => x.TimeLimitType == ETimeType.WorkDay && param.Any(d => d.Key == x.ParamType && d.Value == x.Id));
|
|
|
+ // //如果符合条件的参数和符合条件的参数(工作日)都存在
|
|
|
+ // if (havMinParam!=null && havMinParamWorkDay != null)
|
|
|
+ // {
|
|
|
+ // var minParamResult = CalcEndTime(BeginTime, havMinParam.TimeLimitType, havMinParam.TimeLimitValue);
|
|
|
+ // var minParamWorkDayResult = CalcEndTime(BeginTime, havMinParam.TimeLimitType, havMinParam.TimeLimitValue);
|
|
|
+ // if(minParamResult.EndTime != null && minParamWorkDayResult.EndTime != null && DateTime.Compare(minParamResult.EndTime.Value, minParamWorkDayResult.EndTime.Value) <= 0)
|
|
|
+ // {
|
|
|
+ // return minParamResult;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // return minParamWorkDayResult;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // return new TimeResult() { EndTime = null, RuleId = "", RuleStr = "" };
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // return new TimeResult() { EndTime = null, RuleId = "", RuleStr = "" };
|
|
|
+ // }
|
|
|
|
|
|
// #endregion
|
|
|
|