| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.smartor.domain.ServiceSubtaskAnswer; |
| | | import com.ruoyi.common.utils.RSAPublicKeyExample; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.mapper.ServiceSubtaskAnswerMapper; |
| | | import com.smartor.mapper.ServiceSubtaskMapper; |
| | | import com.smartor.service.IServiceSubtaskAnswerService; |
| | | 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.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * 任务问卷问题选项Service业务层处理 |
| | |
| | | * @author ruoyi |
| | | * @date 2024-07-18 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService |
| | | { |
| | | public class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService { |
| | | @Autowired |
| | | private ServiceSubtaskAnswerMapper serviceSubtaskAnswerMapper; |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskMapper serviceSubtaskMapper; |
| | | |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | |
| | | @Value("${pri_key}") |
| | | private String pri_key; |
| | | |
| | | /** |
| | | * 查询任务问卷问题选项 |
| | |
| | | * @return 任务问卷问题选项 |
| | | */ |
| | | @Override |
| | | public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id) |
| | | { |
| | | public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id) { |
| | | return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerById(id); |
| | | } |
| | | |
| | |
| | | * @return 任务问卷问题选项 |
| | | */ |
| | | @Override |
| | | public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer) |
| | | { |
| | | public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer) { |
| | | return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerList(serviceSubtaskAnswer); |
| | | } |
| | | |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) |
| | | { |
| | | public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) { |
| | | serviceSubtaskAnswer.setCreateTime(DateUtils.getNowDate()); |
| | | return serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer); |
| | | } |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) |
| | | { |
| | | public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) { |
| | | serviceSubtaskAnswer.setUpdateTime(DateUtils.getNowDate()); |
| | | return serviceSubtaskAnswerMapper.updateServiceSubtaskAnswer(serviceSubtaskAnswer); |
| | | } |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int deleteServiceSubtaskAnswerByIds(Long[] ids) |
| | | { |
| | | public int deleteServiceSubtaskAnswerByIds(Long[] ids) { |
| | | return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerByIds(ids); |
| | | } |
| | | |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int deleteServiceSubtaskAnswerById(Long id) |
| | | { |
| | | public int deleteServiceSubtaskAnswerById(Long id) { |
| | | return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerById(id); |
| | | } |
| | | |
| | | @Override |
| | | public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) { |
| | | Set<String> allKeys = redisCache.getAllKeys(); |
| | | 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)); |
| | | allKeys = new HashSet<>(); |
| | | if (serviceSubTaskAnswerReq.getType() == 1) { |
| | | allKeys.add(redisCache.getCacheObject(pid + "-" + tid + "-SFscriptCache")); |
| | | } else if (serviceSubTaskAnswerReq.getType() == 2) { |
| | | allKeys.add(redisCache.getCacheObject(pid + "-" + tid + "-WJscriptCache")); |
| | | } |
| | | } |
| | | |
| | | Long nextScriptno = null; |
| | | for (String key : allKeys) { |
| | | String[] split = key.split("-"); |
| | | if (key.contains("-SFscriptCache")) { |
| | | //包含了,说明了是随访问题 |
| | | List<IvrLibaTemplateScriptVO> cacheList = redisCache.getCacheList(key); |
| | | for (int i = 0; i < cacheList.size(); i++) { |
| | | if (i == 0) { |
| | | // 说明是第一题 |
| | | IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = cacheList.get(0); |
| | | //将第一题的信息放到表中 |
| | | setSFInfo(ivrLibaTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | nextScriptno = cacheList.get(0).getNextScriptno(); |
| | | } else { |
| | | //不是第 一 题 |
| | | for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : cacheList) { |
| | | if (ivrLibaTemplateScriptVO.getId() == nextScriptno) { |
| | | setSFInfo(ivrLibaTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | nextScriptno = ivrLibaTemplateScriptVO.getNextScriptno(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else if (key.contains("-WJscriptCache")) { |
| | | List<SvyLibTemplateScriptVO> 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()); |
| | | } else { |
| | | for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : cacheList) { |
| | | if (svyLibTemplateScriptVO.getId() == nextScriptno) { |
| | | //将第一题的信息放到表中 |
| | | setWJInfo(svyLibTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0])); |
| | | nextScriptno = Long.valueOf(cacheList.get(0).getNextScriptno()); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //将该key和value从redis中,删除 |
| | | redisCache.deleteObject(key); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | /** |
| | | * 将问题保存到缓存中 |
| | | * |
| | | * @param serviceSubTaskCacheReq |
| | | * @return |
| | | */ |
| | | @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)); |
| | | if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList())) { |
| | | //随访 |
| | | redisCache.setCacheObject(pid + "-" + tid + "-SFscriptCache", serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList()); |
| | | } else if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOList())) { |
| | | //问卷 |
| | | redisCache.setCacheObject(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyLibTemplateScriptVOList()); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | |
| | | private void setSFInfo(IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO, Long taskid, Long patid) { |
| | | ServiceSubtaskAnswer serviceSubtaskAnswer = null; |
| | | String dx = ""; |
| | | if (ivrLibaTemplateScriptVO.getScriptType().equals("1") || ivrLibaTemplateScriptVO.getScriptType().equals("2")) { |
| | | //1、2为单选或多选 |
| | | for (IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption : ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList()) { |
| | | //获取用户选中的选项号 |
| | | dx = dx + "," + ivrLibaTemplateTargetoption.getOptionNo().toString(); |
| | | } |
| | | } else { |
| | | //非单多选 |
| | | if (CollectionUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList())) { |
| | | dx = ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(0).getAppenddesc(); |
| | | } |
| | | } |
| | | serviceSubtaskAnswer.setTaskid(Long.valueOf(taskid)); |
| | | serviceSubtaskAnswer.setPatId(Long.valueOf(patid)); |
| | | serviceSubtaskAnswer.setScriptid(ivrLibaTemplateScriptVO.getId()); |
| | | serviceSubtaskAnswer.setScriptType(Long.valueOf(ivrLibaTemplateScriptVO.getScriptType())); |
| | | serviceSubtaskAnswer.setAnswer(dx.substring(1)); |
| | | serviceSubtaskAnswer.setComment(null); |
| | | serviceSubtaskAnswer.setCreateTime(new Date()); |
| | | serviceSubtaskAnswer.setUpdateTime(new Date()); |
| | | serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer); |
| | | } |
| | | |
| | | private void setWJInfo(SvyLibTemplateScriptVO svyLibTemplateScriptVO, Long taskid, Long patid) { |
| | | ServiceSubtaskAnswer serviceSubtaskAnswer = null; |
| | | String dx = ""; |
| | | if (svyLibTemplateScriptVO.getScriptType().equals("1") || svyLibTemplateScriptVO.getScriptType().equals("2")) { |
| | | //1、2为单选或多选 |
| | | for (SvyLibTemplateTargetoption svyLibTemplateTargetoption : svyLibTemplateScriptVO.getSvyLibTemplateTargetoptions()) { |
| | | //获取用户选中的选项号 |
| | | dx = dx + "," + svyLibTemplateTargetoption.getOptionNo().toString(); |
| | | } |
| | | } else { |
| | | //非单多选 |
| | | if (CollectionUtils.isNotEmpty(svyLibTemplateScriptVO.getSvyLibTemplateTargetoptions())) { |
| | | dx = svyLibTemplateScriptVO.getSvyLibTemplateTargetoptions().get(0).getAppenddesc(); |
| | | } |
| | | } |
| | | serviceSubtaskAnswer.setTaskid(Long.valueOf(taskid)); |
| | | serviceSubtaskAnswer.setPatId(Long.valueOf(patid)); |
| | | serviceSubtaskAnswer.setScriptid(svyLibTemplateScriptVO.getId()); |
| | | serviceSubtaskAnswer.setScriptType(Long.valueOf(svyLibTemplateScriptVO.getScriptType())); |
| | | serviceSubtaskAnswer.setAnswer(dx.substring(1)); |
| | | serviceSubtaskAnswer.setComment(null); |
| | | serviceSubtaskAnswer.setCreateTime(new Date()); |
| | | serviceSubtaskAnswer.setUpdateTime(new Date()); |
| | | serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer); |
| | | } |
| | | } |