Example #1
0
 public StatementAppService(SubProjectManager subProjectManager, StatementManager statementManager,
                            TaskItemAssignmentManager taskItemAssignmentManager)
 {
     _subProjectManager         = subProjectManager;
     _statementManager          = statementManager;
     _taskItemAssignmentManager = taskItemAssignmentManager;
 }
Example #2
0
        /// <summary>
        /// 获得所有未分配工作台的项目
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <PagedResultDto <SubProjectDto> > GetAllUnbinding(GetAllProductionUnbindingInput input)
        {
            var query = _subProjectManager.GetAll()
                        .WhereIf(input.ProjectId.HasValue, v => v.ProjectId == input.ProjectId)
                        .Include(v => v.Pedestal)
                        .Where(v => v.Pedestal == null || SubProjectManager.IsCurrentStepFinished(v));

            return(await GetAllAsyncByQueryFilter <SubProjectDto, SubProject>(query));
        }
Example #3
0
 public PedestalAppService(IRepository <Pedestal, Guid> repository,
                           IRepository <WorkshopLayout, Guid> workshopLayoutRepository,
                           IWorkshopLayoutAppService workshopLayoutAppService,
                           SubProjectManager subProjectManager, PedestalManager pedestalManager)
 {
     _repository = repository;
     _workshopLayoutRepository = workshopLayoutRepository;
     _workshopLayoutAppService = workshopLayoutAppService;
     _subProjectManager        = subProjectManager;
     _pedestalManager          = pedestalManager;
 }
Example #4
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("无法操作正在被使用的工序");
            }
        }
Example #5
0
 public ProductionAppService(
     PedestalManager pedestalManager,
     TaskItemManager taskItemManager, NotificationManager notificationManager,
     SubProjectManager subProjectManager, TaskItemAssignmentManager taskItemAssignmentManager,
     MessageManager messageManager, IRepository <SubProjectStageLog, Guid> repositorySubLog)
 {
     _pedestalManager           = pedestalManager;
     _taskItemManager           = taskItemManager;
     _notificationManager       = notificationManager;
     _subProjectManager         = subProjectManager;
     _taskItemAssignmentManager = taskItemAssignmentManager;
     _messageManager            = messageManager;
     _repositorySubLog          = repositorySubLog;
 }
Example #6
0
        /// <summary>
        /// 获取bim模型上构件的dbid并分类
        /// </summary>
        /// <param name="bimModelFileItemId"></param>
        /// <returns></returns>
        public async Task <GetBimModelDbIdsOutput> GetBimModelDbIds(Guid bimModelFileItemId)
        {
            var query = _planManager.GetAll()
                        .Where(v => v.BimModelFileItemId == bimModelFileItemId && v.BimModelDbId != null);

            return(new GetBimModelDbIdsOutput
            {
                // 完成了的构件
                FinishedDbIds = await query.Where(v => v.IsFinished).Select(v => (int)v.BimModelDbId).ToArrayAsync(),
                // 无状态
                NoStateDbIds = await query.Where(v => v.StageCode.IsNullOrWhiteSpace()).Select(v => (int)v.BimModelDbId).ToArrayAsync(),
                // 正在处理的构件
                ProcessingDbIds = await query.Where(v => !v.IsFinished && !v.StageCode.IsNullOrWhiteSpace()).Select(v => (int)v.BimModelDbId).ToArrayAsync(),
                // 当前工序完成的DbId
                CurrentStepFinishedDbIds = await query.Where(v => SubProjectManager.IsCurrentStepFinished(v)).Select(v => (int)v.BimModelDbId).ToArrayAsync(),
            });
        }
 public TaskItemAssignmentAppService(
     IRepository <TaskItemAssignment, Guid> repositoryTaskItemAssignmentData,
     TaskItemManager taskItemManager,
     ProjectManager projectManager,
     NotificationManager notificationManager,
     SubProjectManager subProjectManager, IRepository <User, long> repositoryUser,
     TaskItemAssignmentManager taskItemAssignmentManager, RoleManager roleManager, StatementManager statementManager) : base(
         repositoryTaskItemAssignmentData)
 {
     _taskItemManager           = taskItemManager;
     _projectManager            = projectManager;
     _notificationManager       = notificationManager;
     _subProjectManager         = subProjectManager;
     _repositoryUser            = repositoryUser;
     _taskItemAssignmentManager = taskItemAssignmentManager;
     _roleManager      = roleManager;
     _statementManager = statementManager;
 }
Example #8
0
        /// <summary>
        /// 获得所有正在处理中的子项目,附带台座信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <PagedResultDto <SubProjectDto> > GetAllInProcessing(GetAllProductionBase input)
        {
            var query = _subProjectManager.GetAll().Include(v => v.Pedestal)
                        .WhereIf(input.ProjectId.HasValue, v => v.ProjectId == input.ProjectId)
                        .Where(v => v.Pedestal != null && !SubProjectManager.IsCurrentStepFinished(v));
            var totalCount = await query.CountAsync();

            var entities = await query.ToListAsync();

            // 需要添加台座信息,所以不能直接用父类方法
            return(new PagedResultDto <SubProjectDto>(
                       totalCount, entities.Select(v =>
            {
                var subProject = v.MapTo <SubProjectDto>();
                subProject.PedestalDto = v.Pedestal.MapTo <PedestalDto>();
                return subProject;
            }).ToList()
                       ));
        }
Example #9
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));
        }
Example #10
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);
        }