liusheng
2024-08-28 bedd0a1cef215538df64470df6b8d4a022189136
smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java
@@ -12,10 +12,9 @@
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.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -30,13 +29,15 @@
    @Autowired
    private SvyLibTemplateMapper svyLibTemplateMapper;
    @Autowired
    private Icd10AssociationMapper icd10AssociationMapper;
    @Autowired
    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
    @Autowired
    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
    @Autowired
    private TempDetpRelevanceMapper tempDetpRelevanceMapper;
    @Autowired
    private SvyLibTemplateTagMapper svyLibTemplateTagMapper;
    @Autowired
    private Icd10AssociationMapper icd10AssociationMapper;
    /**
     * 查询问卷
@@ -49,6 +50,15 @@
        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());
        return svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq);
    }
    /**
     * 查询问卷列表
     *
@@ -56,15 +66,13 @@
     * @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 svyLibScript = new SvyLibScript();
//            svyLibScript.setSvyid(svyLibTemplates.get(i).getSvyid());
//            List<SvyLibScript> svyLibTopics = svyLibScriptMapper.selectSvyLibScriptList(svyLibScript);
        for (int i = 0; i < svyLibTemplateVOS.size(); i++) {
            SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
            svyLibTemplateScript.setId(svyLibTemplates.get(i).getSvyid());
            svyLibTemplateScript.setSvyid(svyLibTemplateVOS.get(i).getSvyid());
            List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
            //获取题目选项
            a:
@@ -82,69 +90,64 @@
                }
            }
            //将题目放到问卷列表中
            svyLibTemplates.get(i).setSvyTemplateLibScripts(svyLibTemplateScripts);
            svyLibTemplateVOS.get(i).setSvyTemplateLibScripts(svyLibTemplateScripts);
            //获取每个问卷对应的科室
            TempDetpRelevance tempDetpRelevance = new TempDetpRelevance();
            tempDetpRelevance.setTempid(svyLibTemplates.get(i).getSvyid());
            tempDetpRelevance.setTempid(svyLibTemplateVOS.get(i).getSvyid());
            List<TempDetpRelevance> tempDetpRelevances = tempDetpRelevanceMapper.selectTempDetpRelevanceList(tempDetpRelevance);
            svyLibTemplates.get(i).setTempDetpRelevances(CollectionUtils.isNotEmpty(tempDetpRelevances) ? tempDetpRelevances : new ArrayList<>());
            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.getSvyLibScripts().size(); i++) {
//            SvyLibScript svyLibScript = svyLibTemplate.getSvyLibScripts().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) {
            //新增
@@ -202,6 +205,34 @@
            }
        }
        //标签处理
        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;
    }
@@ -242,14 +273,14 @@
    private void scriptHandle(Long svyid, SvyLibTemplateScript svyLibScript, Integer isoperation) {
        if (isoperation == 1) {
            //新增
            svyLibScript.setId(svyid);
            svyLibScript.setSvyid(svyid);
            svyLibScript.setId(null);
            svyLibScript.setCreateTime(new Date());
            svyLibTemplateScriptMapper.insertSvyLibTemplateScript(svyLibScript);
        } else if (isoperation == 2) {
            //修改
            svyLibScript.setId(svyid);
            svyLibScript.setSvyid(svyid);
            svyLibScript.setUpdateTime(new Date());
            svyLibTemplateScriptMapper.updateSvyLibTemplateScript(svyLibScript);
        } else if (isoperation == 3) {