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 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 selectHeTaskList(PatHetaskRelevanceVO patHetaskRelevanceVO) { PatHetaskRelevance patHetaskRelevance = new PatHetaskRelevance(); List patHetaskRelevances = patHetaskRelevanceMapper.selectPatHetaskRelevanceList(patHetaskRelevance); List 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 getPatientInfo(PatArchiveReq patArchiveReq) { List patHetaskRelevances = new ArrayList<>(); List patArchiveList = new ArrayList<>(); if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 1) { // 查看住院 1 查看门诊 2 查看体检 3 List patArchives1 = patArchiveMapper.selectPatArchiveInfoByInhosp(patArchiveReq); if (CollectionUtils.isNotEmpty(patArchives1)) { patArchiveList.addAll(patArchives1); } } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 2) { // 查看住院 1 查看门诊 2 查看体检 3 List patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthosp(patArchiveReq); if (CollectionUtils.isNotEmpty(patArchives2)) { patArchiveList.addAll(patArchives2); } } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 3) { // 查看住院 1 查看门诊 2 查看体检 3 List 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; } }