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 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 selectHeTaskList(PatTaskRelevanceVO patTaskRelevanceVO) { PatTaskRelevance patTaskRelevance = new PatTaskRelevance(); List patTaskRelevances = PatTaskRelevanceMapper.selectPatTaskRelevanceList(patTaskRelevance); List 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 getPatientInfo(PatArchiveReq patArchiveReq) { List PatTaskRelevances = 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) { PatTaskRelevance PatTaskRelevance = DtoConversionUtils.sourceToTarget(patArchive, PatTaskRelevance.class); PatTaskRelevance.setCreateTime(patArchive.getCreateTime()); PatTaskRelevance.setCreateBy(patArchive.getCreateBy()); PatTaskRelevances.add(PatTaskRelevance); } return PatTaskRelevances; } }