| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.JsonArray; |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.RSAPublicKeyExample; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.mapper.IvrTaskTemplateScriptMapper; |
| | | import com.smartor.mapper.ServiceSubtaskAnswerMapper; |
| | | import com.smartor.mapper.ServiceSubtaskMapper; |
| | | import com.smartor.mapper.ServiceTaskMapper; |
| | | import com.smartor.service.IIvrTaskTemplateService; |
| | | import com.smartor.mapper.ServiceSubtaskDetailMapper; |
| | | import com.smartor.mapper.SvyTaskTemplateTargetoptionMapper; |
| | | import com.smartor.service.IServiceSubtaskAnswerService; |
| | | import com.smartor.service.ISvyTaskTemplateService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | |
| | | |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper; |
| | | |
| | | @Autowired |
| | | private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper; |
| | | |
| | | @Value("${pri_key}") |
| | | private String pri_key; |
| | |
| | | if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) { |
| | | //需要立即执行 |
| | | RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); |
| | | // Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key)); |
| | | // Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key)); |
| | | |
| | | Long tid=Long.valueOf(serviceSubTaskAnswerReq.getParam1()); |
| | | Long pid=Long.valueOf(serviceSubTaskAnswerReq.getParam2()); |
| | | |
| | | Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key)); |
| | | Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key)); |
| | | allKeys = new HashSet<>(); |
| | | if (serviceSubTaskAnswerReq.getType() == 1) { |
| | | allKeys.add(pid + "-" + tid + "-SFscriptCache"); |
| | | } else if (serviceSubTaskAnswerReq.getType() == 2) { |
| | | allKeys.add(pid + "-" + tid + "-WJscriptCache"); |
| | | } |
| | | } |
| | | |
| | | Long nextScriptno = null; |
| | | for (String key : allKeys) { |
| | | String[] split = key.split("-"); |
| | | if (key.contains("-SFscriptCache")) { |
| | | //包含了,说明了是随访问题 |
| | | List<IvrTaskTemplateScriptVO> cacheList = redisCache.getCacheObject(key); |
| | | for (int i = 0; i < cacheList.size(); i++) { |
| | | if (i == 0) { |
| | | // 说明是第一题 |
| | | IvrTaskTemplateScriptVO ivrLibaTemplateScriptVO = cacheList.get(0); |
| | | //将第一题的信息放到表中 |
| | | setSFInfo(ivrLibaTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | nextScriptno = cacheList.get(0).getNextScriptno(); |
| | | } else { |
| | | //不是第 一 题 |
| | | for (IvrTaskTemplateScriptVO ivrLibaTemplateScriptVO : cacheList) { |
| | | if (ivrLibaTemplateScriptVO.getId() == nextScriptno) { |
| | | setSFInfo(ivrLibaTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | nextScriptno = ivrLibaTemplateScriptVO.getNextScriptno(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else if (key.contains("-WJscriptCache")) { |
| | | if (key.contains("-WJscriptCache")) { |
| | | List<SvyTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key); |
| | | for (int i = 0; i < cacheList.size(); i++) { |
| | | if (i == 0) { |
| | | // 说明是第一题 |
| | | //将第一题的信息放到表中 |
| | | setWJInfo(cacheList.get(0), Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | nextScriptno = Long.valueOf(cacheList.get(0).getNextScriptno()); |
| | | nextScriptno = setWJInfo(cacheList.get(0), Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | } else { |
| | | for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) { |
| | | if (svyTaskTemplateScriptVO.getId() == nextScriptno) { |
| | |
| | | @Override |
| | | public Integer saveQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq) { |
| | | RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); |
| | | // Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key)); |
| | | // Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key)); |
| | | Long tid=Long.valueOf(serviceSubTaskCacheReq.getParam1()); |
| | | Long pid=Long.valueOf(serviceSubTaskCacheReq.getParam2()); |
| | | if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList())) { |
| | | //随访 |
| | | redisCache.setCacheObject(pid + "-" + tid + "-SFscriptCache", serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList()); |
| | | } else if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOList())) { |
| | | Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key)); |
| | | Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key)); |
| | | //问卷 |
| | | redisCache.setCacheObject(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOList()); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceSubtaskAnswer> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) { |
| | | public List<ServiceSubtaskDetailVO> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) { |
| | | log.error("selectPatQuesTionResult的入参为:{}", serviceSubTaskQueryReq); |
| | | ServiceSubtaskAnswer serviceSubtaskAnswer = new ServiceSubtaskAnswer(); |
| | | serviceSubtaskAnswer.setTaskid(serviceSubTaskQueryReq.getTaskid()); |
| | | serviceSubtaskAnswer.setPatId(serviceSubTaskQueryReq.getPatId()); |
| | | serviceSubtaskAnswer.setScriptid(serviceSubTaskQueryReq.getScriptid()); |
| | | List<ServiceSubtaskAnswer> serviceSubtaskAnswerList = serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerList(serviceSubtaskAnswer); |
| | | for (ServiceSubtaskAnswer serviceSubtaskAnswer1 : serviceSubtaskAnswerList) { |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | try { |
| | | List<ServiceSubtaskOptionAnswer> serviceSubtaskOptionAnswer = mapper.readValue(serviceSubtaskAnswer1.getAnswer(), List.class); |
| | | serviceSubtaskAnswer1.setOptionAnswer(serviceSubtaskOptionAnswer); |
| | | } catch (JsonProcessingException e) { |
| | | e.printStackTrace(); |
| | | List<ServiceSubtaskDetailVO> serviceSubtaskDetailVOList = new ArrayList<>(); |
| | | ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail(); |
| | | serviceSubtaskDetail.setTaskid(serviceSubTaskQueryReq.getTaskid()); |
| | | serviceSubtaskDetail.setPatid(serviceSubTaskQueryReq.getPatId()); |
| | | serviceSubtaskDetail.setScriptid(serviceSubTaskQueryReq.getScriptid()); |
| | | List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail); |
| | | for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetails) { |
| | | ServiceSubtaskDetailVO serviceSubtaskDetailVO = DtoConversionUtils.sourceToTarget(serviceSubtaskDetail1, ServiceSubtaskDetailVO.class); |
| | | SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption(); |
| | | svyTaskTemplateTargetoption.setScriptid(serviceSubtaskDetailVO.getScriptid()); |
| | | svyTaskTemplateTargetoption.setTaskid(serviceSubtaskDetailVO.getTaskid()); |
| | | List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateTargetoptionMapper.selectSvyTaskTemplateTargetoptionList(svyTaskTemplateTargetoption); |
| | | serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions); |
| | | serviceSubtaskDetailVOList.add(serviceSubtaskDetailVO); |
| | | } |
| | | } |
| | | return serviceSubtaskAnswerList; |
| | | return serviceSubtaskDetailVOList; |
| | | } |
| | | |
| | | private void setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) { |
| | | ServiceSubtaskAnswer serviceSubtaskAnswer = new ServiceSubtaskAnswer(); |
| | | List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getScriptType()) && ivrTaskTemplateScriptVO.getScriptType().equals("1") || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getScriptType()) && ivrTaskTemplateScriptVO.getScriptType().equals("2")) { |
| | | //1、2为单选或多选 |
| | | for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) { |
| | | //获取用户选中的选项号 |
| | | if (ivrTaskTemplateTargetoption.getIsUserOperation() == true) { |
| | | ServiceSubtaskOptionAnswer serviceSubtaskOptionAnswer = new ServiceSubtaskOptionAnswer(); |
| | | serviceSubtaskOptionAnswer.setId(ivrTaskTemplateTargetoption.getId()); |
| | | serviceSubtaskOptionAnswer.setCode(ivrTaskTemplateTargetoption.getOptionCode()); |
| | | serviceSubtaskOptionAnswer.setValue(ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | serviceSubtaskOptionAnswer.setAppenddesc(ivrTaskTemplateTargetoption.getAppenddesc()); |
| | | answerList.add(serviceSubtaskOptionAnswer); |
| | | } |
| | | } |
| | | } else { |
| | | //非单多选 |
| | | if (CollectionUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList())) { |
| | | log.error("IvrTaskScriptTargetoptionList的值为:{}", ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()); |
| | | ServiceSubtaskOptionAnswer serviceSubtaskOptionAnswer = new ServiceSubtaskOptionAnswer(); |
| | | serviceSubtaskOptionAnswer.setId(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(0).getId()); |
| | | serviceSubtaskOptionAnswer.setCode(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(0).getOptionCode()); |
| | | serviceSubtaskOptionAnswer.setValue(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(0).getTargetvalue()); |
| | | serviceSubtaskOptionAnswer.setAppenddesc(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(0).getAppenddesc()); |
| | | answerList.add(serviceSubtaskOptionAnswer); |
| | | } |
| | | } |
| | | //数据保存 |
| | | serviceSubtaskAnswer.setTaskid(taskid); |
| | | serviceSubtaskAnswer.setPatId(patid); |
| | | serviceSubtaskAnswer.setScriptid(ivrTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskAnswer.setScriptType(Long.valueOf(ivrTaskTemplateScriptVO.getScriptType())); |
| | | serviceSubtaskAnswer.setAnswer(JSON.toJSONString(answerList)); |
| | | serviceSubtaskAnswer.setComment(null); |
| | | serviceSubtaskAnswer.setCreateTime(new Date()); |
| | | serviceSubtaskAnswer.setUpdateTime(new Date()); |
| | | serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer); |
| | | } |
| | | private Long setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) { |
| | | //下题跳转 |
| | | Long nextScriptNo = null; |
| | | |
| | | private void setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) { |
| | | ServiceSubtaskAnswer serviceSubtaskAnswer = null; |
| | | ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO(); |
| | | List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>(); |
| | | if (svyTaskTemplateScriptVO.getScriptType().equals("1") || svyTaskTemplateScriptVO.getScriptType().equals("2")) { |
| | | //1、2为单选或多选 |
| | | for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) { |
| | | //将问题选项记录下来 |
| | | if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) { |
| | | serviceSubtaskDetailVO.setTargetvalue(svyTaskTemplateTargetoption.getTargetvalue()); |
| | | } else { |
| | | serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + " " + svyTaskTemplateTargetoption.getTargetvalue()); |
| | | } |
| | | |
| | | if (svyTaskTemplateTargetoption.getIsUserOperation() == true) { |
| | | ServiceSubtaskOptionAnswer serviceSubtaskOptionAnswer = new ServiceSubtaskOptionAnswer(); |
| | | serviceSubtaskOptionAnswer.setId(svyTaskTemplateTargetoption.getId()); |
| | | serviceSubtaskOptionAnswer.setCode(svyTaskTemplateTargetoption.getOptionCode()); |
| | | serviceSubtaskOptionAnswer.setValue(svyTaskTemplateTargetoption.getTargetvalue()); |
| | | serviceSubtaskOptionAnswer.setAppenddesc(svyTaskTemplateTargetoption.getAppenddesc()); |
| | | answerList.add(serviceSubtaskOptionAnswer); |
| | | //将选中的结果放到asrtext中 |
| | | if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) { |
| | | serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateTargetoption.getTargetvalue()); |
| | | } else { |
| | | //如果是多选,答案需要用 & 进行拼接 |
| | | serviceSubtaskDetailVO.setAsrtext(serviceSubtaskDetailVO.getAnswerps() + "&" + svyTaskTemplateTargetoption.getTargetvalue()); |
| | | } |
| | | if (svyTaskTemplateScriptVO.getScriptType().equals("1") && svyTaskTemplateScriptVO.getBranchFlag().equals("1")) { |
| | | //是单选,并且是有分支的 |
| | | nextScriptNo = svyTaskTemplateTargetoption.getNextQuestion(); |
| | | } else { |
| | | nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno(); |
| | | } |
| | | } |
| | | } |
| | | serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()); |
| | | } else { |
| | | //非单多选 |
| | | if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions())) { |
| | | ServiceSubtaskOptionAnswer serviceSubtaskOptionAnswer = new ServiceSubtaskOptionAnswer(); |
| | | serviceSubtaskOptionAnswer.setId(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions().get(0).getId()); |
| | | serviceSubtaskOptionAnswer.setCode(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions().get(0).getOptionCode()); |
| | | serviceSubtaskOptionAnswer.setValue(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions().get(0).getTargetvalue()); |
| | | serviceSubtaskOptionAnswer.setAppenddesc(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions().get(0).getAppenddesc()); |
| | | answerList.add(serviceSubtaskOptionAnswer); |
| | | serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult()); |
| | | nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno(); |
| | | } |
| | | } |
| | | serviceSubtaskAnswer.setTaskid(Long.valueOf(taskid)); |
| | | serviceSubtaskAnswer.setPatId(Long.valueOf(patid)); |
| | | serviceSubtaskAnswer.setScriptid(svyTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskAnswer.setScriptType(Long.valueOf(svyTaskTemplateScriptVO.getScriptType())); |
| | | serviceSubtaskAnswer.setAnswer(JSON.toJSONString(answerList)); |
| | | serviceSubtaskAnswer.setComment(null); |
| | | serviceSubtaskAnswer.setCreateTime(new Date()); |
| | | serviceSubtaskAnswer.setUpdateTime(new Date()); |
| | | serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer); |
| | | serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid)); |
| | | serviceSubtaskDetailVO.setPatid(Long.valueOf(patid)); |
| | | serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType()); |
| | | serviceSubtaskDetailVO.setAsrtext(JSON.toJSONString(answerList)); |
| | | serviceSubtaskDetailVO.setComment(null); |
| | | serviceSubtaskDetailVO.setCreateTime(new Date()); |
| | | serviceSubtaskDetailVO.setUpdateTime(new Date()); |
| | | ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class); |
| | | serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail); |
| | | return nextScriptNo; |
| | | } |
| | | } |