linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
src/main/java/com/ots/project/monitor/job/task/RecoverTask.java
@@ -1,4 +1,5 @@
package com.ots.project.monitor.job.task;
import com.ots.common.enums.TestMemberStatusEnum;
import com.ots.common.enums.TestPackageStatusEnum;
import com.ots.project.exam.domain.EntTestMember;
@@ -8,33 +9,46 @@
import com.ots.project.exam.service.impl.EntOperLogServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
import static com.ots.common.enums.OpertypeEnum.DIS_USER;
/**
 * 控制测试包状态
 * 到期后需要回收次数的独立程序
 */
@Component("recoverTask")
public class RecoverTask {
    @Autowired
    IEntTestPackageService entTestPackageService;
    @Autowired
    IEntTestMemberService entTestMemberService;
    @Autowired
    private EntOperLogServiceImpl entOperLogService;
    /**
     * 过期回收评测资格,变更
     */
    public void expiredRecyclingTestEligibility() {
        Map paramMap = testPackageParams();
        //过期测试包
        List<EntTestPackage> entTestPackages = entTestPackageService.selectEntTestPackageListByIdAndStatusIn(paramMap);
        //需要根据企业用户分组,要登记日志和统计
        Map<Long, List<EntTestPackage>> collect = entTestPackages.stream().collect(Collectors.groupingBy(EntTestPackage::getUserId));
        collect.forEach((userId, value) -> {
            List<Long> testIds = entTestPackages.stream().map(p -> p.getId()).collect(Collectors.toList());
            Map map = testMemberParams(testIds);
            List<EntTestMember> entTestMembers = entTestMemberService.selectEntTestMemberList(map);
            entTestMembers.stream().forEach(it -> {
                it.setStatus(TestMemberStatusEnum.expiryRecovery.getCode());
                entTestMemberService.updateEntTestMember(it);
                //记录日志
                entOperLogService.saveLog(userId, "", DIS_USER, Long.valueOf(entTestMembers.size()));
            });
            entTestPackages.stream().forEach(it -> {
@@ -42,8 +56,15 @@
                entTestPackageService.updateEntTestPackage(it);
            });
        });
    }
    /**
     * 评测人员查询参数
     *
     * @param testIds
     * @return
     */
    private Map testMemberParams(List<Long> testIds) {
        Map map = new HashMap();
        map.put("testIds", testIds);
@@ -51,7 +72,12 @@
        map.put("status", recyclingStatus);
        return map;
    }
    /**
     * 测试包查询参数
     *
     * @return
     */
    private Map testPackageParams() {
        Map paramMap = new HashMap();
        List<String> status = Arrays.asList(TestPackageStatusEnum.enable.getCode(), TestPackageStatusEnum.pause.getCode());