linzhijie
2021-03-11 c33914ba0a98c823c4b4d7da21cdd476906c9924
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
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;
    }
}