From 0a1af1f220a6b47db08bc6d2e2b9660d08fe59ed Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 16 八月 2024 13:38:47 +0800 Subject: [PATCH] leftjoin --- 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