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.setSvyid(svyLibTemplates.get(i).getSvyid());
            svyLibTemplateScript.setSvyid(svyLibTemplateVOS.get(i).getSvyid());
            List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
            //获取题目选项
            a:
@@ -82,126 +90,105 @@
                }
            }
            //将题目放到问卷列表中
            svyLibTemplates.get(i).setSvyLibScripts(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) {
            //新增
            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) {
            //删除
            i = svyLibTemplateMapper.deleteSvyLibTemplateBySvyid(svyLibTemplate.getSvyid());
            svyLibTemplateMapper.deleteSvyLibTemplateBySvyid(svyLibTemplate.getSvyid());
        }
        i = svyLibTemplate.getSvyid().intValue();
        //处理题目
        if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyLibScripts())) {
            for (SvyLibTemplateScript svyLibScript : svyLibTemplate.getSvyLibScripts()) {
//                SvyLibTemplateScript svyLibTemplateScript = DtoConversionUtils.sourceToTarget(svyLibScript, SvyLibTemplateScript.class);
        if (CollectionUtils.isNotEmpty(svyLibTemplate.getSvyTemplateLibScripts())) {
            for (SvyLibTemplateScript svyLibScript : svyLibTemplate.getSvyTemplateLibScripts()) {
                //对题目进行处理
                if (svyLibScript.getIsoperation() != null && svyLibScript.getIsoperation() == 1) {
                    //新增
                    svyLibScript.setSvyid(svyLibTemplate.getSvyid());
                    svyLibScript.setId(null);
                    svyLibScript.setCreateTime(new Date());
                    svyLibTemplateScriptMapper.insertSvyLibTemplateScript(svyLibScript);
                } else if (svyLibScript.getIsoperation() != null && svyLibScript.getIsoperation() == 2) {
                    //修改
                    svyLibScript.setSvyid(svyLibTemplate.getSvyid());
                    svyLibScript.setUpdateTime(new Date());
                    svyLibTemplateScriptMapper.updateSvyLibTemplateScript(svyLibScript);
                } else if (svyLibScript.getIsoperation() != null && svyLibScript.getIsoperation() == 3) {
                    svyLibTemplateScriptMapper.deleteSvyLibTemplateScriptByTopicid(svyLibScript.getId());
                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(svyLibScript.getSvyLibTemplateTargetoptions())) {
                    for (SvyLibTemplateTargetoption svyLibTemplateTargetoption : svyLibScript.getSvyLibTemplateTargetoptions()) {
                        if (svyLibTemplateTargetoption.getIsoperation() != null && svyLibTemplateTargetoption.getIsoperation() == 1) {
                            //新增
                            svyLibTemplateTargetoption.setScriptid(svyLibScript.getId());
                            svyLibTemplateTargetoption.setCreateTime(new Date());
                            svyLibTemplateTargetoptionMapper.insertSvyLibTemplateTargetoption(svyLibTemplateTargetoption);
                        } else if (svyLibTemplateTargetoption.getIsoperation() != null && svyLibTemplateTargetoption.getIsoperation() == 2) {
                            //修改
                            svyLibTemplateTargetoption.setScriptid(svyLibScript.getId());
                            svyLibTemplateTargetoption.setUpdateTime(new Date());
                            svyLibTemplateTargetoptionMapper.updateSvyLibTemplateTargetoption(svyLibTemplateTargetoption);
                        } else if (svyLibTemplateTargetoption.getIsoperation() != null && svyLibTemplateTargetoption.getIsoperation() == 3) {
                            //删除
                            svyLibTemplateTargetoptionMapper.deleteSvyLibTemplateTargetoptionById(svyLibTemplateTargetoption.getId());
                        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());
                        }
                    }
                }
            }
        }
@@ -217,6 +204,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;
    }
@@ -254,4 +269,39 @@
    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());
        }
    }
}