Esempio n. 1
0
        public async Task <JsonDataMsg <ExcelPackage> > ExportMachinesAsync()
        {
            //先尝试获取100条数据
            int current  = 1;
            int capacity = 100;
            DataBoxDto <EquipmentDto> dataBoxDto = await Repository.QuantitativeTargetsAsync(current, capacity);

            if (0 == dataBoxDto.Total)
            {
                //如果没有数据,则导出一个空的Excel模板文件,并返回
                ExcelPackage emptyExcelPackage = ExcelFileService.CreateEquipmentTemplate();

                if (null == emptyExcelPackage)
                {
                    NLogMgr.ErrorExLog(_errorLog, "创建Excel失败", null);
                    return(new JsonDataMsg <ExcelPackage>(null, false, "创建Excel失败"));
                }

                NLogMgr.DebugLog(_programLog, "创建Excel模板成功");
                return(new JsonDataMsg <ExcelPackage>(emptyExcelPackage, true, ""));
            }

            //有数据则根据数据,得到总分页数,便于后续遍历
            var totalPage = (int)Math.Ceiling(dataBoxDto.Total * 1.0 / capacity);
            List <EquipmentDto> eqList = new List <EquipmentDto>(dataBoxDto.Data);

            if (totalPage > current)
            {
                //还需要获取后面分页的数据
                while (++current <= totalPage)
                {
                    dataBoxDto = await Repository.QuantitativeTargetsAsync(current, capacity);

                    if ((null == dataBoxDto.Data || !dataBoxDto.Data.Any()) && (current <= totalPage))
                    {
                        NLogMgr.ErrorExLog(_errorLog, $"导出第{current}页数据的时候出错了", null);
                        return(new JsonDataMsg <ExcelPackage>(null, false, $"导出第{current}页数据的时候出错了"));
                    }

                    if (null != dataBoxDto.Data && dataBoxDto.Data.Any())
                    {
                        eqList.AddRange(dataBoxDto.Data);
                    }
                }
            }

            //取完剩余的分页数据,则可以开始生成Excel文件
            //todo:生成Excel文件
            ExcelPackage excelPackage = ExcelFileService.CreateEquipmentExcel(eqList);

            if (null == excelPackage)
            {
                NLogMgr.ErrorExLog(_errorLog, "创建Excel失败", null);
                return(new JsonDataMsg <ExcelPackage>(null, false, $"创建Excel失败"));
            }

            NLogMgr.DebugLog(_programLog, "数据存储到内存Excel成功");
            return(new JsonDataMsg <ExcelPackage>(excelPackage, true, ""));
        }
Esempio n. 2
0
        public async Task <DataBoxDto <EquipmentDto> > QuantitativeTargetsAsync(int current, int capacity)
        {
            try
            {
                using (HealthManjuuCoreContext context = new HealthManjuuCoreContext())
                {
                    var query = context.MachineInfos.Where(p => p.State != DataState.Disable).AsNoTracking();
                    if (!await query.AnyAsync())
                    {
                        return(new DataBoxDto <EquipmentDto>());
                    }

                    int total = await query.CountAsync();

                    query.OrderBy(p => p.Id);
                    if (capacity > 0)
                    {
                        query = query.Skip((current - 1) * capacity).Take(capacity);
                    }


                    List <MachineInfo> machineInfos = await query.ToListAsync();

                    var eqs = EntityAutoMapper.Instance.GetMapperResult <List <EquipmentDto> >(_mapperCfg, machineInfos);

                    if (null == eqs || !eqs.Any())
                    {
                        NLogMgr.ErrorExLog(_errorLog, " List<MachineInfo> 转换 List<EquipmentDto>失败", null);
                        return(new DataBoxDto <EquipmentDto>());
                    }

                    var box = new DataBoxDto <EquipmentDto>();
                    box.Data  = eqs;
                    box.Total = total;

                    return(box);
                }
            }
            catch (System.Exception ex)
            {
                NLogMgr.ErrorExLog(_errorLog, " 批量获取检测目标异常", ex);
                return(new DataBoxDto <EquipmentDto>());
            }
        }
Esempio n. 3
0
        public async Task <List <CheckTarget> > GetDataPage(int page)
        {
            DataBoxDto <EquipmentDto> dataBoxDto = await _repository.QuantitativeTargetsAsync(CurrentPage, Capacity);

            if (0 == dataBoxDto.Total)
            {
                NLogMgr.DebugLog(_programLog, "首次获取数据,发现没有可检测的目标");
                return(null);
            }

            if (1 == page)
            {
                //有数据则根据数据,得到总分页数,便于后续遍历
                TotalPage = (int)Math.Ceiling(dataBoxDto.Total * 1.0 / Capacity);
            }


            return(EntityAutoMapper.Instance.GetMapperResult <List <CheckTarget> >(_mapperCfg, dataBoxDto.Data));
        }
Esempio n. 4
0
        public async Task <PageMsg <EquipmentDto> > PaggingMachinesAsync(int current, int capacity = 20)
        {
            if (current < 1)
            {
                current = 1;
            }

            DataBoxDto <EquipmentDto> dataBoxDto = await Repository.QuantitativeTargetsAsync(current, capacity);

            if (0 == dataBoxDto.Total)
            {
                return(new PageMsg <EquipmentDto>()
                {
                    Msg = "获取数据异常或者没数据", BusinessResult = false
                });
            }

            PageMsg <EquipmentDto> pageMsg = new PageMsg <EquipmentDto>(dataBoxDto.Data, current, dataBoxDto.Total, capacity);

            pageMsg.Msg            = "获取成功";
            pageMsg.BusinessResult = true;
            return(pageMsg);
        }