From 7a93f4097430703dc60c4aee0240ed348a0ab1df Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 06 一月 2025 18:12:00 +0800 Subject: [PATCH] 核算重构 --- ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java | 86 +++++++++++++++++++++++++------------------ 1 files changed, 50 insertions(+), 36 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java index 8020953..839dde9 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java @@ -1,10 +1,15 @@ 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; @@ -14,8 +19,10 @@ 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 com.ycl.utils.SecurityUtils; import enumeration.general.CalculateReportStatusEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -44,7 +51,7 @@ @RequiredArgsConstructor public class CalculateReportServiceImpl extends ServiceImpl<CalculateReportMapper, CalculateReport> implements CalculateReportService { - private final CalculateReportMapper calculateReportMapper; + private final ICalculateRuleService calculateRuleService; private final CalculateRecordMapper calculateRecordMapper; /** @@ -118,6 +125,7 @@ @Override public Result page(CalculateReportQuery query) { IPage<CalculateReportVO> page = PageUtil.getPage(query, CalculateReportVO.class); + query.setUnitId(SecurityUtils.getUnitId()); baseMapper.page(query, page); page.getRecords().stream().forEach(item -> { if (Objects.isNull(item)) { @@ -135,9 +143,9 @@ * @return */ @Override - public Result detail(Long id) { + public Result detail(CalculateReportQuery query) { // 鏄庣粏鍒楄〃 - CalculateReportDetailVO detail = baseMapper.getById(id); + CalculateReportDetailVO detail = baseMapper.getById(query); if (Objects.nonNull(detail) && ! CollectionUtils.isEmpty(detail.getRecordList())) { if (CalculateReportStatusEnum.NOT_PUBLISH.equals(detail.getStatus())) { detail.getRecordList().get(0).setLatest(Boolean.TRUE); @@ -164,40 +172,40 @@ @Override @Transactional(rollbackFor = Exception.class) public Result backfill(CalculateReportBackfillForm form) { - CalculateReport report = baseMapper.selectById(form.getId()); - if (Objects.isNull(report)) { - throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪"); - } - if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) { - throw new RuntimeException("鏈�鏂颁竴娆℃牳绠楁姤鍛婂凡缁忓彂甯冿紝鏃犳硶淇敼"); - } - CalculateReportBackfillForm.RecordForm latestRecord = form.getRecordList().get(0); - CalculateRecord beforeRecord = calculateRecordMapper.selectById(latestRecord.getId()); - if (Objects.isNull(beforeRecord)) { - throw new RuntimeException("鏈�杩戜竴娆℃牳绠楄褰曚笉瀛樺湪"); - } - // 璁$畻寰楀埌鎵f鎬婚锛堝彧绠楁渶杩戜竴鏉★級 - BigDecimal totalDeduct = report.getDeductMoney().subtract(latestRecord.getDeductMoney()).add(latestRecord.getDeductMoney()); - report.setDeductMoney(totalDeduct); - baseMapper.updateById(report); - - beforeRecord.setDeductMoney(latestRecord.getDeductMoney()); - calculateRecordMapper.updateById(beforeRecord); +// CalculateReport report = baseMapper.selectById(form.getId()); +// if (Objects.isNull(report)) { +// throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪"); +// } +// if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) { +// throw new RuntimeException("鏈�鏂颁竴娆℃牳绠楁姤鍛婂凡缁忓彂甯冿紝鏃犳硶淇敼"); +// } +// CalculateReportBackfillForm.RecordForm latestRecord = form.getRecordList().get(0); +// CalculateRecord beforeRecord = calculateRecordMapper.selectById(latestRecord.getId()); +// if (Objects.isNull(beforeRecord)) { +// throw new RuntimeException("鏈�杩戜竴娆℃牳绠楄褰曚笉瀛樺湪"); +// } +// // 璁$畻寰楀埌鎵f鎬婚锛堝彧绠楁渶杩戜竴鏉★級 +// BigDecimal totalDeduct = report.getDeductMoney().subtract(latestRecord.getDeductMoney()).add(latestRecord.getDeductMoney()); +// report.setDeductMoney(totalDeduct); +// baseMapper.updateById(report); +// +// beforeRecord.setDeductMoney(latestRecord.getDeductMoney()); +// calculateRecordMapper.updateById(beforeRecord); + List<CalculateReportBackfillForm.RecordForm> recordList = form.getRecordList(); + if(!CollectionUtils.isEmpty(recordList)) calculateRecordMapper.updateBatch(recordList); return Result.ok("鎿嶄綔鎴愬姛"); } @Override - public Result updatePublishStatus(Long reportId) { - CalculateReport report = baseMapper.selectById(reportId); - if (Objects.isNull(report)) { - throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪"); - } - if (CalculateReportStatusEnum.NOT_PUBLISH.equals(report.getStatus())) { - report.setStatus(CalculateReportStatusEnum.PUBLISHED); - } else if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) { - report.setStatus(CalculateReportStatusEnum.NOT_PUBLISH); - } - baseMapper.updateById(report); + public Result updatePublishStatus(Integer contractId,Integer whichYear) { + + calculateRecordMapper.batchPublish(contractId,whichYear); + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @Override + public Result updatePublishStatusById(Integer id, String status) { + calculateRecordMapper.updatePublishById(id,status); return Result.ok("鎿嶄綔鎴愬姛"); } @@ -211,13 +219,19 @@ 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); + } } } -- Gitblit v1.8.0