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.SampleRecordDto; import com.ruoyi.report.mapper.SampleRecordMapper; import com.ruoyi.report.service.SampleRecordService; import com.ruoyi.report.vo.SampleRecordVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; /** * 样品领样记录服务实现 */ @Service @AllArgsConstructor public class SampleRecordServiceImpl implements SampleRecordService { private SampleRecordMapper sampleRecordMapper; @Override public Page pageSampleRecord(Page page, SampleRecordDto dto) { Page result = sampleRecordMapper.pageSampleRecord(page, dto); // 处理操作类型名称 List records = result.getRecords(); for (SampleRecordVo vo : records) { vo.setOperateTypeName(formatOperateType(vo.getOperateType())); } return result; } @Override public List getFlowRecord(Long sampleId) { List list = sampleRecordMapper.getFlowRecord(sampleId); for (SampleRecordVo vo : list) { vo.setOperateTypeName(formatOperateType(vo.getOperateType())); } return list; } @Override public void exportSampleRecord(SampleRecordDto dto, HttpServletResponse response) { try { // 查询全部数据 Page page = new Page<>(); page.setSize(Long.MAX_VALUE); Page result = sampleRecordMapper.pageSampleRecord(page, dto); // 处理数据 List records = result.getRecords(); for (SampleRecordVo vo : records) { vo.setOperateTypeName(formatOperateType(vo.getOperateType())); } // 设置响应头 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(), SampleRecordVo.class) .sheet("样品领样记录") .doWrite(records); } catch (IOException e) { e.printStackTrace(); } } /** * 格式化操作类型 */ private String formatOperateType(String val) { if (val == null) return ""; Map map = new HashMap<>(); map.put("in", "入库"); map.put("out", "出库"); map.put("move", "移库"); map.put("receive", "领用"); map.put("return", "归还"); return map.getOrDefault(val, val); } }