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, "")); }
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>()); } }
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)); }
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); }