linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java
@@ -1,4 +1,5 @@
package com.ots.project.exam.service.impl;
import com.ots.common.enums.TestMemberStatusEnum;
import com.ots.common.enums.UsageCountEnum;
import com.ots.common.exception.BusinessException;
@@ -19,40 +20,65 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import static com.ots.common.enums.ResponseCode.*;
import static com.ots.common.enums.TestMemberStatusEnum.*;
/**
 * 测评人员名单Service业务层处理
 *
 * @author ots
 * @date 2019-12-15
 */
@Service
@Slf4j
public class EntTestMemberServiceImpl implements IEntTestMemberService {
    @Autowired
    private EntTestMemberMapper entTestMemberMapper;
    @Autowired
    private EntTestPackageMapper entTestPackageMapper;
    @Autowired
    private SysUserExtendMapper sysUserExtendMapper;
    @Autowired
    private TExamReportMapper tReportTemplateMapper;
    /**
     * 查询测评人员名单
     *
     * @param memberId 测评人员名单ID
     * @return 测评人员名单
     */
    @Override
    public EntTestMember selectEntTestMemberById(Long memberId) {
        return entTestMemberMapper.selectEntTestMemberById(memberId);
    }
    /**
     * 查询测评人员名单列表
     *
     * @param entTestMember 测评人员名单
     * @return 测评人员名单
     */
    @Override
    public List<EntTestMember> selectEntTestMemberList(EntTestMember entTestMember) {
        return entTestMemberMapper.selectEntTestMemberList(entTestMember);
    }
    @Override
    public List<EntTestMember> selectEntTestMemberTopList(EntTestMember entTestMember) {
        return entTestMemberMapper.selectEntTestMemberTopList(entTestMember);
    }
    @Override
    public List<EntTestMember> selectEntTestMemberQueryList(EntTestMember entTestMember) {
        List<EntTestMember> entTestMembers = entTestMemberMapper.selectEntTestMemberQueryList(entTestMember);
        //查询报告表是否给HR发送邮件
        List<String> collect = entTestMembers.stream().map(p -> String.valueOf(p.getMemberId())).collect(Collectors.toList());
        if (Objects.isNull(collect)) {
            return new ArrayList<>();
@@ -61,8 +87,10 @@
        if (Objects.isNull(memberIds) || memberIds.length == 0) {
            return new ArrayList<>();
        }
        List<TExamReport> tExamReports = tReportTemplateMapper.selectTReportTemplatesByMemberId(memberIds);
        //补充repor表的HR邮箱发送状态
        Map<String, EntTestMember> map = new HashMap();
        for (EntTestMember testMember : entTestMembers) {
            map.put(String.valueOf(testMember.getMemberId()), testMember);
@@ -78,11 +106,18 @@
        }
        return entTestMembers;
    }
    @Override
    public List<EntTestMember> selectEntTestMemberList(Map params) {
        return entTestMemberMapper.selectEntTestMemberListByMap(params);
    }
    /**
     * 新增测评人员名单,并减去可用次数
     *
     * @param entTestMember 测评人员名单
     * @return 结果
     */
    @Override
    @Transactional
    public int insertEntTestMember(EntTestMember entTestMember) {
@@ -92,48 +127,78 @@
        usageCount(entTestMember, UsageCountEnum.reduce);
        return result;
    }
    /**
     * 使用次数(根据传入的类型 判断次数是增加还是减少)
     * 调用,增加或者扣减一次。
     *
     * @param entTestMember
     */
    private void usageCount(EntTestMember entTestMember, UsageCountEnum op) {
        MISSING_PARAMETERS.assertNotNull(entTestMember.getTestId(), "测试包编码");
        EntTestPackage entTestPackage = entTestPackageMapper.selectEntTestPackageById(entTestMember.getTestId());
        ERROR_MESSAGE_CHECK.assertNotNull(entTestPackage, "测试包信息不存在!");
        SysUserExtend sysUserExtend = sysUserExtendMapper.selectSysUserExtendById(entTestPackage.getUserId());
        ERROR_MESSAGE_CHECK.assertNotNull(sysUserExtend, "未配置可使用次数!");
        USR_TIME_ISOVER.assertIsTrue(sysUserExtend.getTestNum() > 0, entTestPackage.getUserId());
        sysUserExtend.setTestNum(sysUserExtend.getTestNum() + op.getOp());
        sysUserExtendMapper.updateSysUserExtend(sysUserExtend);
    }
    /**
     * 修改测评人员名单
     *
     * @param entTestMember 测评人员名单
     * @return 结果
     */
    @Override
    @Transactional
    public int updateEntTestMember(EntTestMember entTestMember) {
        entTestMember.setUpdateTime(DateUtils.getNowDate());
        int reslut = entTestMemberMapper.updateEntTestMember(entTestMember);
        //回收状态,需要回收次数
        List<String> status = Arrays.asList(TestMemberStatusEnum.recover.getCode(), TestMemberStatusEnum.expiryRecovery.getCode());
        if (status.contains(entTestMember.getStatus())) {
            usageCount(entTestMember, UsageCountEnum.add);
        }
        return reslut;
    }
    /**
     * 删除测评人员名单对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteEntTestMemberByIds(String ids) {
        return entTestMemberMapper.deleteEntTestMemberByIds(Convert.toStrArray(ids));
    }
    /**
     * 删除测评人员名单信息
     *
     * @param memberId 测评人员名单ID
     * @return 结果
     */
    public int deleteEntTestMemberById(Long memberId) {
        return entTestMemberMapper.deleteEntTestMemberById(memberId);
    }
    @Override
    public String importEntTestMember(List<EntTestMember> entTestMemberList, Boolean isUpdateSupport) {
        if (StringUtils.isNull(entTestMemberList) || entTestMemberList.size() == 0) {
            throw new BusinessException("Import user data cannot be empty!");
        }
        int successNum = 0;
        int failureNum = 0;
        StringBuilder successMsg = new StringBuilder();
        StringBuilder failureMsg = new StringBuilder();
        for (EntTestMember entTestMember : entTestMemberList) {
            try {
                insertEntTestMember(entTestMember);
@@ -148,20 +213,26 @@
            successNum++;
            successMsg.append("<br/>" + successNum + "、"+ MessageUtils.message("jsp.testPackage.name") +" " + entTestMember.getMemberName() + MessageUtils.message("imported.successfully"));
        }
        if (failureNum > 0) {
            failureMsg.insert(0, MessageUtils.message("import.internationalization.001") + failureNum + MessageUtils.message("import.internationalization.002"));
//            throw new BusinessException(failureMsg.toString());
        } else {
            successMsg.insert(0, MessageUtils.message("import.internationalization.003") + successNum + MessageUtils.message("import.internationalization.004"));
        }
        return successMsg.toString();
    }
    public EntTestMember findEntTestMember(String token, List<String> status) {
        Map paramMap = new HashMap();
        paramMap.put("token", token);
        paramMap.put("status", status);
        return entTestMemberMapper.findEntTestMember(paramMap);
    }
    @Override
    public int updateTestMemberStatus(TestMemberStatusEnum statusEnum, long memberId) {
        EntTestMember member = selectEntTestMemberById(memberId);
@@ -171,9 +242,11 @@
        } else if (completed == statusEnum || timeOut == statusEnum) {
            member.setEndTime(new Date());
        }
        int result = updateEntTestMember(member);
        return result;
    }
    @Override
    public boolean checkMemberHasReport(List<String> asList, Long testId) {
        return false;