package com.smartor.service.impl;
|
|
import com.ruoyi.common.enums.SendTypeEnum;
|
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.PatHetaskRelevanceMapper;
|
import com.smartor.service.IHeTaskService;
|
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;
|
import java.util.Timer;
|
import java.util.TimerTask;
|
|
/**
|
* 宣教任务Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-01-07
|
*/
|
@Service
|
public class HeTaskServiceImpl implements IHeTaskService {
|
@Autowired
|
private HeTaskMapper heTaskMapper;
|
|
@Autowired
|
private PatArchiveMapper patArchiveMapper;
|
|
@Autowired
|
private PatArchiveServiceImpl patArchiveService;
|
|
@Autowired
|
private HeLibraryServiceImpl heLibraryService;
|
|
@Autowired
|
private PatHetaskRelevanceMapper patHetaskRelevanceMapper;
|
|
@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 patHetaskRelevanceVO 宣教任务
|
* @return 宣教任务
|
*/
|
@Override
|
public List<PatHetaskRelevanceVO> selectHeTaskList(PatHetaskRelevanceVO patHetaskRelevanceVO) {
|
PatHetaskRelevance patHetaskRelevance = new PatHetaskRelevance();
|
List<PatHetaskRelevance> patHetaskRelevances = patHetaskRelevanceMapper.selectPatHetaskRelevanceList(patHetaskRelevance);
|
List<PatHetaskRelevanceVO> patHetaskRelevanceVOS = DtoConversionUtils.sourceToTarget(patHetaskRelevances, PatHetaskRelevanceVO.class);
|
for (PatHetaskRelevanceVO patHetaskRelevanceVO1 : patHetaskRelevanceVOS) {
|
HeTask heTask1 = heTaskMapper.selectHeTaskById(patHetaskRelevanceVO1.getHeTaskId());
|
patHetaskRelevanceVO1.setHeTask(heTask1);
|
}
|
return patHetaskRelevanceVOS;
|
}
|
|
/**
|
* 新增宣教任务
|
*
|
* @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 (PatHetaskRelevance patHetaskRelevance : heTaskVO.getPatHetaskRelevances()) {
|
//开始发送
|
SendMagParam sendMagParam = new SendMagParam();
|
sendMagParam.setType(sendtype);
|
sendMagParam.setPhone(patHetaskRelevance.getPhone());
|
//这里的模板ID不确定,先这样写
|
sendMagParam.setTmpCode("SMS_461860582");
|
sendMagParam.setContent("Test发送数据");
|
Boolean success = sendService.sendMsg(sendMagParam);
|
if (success) {
|
integer = integer + 1;
|
}
|
|
//必须全部成功,才能修改发送状态
|
if (heTaskVO.getPatHetaskRelevances().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.getPatHetaskRelevances())) {
|
for (PatHetaskRelevance patHetaskRelevance : heTaskVO.getPatHetaskRelevances()) {
|
patHetaskRelevance.setHeTaskId(heTask.getId());
|
i = patHetaskRelevanceMapper.insertPatHetaskRelevance(patHetaskRelevance);
|
}
|
|
}
|
|
} else if (heTaskVO.getIsSend() == 1) {
|
//定时发送(异步)
|
Timer timer = new Timer();
|
timer.schedule(new TimerTask() {
|
@Override
|
public void run() {
|
Integer integer = 0;
|
for (PatHetaskRelevance patHetaskRelevance : heTaskVO.getPatHetaskRelevances()) {
|
String sendtype = SendTypeEnum.getDescByCode(heTaskVO.getPreachform().intValue());
|
SendMagParam sendMagParam = new SendMagParam();
|
sendMagParam.setType(sendtype);
|
sendMagParam.setPhone(patHetaskRelevance.getPhone());
|
//这里的模板ID不确定,先这样写
|
sendMagParam.setTmpCode("SMS_461860582");
|
sendMagParam.setContent("Test发送数据");
|
Boolean success = sendService.sendMsg(sendMagParam);
|
if (success) {
|
integer = integer + 1;
|
}
|
}
|
//必须全部成功,才能修改发送状态
|
if (heTaskVO.getPatHetaskRelevances().size() == integer) {
|
//如果发送成功
|
heTaskVO.setSendState(1L);
|
}
|
HeTask heTask = DtoConversionUtils.sourceToTarget(heTaskVO, HeTask.class);
|
heTask.setCreateTime(DateUtils.getNowDate());
|
heTaskMapper.insertHeTask(heTask);
|
|
if (ObjectUtils.isNotEmpty(heTaskVO.getPatHetaskRelevances())) {
|
for (PatHetaskRelevance patHetaskRelevance : heTaskVO.getPatHetaskRelevances()) {
|
patHetaskRelevance.setHeTaskId(heTask.getId());
|
patHetaskRelevanceMapper.insertPatHetaskRelevance(patHetaskRelevance);
|
}
|
|
}
|
}
|
}, heTaskVO.getSendTime());
|
|
}
|
return 1;
|
}
|
|
/**
|
* 修改宣教任务
|
*
|
* @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<PatHetaskRelevance> getPatientInfo(PatArchiveReq patArchiveReq) {
|
List<PatHetaskRelevance> patHetaskRelevances = 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) {
|
PatHetaskRelevance patHetaskRelevance = DtoConversionUtils.sourceToTarget(patArchive, PatHetaskRelevance.class);
|
patHetaskRelevance.setDept(patArchive.getArchiveby());
|
patHetaskRelevance.setCreateTime(patArchive.getCreateTime());
|
patHetaskRelevance.setCreateBy(patArchive.getCreateBy());
|
patHetaskRelevances.add(patHetaskRelevance);
|
}
|
|
return patHetaskRelevances;
|
}
|
|
}
|