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 selectEntTestPackageList(EntTestPackage entTestPackage) { List 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 selectEntTestPackageMainList(EntTestPackage entTestPackage) { List 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 selectEntTestPackageListByIdAndStatusIn(Long userId, List 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 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 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; } }