public StatementAppService(SubProjectManager subProjectManager, StatementManager statementManager, TaskItemAssignmentManager taskItemAssignmentManager) { _subProjectManager = subProjectManager; _statementManager = statementManager; _taskItemAssignmentManager = taskItemAssignmentManager; }
/// <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)); }
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; }
/// <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("无法操作正在被使用的工序"); } }
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; }
/// <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; }
/// <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() )); }
/// <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)); }
/// <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); }