| | |
| | | package com.ycl.platform.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.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.platform.domain.entity.CalculateRecord; |
| | | import com.ycl.platform.domain.entity.CalculateReport; |
| | | import com.ycl.platform.domain.entity.CalculateRule; |
| | | import com.ycl.platform.domain.excel.CalculateExport; |
| | | import com.ycl.platform.domain.form.CalculateReportBackfillForm; |
| | | import com.ycl.platform.domain.form.CalculateReportForm; |
| | |
| | | import com.ycl.platform.mapper.CalculateRecordMapper; |
| | | import com.ycl.platform.mapper.CalculateReportMapper; |
| | | import com.ycl.platform.service.CalculateReportService; |
| | | import com.ycl.platform.service.ICalculateRuleService; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.system.page.PageUtil; |
| | | import enumeration.general.CalculateReportStatusEnum; |
| | |
| | | @RequiredArgsConstructor |
| | | public class CalculateReportServiceImpl extends ServiceImpl<CalculateReportMapper, CalculateReport> implements CalculateReportService { |
| | | |
| | | private final CalculateReportMapper calculateReportMapper; |
| | | private final ICalculateRuleService calculateRuleService; |
| | | private final CalculateRecordMapper calculateRecordMapper; |
| | | |
| | | /** |
| | |
| | | calculateExport.setNum(list.stream().mapToInt(CalculateExport::getNum).sum()); |
| | | calculateExport.setScore(100 + list.stream().mapToInt(CalculateExport::getScore).sum()); |
| | | list.add(calculateExport); |
| | | // 获取规则 |
| | | List<CalculateRule> ruleList = calculateRuleService.list(new LambdaQueryWrapper<CalculateRule>().eq(CalculateRule::getContractId, contractId)); |
| | | // 输出文件 |
| | | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | String fileName = URLEncoder.encode("核算报告", StandardCharsets.UTF_8).replace("\\+", "%20"); |
| | | response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); |
| | | EasyExcel.write(response.getOutputStream(), CalculateExport.class) |
| | | .sheet("核算报告") |
| | | .doWrite(list); |
| | | // 增加sheet |
| | | try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build()){ |
| | | WriteSheet sheet = EasyExcel.writerSheet(0, "核算报告").head(CalculateExport.class).build(); |
| | | excelWriter.write(list, sheet); |
| | | WriteSheet sheet2 = EasyExcel.writerSheet(1, "核算规则").head(CalculateRule.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); |
| | | excelWriter.write(ruleList, sheet2); |
| | | } |
| | | } |
| | | } |