liusheng
2024-06-12 6d51501ca93f5bf46759f851988650477cf32e6c
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
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
package com.smartor.service.impl;
 
import com.google.gson.Gson;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.smartor.common.SendService;
import com.smartor.domain.*;
import com.smartor.mapper.HeTaskMapper;
import com.smartor.mapper.PatArchiveMapper;
import com.smartor.mapper.PatTaskRelevanceMapper;
import com.smartor.service.IHeTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
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.List;
 
/**
 * 宣教任务Service业务层处理
 *
 * @author ruoyi
 * @date 2024-01-07
 */
@Slf4j
@Service
public class HeTaskServiceImpl implements IHeTaskService {
    @Autowired
    private HeTaskMapper heTaskMapper;
 
    @Autowired
    private PatArchiveMapper patArchiveMapper;
 
    @Autowired
    private PatArchiveServiceImpl patArchiveService;
 
    @Autowired
    private HeLibraryServiceImpl heLibraryService;
 
    @Autowired
    private PatTaskRelevanceMapper PatTaskRelevanceMapper;
 
    @Autowired
    private SendService sendService;
 
    /**
     * 查询宣教任务
     *
     * @param id 宣教任务主键
     * @return 宣教任务
     */
    @Override
    public HeTaskVO selectHeTaskById(Long id) {
//        HeTask heTask = heTaskMapper.selectHeTaskById(id);
//        HeTaskVO heTaskVO = DtoConversionUtils.sourceToTarget(heTask, HeTaskVO.class);
//
//        //获取患者信息
//        if (StringUtils.isNotEmpty(heTask.getPatientid())) {
//            List<PatArchive> patArchives = new ArrayList<>();
//            String[] patientids = heTask.getPatientid().split(",");
//            for (String patientid : patientids) {
//                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(Long.valueOf(patientid));
//                patArchives.add(patArchive);
//            }
//            heTaskVO.setPatArchives(patArchives);
//        }
//
//        //获取宣教模板信息
//        if (heTask.getPreachcategoryid() != null) {
//            HeLibrary heLibrary = new HeLibrary();
//            heLibrary.setId(heTask.getPreachcategoryid());
//            HeLibraryVO heLibraryVO = heLibraryService.selectInfoByCondition(heLibrary);
//            heTaskVO.setHeLibraryVOs(heLibraryVO);
//        }
 
        return null;
    }
 
    /**
     * 查询宣教任务列表
     *
     * @param patTaskRelevanceVO 宣教任务
     * @return 宣教任务
     */
    @Override
    public List<PatTaskRelevanceVO> selectHeTaskList(PatTaskRelevanceVO patTaskRelevanceVO) {
        PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
        List<PatTaskRelevance> patTaskRelevances = PatTaskRelevanceMapper.selectPatTaskRelevanceList(patTaskRelevance);
        List<PatTaskRelevanceVO> PatTaskRelevanceVOS = DtoConversionUtils.sourceToTarget(patTaskRelevances, PatTaskRelevanceVO.class);
        for (PatTaskRelevanceVO patTaskRelevanceVO1 : PatTaskRelevanceVOS) {
            HeTask heTask1 = heTaskMapper.selectHeTaskById(patTaskRelevanceVO1.getTaskId());
            patTaskRelevanceVO1.setHeTask(heTask1);
        }
        return PatTaskRelevanceVOS;
    }
 
    /**
     * 新增宣教任务
     *
     * @param heTaskVO 宣教任务
     * @return 结果
     */
//    @Transactional(rollbackFor = Exception.class)
//    @Override
//    public int insertHeTask(HeTaskVO heTaskVO) {
//
//        Integer integer = 0;
//        //判断发送状态  0 暂停发送  1 定时发送  2 立即发送
//        if (heTaskVO.getIsSend() == 2) {
//            //发送方式
//            String sendtype = SendTypeEnum.getDescByCode(heTaskVO.getPreachform().intValue());
//            for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
//                //开始发送
//                SendMagParam sendMagParam = new SendMagParam();
//                sendMagParam.setType(sendtype);
//                sendMagParam.setPhone(PatTaskRelevance.getPhone());
//                //这里的模板ID不确定,先这样写
//                sendMagParam.setTmpCode("SMS_461860582");
//                sendMagParam.setContent("Test发送数据");
//                Boolean success = sendService.sendMsg(sendMagParam);
//                if (success) {
//                    integer = integer + 1;
//                }
//
//                //必须全部成功,才能修改发送状态
//                if (heTaskVO.getPatTaskRelevances().size() == integer) {
//                    //如果发送成功
//                    heTaskVO.setSendState(1L);
//                }
//            }
//            //将任务信息新增到宣教任务表中
//            HeTask heTask = DtoConversionUtils.sourceToTarget(heTaskVO, HeTask.class);
//            heTask.setCreateTime(DateUtils.getNowDate());
//            heTaskMapper.insertHeTask(heTask);
//
//            //将任务与患者关联
//            Integer i = null;
//            if (ObjectUtils.isNotEmpty(heTaskVO.getPatTaskRelevances())) {
//                for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
//                    PatTaskRelevance.setHeTaskId(heTask.getId());
//                    i = PatTaskRelevanceMapper.insertPatTaskRelevance(PatTaskRelevance);
//                }
//
//            }
//
//        } else if (heTaskVO.getIsSend() == 1) {
//            //定时发送(异步)
//            Timer timer = new Timer();
//            timer.schedule(new TimerTask() {
//                @Override
//                public void run() {
//                    Integer integer = 0;
//                    for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
//                        String sendtype = SendTypeEnum.getDescByCode(heTaskVO.getPreachform().intValue());
//                        SendMagParam sendMagParam = new SendMagParam();
//                        sendMagParam.setType(sendtype);
//                        sendMagParam.setPhone(PatTaskRelevance.getPhone());
//                        //这里的模板ID不确定,先这样写
//                        sendMagParam.setTmpCode("SMS_461860582");
//                        sendMagParam.setContent("Test发送数据");
//                        Boolean success = sendService.sendMsg(sendMagParam);
//                        if (success) {
//                            integer = integer + 1;
//                        }
//                    }
//                    //必须全部成功,才能修改发送状态
//                    if (heTaskVO.getPatTaskRelevances().size() == integer) {
//                        //如果发送成功
//                        heTaskVO.setSendState(1L);
//                    }
//                    HeTask heTask = DtoConversionUtils.sourceToTarget(heTaskVO, HeTask.class);
//                    heTask.setCreateTime(DateUtils.getNowDate());
//                    heTaskMapper.insertHeTask(heTask);
//
//                    if (ObjectUtils.isNotEmpty(heTaskVO.getPatTaskRelevances())) {
//                        for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
//                            PatTaskRelevance.setHeTaskId(heTask.getId());
//                            PatTaskRelevanceMapper.insertPatTaskRelevance(PatTaskRelevance);
//                        }
//
//                    }
//                }
//            }, heTaskVO.getSendTime());
//
//        }
//        return 1;
//    }
 
    /**
     * 新增宣教任务
     *
     * @param heTaskVO 宣教任务
     * @return 结果
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public int insertOrUpdateHeTask(HeTaskVO heTaskVO) {
        if (ObjectUtils.isEmpty(heTaskVO)) {
            log.info("宣教任务入参为空,请检查入参");
            throw new BaseException("宣教任务入参为空,请检查入参");
        }
        Integer integer = 0;
        if (heTaskVO.getIsoperation() != null && heTaskVO.getIsoperation() == 1) {
 
            //将任务信息新增到宣教任务表中
            HeTask heTask = DtoConversionUtils.sourceToTarget(heTaskVO, HeTask.class);
 
            heTask.setCreateTime(DateUtils.getNowDate());
            heTask.setPreachform(new Gson().toJson(heTaskVO.getPreachform()));
            heTask.setTextParam(new Gson().toJson(heTaskVO.getTextParam()));
            heTaskMapper.insertHeTask(heTask);
            integer = heTask.getId().intValue();
            //新增
            if (CollectionUtils.isNotEmpty(heTaskVO.getPatTaskRelevances())) {
                for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
                    PatTaskRelevance.setTaskId(heTask.getId());
                    PatTaskRelevanceMapper.insertPatTaskRelevance(PatTaskRelevance);
                }
            }
 
        } else if (heTaskVO.getIsoperation() != null && heTaskVO.getIsoperation() == 2) {
            HeTask heTask = DtoConversionUtils.sourceToTarget(heTaskVO, HeTask.class);
            heTask.setUpdateTime(DateUtils.getNowDate());
            heTaskMapper.updateHeTask(heTask);
            //新增、删除、修改患者信息
            for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
                if (PatTaskRelevance.getIsoperation() != null && PatTaskRelevance.getIsoperation() == 1) {
                    PatTaskRelevanceMapper.insertPatTaskRelevance(PatTaskRelevance);
                } else if (PatTaskRelevance.getIsoperation() != null && PatTaskRelevance.getIsoperation() == 2) {
                    PatTaskRelevance.setTaskId(heTask.getId());
                    PatTaskRelevanceMapper.updatePatTaskRelevance(PatTaskRelevance);
                } else if (PatTaskRelevance.getIsoperation() != null && PatTaskRelevance.getIsoperation() == 3) {
                    PatTaskRelevanceMapper.deletePatTaskRelevanceById(PatTaskRelevance.getId());
                }
            }
            integer = heTask.getId().intValue();
        } else if (heTaskVO.getIsoperation() != null && heTaskVO.getIsoperation() == 3) {
            heTaskMapper.deleteHeTaskById(heTaskVO.getId());
 
            //删除患者信息
            for (PatTaskRelevance PatTaskRelevance : heTaskVO.getPatTaskRelevances()) {
                if (PatTaskRelevance.getIsoperation() != null && PatTaskRelevance.getIsoperation() == 3) {
                    PatTaskRelevanceMapper.deletePatTaskRelevanceById(PatTaskRelevance.getId());
                }
            }
            integer = heTaskVO.getId().intValue();
        }
        return integer;
    }
 
 
    /**
     * 修改宣教任务
     *
     * @param heTask 宣教任务
     * @return 结果
     */
    @Override
    public int updateHeTask(HeTask heTask) {
        heTask.setUpdateTime(DateUtils.getNowDate());
        return heTaskMapper.updateHeTask(heTask);
    }
 
    /**
     * 批量删除宣教任务
     *
     * @param ids 需要删除的宣教任务主键
     * @return 结果
     */
    @Override
    public int deleteHeTaskByIds(Long[] ids) {
        Integer i = null;
        for (Long id : ids) {
            i = heTaskMapper.deleteHeTaskById(id);
        }
        return i;
    }
 
    /**
     * 删除宣教任务信息
     *
     * @param id 宣教任务主键
     * @return 结果
     */
    @Override
    public int deleteHeTaskById(Long id) {
        return heTaskMapper.deleteHeTaskById(id);
    }
 
    /**
     * 获取患者信息
     *
     * @param patArchiveReq
     * @return
     */
    @Override
    public List<PatTaskRelevance> getPatientInfo(PatArchiveReq patArchiveReq) {
        List<PatTaskRelevance> PatTaskRelevances = new ArrayList<>();
 
        List<PatArchive> patArchiveList = new ArrayList<>();
        if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 1) {
            //  查看住院  1  查看门诊  2   查看体检  3
            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveInfoByInhosp(patArchiveReq);
            if (CollectionUtils.isNotEmpty(patArchives1)) {
                patArchiveList.addAll(patArchives1);
            }
        } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 2) {
            // 查看住院  1  查看门诊  2   查看体检  3
            List<PatArchive> patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthosp(patArchiveReq);
            if (CollectionUtils.isNotEmpty(patArchives2)) {
                patArchiveList.addAll(patArchives2);
            }
        } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 3) {
            //  查看住院  1  查看门诊  2   查看体检  3
            List<PatArchive> patArchives3 = patArchiveMapper.selectPatArchiveInfoByPhysical(patArchiveReq);
            if (CollectionUtils.isNotEmpty(patArchives3)) {
                patArchiveList.addAll(patArchives3);
            }
        }
        for (PatArchive patArchive : patArchiveList) {
            PatTaskRelevance patTaskRelevance = DtoConversionUtils.sourceToTarget(patArchive, PatTaskRelevance.class);
            patTaskRelevance.setCreateTime(patArchive.getCreateTime());
            patTaskRelevance.setCreateBy(patArchive.getCreateBy());
            patTaskRelevance.setDeptName(patArchive.getDept());
            PatTaskRelevances.add(patTaskRelevance);
        }
 
        return PatTaskRelevances;
    }
 
}