liusheng
2024-04-30 01a79d5b431b71cc79cf5f6cc92cd4f3432781dd
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
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 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.ISvyLibTitleService;
import org.springframework.transaction.annotation.Transactional;
 
/**
 * 问卷Service业务层处理
 *
 * @author ruoyi
 * @date 2023-03-02
 */
@Slf4j
@Service
public class SvyLibTitleServiceImpl implements ISvyLibTitleService {
    @Autowired
    private SvyLibTitleMapper svyLibTitleMapper;
    @Autowired
    private Icd10AssociationMapper icd10AssociationMapper;
    @Autowired
    private SvyLibTopicMapper svyLibTopicMapper;
    @Autowired
    private SvyLibTopicoptionMapper svyLibTopicoptionMapper;
    @Autowired
    private TempDetpRelevanceMapper tempDetpRelevanceMapper;
 
    /**
     * 查询问卷
     *
     * @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++) {
                log.info("问题id为:{}", svyLibTopics.get(j).getSvyTopicId());
                if (StringUtils.isNotEmpty(svyLibTopics.get(j).getTopictype()) && svyLibTopics.get(j).getTopictype().equals("3") || svyLibTopics.get(j).getSvyTopicId() == null) {
                    //作答题,不需要选项
                    continue a;
                } else {
                    SvyLibTopicoption svyLibTopicoption = new SvyLibTopicoption();
                    svyLibTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
                    List<SvyLibTopicoption> svyLibTopicoptions = svyLibTopicoptionMapper.selectSvyLibTopicoptionList(svyLibTopicoption);
                    //将查询出的选项目放到题目中
                    svyLibTopics.get(j).setSvyLibTopicoptions(svyLibTopicoptions);
                }
            }
            //将题目放到问卷列表中
            svyLibTitles.get(i).setSvyLibTopics(svyLibTopics);
 
            //获取每个问卷对应的科室
            TempDetpRelevance tempDetpRelevance = new TempDetpRelevance();
            tempDetpRelevance.setTempid(svyLibTitles.get(i).getSvyid());
            List<TempDetpRelevance> tempDetpRelevances = tempDetpRelevanceMapper.selectTempDetpRelevanceList(tempDetpRelevance);
            svyLibTitles.get(i).setTempDetpRelevances(CollectionUtils.isNotEmpty(tempDetpRelevances) ? tempDetpRelevances : new ArrayList<>());
        }
 
        //先将相同的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 Integer saveOrUpdateTitle(SvyLibTitle svyLibTitle) {
        Integer i = null;
        if (svyLibTitle.getIsoperation() != null && svyLibTitle.getIsoperation() == 1) {
            //新增
            svyLibTitle.setCreateTime(DateUtils.getNowDate());
            i = svyLibTitleMapper.insertSvyLibTitle(svyLibTitle);
        } else if (svyLibTitle.getIsoperation() != null && svyLibTitle.getIsoperation() == 2) {
            //修改
            svyLibTitle.setUpdateTime(DateUtils.getNowDate());
            i = svyLibTitleMapper.updateSvyLibTitle(svyLibTitle);
        }
 
        //处理题目
        if (CollectionUtils.isNotEmpty(svyLibTitle.getSvyLibTopics())) {
            for (SvyLibTopic svyLibTopic : svyLibTitle.getSvyLibTopics()) {
                //对题目进行处理
                if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 1) {
                    //新增
                    svyLibTopic.setSvyid(svyLibTitle.getSvyid());
                    //题目的选项目,直接用svy_topicoption表,用svyTopicid去关联
                    svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
                } else if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 2) {
                    //修改
                    svyLibTopic.setSvyid(svyLibTitle.getSvyid());
                    svyLibTopicMapper.updateSvyLibTopic(svyLibTopic);
                }
 
                //对题目选项进行处理
                if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibTopicoptions())) {
                    for (SvyLibTopicoption svyLibTopicoption : svyLibTopic.getSvyLibTopicoptions()) {
                        if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 1) {
                            //新增
                            svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 2) {
                            //修改
                            svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
                            svyLibTopicoptionMapper.updateSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
 
                }
 
            }
        }
 
        if (CollectionUtils.isNotEmpty(svyLibTitle.getTempDetpRelevances())) {
            for (TempDetpRelevance tempDetpRelevance : svyLibTitle.getTempDetpRelevances()) {
                if (tempDetpRelevance.getId() == null) {
                    //新增
                    tempDetpRelevance.setTempid(svyLibTitle.getSvyid());
                    tempDetpRelevance.setType(1L);
                    tempDetpRelevanceMapper.insertTempDetpRelevance(tempDetpRelevance);
                } else {
                    tempDetpRelevanceMapper.updateTempDetpRelevance(tempDetpRelevance);
                }
            }
 
        }
        return i;
    }
 
    /**
     * 修改问卷
     *
     * @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);
    }
}