Пример #1
0
        /// <summary>
        /// 获取当前加工点绑定了的所有模具厂
        /// </summary>
        /// <returns></returns>
        public virtual async Task <object> GetCustomers()
        {
            using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.MustHaveTenant))
            {
                var units = await MESUnitManager
                            .GetAll()
                            .Include(o => o.Tenant)
                            .Where(o => MasterDbContext.GetJsonValueNumber(o.Property, "$.TenantId") == AbpSession.TenantId.Value)
                            .Select(o => new { o.TenantId, o.Tenant.Name, o.Id })
                            .ToListAsync();

                var tenants = units
                              .Select(o => new { o.TenantId, o.Name })
                              .Distinct();

                var result = new List <object>();

                foreach (var tenant in tenants)
                {
                    var unitIds   = units.Where(o => o.TenantId == tenant.TenantId).Select(o => o.Id);
                    var baseQuery = ProcessTaskManager.GetAll().Where(p => p.TenantId == tenant.TenantId && p.Status.Contains(ProcessTask.Status_SendProcessor) && p.SupplierId != null && unitIds.Contains(p.SupplierId.Value));
                    //模具厂发过来的所有加工任务
                    var taskCount = baseQuery.Count();
                    //延期任务
                    var delayCount = baseQuery.Where(new DelayTaskSpecification()).Count();
                    result.Add(new
                    {
                        tenant.TenantId,
                        tenant.Name,
                        taskCount,
                        delayCount
                    });
                }


                return(result);
            }
        }