Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }