package com.smartor.service.impl;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DtoConversionUtils;
|
import com.smartor.domain.*;
|
import com.smartor.mapper.Icd10AssociationMapper;
|
import com.smartor.mapper.SvyLibTopicMapper;
|
import com.smartor.mapper.SvyTopicoptionMapper;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.smartor.mapper.SvyLibTitleMapper;
|
import com.smartor.service.ISvyLibTitleService;
|
import org.springframework.transaction.annotation.Transactional;
|
|
/**
|
* 问卷Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2023-03-02
|
*/
|
@Service
|
public class SvyLibTitleServiceImpl implements ISvyLibTitleService {
|
@Autowired
|
private SvyLibTitleMapper svyLibTitleMapper;
|
@Autowired
|
private Icd10AssociationMapper icd10AssociationMapper;
|
@Autowired
|
private SvyLibTopicMapper svyLibTopicMapper;
|
@Autowired
|
private SvyTopicoptionMapper svyTopicoptionMapper;
|
|
/**
|
* 查询问卷
|
*
|
* @param svyid 问卷主键
|
* @return 问卷
|
*/
|
@Override
|
public SvyLibTitle selectSvyLibTitleBySvyid(Long svyid) {
|
return svyLibTitleMapper.selectSvyLibTitleBySvyid(svyid);
|
}
|
|
/**
|
* 查询问卷列表
|
*
|
* @param svyLibTitleReq 问卷
|
* @return 问卷
|
*/
|
@Override
|
public List<SvyLibTitle> selectSvyLibTitleList(SvyLibTitleReq svyLibTitleReq) {
|
List<SvyLibTitle> svyLibTitles = svyLibTitleMapper.selectSvyLibTitleList(svyLibTitleReq);
|
//添加题目
|
for (int i = 0; i < svyLibTitles.size(); i++) {
|
SvyLibTopic svyLibTopic = new SvyLibTopic();
|
svyLibTopic.setSvyid(svyLibTitles.get(i).getSvyid());
|
List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
|
//获取题目选项
|
a:
|
for (int j = 0; j < svyLibTopics.size(); j++) {
|
if (svyLibTopics.get(j).getTopictype() == 3) {
|
//作答题,不需要选项
|
continue a;
|
} else {
|
SvyTopicoption svyTopicoption = new SvyTopicoption();
|
svyTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
|
List<SvyTopicoption> svyTopicoptions = svyTopicoptionMapper.selectSvyTopicoptionList(svyTopicoption);
|
//将查询出的选项目放到题目中
|
svyLibTopics.get(j).setSvyTopicoptions(svyTopicoptions);
|
}
|
}
|
//将题目放到问卷列表中
|
svyLibTitles.get(i).setSvyLibTopics(svyLibTopics);
|
}
|
|
//先将相同的id的icdname,整理到一块
|
List<SvyLibTitle> libTitles = svyLibTitles.stream().collect(Collectors.groupingBy(SvyLibTitle::getSvyid, Collectors.mapping(SvyLibTitle::getIcdname, Collectors.joining(", ")))).entrySet().stream().map(entry -> new SvyLibTitle(entry.getKey(), entry.getValue())).collect(Collectors.toList());
|
//临时变量,用来保存疾病名称
|
String icdname = null;
|
for (int i = 0; i < libTitles.size(); i++) {
|
for (int j = 0; j < svyLibTitles.size(); j++) {
|
if (ObjectUtils.isNotEmpty(libTitles.get(i).getSvyid()) && libTitles.get(i).getSvyid() == svyLibTitles.get(j).getSvyid()) {
|
icdname = libTitles.get(i).getIcdname();
|
// 将原数据拷贝到整理的好的对象上
|
BeanUtils.copyProperties(svyLibTitles.get(j), libTitles.get(i));
|
//再将整理好的“疾病名称”替换
|
libTitles.get(i).setIcdname(icdname);
|
}
|
}
|
}
|
return libTitles;
|
}
|
|
/**
|
* 新增问卷
|
*
|
* @param svyLibTitle 问卷
|
* @return 结果
|
*/
|
@Transactional
|
@Override
|
public int insertSvyLibTitle(SvyLibTitle svyLibTitle) {
|
svyLibTitle.setCreateTime(DateUtils.getNowDate());
|
svyLibTitleMapper.insertSvyLibTitle(svyLibTitle);
|
//关联问卷疾病
|
for (String icdId : svyLibTitle.getIcdID()) {
|
Icd10Association icd10Association = new Icd10Association();
|
icd10Association.setIcd10code(icdId);
|
icd10Association.setSvyid(svyLibTitle.getSvyid());
|
icd10AssociationMapper.insertIcd10Association(icd10Association);
|
}
|
//新增问题题目
|
for (int i = 0; i < svyLibTitle.getSvyLibTopics().size(); i++) {
|
SvyLibTopic svyLibTopic = svyLibTitle.getSvyLibTopics().get(i);
|
svyLibTopic.setSvyid(svyLibTitle.getSvyid());
|
//题目的选项目,直接用svy_topicoption表,用svyTopicidf去关联
|
svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
|
}
|
return 1;
|
}
|
|
/**
|
* 修改问卷
|
*
|
* @param svyLibTitle 问卷
|
* @return 结果
|
*/
|
@Override
|
public int updateSvyLibTitle(SvyLibTitle svyLibTitle) {
|
svyLibTitle.setUpdateTime(DateUtils.getNowDate());
|
return svyLibTitleMapper.updateSvyLibTitle(svyLibTitle);
|
}
|
|
/**
|
* 批量删除问卷
|
*
|
* @param svyids 需要删除的问卷主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyLibTitleBySvyids(Long[] svyids) {
|
return svyLibTitleMapper.deleteSvyLibTitleBySvyids(svyids);
|
}
|
|
/**
|
* 删除问卷信息
|
*
|
* @param svyid 问卷主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyLibTitleBySvyid(Long svyid) {
|
return svyLibTitleMapper.deleteSvyLibTitleBySvyid(svyid);
|
}
|
}
|