package com.ots.project.exam.service.impl;
|
import com.ots.common.utils.StringUtils;
|
import com.ots.framework.web.service.DictService;
|
import com.ots.project.exam.domain.EntDemographyInfo;
|
import com.ots.project.exam.domain.EntDemographyParam;
|
import com.ots.project.exam.domain.EntTestMember;
|
import com.ots.project.exam.domain.EntTestPackage;
|
import com.ots.project.exam.domain.SysUserExtend;
|
import com.ots.project.exam.domain.TExamPaper;
|
import com.ots.project.exam.dto.DemographyDto;
|
import com.ots.project.exam.dto.DictItemDto;
|
import com.ots.project.exam.dto.ParamDefine;
|
import com.ots.project.exam.dto.ParamDefineDictData;
|
import com.ots.project.exam.dto.ParamsInfo;
|
import com.ots.project.exam.dto.RelatedParty;
|
import com.ots.project.exam.service.IEntDemographyInfoService;
|
import com.ots.project.exam.service.IEntDemographyParamService;
|
import com.ots.project.exam.service.IEntTestMemberService;
|
import com.ots.project.exam.service.IEntTestPackageService;
|
import com.ots.project.exam.service.ISysUserExtendService;
|
import com.ots.project.exam.service.ITExamPaperService;
|
import com.ots.project.exam.service.MemberService;
|
import com.ots.project.system.dict.domain.DictData;
|
import com.ots.project.tool.exam.JsonUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
import static com.ots.common.enums.ResponseCode.TEST_MEMBERINFO_EMPTY;
|
import static com.ots.common.enums.ResponseCode.TEST_URL_FAIL;
|
@Service
|
@Slf4j
|
public class MemberServiceImpl implements MemberService {
|
|
private static final String UNTREATED_0 = "0";
|
private static final String DONE_1 = "1";
|
private static final String ANSWERING_2 = "2";
|
private static final String TIMEOUT_6 = "6";
|
private List<String> status = Arrays.asList(UNTREATED_0, DONE_1, ANSWERING_2, TIMEOUT_6);
|
@Autowired
|
private IEntTestMemberService entTestMemberService;
|
@Autowired
|
private IEntDemographyParamService entDemographyParamService;
|
@Autowired
|
private IEntTestPackageService entTestPackageService;
|
@Autowired
|
private IEntDemographyInfoService entDemographyInfoService;
|
@Autowired
|
private DictService dictService;
|
@Autowired
|
private ISysUserExtendService sysUserExtendService;
|
@Autowired
|
private ITExamPaperService itExamPaperService;
|
@Override
|
public List<ParamDefine> getParamDefines(String token, String lang) {
|
EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
|
TEST_URL_FAIL.assertNotNull(entTestMember);
|
Long testId = entTestMember.getTestId();
|
Long memberId = entTestMember.getMemberId();
|
|
EntTestPackage entTestPackage = entTestPackageService.selectEntTestPackageById(testId);
|
String paramCodes = entTestPackage.getParamCodes();
|
if (Objects.isNull(paramCodes)) {
|
return null;
|
}
|
|
List<EntDemographyParam> entDemographyParams = entDemographyParamService.selectEntDemographyParamListByParamIn(paramCodes);
|
if (Objects.isNull(entDemographyParams) || entDemographyParams.isEmpty()) {
|
return null;
|
}
|
List<ParamDefine> result = entDemographyParams.stream().map(p -> {
|
ParamDefine paramDefine = new ParamDefine();
|
String langCodes = p.getLangCodes();
|
List<DemographyDto> listCodes = JsonUtil.toJsonListObject(langCodes, DemographyDto.class);
|
List<DemographyDto> data = listCodes.stream().filter(a -> Objects.equals(a.getLangType(), lang)).collect(Collectors.toList());
|
if (Objects.isNull(data) || data.isEmpty()) {
|
return null;
|
}
|
BeanUtils.copyProperties(p, paramDefine);
|
paramDefine.setLangType(data.get(0).getLangType());
|
paramDefine.setParamName(data.get(0).getLangCode());
|
if (StringUtils.isNotBlank(p.getDicttype())) {
|
List<ParamDefineDictData> list = dictService.getTypeByLangType(p.getDicttype(),lang).stream().map(dictData -> {
|
ParamDefineDictData paramDefineDictData = new ParamDefineDictData();
|
BeanUtils.copyProperties(dictData, paramDefineDictData);
|
return paramDefineDictData;
|
}).collect(Collectors.toList());
|
paramDefine.setDictData(list);
|
}
|
paramDefine.setMemberId(memberId);
|
return paramDefine;
|
}).collect(Collectors.toList());
|
|
return result.stream().filter(a -> Objects.nonNull(a)).collect(Collectors.toList());
|
}
|
@Override
|
public List<EntDemographyInfo> queryDemographyParamInfo(String token) {
|
EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
|
TEST_URL_FAIL.assertNotNull(entTestMember);
|
EntDemographyInfo entDemographyInfo = new EntDemographyInfo();
|
entDemographyInfo.setMemberId(entTestMember.getMemberId());
|
List<EntDemographyInfo> entDemographyInfos = entDemographyInfoService.selectEntDemographyInfoList(entDemographyInfo);
|
TEST_MEMBERINFO_EMPTY.assertNotEmpty(entDemographyInfos);
|
return entDemographyInfos;
|
}
|
@Override
|
@Transactional
|
public void saveDemographyParamInfo(String token, List<ParamsInfo> infos, String langType) {
|
TEST_URL_FAIL.assertNotNull(entTestMemberService.findEntTestMember(token, status));
|
infos.stream().forEach(p -> {
|
EntDemographyInfo entDemographyInfo = new EntDemographyInfo();
|
BeanUtils.copyProperties(p, entDemographyInfo);
|
entDemographyInfo.setLangType(langType);
|
if (Objects.nonNull(entDemographyInfo.getInfoId())) {
|
entDemographyInfoService.updateEntDemographyInfo(entDemographyInfo);
|
} else {
|
entDemographyInfoService.insertEntDemographyInfo(entDemographyInfo);
|
}
|
});
|
}
|
@Override
|
public RelatedParty queryProdidByToken(String token) {
|
RelatedParty party = new RelatedParty();
|
try {
|
EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
|
Long testId = entTestMember.getTestId();
|
EntTestPackage entTestPackage = entTestPackageService.selectEntTestPackageById(testId);
|
Long prodid = entTestPackage.getProdId();
|
party.setProdId(prodid);
|
party.setProdName(entTestPackage.getProdName());
|
party.setTestId(testId);
|
party.setTestName(entTestPackage.getTestName());
|
party.setMemberId(entTestMember.getMemberId());
|
party.setMemberName(entTestMember.getMemberName());
|
party.setUser_id(entTestPackage.getUserId());
|
party.setUserName(entTestPackage.getUserName());
|
party.setReportTemplateId(entTestPackage.getReportTemplateId());
|
party.setAutoSendReport(entTestPackage.isAutoSendReport());
|
TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(prodid);
|
party.setQuestionTemplateId(tExamPaper.getQuestionTemplateId());
|
party.setStatus(entTestPackage.getStatus());
|
SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(entTestPackage.getUserId());
|
if (Objects.nonNull(sysUserExtend)) {
|
party.setUser_parent_id(sysUserExtend.getParentUserId());
|
}
|
party.setPosition(entTestPackage.getPosition());
|
party.setProfessionalCategory(entTestPackage.getProfessionalCategory());
|
party.setSuperiorPosition(entTestPackage.getSuperiorPosition());
|
party.setStartTime(entTestMember.getStartTime());
|
party.setMemberDept(entTestMember.getMemberDept());
|
party.setMemberPhone(entTestMember.getMemberPhone());
|
} catch (Exception ex) {
|
log.error("【通过token获取用户所在企业测试包关联产品包错误:】{}", ex.getMessage(), ex);
|
}
|
return party;
|
}
|
@Override
|
public List<DictItemDto> queryLang(String token) {
|
EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
|
TEST_URL_FAIL.assertNotNull(entTestMember);
|
List<DictData> list = dictService.getType("lang_type");
|
List<DictItemDto> result = list.stream().map(p -> {
|
DictItemDto dictItemDto = new DictItemDto();
|
BeanUtils.copyProperties(p, dictItemDto);
|
return dictItemDto;
|
}).collect(Collectors.toList());
|
return result;
|
}
|
}
|