ÎļþÃû´Ó smartor/src/main/java/com/smartor/service/impl/IvrTaskcallServiceImpl.java ÐÞ¸Ä |
| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.google.gson.Gson; |
| | |
| | | import com.smartor.config.PhoneUtils; |
| | | import com.smartor.config.RabbitMqConfig; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.mapper.IvrLibaExtemplatescriptMapper; |
| | | import com.smartor.mapper.IvrLibaTemplateTargetoptionMapper; |
| | | import com.smartor.mapper.IvrTaskcallMapper; |
| | | import com.smartor.service.IIvrTaskcallService; |
| | | import com.smartor.mapper.*; |
| | | import com.smartor.service.IIvrTaskService; |
| | | import com.smartor.service.IIvrTaskSingleService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.amqp.AmqpException; |
| | | import org.springframework.amqp.core.Message; |
| | | import org.springframework.amqp.core.MessagePostProcessor; |
| | | import org.springframework.amqp.rabbit.core.RabbitTemplate; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class IvrTaskcallServiceImpl implements IIvrTaskcallService { |
| | | public class IvrTaskSingleServiceImpl implements IIvrTaskSingleService { |
| | | @Autowired |
| | | private IvrTaskcallMapper ivrTaskcallMapper; |
| | | private IvrTaskSingleMapper ivrTaskSingleMapper; |
| | | |
| | | @Autowired |
| | | private IIvrTaskService ivrTaskService; |
| | | |
| | | @Autowired |
| | | private IvrLibaTemplateTargetoptionMapper ivrLibaScriptTargetoptionMapper; |
| | |
| | | private RabbitTemplate rabbitTemplate; |
| | | |
| | | |
| | | @Autowired |
| | | private PatMedOuthospMapper patMedOuthospMapper; |
| | | |
| | | @Autowired |
| | | private PatMedInhospMapper patMedInhospMapper; |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢åä¸ä»»å¡ï¼éè®¿ï¼ |
| | | * |
| | |
| | | * @return åä¸ä»»å¡ï¼éè®¿ï¼ |
| | | */ |
| | | @Override |
| | | public IvrTaskcall selectIvrTaskcallById(Long id) { |
| | | return ivrTaskcallMapper.selectIvrTaskcallById(id); |
| | | public IvrTaskSingle selectIvrTaskcallById(Long id) { |
| | | return ivrTaskSingleMapper.selectIvrTaskcallById(id); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return åä¸ä»»å¡ï¼éè®¿ï¼ |
| | | */ |
| | | @Override |
| | | public List<IvrTaskcall> selectIvrTaskcallList(IvrTaskcall ivrTaskcall) { |
| | | return ivrTaskcallMapper.selectIvrTaskcallList(ivrTaskcall); |
| | | public List<IvrTaskSingle> selectIvrTaskcallList(IvrTaskSingle ivrTaskcall) { |
| | | return ivrTaskSingleMapper.selectIvrTaskcallList(ivrTaskcall); |
| | | } |
| | | |
| | | @Override |
| | | public List<IvrVisitInfoVo> patItem(IvrTaskSingle ivrTaskcall) { |
| | | List<IvrTaskSingle> list = this.selectIvrTaskcallList(ivrTaskcall); |
| | | |
| | | //å®ä¹è¿åæ°æ® |
| | | List<IvrVisitInfoVo> visitInfoVos = new ArrayList<>(); |
| | | for (IvrTaskSingle ivrTaskcall1 : list) { |
| | | IvrVisitInfoVo ivrVisitInfoVo = DtoConversionUtils.sourceToTarget(ivrTaskcall1, IvrVisitInfoVo.class); |
| | | ivrVisitInfoVo.setPatientName(ivrTaskcall1.getSendname()); |
| | | if (ivrTaskcall.getRecordid() != null) { |
| | | if (ivrTaskcall1.getHospType().equals("1")) { |
| | | //é¨è¯é访 |
| | | PatMedOuthosp patMedOuthosp = patMedOuthospMapper.selectPatMedOuthospById(ivrTaskcall.getRecordid()); |
| | | ivrVisitInfoVo.setDiagname(patMedOuthosp.getDiagname()); |
| | | ivrVisitInfoVo.setDeptname(patMedOuthosp.getDeptname()); |
| | | ivrVisitInfoVo.setAdmitdate(patMedOuthosp.getAdmitdate()); |
| | | ivrVisitInfoVo.setVisitTime(ivrTaskcall1.getSendTimeSlot()); |
| | | ivrVisitInfoVo.setState(ivrTaskcall1.getSendstate()); |
| | | ivrVisitInfoVo.setHospno(patMedOuthosp.getOuthospno()); |
| | | visitInfoVos.add(ivrVisitInfoVo); |
| | | } else if (ivrTaskcall1.getHospType().equals("2")) { |
| | | //åºé¢ |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(ivrTaskcall.getRecordid()); |
| | | ivrVisitInfoVo.setDiagname(patMedInhosp.getDiagname()); |
| | | ivrVisitInfoVo.setDeptname(patMedInhosp.getDeptname()); |
| | | ivrVisitInfoVo.setAdmitdate(patMedInhosp.getStarttime()); |
| | | ivrVisitInfoVo.setVisitTime(ivrTaskcall1.getSendTimeSlot()); |
| | | ivrVisitInfoVo.setState(ivrTaskcall1.getSendstate()); |
| | | ivrVisitInfoVo.setHospno(patMedInhosp.getInhospno()); |
| | | ivrVisitInfoVo.setRoomno(patMedInhosp.getRoomno()); |
| | | ivrVisitInfoVo.setBedno(patMedInhosp.getBedno()); |
| | | visitInfoVos.add(ivrVisitInfoVo); |
| | | } |
| | | } |
| | | } |
| | | return visitInfoVos; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int insertIvrTaskcall(IvrTaskcall ivrTaskcall) { |
| | | public int insertIvrTaskcall(IvrTaskSingle ivrTaskcall) { |
| | | ivrTaskcall.setCreateTime(DateUtils.getNowDate()); |
| | | return ivrTaskcallMapper.insertIvrTaskcall(ivrTaskcall); |
| | | return ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int updateIvrTaskcall(IvrTaskcall ivrTaskcall) { |
| | | public Boolean updateIvrTaskcall(IvrTaskSingle ivrTaskcall) { |
| | | ivrTaskcall.setUpdateTime(DateUtils.getNowDate()); |
| | | return ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); |
| | | return ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | } |
| | | |
| | | /** |
| | |
| | | public int deleteIvrTaskcallByIds(Long[] ids) { |
| | | Integer i = 0; |
| | | for (Long id : ids) { |
| | | i = ivrTaskcallMapper.deleteIvrTaskcallById(id); |
| | | i = ivrTaskSingleMapper.deleteIvrTaskcallById(id); |
| | | } |
| | | return i; |
| | | } |
| | |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public int insertOrUpdateTask(IvrTaskcallVO ivrTaskcallVO) { |
| | | public int insertOrUpdateTask(IvrTaskSingleVO ivrTaskcallVO) { |
| | | if (ObjectUtils.isEmpty(ivrTaskcallVO)) { |
| | | log.info("ä»»å¡å
¥å为空ï¼è¯·æ£æ¥å
¥å"); |
| | | throw new BaseException("ä»»å¡å
¥å为空ï¼è¯·æ£æ¥å
¥å"); |
| | | } |
| | | Integer integer = 0; |
| | | if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 1) { |
| | | //å¾ä»»å¡è¡¨ä¸ï¼æ°å¢ä»»å¡ |
| | | IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTask.class); |
| | | Integer taskId = ivrTaskService.insertIvrTask(ivrTask); |
| | | |
| | | ivrTaskcallVO.setTaskid(taskId.longValue()); |
| | | //æ°å¢ |
| | | if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) { |
| | | //å°ä»»å¡ä¿¡æ¯æ°å¢å°å®£æä»»å¡è¡¨ä¸ |
| | | IvrTaskcall ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskcall.class); |
| | | IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class); |
| | | ivrTaskcall.setSendname(patTaskRelevance.getName()); |
| | | ivrTaskcall.setAge(patTaskRelevance.getAge()); |
| | | ivrTaskcall.setSfzh(patTaskRelevance.getSfzh()); |
| | |
| | | if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) { |
| | | ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString()); |
| | | } |
| | | ivrTaskcallMapper.insertIvrTaskcall(ivrTaskcall); |
| | | ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall); |
| | | integer = ivrTaskcall.getId().intValue(); |
| | | } |
| | | } |
| | | |
| | | } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 2) { |
| | | //ä»»å¡ä¿®æ¹ |
| | | IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTask.class); |
| | | ivrTaskService.updateIvrTask(ivrTask); |
| | | |
| | | if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) { |
| | | IvrTaskcall ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskcall.class); |
| | | |
| | | IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class); |
| | | ivrTaskcall.setSendname(patTaskRelevance.getName()); |
| | | ivrTaskcall.setAge(patTaskRelevance.getAge()); |
| | | ivrTaskcall.setSfzh(patTaskRelevance.getSfzh()); |
| | |
| | | ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString()); |
| | | } |
| | | ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskcallVO.getTextParam())); |
| | | ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); |
| | | if (patTaskRelevance.getIsoperation() == 2) ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | if (patTaskRelevance.getIsoperation() == 1) ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall); |
| | | integer = ivrTaskcall.getId().intValue(); |
| | | } |
| | | } |
| | | |
| | | } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 3) { |
| | | ivrTaskcallMapper.deleteIvrTaskcallById(ivrTaskcallVO.getId()); |
| | | ivrTaskSingleMapper.deleteIvrTaskcallById(ivrTaskcallVO.getId()); |
| | | |
| | | integer = ivrTaskcallVO.getId().intValue(); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public int heTaskSend(IvrTaskcallVO ivrTaskcallVO) { |
| | | public int heTaskSend(IvrTaskSingleVO ivrTaskcallVO) { |
| | | //夿任塿¯å¦æ¯ç«å³åé |
| | | if (ivrTaskcallVO.getSendType().equals("2") && ivrTaskcallVO.getSendstate() == 1) { |
| | | IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ(); |
| | |
| | | ivrTaskcallMQ.setSendType("1"); |
| | | ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid()); |
| | | |
| | | String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ); |
| | | ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1); |
| | | //ç«å³åé |
| | | rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, new Gson().toJson(ivrTaskcallMQ), message -> { |
| | | rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, ivrTaskcallMQJson, message -> { |
| | | //注æè¿éæ¶é´å¯ä»¥ä½¿longï¼è䏿¯è®¾ç½®header |
| | | message.getMessageProperties().setHeader("x-delay", 0); |
| | | return message; |
| | | }); |
| | | } else if (ivrTaskcallVO.getSendType().equals("2") && ivrTaskcallVO.getSendstate() == 1) { |
| | | } else if (ivrTaskcallVO.getSendType().equals("1") && ivrTaskcallVO.getSendstate() == 1) { |
| | | //æ¶é´æ®µåé |
| | | if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) { |
| | | for (TaskSendTimeVO taskSendTimeVO : ivrTaskcallVO.getSendTimeslot()) { |
| | | //å»SendTimeslotä¸ï¼è·åææçæ¶é´æ®µ |
| | | List<TaskSendTimeVO> list = new ArrayList<>(); |
| | | list.add(taskSendTimeVO); |
| | | |
| | |
| | | } |
| | | IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ(); |
| | | ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid()); |
| | | ivrTaskcallMQ.setSendType("2"); |
| | | ivrTaskcallMQ.setSendType("1"); |
| | | ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid()); |
| | | ivrTaskcallMQ.setSendTimeslot(list); |
| | | |
| | | Long finalMilliseconds = milliseconds; |
| | | rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, new Gson().toJson(ivrTaskcallMQ), message -> { |
| | | String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ); |
| | | ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1); |
| | | rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, ivrTaskcallMQJson, message -> { |
| | | //注æè¿éæ¶é´å¯ä»¥ä½¿longï¼è䏿¯è®¾ç½®header |
| | | message.getMessageProperties().setHeader("x-delay", finalMilliseconds); |
| | | return message; |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | IvrTaskcall ivrTaskcall = (IvrTaskcall) map.get("ivrTaskcall"); |
| | | IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskcall"); |
| | | List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO"); |
| | | //å°uuidæ´æ°å°æ°æ®åºä¸ |
| | | ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid()); |
| | | ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); |
| | | ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | |
| | | //è·å模æ¿ä¿¡æ¯ |
| | | IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO"); |
| | |
| | | log.info("æ 人æ¥å¬ï¼{}, {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid()); |
| | | //è¿ç»æè§å®æ¬¡ï¼å¦æè¦æ²¡äººæ¥ï¼é£å°±ç»æ |
| | | ivrTaskcall.setResult(phoneCallBackVO.getErrResult()); |
| | | ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); |
| | | ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8"); |
| | | } else if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) { |
| | | //è¿è¡éæ¨ |
| | |
| | | redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES); |
| | | } else if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) { |
| | | ivrTaskcall.setResult("æ 人æ¥å¬"); |
| | | ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); |
| | | ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState"); |
| | | } |
| | | } else if (phoneCallBackVO.getEnumState() == 2) { |
| | | //æ£è
ææçµè¯ |
| | | log.info("æ£è
ææçµè¯ï¼{}", phoneCallBackVO.getUuid()); |
| | | ivrTaskcall.setResult(phoneCallBackVO.getHangUpResult()); |
| | | ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); |
| | | ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall); |
| | | redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState"); |
| | | } |
| | | |