public virtual async Task <List <EquipmentInfoDto> > GetEquipmentInfos(int?processTypeId, int?unitId) { var manager = Manager as EquipmentManager; var processTypes = await ProcessTypeManager.GetAllList(); var query = Manager.GetAll().Where(o => o.UnitId == unitId); if (processTypeId.HasValue) { query = from equipment in query join equipmentProcessType in EquipmentProcessTypeRepository.GetAll() on equipment.Id equals equipmentProcessType.EquipmentId where equipmentProcessType.ProcessTypeId == processTypeId select equipment; } var equipments = await query.Include(o => o.EquipmentProcessTypes).ToListAsync(); var result = new List <EquipmentInfoDto>(); foreach (var equipment in equipments) { var dto = equipment.MapTo <EquipmentInfoDto>(); dto.ProcessTypeName = string.Join(',', equipment.EquipmentProcessTypes.Select(o => processTypes.FirstOrDefault(p => p.Id == o.ProcessTypeId)?.ProcessTypeName)); result.Add(dto); } return(result); }
/// <summary> /// 设备现场信息 /// </summary> /// <param name="equipmentProcessInfoSearchDto"></param> /// <returns></returns> public virtual async Task <List <EquipmentProcessInfoDto> > GetEquipmentProcessInfos(EquipmentProcessInfoSearchDto equipmentProcessInfoSearchDto) { var manager = Manager as EquipmentManager; var processTypes = await ProcessTypeManager.GetAllList(); var query = Manager.GetAll() .Include(o => o.Operator) .Where(o => o.UnitId == equipmentProcessInfoSearchDto.UnitId) .WhereIf(!equipmentProcessInfoSearchDto.Keyword.IsNullOrEmpty(), o => o.EquipmentSN.Contains(equipmentProcessInfoSearchDto.Keyword)); if (equipmentProcessInfoSearchDto.ProcessTypeId.HasValue) { query = from equipment in query join equipmentProcessType in EquipmentProcessTypeRepository.GetAll() on equipment.Id equals equipmentProcessType.EquipmentId where equipmentProcessType.ProcessTypeId == equipmentProcessInfoSearchDto.ProcessTypeId select equipment; } var equipments = await query.Include(o => o.EquipmentProcessTypes).ToListAsync(); var result = new List <EquipmentProcessInfoDto>(); var startDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); foreach (var equipment in equipments) { var dto = equipment.MapTo <EquipmentProcessInfoDto>(); dto.Operator = equipment.Operator?.Name; dto.ProcessTypeName = string.Join(',', equipment.EquipmentProcessTypes.Select(o => processTypes.FirstOrDefault(p => p.Id == o.ProcessTypeId)?.ProcessTypeName)); //获取设备正在加工中的任务 var task = await manager.GetProcessingTask(equipment.Id); //设备上安排的未完成任务 //var unFinishedTasks =await GetUnFinishedTasks(equipment.Id); dto.TaskId = task?.Id; dto.PartSN = task?.Part?.PartSN; dto.PartName = task?.Part?.PartName; dto.ProjectSN = task?.Part?.Project?.ProjectSN; dto.ProcessTaskProgressInfo = task?.ProcessTaskProgressInfo; //dto.Tasks = unFinishedTasks; dto.TaskNumber = await manager.GetUnFinishedTasks(equipment.Id).CountAsync(); dto.EquipmentLoadInfo = await manager.GetLoadInfo(equipment.Id, startDate, startDate.AddDays(7)); result.Add(dto); } return(result); }
public virtual async Task <EquipmentInfoDto> GetEquipmentInfo(int equipmentId) { var processTypes = await ProcessTypeManager.GetAllList(); using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.MustHaveTenant)) { //不直接调用Manager.GetAll,以避免使用底层权限过滤 var equipment = await Manager.Repository.GetAll().Include(o => o.EquipmentProcessTypes).Where(o => o.Id == equipmentId) .SingleOrDefaultAsync(); var dto = equipment.MapTo <EquipmentInfoDto>(); dto.ProcessTypeName = string.Join(',', equipment.EquipmentProcessTypes.Select(o => processTypes.FirstOrDefault(p => p.Id == o.ProcessTypeId)?.ProcessTypeName)); return(dto); } }