package com.smartor.service.impl;
|
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DtoConversionUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.smartor.domain.*;
|
import com.smartor.mapper.*;
|
import com.smartor.service.ISvyLibTemplateService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
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.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 问卷Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2023-03-02
|
*/
|
@Slf4j
|
@Service
|
public class SvyLibTemplateServiceImpl implements ISvyLibTemplateService {
|
@Autowired
|
private SvyLibTemplateMapper svyLibTemplateMapper;
|
@Autowired
|
private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
|
@Autowired
|
private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
|
@Autowired
|
private TemplateDeptMapper templateDeptMapper;
|
@Autowired
|
private SvyLibTemplateTagMapper svyLibTemplateTagMapper;
|
@Autowired
|
private Icd10AssociationMapper icd10AssociationMapper;
|
|
/**
|
* 查询问卷
|
*
|
* @param svyid 问卷主键
|
* @return 问卷
|
*/
|
@Override
|
public SvyLibTemplate selectSvyLibTemplateBySvyid(Long svyid) {
|
return svyLibTemplateMapper.selectSvyLibTemplateBySvyid(svyid);
|
}
|
|
@Override
|
public List<SvyLibTemplate> getSviLibTemplate(SvyLibTemplate svyLibTemplate) {
|
SvyLibTemplateReq svyLibTemplateReq = new SvyLibTemplateReq();
|
svyLibTemplateReq.setSvyid(svyLibTemplate.getSvyid());
|
svyLibTemplateReq.setCategoryid(svyLibTemplate.getCategoryid());
|
svyLibTemplateReq.setDescription(svyLibTemplate.getDescription());
|
svyLibTemplateReq.setSvyname(svyLibTemplate.getSvyname());
|
List<SvyLibTemplate> svyLibTemplates = svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq);
|
for (SvyLibTemplate svyLibTemplate1 : svyLibTemplates) {
|
SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
|
svyLibTemplateScript.setSvyid(svyLibTemplate1.getSvyid());
|
List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
|
for (SvyLibTemplateScript svyLibTemplateScript1 : svyLibTemplateScripts) {
|
if (svyLibTemplateScript1.getScriptType().equals("1") || svyLibTemplateScript1.getScriptType().equals("2")) {
|
SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
|
svyLibTemplateTargetoption.setScriptid(svyLibTemplateScript1.getId());
|
List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
|
svyLibTemplateScript1.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
|
}
|
}
|
svyLibTemplate1.setSvyTemplateLibScripts(svyLibTemplateScripts);
|
}
|
|
return svyLibTemplates;
|
}
|
|
/**
|
* 查询问卷列表
|
*
|
* @param svyLibTemplateReq 问卷
|
* @return 问卷
|
*/
|
@Override
|
public List<SvyLibTemplateVO> selectSvyLibTemplateList(SvyLibTemplateReq svyLibTemplateReq) {
|
List<SvyLibTemplate> svyLibTemplates = svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq);
|
List<SvyLibTemplateVO> svyLibTemplateVOS = DtoConversionUtils.sourceToTarget(svyLibTemplates, SvyLibTemplateVO.class);
|
//添加题目
|
for (int i = 0; i < svyLibTemplateVOS.size(); i++) {
|
SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
|
svyLibTemplateScript.setSvyid(svyLibTemplateVOS.get(i).getSvyid());
|
List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
|
//获取题目选项
|
a:
|
for (int j = 0; j < svyLibTemplateScripts.size(); j++) {
|
log.info("问题id为:{}", svyLibTemplateScripts.get(j).getId());
|
if (StringUtils.isNotEmpty(svyLibTemplateScripts.get(j).getScriptType()) && svyLibTemplateScripts.get(j).getScriptType().equals("3") || svyLibTemplateScripts.get(j).getId() == null) {
|
//作答题,不需要选项
|
continue a;
|
} else {
|
SvyLibTemplateTargetoption svyLibTopicoption = new SvyLibTemplateTargetoption();
|
svyLibTopicoption.setScriptid(svyLibTemplateScripts.get(j).getId());
|
List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTopicoption);
|
//将查询出的选项目放到题目中
|
svyLibTemplateScripts.get(j).setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
|
}
|
}
|
//将题目放到问卷列表中
|
svyLibTemplateVOS.get(i).setSvyTemplateLibScripts(svyLibTemplateScripts);
|
|
//获取每个问卷对应的科室
|
TemplateDept templateDept = new TemplateDept();
|
templateDept.setTempid(svyLibTemplateVOS.get(i).getSvyid());
|
List<TemplateDept> tempDetpRelevances = templateDeptMapper.selectTemplateDeptList(templateDept);
|
svyLibTemplateVOS.get(i).setTempDetpRelevances(CollectionUtils.isNotEmpty(tempDetpRelevances) ? tempDetpRelevances : new ArrayList<>());
|
|
//获取标签
|
SvyLibTemplateTag svyLibTemplateTag = new SvyLibTemplateTag();
|
svyLibTemplateTag.setTemplateid(svyLibTemplateVOS.get(i).getSvyid());
|
List<SvyLibTemplateTag> svyLibTemplateTags = svyLibTemplateTagMapper.selectSvyLibTemplateTagList(svyLibTemplateTag);
|
svyLibTemplateVOS.get(i).setSvyLibTemplateTagList(svyLibTemplateTags);
|
|
//获取疾病
|
Icd10Association icd10Association = new Icd10Association();
|
icd10Association.setType(5L);
|
icd10Association.setOutid(svyLibTemplateVOS.get(i).getSvyid());
|
svyLibTemplateVOS.get(i).setIcd10AssociationList(icd10AssociationMapper.selectIcd10AssociationList(icd10Association));
|
|
}
|
|
//先将相同的id的icdname,整理到一块
|
List<SvyLibTemplateVO> libTemplates = svyLibTemplateVOS.stream().collect(Collectors.groupingBy(SvyLibTemplateVO::getSvyid, Collectors.mapping(SvyLibTemplateVO::getIcdname, Collectors.joining(", ")))).entrySet().stream().map(entry -> new SvyLibTemplateVO(entry.getKey(), entry.getValue())).collect(Collectors.toList());
|
//临时变量,用来保存疾病名称
|
String icdname = null;
|
for (int i = 0; i < libTemplates.size(); i++) {
|
for (int j = 0; j < svyLibTemplateVOS.size(); j++) {
|
if (ObjectUtils.isNotEmpty(libTemplates.get(i).getSvyid()) && libTemplates.get(i).getSvyid() == svyLibTemplateVOS.get(j).getSvyid()) {
|
icdname = libTemplates.get(i).getIcdname();
|
// 将原数据拷贝到整理的好的对象上
|
BeanUtils.copyProperties(svyLibTemplateVOS.get(j), libTemplates.get(i));
|
//再将整理好的“疾病名称”替换
|
libTemplates.get(i).setIcdname(icdname);
|
}
|
//将问题按序号排一下序
|
Collections.sort(svyLibTemplateVOS.get(j).getSvyTemplateLibScripts(), new Comparator<SvyLibTemplateScript>() {
|
@Override
|
public int compare(SvyLibTemplateScript o1, SvyLibTemplateScript o2) {
|
return Integer.compare(o1.getSort().intValue(), o2.getSort().intValue());
|
}
|
});
|
}
|
}
|
|
return svyLibTemplateVOS;
|
}
|
|
/**
|
* 新增或修改问卷模板信息
|
*
|
* @param svyLibTemplateVO
|
* @return
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public Integer saveOrUpdateTemplate(SvyLibTemplateVO svyLibTemplateVO) {
|
SvyLibTemplate svyLibTemplate = DtoConversionUtils.sourceToTarget(svyLibTemplateVO, SvyLibTemplate.class);
|
Integer i = null;
|
if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 1) {
|
//新增
|
svyLibTemplate.setCreateTime(DateUtils.getNowDate());
|
svyLibTemplateMapper.insertSvyLibTemplate(svyLibTemplate);
|
} else if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 2) {
|
//修改
|
svyLibTemplate.setUpdateTime(DateUtils.getNowDate());
|
svyLibTemplateMapper.updateSvyLibTemplate(svyLibTemplate);
|
} else if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 3) {
|
//删除
|
svyLibTemplateMapper.deleteSvyLibTemplateBySvyid(svyLibTemplate.getSvyid());
|
}
|
i = svyLibTemplate.getSvyid().intValue();
|
|
//处理题目
|
if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyTemplateLibScripts())) {
|
for (SvyLibTemplateScript svyLibScript : svyLibTemplate.getSvyTemplateLibScripts()) {
|
svyLibScript.setGuid(svyLibTemplateVO.getGuid());
|
svyLibScript.setOrgid(svyLibTemplateVO.getOrgid());
|
//对题目进行处理
|
if (svyLibScript.getIsoperation() != null) {
|
//问题的操作不为空
|
scriptHandle(svyLibTemplate.getSvyid(), svyLibScript, svyLibScript.getIsoperation());
|
} else if (svyLibScript.getIsoperation() == null && svyLibTemplate.getIsoperation() != null) {
|
//模板的操作不为空
|
scriptHandle(svyLibTemplate.getSvyid(), svyLibScript, svyLibTemplate.getIsoperation());
|
}
|
//对题目选项进行处理
|
if (CollectionUtils.isNotEmpty(svyLibScript.getSvyLibTemplateTargetoptions())) {
|
for (SvyLibTemplateTargetoption svyLibTemplateTargetoption : svyLibScript.getSvyLibTemplateTargetoptions()) {
|
svyLibTemplateTargetoption.setGuid(svyLibTemplateVO.getGuid());
|
svyLibTemplateTargetoption.setOrgid(svyLibTemplateVO.getOrgid());
|
if (svyLibTemplateTargetoption.getIsoperation() != null) {
|
//选选项的操作不为空
|
optionHandle(svyLibTemplateTargetoption, svyLibScript.getId(), svyLibTemplateTargetoption.getIsoperation());
|
} else if (svyLibTemplateTargetoption.getIsoperation() == null && svyLibScript.getIsoperation() != null) {
|
//问题的操作不为空
|
optionHandle(svyLibTemplateTargetoption, svyLibScript.getId(), svyLibScript.getIsoperation());
|
} else if (svyLibTemplateTargetoption.getIsoperation() == null && svyLibScript.getIsoperation() == null && svyLibTemplate.getIsoperation() != null) {
|
//模板的操作不为空
|
optionHandle(svyLibTemplateTargetoption, svyLibScript.getId(), svyLibTemplate.getIsoperation());
|
}
|
}
|
}
|
}
|
}
|
|
if (CollectionUtils.isNotEmpty(svyLibTemplate.getTempDetpRelevances())) {
|
for (TemplateDept tempDetpRelevance : svyLibTemplate.getTempDetpRelevances()) {
|
tempDetpRelevance.setGuid(svyLibTemplateVO.getGuid());
|
tempDetpRelevance.setOrgid(svyLibTemplateVO.getOrgid());
|
if (tempDetpRelevance.getId() == null) {
|
//新增
|
tempDetpRelevance.setTempid(svyLibTemplate.getSvyid());
|
tempDetpRelevance.setType(1L);
|
templateDeptMapper.insertTemplateDept(tempDetpRelevance);
|
} else {
|
templateDeptMapper.updateTemplateDept(tempDetpRelevance);
|
}
|
}
|
|
}
|
|
//标签处理
|
if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyLibTemplateTagList())) {
|
for (SvyLibTemplateTag svyLibTemplateTag : svyLibTemplate.getSvyLibTemplateTagList()) {
|
if (svyLibTemplateTag.getId() == null) {
|
//新增
|
svyLibTemplateTag.setTemplateid(svyLibTemplate.getSvyid());
|
svyLibTemplateTagMapper.insertSvyLibTemplateTag(svyLibTemplateTag);
|
} else {
|
svyLibTemplateTag.setTemplateid(svyLibTemplate.getSvyid());
|
svyLibTemplateTagMapper.updateSvyLibTemplateTag(svyLibTemplateTag);
|
}
|
}
|
|
}
|
if (CollectionUtils.isNotEmpty(svyLibTemplateVO.getIcd10AssociationList())) {
|
for (Icd10Association icd10Association : svyLibTemplateVO.getIcd10AssociationList()) {
|
if (icd10Association.getId() == null) {
|
icd10Association.setType(5L);
|
icd10Association.setOutid(svyLibTemplate.getSvyid());
|
icd10AssociationMapper.insertIcd10Association(icd10Association);
|
} else {
|
icd10Association.setType(5L);
|
icd10Association.setOutid(svyLibTemplate.getSvyid());
|
icd10AssociationMapper.updateIcd10Association(icd10Association);
|
}
|
}
|
}
|
return i;
|
}
|
|
/**
|
* 修改问卷
|
*
|
* @param svyLibTemplate 问卷
|
* @return 结果
|
*/
|
@Override
|
public int updateSvyLibTemplate(SvyLibTemplate svyLibTemplate) {
|
svyLibTemplate.setUpdateTime(DateUtils.getNowDate());
|
return svyLibTemplateMapper.updateSvyLibTemplate(svyLibTemplate);
|
}
|
|
/**
|
* 批量删除问卷
|
*
|
* @param svyids 需要删除的问卷主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyLibTemplateBySvyids(Long[] svyids) {
|
return svyLibTemplateMapper.deleteSvyLibTemplateBySvyids(svyids);
|
}
|
|
/**
|
* 删除问卷信息
|
*
|
* @param svyid 问卷主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyLibTemplateBySvyid(Long svyid) {
|
return svyLibTemplateMapper.deleteSvyLibTemplateBySvyid(svyid);
|
}
|
|
private void scriptHandle(Long svyid, SvyLibTemplateScript svyLibScript, Integer isoperation) {
|
if (isoperation == 1) {
|
//新增
|
svyLibScript.setSvyid(svyid);
|
svyLibScript.setId(null);
|
svyLibScript.setCreateTime(new Date());
|
svyLibTemplateScriptMapper.insertSvyLibTemplateScript(svyLibScript);
|
|
} else if (isoperation == 2) {
|
//修改
|
svyLibScript.setSvyid(svyid);
|
svyLibScript.setUpdateTime(new Date());
|
svyLibTemplateScriptMapper.updateSvyLibTemplateScript(svyLibScript);
|
} else if (isoperation == 3) {
|
svyLibTemplateScriptMapper.deleteSvyLibTemplateScriptByTopicid(svyLibScript.getId());
|
}
|
}
|
|
private void optionHandle(SvyLibTemplateTargetoption svyLibTemplateTargetoption, Long scriptId, Integer isoperation) {
|
if (isoperation == 1) {
|
//新增
|
svyLibTemplateTargetoption.setScriptid(scriptId);
|
svyLibTemplateTargetoption.setCreateTime(new Date());
|
svyLibTemplateTargetoptionMapper.insertSvyLibTemplateTargetoption(svyLibTemplateTargetoption);
|
} else if (isoperation == 2) {
|
//修改
|
svyLibTemplateTargetoption.setScriptid(scriptId);
|
svyLibTemplateTargetoption.setUpdateTime(new Date());
|
svyLibTemplateTargetoptionMapper.updateSvyLibTemplateTargetoption(svyLibTemplateTargetoption);
|
} else if (isoperation == 3) {
|
//删除
|
svyLibTemplateTargetoptionMapper.deleteSvyLibTemplateTargetoptionById(svyLibTemplateTargetoption.getId());
|
}
|
}
|
}
|