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 entTestPackages = entTestPackageService.selectEntTestPackageListByIdAndStatusIn(paramMap); Map> collect = entTestPackages.stream().collect(Collectors.groupingBy(EntTestPackage::getUserId)); collect.forEach((userId, value) -> { List testIds = entTestPackages.stream().map(p -> p.getId()).collect(Collectors.toList()); Map map = testMemberParams(testIds); List 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 testIds) { Map map = new HashMap(); map.put("testIds", testIds); List recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.answering.getCode()); map.put("status", recyclingStatus); return map; } private Map testPackageParams() { Map paramMap = new HashMap(); List status = Arrays.asList(TestPackageStatusEnum.enable.getCode(), TestPackageStatusEnum.pause.getCode()); paramMap.put("status", status); paramMap.put("invalid", new Date()); return paramMap; } }