From 1901a22a3b2d7a2a076b69ecd78d24ec55d5a3e8 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 22 八月 2024 18:26:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/java/com/ycl/task/ContractResultTask.java |   63 +++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 16 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
index 22a195b..e15e890 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
@@ -1,22 +1,22 @@
 package com.ycl.task;
 
-import com.ycl.platform.domain.entity.CheckResult;
+import com.ycl.platform.domain.entity.ContractResult;
 import com.ycl.platform.domain.entity.ContractResultRecord;
 import com.ycl.platform.domain.entity.ContractScore;
 import com.ycl.platform.domain.entity.TContract;
-import com.ycl.platform.service.ICheckResultService;
+import com.ycl.platform.service.IContractResultService;
 import com.ycl.platform.service.IContractScoreService;
 import com.ycl.platform.service.ITContractService;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.bean.BeanUtils;
-import jakarta.annotation.PostConstruct;
 import lombok.Data;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -30,17 +30,17 @@
 
     private final ITContractService contractService;
     private final IContractScoreService contractScoreService;
-    private final ICheckResultService checkResultService;
+    private final IContractResultService checkResultService;
 
     private String startTime;
     private String endTime;
 
     /**
-     * 姣忎釜鏈�1鍙锋墽琛�
+     * 姣忎釜鏈�1鍙锋墽琛岋紝缁熻鑰冩牳缁撴灉
      */
     @Scheduled(cron = "0 0 0 1 * ?")
-    // @PostConstruct
-    // 澶氳〃
+    @Transactional
+    // @PostConstruct //鍚姩鏃舵墽琛屼竴娆�
     public void contractResultTask() {
         // 鏌ヨ鏈夋晥鏈熷唴鐨勫悎鍚�
         List<TContract> list = contractService.selectUsingContract();
@@ -49,19 +49,50 @@
             // 涓婁釜鏈堟墸鍒嗚褰�
             List<ContractScore> contractScore = contractScoreService.getDateRangeScoreByContractId(tContract.getId(), startTime, endTime);
             // 鏂板鑰冩牳缁撴灉
-            CheckResult checkResult = new CheckResult();
-            checkResult.setUnitId(tContract.getUnitId());
-            checkResult.setContractId(tContract.getId());
-            checkResult.setPublish(0);
-            checkResult.setCheckTime(DateUtils.getNowDate());
-            checkResultService.save(checkResult);
+            ContractResult contractResult = getCheckResult(tContract, contractScore);
+            checkResultService.save(contractResult);
             // 鏂板鑰冩牳缁撴灉璁板綍
-            List<ContractResultRecord> contractResultRecord = new ArrayList<>();
-            BeanUtils.copyBeanProp(contractResultRecord, contractScore);
+            List<ContractResultRecord> contractResultRecord = getContractResultRecord(contractScore, contractResult);
             checkResultService.saveBatchRecord(contractResultRecord);
         }
     }
 
+    /**
+     * 淇濆瓨鑰冩牳璁板綍
+     *
+     * @param contractScore  鎵e垎
+     * @param contractResult 鑰冩牳缁撴灉
+     * @return 鑰冩牳璁板綍
+     */
+    private List<ContractResultRecord> getContractResultRecord(List<ContractScore> contractScore, ContractResult contractResult) {
+        return contractScore.stream().map(
+                item -> {
+                    ContractResultRecord record = new ContractResultRecord();
+                    BeanUtils.copyProperties(item, record);
+                    record.setResultId(contractResult.getId());
+                    record.setCreateTime(DateUtils.getNowDate());
+                    return record;
+                }
+        ).toList();
+    }
+
+    /**
+     * 璁$畻鑰冩牳缁撴灉
+     *
+     * @param tContract     鍚堝悓
+     * @param contractScore 鎵e垎
+     * @return 鑰冩牳缁撴灉
+     */
+    private ContractResult getCheckResult(TContract tContract, List<ContractScore> contractScore) {
+        ContractResult contractResult = new ContractResult();
+        contractResult.setUnitId(tContract.getUnitId());
+        contractResult.setContractId(tContract.getId());
+        contractResult.setPublish(0);
+        contractResult.setCheckTime(DateUtils.getNowDate());
+        contractResult.setScore(contractScore.isEmpty() ? new BigDecimal("100") : new BigDecimal("100").subtract(contractScore.stream().map(ContractScore::getScore).reduce(BigDecimal::add).get()));
+        return contractResult;
+    }
+
 
     /**
      * 鑾峰彇涓婁釜鏈堢殑绗竴澶╁拰鏈�鍚庝竴澶�

--
Gitblit v1.8.0