| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import com.fasterxml.jackson.core.type.TypeReference; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public IvrTaskSingleVO queryTaskByCondition(IvrTaskSingle ivrTaskcall) { |
| | | public IvrTaskVO queryTaskByCondition(IvrTaskSingle ivrTaskcall) { |
| | | //定义患者与单一任务关联表集合 |
| | | List<PatTaskRelevance> patTaskRelevances = new ArrayList<>(); |
| | | List<IvrTaskSingle> list = selectIvrTaskcallList(ivrTaskcall); |
| | | if (CollectionUtils.isEmpty(list)) { |
| | | new BaseException("该任务不存在"); |
| | | if (CollectionUtils.isEmpty(list) || list.size() == 0) { |
| | | return new IvrTaskVO(); |
| | | } |
| | | IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(ivrTaskcall.getTaskid()); |
| | | //将查出来的数据倒入ivrTasksingleVO中 |
| | | IvrTaskSingleVO ivrTasksingleVO2 = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskSingleVO.class); |
| | | IvrTaskVO ivrTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskVO.class); |
| | | ivrTaskVO.setShowDate(ivrTask.getShowDate()); |
| | | ivrTaskVO.setShowTimeMorn(ivrTask.getShowTimeMorn()); |
| | | ivrTaskVO.setShowTimeNoon(ivrTask.getShowTimeNoon()); |
| | | ivrTaskVO.setShowTimeNight(ivrTask.getShowTimeNight()); |
| | | String sendTimeSlot = ivrTask.getSendTimeSlot(); |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | try { |
| | | //获取到发送时间的集合 |
| | | if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) { |
| | | List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class); |
| | | ivrTasksingleVO2.setSendTimeslot(taskSendTimeVOList); |
| | | ivrTaskVO.setSendTimeslot(taskSendTimeVOList); |
| | | ivrTaskVO.setSendType(ivrTask.getSendType()); |
| | | } |
| | | //文本变量参数 |
| | | if (com.ruoyi.common.utils.StringUtils.isNotEmpty(list.get(0).getTextParam())) { |
| | | Map<String, Map<String, String>> textParam = objectMapper.readValue(list.get(0).getTextParam(), Map.class); |
| | | ivrTasksingleVO2.setTextParam(textParam); |
| | | if (com.ruoyi.common.utils.StringUtils.isNotEmpty(ivrTask.getTextParam())) { |
| | | Map<String, Map<String, String>> textParam = objectMapper.readValue(ivrTask.getTextParam(), Map.class); |
| | | ivrTaskVO.setTextParam(textParam); |
| | | } |
| | | } catch (JsonProcessingException e) { |
| | | e.printStackTrace(); |
| | |
| | | patTaskRelevance.setPhone(ivrTaskcall1.getPhone()); |
| | | patTaskRelevance.setAddr(ivrTaskcall1.getAddr()); |
| | | patTaskRelevance.setDiagname(ivrTaskcall1.getDiagname()); |
| | | patTaskRelevance.setPatid(ivrTaskcall1.getPatid()); |
| | | patTaskRelevances.add(patTaskRelevance); |
| | | } |
| | | if (ivrTaskcall1.getHospType().equals("2")) { |
| | |
| | | patTaskRelevance.setDeptName(ivrTaskcall1.getDeptname()); |
| | | patTaskRelevance.setBedNo(ivrTaskcall1.getBedNo()); |
| | | patTaskRelevance.setDiagname(ivrTaskcall1.getDiagname()); |
| | | patTaskRelevance.setPatid(ivrTaskcall1.getPatid()); |
| | | patTaskRelevances.add(patTaskRelevance); |
| | | } |
| | | } |
| | | |
| | | ivrTasksingleVO2.setPatTaskRelevances(patTaskRelevances); |
| | | return ivrTasksingleVO2; |
| | | ivrTaskVO.setPatTaskRelevances(patTaskRelevances); |
| | | return ivrTaskVO; |
| | | } |
| | | |
| | | @Override |
| | |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public int insertOrUpdateTask(IvrTaskSingleVO ivrTasksingleVO) { |
| | | if (ObjectUtils.isEmpty(ivrTasksingleVO)) { |
| | | public int insertOrUpdateTask(IvrTaskVO ivrTaskVO) { |
| | | if (ObjectUtils.isEmpty(ivrTaskVO)) { |
| | | log.info("任务入参为空,请检查入参"); |
| | | throw new BaseException("任务入参为空,请检查入参"); |
| | | } |
| | | Integer integer = 0; |
| | | if (ivrTasksingleVO.getIsoperation() != null && ivrTasksingleVO.getIsoperation() == 1) { |
| | | Integer integer = 1; |
| | | IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTask.class); |
| | | ivrTask.setTextParam(JSON.toJSONString(ivrTaskVO.getTextParam())); |
| | | if (ivrTaskVO.getIsoperation() != null && ivrTaskVO.getIsoperation() == 1) { |
| | | //往任务表中,新增任务 |
| | | IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTask.class); |
| | | if (ObjectUtils.isNotEmpty(ivrTasksingleVO.getSendTimeslot())) |
| | | ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTasksingleVO.getSendTimeslot())); |
| | | if (ObjectUtils.isNotEmpty(ivrTaskVO.getSendTimeslot())) |
| | | ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTaskVO.getSendTimeslot())); |
| | | if (ivrTask.getSendState() == null) ivrTask.setSendState(1); |
| | | ivrTask.setTemplateid(ivrTaskVO.getLibtemplateid()); |
| | | ivrTaskService.insertIvrTask(ivrTask); |
| | | ivrTasksingleVO.setTaskid(ivrTask.getTaskid().longValue()); |
| | | |
| | | //将任务信息放到服务表中 |
| | | IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTaskSingle.class); |
| | | ivrTaskcall.setTaskid(ivrTask.getTaskid().longValue()); |
| | | //新增 |
| | | if (CollectionUtils.isNotEmpty(ivrTasksingleVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : ivrTasksingleVO.getPatTaskRelevances()) { |
| | | if (CollectionUtils.isNotEmpty(ivrTaskVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : ivrTaskVO.getPatTaskRelevances()) { |
| | | //将任务信息新增到随访服务表中 |
| | | IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTaskSingle.class); |
| | | ivrTaskcall.setSendname(patTaskRelevance.getName()); |
| | | ivrTaskcall.setAge(patTaskRelevance.getAge()); |
| | | ivrTaskcall.setSfzh(patTaskRelevance.getSfzh()); |
| | | ivrTaskcall.setPhone(patTaskRelevance.getPhone()); |
| | | ivrTaskcall.setAddr(patTaskRelevance.getAddr()); |
| | | ivrTaskcall.setPatid(patTaskRelevance.getPatid()); |
| | | ivrTaskcall.setCreateTime(DateUtils.getNowDate()); |
| | | ivrTaskcall.setTextParam(new Gson().toJson(patTaskRelevance.getTextParam())); |
| | | ivrTaskcall.setCreateTime(DateUtils.getNowDate()); |
| | | ivrTaskcall.setType(ivrTaskVO.getHospType()); |
| | | ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall); |
| | | integer = ivrTaskcall.getId().intValue(); |
| | | } |
| | | } |
| | | |
| | | } else if (ivrTasksingleVO.getIsoperation() != null && ivrTasksingleVO.getIsoperation() == 2) { |
| | | } else if (ivrTaskVO.getIsoperation() != null && ivrTaskVO.getIsoperation() == 2) { |
| | | //任务修改 |
| | | IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTask.class); |
| | | if (ObjectUtils.isNotEmpty(ivrTasksingleVO.getSendTimeslot())) |
| | | ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTasksingleVO.getSendTimeslot())); |
| | | //获取表里的stopState数值 + 1 |
| | | if (ObjectUtils.isNotEmpty(ivrTaskVO.getSendTimeslot())) |
| | | ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTaskVO.getSendTimeslot())); |
| | | IvrTask ivrTask1 = ivrTaskService.selectIvrTaskByTaskid(ivrTask.getTaskid()); |
| | | ivrTask.setStopState(ivrTask1.getStopState() + 1); |
| | | ivrTask.setTemplateid(ivrTaskVO.getLibtemplateid()); |
| | | ivrTaskService.updateIvrTask(ivrTask); |
| | | |
| | | if (CollectionUtils.isNotEmpty(ivrTasksingleVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : ivrTasksingleVO.getPatTaskRelevances()) { |
| | | if (CollectionUtils.isNotEmpty(ivrTaskVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : ivrTaskVO.getPatTaskRelevances()) { |
| | | |
| | | IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTaskSingle.class); |
| | | IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTaskSingle.class); |
| | | ivrTaskcall.setSendname(patTaskRelevance.getName()); |
| | | ivrTaskcall.setAge(patTaskRelevance.getAge()); |
| | | ivrTaskcall.setSfzh(patTaskRelevance.getSfzh()); |
| | | ivrTaskcall.setPhone(patTaskRelevance.getPhone()); |
| | | ivrTaskcall.setAddr(patTaskRelevance.getAddr()); |
| | | ivrTaskcall.setPatid(patTaskRelevance.getPatid()); |
| | | ivrTaskcall.setType(ivrTaskVO.getHospType()); |
| | | ivrTaskcall.setCreateTime(DateUtils.getNowDate()); |
| | | ivrTaskcall.setTextParam(new Gson().toJson(ivrTasksingleVO.getTextParam())); |
| | | if (patTaskRelevance.getIsoperation() == 2) ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskVO.getTextParam())); |
| | | if (patTaskRelevance.getIsoperation() != null) { |
| | | if (patTaskRelevance.getIsoperation() == 2) |
| | | ivrTaskSingleMapper.updateIvrTaskcallByCondition(ivrTaskcall); |
| | | if (patTaskRelevance.getIsoperation() == 1) ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall); |
| | | integer = ivrTaskcall.getId().intValue(); |
| | | if (patTaskRelevance.getIsoperation() == 3) |
| | | // 通过taskid和patid去删除该条数据 |
| | | ivrTaskSingleMapper.deleteIvrTaskcallByCondition(ivrTaskVO.getTaskid(), patTaskRelevance.getPatid()); |
| | | } |
| | | integer = ivrTaskcall.getTaskid().intValue(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } else if (ivrTasksingleVO.getIsoperation() != null && ivrTasksingleVO.getIsoperation() == 3) { |
| | | ivrTaskSingleMapper.deleteIvrTaskcallById(ivrTasksingleVO.getId()); |
| | | |
| | | integer = ivrTasksingleVO.getId().intValue(); |
| | | } |
| | | return integer; |
| | | } |
| | | |
| | |
| | | public int heTaskSend(SendTaskVO sendTaskVO) { |
| | | if (sendTaskVO.getTaskId() == null) throw new BaseException("任务ID不能为空,请检查后,再进行执行"); |
| | | IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(sendTaskVO.getTaskId()); |
| | | if (StringUtils.isNotEmpty(sendTaskVO.getSendState()) && sendTaskVO.getSendState().equals("3") || StringUtils.isNotEmpty(sendTaskVO.getSendState()) && sendTaskVO.getSendState().equals("4")) { |
| | | if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) { |
| | | //任务暂停或终止 |
| | | IvrTask ivrTask3 = new IvrTask(); |
| | | ivrTask3.setTaskid(sendTaskVO.getTaskId()); |
| | |
| | | if (StringUtils.isEmpty(sendTaskVO.getSendType())) { |
| | | sendTaskVO.setSendType(ivrTask.getSendType().toString()); |
| | | } |
| | | |
| | | Long ss = ivrTask.getStopState() + 1; |
| | | //判断任务是否是立即发送 |
| | | if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) { |
| | | IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ(); |
| | | ivrTaskcallMQ.setTaskid(sendTaskVO.getTaskId()); |
| | | ivrTaskcallMQ.setSendType(sendTaskVO.getSendType()); |
| | | ivrTaskcallMQ.setTemplateid(ivrTask.getTemplateid().toString()); |
| | | ivrTaskcallMQ.setStopState(ivrTask.getStopState()); |
| | | ivrTaskcallMQ.setStopState(ss); |
| | | ivrTaskcallMQ.setPreachform(ivrTask.getPreachform()); |
| | | |
| | | String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ); |
| | | ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1); |
| | |
| | | //将任务状态修改成执行中 |
| | | IvrTask ivrTask2 = new IvrTask(); |
| | | ivrTask2.setTaskid(ivrTask.getTaskid()); |
| | | ivrTask2.setSendState("2"); |
| | | ivrTask2.setStopState(ivrTask.getStopState() + 1); |
| | | ivrTask2.setSendState(2); |
| | | ivrTask2.setStopState(ss); |
| | | ivrTaskService.updateIvrTask(ivrTask2); |
| | | } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1")) { |
| | | //时间段发送 |
| | |
| | | if (StringUtils.isNotEmpty(ivrTask.getSendTimeSlot())) { |
| | | List<TaskSendTimeVO> taskSendTimeVOList = null; |
| | | try { |
| | | taskSendTimeVOList = objectMapper.readValue(ivrTask.getSendTimeSlot(), List.class); |
| | | taskSendTimeVOList = objectMapper.readValue(ivrTask.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() { |
| | | }); |
| | | } catch (JsonProcessingException e) { |
| | | log.error("JsonProcessingException报错了:{}", e.getMessage()); |
| | | } |
| | |
| | | Long finalMilliseconds = milliseconds; |
| | | String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ); |
| | | ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1); |
| | | rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.123", ivrTaskcallMQJson, 0L); |
| | | rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.123", ivrTaskcallMQJson, milliseconds); |
| | | } |
| | | //将任务状态修改成执行中 |
| | | IvrTask ivrTask2 = new IvrTask(); |
| | | ivrTask2.setTaskid(ivrTask.getTaskid()); |
| | | ivrTask2.setSendState("2"); |
| | | ivrTask2.setStopState(ivrTask.getStopState() + 1); |
| | | ivrTask2.setSendState(2); |
| | | ivrTask2.setStopState(ss); |
| | | ivrTaskService.updateIvrTask(ivrTask2); |
| | | } |
| | | } |
| | | return 0; |
| | | return 1; |
| | | } |
| | | |
| | | @Override |