| | |
| | | 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.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 com.smartor.service.ISvyLibTemplateService; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 问卷Service业务层处理 |
| | |
| | | @Autowired |
| | | private SvyLibTemplateMapper svyLibTemplateMapper; |
| | | @Autowired |
| | | private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper; |
| | | @Autowired |
| | | private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper; |
| | | @Autowired |
| | | private TemplateDeptMapper templateDeptMapper; |
| | | @Autowired |
| | | private SvyLibTemplateTagMapper svyLibTemplateTagMapper; |
| | | @Autowired |
| | | private Icd10AssociationMapper icd10AssociationMapper; |
| | | @Autowired |
| | | private SvyLibScriptMapper svyLibScriptMapper; |
| | | @Autowired |
| | | private SvyLibScriptOptionMapper svyLibTopicoptionMapper; |
| | | @Autowired |
| | | private TempDetpRelevanceMapper tempDetpRelevanceMapper; |
| | | |
| | | /** |
| | | * 查询问卷 |
| | |
| | | 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()); |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 查询问卷列表 |
| | | * |
| | |
| | | * @return 问卷 |
| | | */ |
| | | @Override |
| | | public List<SvyLibTemplate> selectSvyLibTemplateList(SvyLibTemplateReq svyLibTemplateReq) { |
| | | 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 < svyLibTemplates.size(); i++) { |
| | | SvyLibScript svyLibTopic = new SvyLibScript(); |
| | | svyLibTopic.setSvyid(svyLibTemplates.get(i).getSvyid()); |
| | | List<SvyLibScript> svyLibTopics = svyLibScriptMapper.selectSvyLibScriptList(svyLibTopic); |
| | | 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 < 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) { |
| | | 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 { |
| | | SvyLibScriptOption svyLibTopicoption = new SvyLibScriptOption(); |
| | | svyLibTopicoption.setTopicid(svyLibTopics.get(j).getSvyscriptId()); |
| | | List<SvyLibScriptOption> svyLibTopicoptions = svyLibTopicoptionMapper.selectSvyLibScriptOptionList(svyLibTopicoption); |
| | | SvyLibTemplateTargetoption svyLibTopicoption = new SvyLibTemplateTargetoption(); |
| | | svyLibTopicoption.setScriptid(svyLibTemplateScripts.get(j).getId()); |
| | | List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTopicoption); |
| | | //将查询出的选项目放到题目中 |
| | | svyLibTopics.get(j).setSvyLibScriptOptions(svyLibTopicoptions); |
| | | svyLibTemplateScripts.get(j).setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions); |
| | | } |
| | | } |
| | | //将题目放到问卷列表中 |
| | | svyLibTemplates.get(i).setSvyLibTopics(svyLibTopics); |
| | | svyLibTemplateVOS.get(i).setSvyTemplateLibScripts(svyLibTemplateScripts); |
| | | |
| | | //获取每个问卷对应的科室 |
| | | TempDetpRelevance tempDetpRelevance = new TempDetpRelevance(); |
| | | tempDetpRelevance.setTempid(svyLibTemplates.get(i).getSvyid()); |
| | | List<TempDetpRelevance> tempDetpRelevances = tempDetpRelevanceMapper.selectTempDetpRelevanceList(tempDetpRelevance); |
| | | svyLibTemplates.get(i).setTempDetpRelevances(CollectionUtils.isNotEmpty(tempDetpRelevances) ? tempDetpRelevances : new ArrayList<>()); |
| | | 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<SvyLibTemplate> 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()); |
| | | 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 < svyLibTemplates.size(); j++) { |
| | | if (ObjectUtils.isNotEmpty(libTemplates.get(i).getSvyid()) && libTemplates.get(i).getSvyid() == svyLibTemplates.get(j).getSvyid()) { |
| | | 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(svyLibTemplates.get(j), libTemplates.get(i)); |
| | | 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 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; |
| | | return svyLibTemplateVOS; |
| | | } |
| | | |
| | | /** |
| | | * 新增或修改问卷模板信息 |
| | | * |
| | | * @param svyLibTemplate |
| | | * @param svyLibTemplateVO |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public Integer saveOrUpdateTemplate(SvyLibTemplate svyLibTemplate) { |
| | | 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()); |
| | | i = svyLibTemplateMapper.insertSvyLibTemplate(svyLibTemplate); |
| | | svyLibTemplateMapper.insertSvyLibTemplate(svyLibTemplate); |
| | | } else if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 2) { |
| | | //修改 |
| | | svyLibTemplate.setUpdateTime(DateUtils.getNowDate()); |
| | | i = svyLibTemplateMapper.updateSvyLibTemplate(svyLibTemplate); |
| | | svyLibTemplateMapper.updateSvyLibTemplate(svyLibTemplate); |
| | | } else if (svyLibTemplate.getIsoperation() != null && svyLibTemplate.getIsoperation() == 3) { |
| | | //删除 |
| | | svyLibTemplateMapper.deleteSvyLibTemplateBySvyid(svyLibTemplate.getSvyid()); |
| | | } |
| | | i = svyLibTemplate.getSvyid().intValue(); |
| | | |
| | | //处理题目 |
| | | if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyLibTopics())) { |
| | | for (SvyLibScript svyLibTopic : svyLibTemplate.getSvyLibTopics()) { |
| | | if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyTemplateLibScripts())) { |
| | | for (SvyLibTemplateScript svyLibScript : svyLibTemplate.getSvyTemplateLibScripts()) { |
| | | //对题目进行处理 |
| | | 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 (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(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(svyLibScript.getSvyLibTemplateTargetoptions())) { |
| | | for (SvyLibTemplateTargetoption svyLibTemplateTargetoption : svyLibScript.getSvyLibTemplateTargetoptions()) { |
| | | 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 (TempDetpRelevance tempDetpRelevance : svyLibTemplate.getTempDetpRelevances()) { |
| | | for (TemplateDept tempDetpRelevance : svyLibTemplate.getTempDetpRelevances()) { |
| | | if (tempDetpRelevance.getId() == null) { |
| | | //新增 |
| | | tempDetpRelevance.setTempid(svyLibTemplate.getSvyid()); |
| | | tempDetpRelevance.setType(1L); |
| | | tempDetpRelevanceMapper.insertTempDetpRelevance(tempDetpRelevance); |
| | | templateDeptMapper.insertTemplateDept(tempDetpRelevance); |
| | | } else { |
| | | tempDetpRelevanceMapper.updateTempDetpRelevance(tempDetpRelevance); |
| | | 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; |
| | | } |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | } |