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.Icd10Association; import com.smartor.domain.SvyLibTitleReq; import com.smartor.domain.SvyLibTopic; import com.smartor.mapper.Icd10AssociationMapper; import com.smartor.mapper.SvyLibTopicMapper; 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.domain.SvyLibTitle; 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; /** * 查询问卷 * * @param svyid 问卷主键 * @return 问卷 */ @Override public SvyLibTitle selectSvyLibTitleBySvyid(Long svyid) { return svyLibTitleMapper.selectSvyLibTitleBySvyid(svyid); } /** * 查询问卷列表 * * @param svyLibTitleReq 问卷 * @return 问卷 */ @Override public List selectSvyLibTitleList(SvyLibTitleReq svyLibTitleReq) { List svyLibTitles = svyLibTitleMapper.selectSvyLibTitleList(svyLibTitleReq); //先将相同的id的icdname,整理到一块 List 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); 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); } }