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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.ots.project.exam.service.impl;
import com.ots.common.enums.TestMemberStatusEnum;
import com.ots.common.utils.DateUtils;
import com.ots.common.utils.StringUtils;
import com.ots.common.utils.security.ShiroUtils;
import com.ots.common.utils.text.Convert;
import com.ots.project.exam.domain.*;
import com.ots.project.exam.mapper.EntTestPackageMapper;
import com.ots.project.exam.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import static com.ots.common.enums.OpertypeEnum.DIS_USER;
import static com.ots.common.enums.ResponseCode.ERROR_RECOVER;
 
@Service
public class EntTestPackageServiceImpl implements IEntTestPackageService {
    @Autowired
    private EntTestPackageMapper entTestPackageMapper;
    @Autowired
    private IEntTestMemberService entTestMemberService;
    @Autowired
    private CountCalculateService calculate;
    @Autowired
    private IEntOperLogService entOperLogService;
    @Autowired
    private ITReportTemplateService reportTemplateService;
    
    @Override
    public EntTestPackage selectEntTestPackageById(Long id) {
        return entTestPackageMapper.selectEntTestPackageById(id);
    }
    
    @Override
    public List<EntTestPackage> selectEntTestPackageList(EntTestPackage entTestPackage) {
        List<EntTestPackage> entTestPackages = entTestPackageMapper.selectEntTestPackageList(entTestPackage);
        NumberOfUsersByCompany numberOfUsersByCompany = calculate.calculateProductPackagesMemberCount(entTestPackage);
        entTestPackages.stream().forEach(p -> {
            NumberOfUsersByPackage numberOfUsersByPackage = numberOfUsersByCompany.getTestPackageUsageTimesMap().get(p.getId());
            p.setTestNum(numberOfUsersByPackage.getTestNum());
            p.setFinishNum(numberOfUsersByPackage.getFinishNum());
            p.setTestingNum(numberOfUsersByPackage.getTestingNum());
            p.setUnTestNum(numberOfUsersByPackage.getUnTestNum());
            String reportTemplateId = p.getReportTemplateId();
            if (StringUtils.isNotBlank(reportTemplateId)) {
                String[] split = reportTemplateId.split(",");
                Arrays.stream(split).forEach(item -> {
                    TReportTemplate template = reportTemplateService.selectTReportTemplateById(Long.parseLong(item));
                    
                    if (Objects.nonNull(template)) {
                        String reportTemplateShowValue = Objects.isNull(p.getReportTemplateShowValue()) ? "" : p.getReportTemplateShowValue();
                        p.setReportTemplateShowValue(template.getReportType() + "-" + template.getTemplateType() + "-" + template.getLangType() + ";" + reportTemplateShowValue);
                    }
                });
            }
        });
        return entTestPackages;
    }
    @Override
    public List<EntTestPackage> selectEntTestPackageMainList(EntTestPackage entTestPackage) {
        List<EntTestPackage> entTestPackages = entTestPackageMapper.selectEntTestPackageMainList(entTestPackage);
        return entTestPackages;
    }
    
    @Override
    public int insertEntTestPackage(EntTestPackage entTestPackage) {
        
        if (Objects.isNull(entTestPackage.getUserId())) {
            entTestPackage.setUserId(ShiroUtils.getSysUser().getUserId());
        }
        entTestPackage.setCreateTime(DateUtils.getNowDate());
        return entTestPackageMapper.insertEntTestPackage(entTestPackage);
    }
    
    @Override
    public int updateEntTestPackage(EntTestPackage entTestPackage) {
        entTestPackage.setUpdateTime(DateUtils.getNowDate());
        return entTestPackageMapper.updateEntTestPackage(entTestPackage);
    }
    
    @Override
    public int deleteEntTestPackageByIds(String ids) {
        return entTestPackageMapper.deleteEntTestPackageByIds(Convert.toStrArray(ids));
    }
    
    public int deleteEntTestPackageById(Long id) {
        return entTestPackageMapper.deleteEntTestPackageById(id);
    }
    @Override
    public List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Long userId, List<String> status) {
        if (Objects.isNull(userId) && Objects.isNull(status) && status.isEmpty()) {
            return null;
        }
        Map paramMap = new HashMap();
        if (Objects.nonNull(userId)) {
            paramMap.put("userId", userId);
        }
        if (Objects.nonNull(status) && status.size() > 0) {
            paramMap.put("status", status);
        }
        return selectEntTestPackageListByIdAndStatusIn(paramMap);
    }
    public List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Map paramMap) {
        return entTestPackageMapper.selectEntTestPackageListByIdAndStatusIn(paramMap);
    }
    @Override
    public int recover(Long testId) {
        EntTestMember member = new EntTestMember();
        member.setTestId(testId);
        member.setStatus(TestMemberStatusEnum.unprocessed.getCode());
        List<EntTestMember> entTestMembers = entTestMemberService.selectEntTestMemberList(member);
        ERROR_RECOVER.assertIsFalse(entTestMembers.size() == 0);
        entTestMembers.stream().forEach(it -> entTestMemberService.updateTestMemberStatus(TestMemberStatusEnum.recover, it.getMemberId()));
        EntTestPackage entTestPackage = entTestPackageMapper.selectEntTestPackageById(testId);
        entOperLogService.saveLog(entTestPackage.getUserId(), String.valueOf(ShiroUtils.getSysUser().getUserId()), DIS_USER, Long.valueOf(entTestMembers.size()));
        return 1;
    }
}