From ec5a6ede3f88abebdf7a280744ea762757f310aa Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期二, 30 四月 2024 13:41:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/task/ContractResultTask.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 111 insertions(+), 0 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 new file mode 100644 index 0000000..758c3a8 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java @@ -0,0 +1,111 @@ +package com.ycl.task; + +import com.ycl.platform.domain.entity.CheckResult; +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.IContractScoreService; +import com.ycl.platform.service.ITContractService; +import com.ycl.utils.DateUtils; +import com.ycl.utils.bean.BeanUtils; +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.List; + +/** + * @author ghl + * @since 2024/4/28 涓嬪崍 4:14 + */ + +@Component +@Data +public class ContractResultTask { + + private final ITContractService contractService; + private final IContractScoreService contractScoreService; + private final ICheckResultService checkResultService; + + private String startTime; + private String endTime; + + /** + * 姣忎釜鏈�1鍙锋墽琛岋紝缁熻鑰冩牳缁撴灉 + */ + @Scheduled(cron = "0 0 0 1 * ?") + @Transactional + // @PostConstruct //鍚姩鏃舵墽琛屼竴娆� + public void contractResultTask() { + // 鏌ヨ鏈夋晥鏈熷唴鐨勫悎鍚� + List<TContract> list = contractService.selectUsingContract(); + getLastMonth(); + for (TContract tContract : list) { + // 涓婁釜鏈堟墸鍒嗚褰� + List<ContractScore> contractScore = contractScoreService.getDateRangeScoreByContractId(tContract.getId(), startTime, endTime); + // 鏂板鑰冩牳缁撴灉 + CheckResult checkResult = getCheckResult(tContract, contractScore); + checkResultService.save(checkResult); + // 鏂板鑰冩牳缁撴灉璁板綍 + List<ContractResultRecord> contractResultRecord = getContractResultRecord(contractScore, checkResult); + checkResultService.saveBatchRecord(contractResultRecord); + } + } + + /** + * 淇濆瓨鑰冩牳璁板綍 + * + * @param contractScore 鎵e垎 + * @param checkResult 鑰冩牳缁撴灉 + * @return 鑰冩牳璁板綍 + */ + private List<ContractResultRecord> getContractResultRecord(List<ContractScore> contractScore, CheckResult checkResult) { + return contractScore.stream().map( + item -> { + ContractResultRecord record = new ContractResultRecord(); + BeanUtils.copyProperties(item, record); + record.setResultId(checkResult.getId()); + record.setCreateTime(DateUtils.getNowDate()); + return record; + } + ).toList(); + } + + /** + * 璁$畻鑰冩牳缁撴灉 + * + * @param tContract 鍚堝悓 + * @param contractScore 鎵e垎 + * @return 鑰冩牳缁撴灉 + */ + private CheckResult getCheckResult(TContract tContract, List<ContractScore> contractScore) { + CheckResult checkResult = new CheckResult(); + checkResult.setUnitId(tContract.getUnitId()); + checkResult.setContractId(tContract.getId()); + checkResult.setPublish(0); + checkResult.setDeleted("0"); + checkResult.setCheckTime(DateUtils.getNowDate()); + checkResult.setScore(contractScore.isEmpty() ? new BigDecimal("100") : new BigDecimal("100").subtract(contractScore.stream().map(ContractScore::getScore).reduce(BigDecimal::add).get())); + return checkResult; + } + + + /** + * 鑾峰彇涓婁釜鏈堢殑绗竴澶╁拰鏈�鍚庝竴澶� + */ + public void getLastMonth() { + LocalDate currentDate = LocalDate.now().minusMonths(1); + LocalDate firstDayOfMonth = currentDate.withDayOfMonth(1); + String firstDay = firstDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDate lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth()); + String lastDay = lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + this.startTime = firstDay; + this.endTime = lastDay; + } + +} -- Gitblit v1.8.0