package com.ruoyi.report.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.report.dto.DeviceRecordDto; import com.ruoyi.report.mapper.ReportDeviceRecordMapper; import com.ruoyi.report.service.ReportDeviceRecordService; import com.ruoyi.report.vo.DeviceRecordVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; /** * 设备使用记录报表服务实现 */ @Service @AllArgsConstructor public class ReportDeviceRecordServiceImpl implements ReportDeviceRecordService { private ReportDeviceRecordMapper reportDeviceRecordMapper; @Override public Page pageDeviceRecord(Page page, DeviceRecordDto dto) { return reportDeviceRecordMapper.pageDeviceRecord(page, dto); } @Override public List> getStatistics(DeviceRecordDto dto) { return reportDeviceRecordMapper.getStatistics(dto); } @Override public void exportDeviceRecord(DeviceRecordDto dto, HttpServletResponse response) { try { // 查询全部数据 Page page = new Page<>(); page.setSize(Long.MAX_VALUE); Page result = reportDeviceRecordMapper.pageDeviceRecord(page, dto); List records = result.getRecords(); // 设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); String fileName = "设备使用记录_" + DateUtil.format(new Date(), "yyyyMMddHHmmss"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); // 使用EasyExcel导出 EasyExcel.write(response.getOutputStream(), DeviceRecordVo.class) .sheet("设备使用记录") .doWrite(records); } catch (IOException e) { e.printStackTrace(); } } }