liusheng
2023-07-07 429615c304035bf573297d69ce6a17e086e4f6fa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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.*;
import com.smartor.mapper.Icd10AssociationMapper;
import com.smartor.mapper.SvyLibTopicMapper;
import com.smartor.mapper.SvyTopicoptionMapper;
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.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;
    @Autowired
    private SvyTopicoptionMapper svyTopicoptionMapper;
 
    /**
     * 查询问卷
     *
     * @param svyid 问卷主键
     * @return 问卷
     */
    @Override
    public SvyLibTitle selectSvyLibTitleBySvyid(Long svyid) {
        return svyLibTitleMapper.selectSvyLibTitleBySvyid(svyid);
    }
 
    /**
     * 查询问卷列表
     *
     * @param svyLibTitleReq 问卷
     * @return 问卷
     */
    @Override
    public List<SvyLibTitle> selectSvyLibTitleList(SvyLibTitleReq svyLibTitleReq) {
        List<SvyLibTitle> svyLibTitles = svyLibTitleMapper.selectSvyLibTitleList(svyLibTitleReq);
        //添加题目
        for (int i = 0; i < svyLibTitles.size(); i++) {
            SvyLibTopic svyLibTopic = new SvyLibTopic();
            svyLibTopic.setSvyid(svyLibTitles.get(i).getSvyid());
            List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
            //获取题目选项
            a:
            for (int j = 0; j < svyLibTopics.size(); j++) {
                if (svyLibTopics.get(j).getTopictype() == 3) {
                    //作答题,不需要选项
                    continue a;
                } else {
                    SvyTopicoption svyTopicoption = new SvyTopicoption();
                    svyTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
                    List<SvyTopicoption> svyTopicoptions = svyTopicoptionMapper.selectSvyTopicoptionList(svyTopicoption);
                    //将查询出的选项目放到题目中
                    svyLibTopics.get(j).setSvyTopicoptions(svyTopicoptions);
                }
            }
            //将题目放到问卷列表中
            svyLibTitles.get(i).setSvyLibTopics(svyLibTopics);
        }
 
        //先将相同的id的icdname,整理到一块
        List<SvyLibTitle> 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);
            svyLibTopic.setSvyid(svyLibTitle.getSvyid());
            //题目的选项目,直接用svy_topicoption表,用svyTopicidf去关联
            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);
    }
}