From 061b711dc16212c651ce6047145420c50728f213 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 26 四月 2024 15:54:00 +0800
Subject: [PATCH] 核算报告功能完善

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 45 insertions(+), 13 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 ee26421..8943806 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
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import com.ycl.utils.SecurityUtils;
+import enumeration.general.CalculateReportStatusEnum;
 import org.apache.commons.lang3.StringUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.system.page.PageUtil;
@@ -33,6 +34,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import lombok.RequiredArgsConstructor;
+import org.springframework.util.CollectionUtils;
 
 /**
  * 鏍哥畻鎶ュ憡 鏈嶅姟瀹炵幇绫�
@@ -115,6 +117,13 @@
     public Result page(CalculateReportQuery query) {
         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());
     }
 
@@ -127,6 +136,13 @@
     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);
     }
 
@@ -138,9 +154,7 @@
     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);
     }
@@ -152,18 +166,36 @@
         if (Objects.isNull(report)) {
             throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪");
         }
-        // 绱姞寰楀埌鎵f鎬婚
-        BigDecimal totalDeduct = form.getRecordList().stream()
-                .map(CalculateReportBackfillForm.RecordForm::getDeductMoney)
-                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        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);
-        form.getRecordList().stream().forEach(item -> {
-            new LambdaUpdateChainWrapper<>(calculateRecordMapper)
-                    .eq(CalculateRecord::getId, item.getId())
-                    .set(CalculateRecord::getDeductMoney, item.getDeductMoney())
-                    .update();
-        });
+
+        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("鎿嶄綔鎴愬姛");
     }
 }

--
Gitblit v1.8.0