package com.ruoyi.process.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.process.dto.ProcessComplainDto; import com.ruoyi.process.mapper.ProcessComplainMapper; import com.ruoyi.process.pojo.ProcessComplain; import com.ruoyi.process.service.ProcessComplainService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.List; /** *

* 投诉 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2024-11-02 09:29:11 */ @Service @Transactional(rollbackFor = Exception.class) public class ProcessComplainServiceImpl extends ServiceImpl implements ProcessComplainService { @Resource private ProcessComplainMapper processComplainMapper; // todo :检验样品和报告模块搬迁之后放开 // @Resource // private InsReportMapper insReportMapper; // // @Resource // private InsSampleMapper insSampleMapper; // @Resource // GiveCode giveCode; @Override public IPage pageProcessComplain(Page page, ProcessComplain processComplain) { return processComplainMapper.pageProcessComplain(page, QueryWrappers.queryWrappers(processComplain)); } @Override public int addProcessComplain(ProcessComplain processComplain) { //判断报告编号和样品编号是否存在 // InsReport insReport = insReportMapper.selectOne(Wrappers.lambdaQuery().eq(InsReport::getCode, processComplain.getCode())); // if (ObjectUtils.isEmpty(insReport)) throw new ErrorException("报告编号输入有误"); // processComplain.setInsReportId(insReport.getId()); // InsSample insSample = insSampleMapper.selectOne(Wrappers.lambdaQuery().eq(InsSample::getSampleCode, processComplain.getSampleCode())); // if (ObjectUtils.isEmpty(insSample)) throw new ErrorException("样品编号输入有误"); //投诉编号生成 // String giveCode = this.giveCode.giveCode("JCZX-", "cnas_process_complain", "", "yyMMdd"); // processComplain.setComplainNo(giveCode); return processComplainMapper.insert(processComplain); } @Override public ProcessComplainDto getProcessComplain(Long id) { return processComplainMapper.getProcessComplain(id); } @Override public int doProcessComplain(ProcessComplain processComplain) { return processComplainMapper.updateById(processComplain); } @Override public void exportProcessComplain(ProcessComplain processComplain, HttpServletResponse response) throws Exception { List data = processComplainMapper.pageProcessComplain(new Page(-1, -1), QueryWrappers.queryWrappers(processComplain)).getRecords(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); String fileName = URLEncoder.encode("投诉列表导出", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); try { // 新建ExcelWriter ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); WriteSheet mainSheet = EasyExcel.writerSheet(0, "投诉列表导出").head(ProcessComplain.class).build(); excelWriter.write(data, mainSheet); // 关闭流 excelWriter.finish(); } catch (IOException e) { throw new RuntimeException("导出失败"); } } }