package com.smartor.service.impl; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.smartor.domain.*; import com.smartor.mapper.*; 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 com.smartor.service.ISvyLibTemplateService; import org.springframework.transaction.annotation.Transactional; /** * 问卷Service业务层处理 * * @author ruoyi * @date 2023-03-02 */ @Slf4j @Service public class SvyLibTemplateServiceImpl implements ISvyLibTemplateService { @Autowired private SvyLibTemplateMapper svyLibTemplateMapper; @Autowired private Icd10AssociationMapper icd10AssociationMapper; @Autowired private SvyLibScriptMapper svyLibScriptMapper; @Autowired private SvyLibScriptOptionMapper svyLibTopicoptionMapper; @Autowired private TempDetpRelevanceMapper tempDetpRelevanceMapper; /** * 查询问卷 * * @param svyid 问卷主键 * @return 问卷 */ @Override public SvyLibTemplate selectSvyLibTemplateBySvyid(Long svyid) { return svyLibTemplateMapper.selectSvyLibTemplateBySvyid(svyid); } /** * 查询问卷列表 * * @param svyLibTemplateReq 问卷 * @return 问卷 */ @Override public List selectSvyLibTemplateList(SvyLibTemplateReq svyLibTemplateReq) { List svyLibTemplates = svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq); //添加题目 for (int i = 0; i < svyLibTemplates.size(); i++) { SvyLibScript svyLibTopic = new SvyLibScript(); svyLibTopic.setSvyid(svyLibTemplates.get(i).getSvyid()); List svyLibTopics = svyLibScriptMapper.selectSvyLibScriptList(svyLibTopic); //获取题目选项 a: for (int j = 0; j < svyLibTopics.size(); j++) { log.info("问题id为:{}", svyLibTopics.get(j).getSvyscriptId()); if (StringUtils.isNotEmpty(svyLibTopics.get(j).getScripttype()) && svyLibTopics.get(j).getScripttype().equals("3") || svyLibTopics.get(j).getSvyscriptId() == null) { //作答题,不需要选项 continue a; } else { SvyLibScriptOption svyLibTopicoption = new SvyLibScriptOption(); svyLibTopicoption.setTopicid(svyLibTopics.get(j).getSvyscriptId()); List svyLibTopicoptions = svyLibTopicoptionMapper.selectSvyLibScriptOptionList(svyLibTopicoption); //将查询出的选项目放到题目中 svyLibTopics.get(j).setSvyLibScriptOptions(svyLibTopicoptions); } } //将题目放到问卷列表中 svyLibTemplates.get(i).setSvyLibTopics(svyLibTopics); //获取每个问卷对应的科室 TempDetpRelevance tempDetpRelevance = new TempDetpRelevance(); tempDetpRelevance.setTempid(svyLibTemplates.get(i).getSvyid()); List tempDetpRelevances = tempDetpRelevanceMapper.selectTempDetpRelevanceList(tempDetpRelevance); svyLibTemplates.get(i).setTempDetpRelevances(CollectionUtils.isNotEmpty(tempDetpRelevances) ? tempDetpRelevances : new ArrayList<>()); } //先将相同的id的icdname,整理到一块 List libTemplates = svyLibTemplates.stream().collect(Collectors.groupingBy(SvyLibTemplate::getSvyid, Collectors.mapping(SvyLibTemplate::getIcdname, Collectors.joining(", ")))).entrySet().stream().map(entry -> new SvyLibTemplate(entry.getKey(), entry.getValue())).collect(Collectors.toList()); //临时变量,用来保存疾病名称 String icdname = null; for (int i = 0; i < libTemplates.size(); i++) { for (int j = 0; j < svyLibTemplates.size(); j++) { if (ObjectUtils.isNotEmpty(libTemplates.get(i).getSvyid()) && libTemplates.get(i).getSvyid() == svyLibTemplates.get(j).getSvyid()) { icdname = libTemplates.get(i).getIcdname(); // 将原数据拷贝到整理的好的对象上 BeanUtils.copyProperties(svyLibTemplates.get(j), libTemplates.get(i)); //再将整理好的“疾病名称”替换 libTemplates.get(i).setIcdname(icdname); } } } return libTemplates; } /** * 新增问卷 * * @param svyLibTemplate 问卷 * @return 结果 */ @Transactional @Override public int insertSvyLibTemplate(SvyLibTemplate svyLibTemplate) { svyLibTemplate.setCreateTime(DateUtils.getNowDate()); svyLibTemplateMapper.insertSvyLibTemplate(svyLibTemplate); //关联问卷疾病 for (String icdId : svyLibTemplate.getIcdID()) { Icd10Association icd10Association = new Icd10Association(); icd10Association.setIcd10code(icdId); icd10Association.setSvyid(svyLibTemplate.getSvyid()); icd10AssociationMapper.insertIcd10Association(icd10Association); } //新增问题题目 for (int i = 0; i < svyLibTemplate.getSvyLibTopics().size(); i++) { SvyLibScript svyLibScript = svyLibTemplate.getSvyLibTopics().get(i); svyLibScript.setSvyid(svyLibTemplate.getSvyid()); //题目的选项目,直接用svy_topicoption表,用svyTopicidf去关联 svyLibScriptMapper.insertSvyLibScript(svyLibScript); } return 1; } /** * 新增或修改问卷模板信息 * * @param svyLibTemplate * @return */ @Override public Integer saveOrUpdateTemplate(SvyLibTemplate svyLibTemplate) { Integer i = null; if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 1) { //新增 svyLibTemplate.setCreateTime(DateUtils.getNowDate()); i = svyLibTemplateMapper.insertSvyLibTemplate(svyLibTemplate); } else if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 2) { //修改 svyLibTemplate.setUpdateTime(DateUtils.getNowDate()); i = svyLibTemplateMapper.updateSvyLibTemplate(svyLibTemplate); } //处理题目 if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyLibTopics())) { for (SvyLibScript svyLibTopic : svyLibTemplate.getSvyLibTopics()) { //对题目进行处理 if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 1) { //新增 svyLibTopic.setSvyid(svyLibTemplate.getSvyid()); //题目的选项目,直接用svy_topicoption表,用svyTopicid去关联 svyLibScriptMapper.insertSvyLibScript(svyLibTopic); } else if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 2) { //修改 svyLibTopic.setSvyid(svyLibTemplate.getSvyid()); svyLibScriptMapper.updateSvyLibScript(svyLibTopic); } //对题目选项进行处理 if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibScriptOptions())) { for (SvyLibScriptOption svyLibTopicoption : svyLibTopic.getSvyLibScriptOptions()) { if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 1) { //新增 svyLibTopicoption.setTopicid(svyLibTopic.getId()); svyLibTopicoptionMapper.insertSvyLibScriptOption(svyLibTopicoption); } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 2) { //修改 svyLibTopicoption.setTopicid(svyLibTopic.getId()); svyLibTopicoptionMapper.updateSvyLibScriptOption(svyLibTopicoption); } } } } } if (CollectionUtils.isNotEmpty(svyLibTemplate.getTempDetpRelevances())) { for (TempDetpRelevance tempDetpRelevance : svyLibTemplate.getTempDetpRelevances()) { if (tempDetpRelevance.getId() == null) { //新增 tempDetpRelevance.setTempid(svyLibTemplate.getSvyid()); tempDetpRelevance.setType(1L); tempDetpRelevanceMapper.insertTempDetpRelevance(tempDetpRelevance); } else { tempDetpRelevanceMapper.updateTempDetpRelevance(tempDetpRelevance); } } } 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); } }