private string CanActivateRoute(Route route) { var depot = WorkManager.GetDepot(route.DepotId); if (depot.LastReportDate.HasValue && depot.LastReportDate.Value >= DateTime.Now) // route.CarryoutDate) { return("未到可激活时点"); } var routeType = _routeTypeCache[route.RouteTypeId]; // check Active Ahead var start = ClcUtils.GetDateTime(route.StartTime).Subtract(new TimeSpan(0, routeType.ActivateLead, 0)); var end = ClcUtils.GetDateTime(route.EndTime); if (!ClcUtils.NowInTimeZone(start, end)) { return($"未到激活提前量({routeType.ActivateLead}分钟)或已过结束时间"); } // check same workerId in same route var workers = _workerRepository.GetAllList(w => w.RouteId == route.Id); var r = workers.GroupBy(x => x.WorkerId).Where(g => g.Count() > 1).Select(g => g.Key).ToArray(); if (r.Length > 0) { return("同一人被多次安排"); } // check workRoles List <string> strRoles = new List <string>(routeType.WorkRoles.Split('|', ',')); var roles = _workRoleCache.GetList().FindAll(x => strRoles.Contains(x.Name)); foreach (WorkRole role in roles) { if (role.mustHave && workers.FirstOrDefault(w => w.WorkRoleId == role.Id) == null) { return($"任务中必须安排{role.Name}角色"); } } // check signin bool mustAllSignin = WorkManager.GetDepot(route.DepotId).ActiveRouteNeedCheckin; string unSigninNames = string.Empty; foreach (RouteWorker rw in workers) { var w = WorkManager.GetWorker(rw.WorkerId); unSigninNames += WorkManager.GetSigninInfo(w.DepotId, w.Id, ClcUtils.GetDateTime(route.StartTime)) == "未签到" ? w.Name + " " : string.Empty; if (mustAllSignin && unSigninNames != string.Empty) { return($"未签到的人员有{unSigninNames}"); } } return(null); }
private string CanActivateAffair(Affair affair) { var depot = WorkManager.GetDepot(affair.DepotId); if (depot.LastReportDate.HasValue && depot.LastReportDate.Value >= DateTime.Now) // route.CarryoutDate) { return("未到可激活时点"); } // check workplace var wp = WorkManager.GetWorkplace(affair.WorkplaceId); // check time var start = ClcUtils.GetDateTime(affair.StartTime).Subtract(new TimeSpan(12, 0, 0)); var end = ClcUtils.GetDateTime(affair.EndTime); if (!ClcUtils.NowInTimeZone(start, end)) { return($"已过结束时间或提前了半天"); } // check same workerId in same route var workers = _workerRepository.GetAllList(w => w.AffairId == affair.Id); var r = workers.GroupBy(x => x.WorkerId).Where(g => g.Count() > 1).Select(g => g.Key).ToArray(); if (r.Length > 0) { return("同一人被多次安排"); } // check workRoles List <string> strRoles = new List <string>(wp.WorkRoles.Split('|', ',')); var roles = _workRoleCache.GetList().FindAll(x => strRoles.Contains(x.Name)); foreach (WorkRole role in roles) { if (role.mustHave && workers.FirstOrDefault(w => w.WorkRoleId == role.Id) == null) { return($"任务中必须安排{role.Name}角色"); } } return(null); }
public Task <List <ComboboxItemDto> > GetComboItems(string typeName) { var lst = new List <ComboboxItemDto>(); switch (typeName) { case "ArticleType": foreach (ArticleType t in _articleTypeCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = string.Format("{0} {1}", t.Cn, t.Name) }); } break; case "Post": foreach (Post t in _postCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; case "RouteType": foreach (RouteType t in _routeTypeCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; case "TaskType": foreach (TaskType t in _taskTypeCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; case "TaskTypeFee": foreach (TaskType t in _taskTypeCache.GetList().FindAll(x => x.isTemporary == true)) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; case "WorkRole": foreach (WorkRole t in _workRoleCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; case "AskOpenStyle": foreach (string t in _askOpenStyleItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "BindStyle": foreach (string t in _bindStyleItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "Sex": foreach (string t in _sexItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "PoliticalStatus": foreach (string t in _politicalStatusItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "Education": foreach (string t in _educationItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "MaritalStatus": foreach (string t in _maritalStatusItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "LicenseType": foreach (string t in _licenseTypeItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "Status": foreach (string t in _statusItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "ProcessStyle": foreach (string t in _processStyleItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "Category": foreach (string t in _categoryItems) { lst.Add(new ComboboxItemDto { Value = t, DisplayText = t }); } break; case "OilType": foreach (var t in _oilTypeCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; case "VehicleMTType": foreach (var t in _vehicleMTTypeCache.GetList()) { lst.Add(new ComboboxItemDto { Value = t.Id.ToString(), DisplayText = t.Name }); } break; default: break; } return(Task.FromResult <List <ComboboxItemDto> >(lst)); }