From 7ef571e23124892654b480c7120fa69a4ae9eb36 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期四, 25 七月 2024 09:34:43 +0800 Subject: [PATCH] 代码提交 --- smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 221 insertions(+), 16 deletions(-) diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java index cc6b26f..5333257 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java @@ -1,13 +1,28 @@ package com.smartor.service.impl; +import com.alibaba.fastjson2.JSON; +import com.google.gson.JsonArray; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; -import com.smartor.domain.ServiceSubtaskAnswer; +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.service.IServiceSubtaskAnswerService; +import com.smartor.service.ISvyTaskTemplateService; +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.List; +import java.util.*; /** * 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞� @@ -15,11 +30,17 @@ * @author ruoyi * @date 2024-07-18 */ +@Slf4j @Service -public class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService -{ +public class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService { @Autowired private ServiceSubtaskAnswerMapper serviceSubtaskAnswerMapper; + + @Autowired + private RedisCache redisCache; + + @Value("${pri_key}") + private String pri_key; /** * 鏌ヨ浠诲姟闂嵎闂閫夐」 @@ -28,8 +49,7 @@ * @return 浠诲姟闂嵎闂閫夐」 */ @Override - public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id) - { + public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id) { return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerById(id); } @@ -40,8 +60,7 @@ * @return 浠诲姟闂嵎闂閫夐」 */ @Override - public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer) - { + public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer) { return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerList(serviceSubtaskAnswer); } @@ -52,8 +71,7 @@ * @return 缁撴灉 */ @Override - public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) - { + public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) { serviceSubtaskAnswer.setCreateTime(DateUtils.getNowDate()); return serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer); } @@ -65,8 +83,7 @@ * @return 缁撴灉 */ @Override - public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) - { + public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) { serviceSubtaskAnswer.setUpdateTime(DateUtils.getNowDate()); return serviceSubtaskAnswerMapper.updateServiceSubtaskAnswer(serviceSubtaskAnswer); } @@ -78,8 +95,7 @@ * @return 缁撴灉 */ @Override - public int deleteServiceSubtaskAnswerByIds(Long[] ids) - { + public int deleteServiceSubtaskAnswerByIds(Long[] ids) { return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerByIds(ids); } @@ -90,8 +106,197 @@ * @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(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")) { + 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()); + } else { + for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) { + if (svyTaskTemplateScriptVO.getId() == nextScriptno) { + //灏嗙涓�棰樼殑淇℃伅鏀惧埌琛ㄤ腑 + setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0])); + nextScriptno = Long.valueOf(cacheList.get(0).getNextScriptno()); + } + + } + } + } + } + //灏嗚key鍜寁alue浠巖edis涓紝鍒犻櫎 + 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.getIvrTaskTemplateScriptVOList())) { + //闅忚 + redisCache.setCacheObject(pid + "-" + tid + "-SFscriptCache", serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList()); + } else if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOList())) { + //闂嵎 + redisCache.setCacheObject(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOList()); + } + return 1; + } + + @Override + public List<ServiceSubtaskAnswer> 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); + return serviceSubtaskAnswerList; + } + + + private void setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) { + ServiceSubtaskAnswer serviceSubtaskAnswer = null; + 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 (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getScriptType()) && ivrTaskTemplateScriptVO.getScriptType().equals("4")) { + //濉┖ + for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) { + log.error("ivrTaskTemplateTargetoption鐨勫�间负锛歿}", ivrTaskTemplateTargetoption); + String[] split = ivrTaskTemplateTargetoption.getTargetvalue().split("|"); + for (String s : split) { + ServiceSubtaskOptionAnswer serviceSubtaskOptionAnswer = new ServiceSubtaskOptionAnswer(); + serviceSubtaskOptionAnswer.setId(ivrTaskTemplateTargetoption.getId()); + serviceSubtaskOptionAnswer.setCode(ivrTaskTemplateTargetoption.getOptionCode()); + serviceSubtaskOptionAnswer.setValue(s); + 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 void setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) { + ServiceSubtaskAnswer serviceSubtaskAnswer = null; + List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>(); + if (svyTaskTemplateScriptVO.getScriptType().equals("1") || svyTaskTemplateScriptVO.getScriptType().equals("2")) { + //1銆�2涓哄崟閫夋垨澶氶�� + for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) { + 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); + } + } + } 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); + } + } + 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); + } } -- Gitblit v1.9.3