From 009e3e6fe18e3229ef1a6b2a39c9de57dd9d34bc Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 31 七月 2024 15:58:38 +0800
Subject: [PATCH] 数据中心响应类调整
---
ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java | 143 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 108 insertions(+), 35 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 b599917..e603c06 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,27 +1,37 @@
package com.ycl.platform.service.impl;
+import com.alibaba.excel.EasyExcel;
+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.excel.CalculateExport;
+import com.ycl.platform.domain.form.CalculateReportBackfillForm;
+import com.ycl.platform.domain.form.CalculateReportForm;
+import com.ycl.platform.domain.query.CalculateReportQuery;
+import com.ycl.platform.domain.vo.CalculateReportDetailVO;
+import com.ycl.platform.domain.vo.CalculateReportVO;
+import com.ycl.platform.mapper.CalculateRecordMapper;
import com.ycl.platform.mapper.CalculateReportMapper;
import com.ycl.platform.service.CalculateReportService;
import com.ycl.system.Result;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.platform.domain.form.CalculateReportForm;
-import com.ycl.platform.domain.vo.CalculateReportVO;
-import com.ycl.platform.domain.query.CalculateReportQuery;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.system.page.PageUtil;
-import org.springframework.stereotype.Service;
-import org.springframework.security.core.context.SecurityContextHolder;
+import enumeration.general.CalculateReportStatusEnum;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
-import java.util.ArrayList;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import lombok.RequiredArgsConstructor;
/**
* 鏍哥畻鎶ュ憡 鏈嶅姟瀹炵幇绫�
@@ -34,6 +44,7 @@
public class CalculateReportServiceImpl extends ServiceImpl<CalculateReportMapper, CalculateReport> implements CalculateReportService {
private final CalculateReportMapper calculateReportMapper;
+ private final CalculateRecordMapper calculateRecordMapper;
/**
* 娣诲姞
@@ -74,7 +85,7 @@
* @return
*/
@Override
- public Result remove(List<String> ids) {
+ public Result remove(List<Long> ids) {
if(baseMapper.deleteBatchIds(ids) > 0) {
return Result.ok("鍒犻櫎鎴愬姛");
}
@@ -87,7 +98,7 @@
* @return
*/
@Override
- public Result removeById(String id) {
+ public Result removeById(Long id) {
if(baseMapper.deleteById(id) > 0) {
return Result.ok("鍒犻櫎鎴愬姛");
}
@@ -101,17 +112,16 @@
*/
@Override
public Result page(CalculateReportQuery query) {
-
- IPage<CalculateReport> page = new LambdaQueryChainWrapper<>(baseMapper)
- .orderByDesc(CalculateReport::getCreateTime)
- .page(PageUtil.getPage(query, CalculateReport.class));
-
- List<CalculateReportVO> vos = page.getRecords().stream()
- .map(
- entity -> CalculateReportVO.getVoByEntity(entity, null)
- )
- .collect(Collectors.toList());
- return Result.ok().data(vos).total(page.getTotal());
+ IPage<CalculateReportVO> page = PageUtil.getPage(query, CalculateReportVO.class);
+ baseMapper.page(query, page);
+ page.getRecords().stream().forEach(item -> {
+ if (Objects.isNull(item)) {
+ item.setCanPublish(Boolean.FALSE);
+ } else {
+ item.setCanPublish(Boolean.TRUE);
+ }
+ });
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
}
/**
@@ -120,12 +130,17 @@
* @return
*/
@Override
- public Result detail(String id) {
-
- CalculateReport entity = baseMapper.selectById(id);
- Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
- CalculateReportVO vo = CalculateReportVO.getVoByEntity(entity, null);
- return Result.ok().data(vo);
+ public Result detail(Long id) {
+ // 鏄庣粏鍒楄〃
+ CalculateReportDetailVO detail = baseMapper.getById(id);
+ if (Objects.nonNull(detail) && ! CollectionUtils.isEmpty(detail.getRecordList())) {
+ if (CalculateReportStatusEnum.NOT_PUBLISH.equals(detail.getStatus())) {
+ detail.getRecordList().get(0).setLatest(Boolean.TRUE);
+ } else {
+ detail.getRecordList().get(0).setLatest(Boolean.FALSE);
+ }
+ }
+ return Result.ok().data(detail);
}
/**
@@ -136,10 +151,68 @@
public Result all() {
List<CalculateReport> entities = baseMapper.selectList(null);
List<CalculateReportVO> vos = entities.stream()
- .map(
- entity -> CalculateReportVO.getVoByEntity(entity, null)
- )
+ .map(entity -> CalculateReportVO.getVoByEntity(entity, null))
.collect(Collectors.toList());
return Result.ok().data(vos);
}
+
+ @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);
+ 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);
+ return Result.ok("鎿嶄綔鎴愬姛");
+ }
+
+ @Override
+ @SneakyThrows
+ public void export(Integer contractId, HttpServletResponse response) {
+ // 鑾峰彇鏁版嵁
+ List<CalculateExport> list = baseMapper.exportData(contractId);
+ CalculateExport calculateExport = new CalculateExport();
+ calculateExport.setRuleName("鍚堣");
+ calculateExport.setNum(list.stream().mapToInt(CalculateExport::getNum).sum());
+ calculateExport.setScore(list.stream().mapToInt(CalculateExport::getScore).sum());
+ list.add(calculateExport);
+ // 杈撳嚭鏂囦欢
+ 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);
+ }
}
--
Gitblit v1.8.0