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;
|
import com.ots.project.exam.domain.EntTestPackage;
|
import com.ots.project.exam.service.IEntTestMemberService;
|
import com.ots.project.exam.service.IEntTestPackageService;
|
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 -> {
|
it.setStatus(TestPackageStatusEnum.ending.getCode());
|
entTestPackageService.updateEntTestPackage(it);
|
});
|
});
|
}
|
|
private Map testMemberParams(List<Long> testIds) {
|
Map map = new HashMap();
|
map.put("testIds", testIds);
|
List<String> recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.answering.getCode());
|
map.put("status", recyclingStatus);
|
return map;
|
}
|
|
private Map testPackageParams() {
|
Map paramMap = new HashMap();
|
List<String> status = Arrays.asList(TestPackageStatusEnum.enable.getCode(), TestPackageStatusEnum.pause.getCode());
|
paramMap.put("status", status);
|
paramMap.put("invalid", new Date());
|
return paramMap;
|
}
|
}
|