龚焕茏
2024-04-28 528583047b08f74df27ac538705627741363602e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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 jakarta.annotation.PostConstruct;
import lombok.Data;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
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 * ?")
    // @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 = new CheckResult();
            checkResult.setUnitId(tContract.getUnitId());
            checkResult.setContractId(tContract.getId());
            checkResult.setPublish(0);
            checkResult.setCheckTime(DateUtils.getNowDate());
            checkResultService.save(checkResult);
            // 新增考核结果记录
            List<ContractResultRecord> contractResultRecord = new ArrayList<>();
            BeanUtils.copyBeanProp(contractResultRecord, contractScore);
            checkResultService.saveBatchRecord(contractResultRecord);
        }
    }
 
 
    /**
     * 获取上个月的第一天和最后一天
     */
    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;
    }
 
}