コード例 #1
0
        /// <summary>
        /// 检查工序是否被占用
        /// </summary>
        /// <param name="procedureStepId"></param>
        /// <exception cref="UserFriendlyException"></exception>
        public void CheckProcedureStepOccupation(Guid procedureStepId)
        {
            var procedureStep = _repositoryProcedureStep.Get(procedureStepId);

            // 如果有一个正在台座上的构件(v.Pedestal != null),与当前所在工序与所操作的工序相同(SubProjectManager.GetCurrentStepPriority(v) == procedureStep.Priority),则会报错
            if (_repositorySubProject.GetAll().Include(v => v.Pedestal)
                .Any(v => SubProjectManager.GetCurrentStepPriority(v) == procedureStep.Priority &&
                     v.ProcedureId == procedureStep.ProcedureId && v.Pedestal != null))
            {
                throw new UserFriendlyException("无法操作正在被使用的工序");
            }
        }
コード例 #2
0
        /// <summary>
        /// 获取当前构件中的所有的工作项
        /// </summary>
        /// <param name="subProjectId"></param>
        /// <returns></returns>
        public async Task <IQueryable <ProcedureStepTaskItem> > GetTaskItemsBySubProjectId(Guid subProjectId)
        {
            var subProject = await _repositorySubProject.GetAsync(subProjectId);

            // 获取当前优先级的工序id
            var procedureStepIds = _repositoryProcedureStep.GetAll().Where(v =>
                                                                           v.ProcedureId == subProject.ProcedureId &&
                                                                           v.Priority == SubProjectManager.GetCurrentStepPriority(subProject)).Select(v => v.Id);

            return(_repositoryPt.GetAll().Where(v => procedureStepIds.Contains(v.ProcedureStepId))
                   .Include(v => v.ProcedureStep)
                   .Include(v => v.TaskItem));
        }
コード例 #3
0
        /// <summary>
        /// 通过subProjectId获得工作项,并筛选未被分派的工作项
        /// </summary>
        /// <param name="subProjectId"></param>
        /// <returns></returns>
        public async Task <IQueryable <ProcedureStepTaskItem> > GetTaskItemsUnAssigned(Guid subProjectId)
        {
            var subProject = await _repositorySubProject.GetAsync(subProjectId);

            // 获取同优先级工序
            var procedureStepIds = _repositoryProcedureStep.GetAll().Where(v =>
                                                                           v.ProcedureId == subProject.ProcedureId &&
                                                                           v.Priority == SubProjectManager.GetCurrentStepPriority(subProject)).Select(v => v.Id);
            // 获取被分派的工作项
            var taskItemIdAssigned = _repositoryTaskItemAssignment.GetAll()
                                     .Where(v => v.SubProjectId == subProjectId).Select(v => v.ProcedureStepTaskItemId);
            // 筛选未被分派的工作项
            var query = _repositoryPt.GetAll().Where(v => !taskItemIdAssigned.Contains(v.Id))
                        // 筛选同优先级的工作项
                        .Where(v => procedureStepIds.Contains(v.ProcedureStepId))
                        .Include(v => v.ProcedureStep)
                        .Include(v => v.TaskItem);

            return(query);
        }