| | |
| | | package com.ots.project.exam.service.impl; |
| | | |
| | | import com.ots.common.enums.TestMemberStatusEnum; |
| | | import com.ots.project.exam.domain.*; |
| | | import com.ots.project.exam.mapper.EntTestMemberMapper; |
| | |
| | | import com.ots.project.exam.service.CountCalculateService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 次数计算组件 |
| | | */ |
| | | @Component |
| | | public class CountCalculateServiceImpl implements CountCalculateService { |
| | | |
| | | @Autowired |
| | | private EntTestMemberMapper entTestMemberMapper; |
| | | @Autowired |
| | | private EntTestPackageMapper entTestPackageMapper; |
| | | @Autowired |
| | | private SysUserExtendMapper sysUserExtendMapper; |
| | | |
| | | @Override |
| | | public NumberOfUsersByCompany calculateProductPackagesMemberCount(EntTestPackage entTestPackage) { |
| | | Long userId = entTestPackage.getUserId(); |
| | | NumberOfUsersByCompany result = new NumberOfUsersByCompany(); |
| | | if (Objects.nonNull(userId)) { |
| | | |
| | | //1、查询企业用户扩展参数 |
| | | SysUserExtend sysUserExtend = sysUserExtendMapper.selectSysUserExtendById(userId); |
| | | if (Objects.isNull(sysUserExtend)) { |
| | | return result; |
| | |
| | | result.setTestNum(testNum.intValue()); |
| | | } |
| | | List<EntTestPackage> entTestPackages = findEntTestPackages(entTestPackage); |
| | | |
| | | //3、查询当前测试包下的用户 |
| | | if (Objects.nonNull(entTestPackages) && !entTestPackages.isEmpty()) { |
| | | result = constructResult(userId, entTestPackages); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private List<EntTestPackage> findEntTestPackages(EntTestPackage entTestPackage) { |
| | | return entTestPackageMapper.selectEntTestPackageList(entTestPackage); |
| | | } |
| | | |
| | | private NumberOfUsersByCompany constructResult(Long userId, List<EntTestPackage> entTestPackages) { |
| | | List<Long> collect = entTestPackages.stream().map(p -> p.getId()).collect(Collectors.toList()); |
| | | List<EntTestMember> entTestMembers = findEntTestMembers(collect); |
| | |
| | | if (Objects.nonNull(result.getTestNum())) { |
| | | result.setUsedTimes(entTestMembers.size()); |
| | | } |
| | | |
| | | //4、每个测试包的使用情况 |
| | | Map<Long, List<EntTestMember>> testPackageUsageTimesMap = entTestMembers.stream().collect(Collectors.groupingBy(EntTestMember::getTestId)); |
| | | entTestPackages.stream().forEach(p -> { |
| | | NumberOfUsersByPackage numberOfUsersByPackage = new NumberOfUsersByPackage(); |
| | |
| | | }); |
| | | return result; |
| | | } |
| | | |
| | | private List<EntTestMember> findEntTestMembers(List<Long> collect) { |
| | | Map map = new HashMap(); |
| | | map.put("testIds", collect); |
| | | |
| | | //unprocessed("0", "未处理"),completed("1", "已完成"),answering("2", "答题中"), 三种状态算已经使用了次数 |
| | | List<String> recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.completed.getCode(), TestMemberStatusEnum.answering.getCode()); |
| | | map.put("status", recyclingStatus); |
| | | return entTestMemberMapper.selectEntTestMemberListByMap(map); |
| | | } |
| | | |
| | | } |