From 2013ea208bc8fa12fb6f8d22497f2a8b5f69855f Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 11 九月 2026 11:18:30 +0800
Subject: [PATCH] 1.省立同德的满意度功能处理 2.省立同德、南华采集时间缩短 3.给保存问卷接口,加一下防止重复提前的注解@RepeatSubmit 4.省立同德新增“报备科室责任人”字段 5.登陆接口加“用户类型”字段,不影响当前登陆逻辑
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 419 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 374 insertions(+), 45 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 3f7999d..ad85650 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -8,6 +8,7 @@
import com.google.gson.Gson;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.core.service.IConfigService;
import com.ruoyi.common.dx.MessageSend;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.*;
@@ -21,9 +22,11 @@
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.config.PhoneUtils;
+import com.smartor.domain.DTO.QuestionResultDTO;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
import com.smartor.domain.VO.HeLibraryCountVO;
+import com.smartor.domain.VO.QuestionResultVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.VO.TransferDeptVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
@@ -33,7 +36,9 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
+import org.checkerframework.checker.nullness.qual.NonNull;
import org.junit.Test;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
@@ -208,6 +213,8 @@
private PatMedOperationMapper patMedOperationMapper;
@Autowired
private PatMedOperationItemMapper patMedOperationItemMapper;
+ @Autowired
+ private ServiceOutPathMapper serviceOutPathMapper;
/**
* 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級
@@ -410,26 +417,7 @@
@Override
public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) {
- if (serviceSubtaskEntity.getSendstateView() != null) {
- // 1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
- if (serviceSubtaskEntity.getSendstateView() == 1)
- serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
- if (serviceSubtaskEntity.getSendstateView() == 2)
- serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
- if (serviceSubtaskEntity.getSendstateView() == 3)
- serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
- }
- //鎮h�呰幏鍙栭殢璁夸换鍔�-闇�瑕佹煡璇㈠悓涓偅鑰咃紙韬唤璇侊級鎵�鏈夌殑浠诲姟 鏅畞
- if (StringUtils.isNotEmpty(serviceSubtaskEntity.getOrgid()) && serviceSubtaskEntity.getOrgid().equals("47255004333112711A1001")) {
- if (ObjectUtils.isNotEmpty(serviceSubtaskEntity.getPatid())) {
- PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtaskEntity.getPatid());
- if (ObjectUtils.isNotEmpty(patArchive) && StringUtils.isNotEmpty(patArchive.getIdcardno())) {
- serviceSubtaskEntity.setPatid(null);
- serviceSubtaskEntity.setSfzh(patArchive.getIdcardno());
- }
- }
- }
- List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
+ List<ServiceSubtask> selectServiceSubtaskList = getServiceSubtasks(serviceSubtaskEntity);
List<ServiceSubtaskRes> serviceSubtaskResList = new ArrayList<>();
for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
@@ -465,6 +453,30 @@
serviceSubtaskResList.add(serviceSubtaskRes);
}
return serviceSubtaskResList;
+ }
+
+ public List<ServiceSubtask> getServiceSubtasks(ServiceSubtaskEntity serviceSubtaskEntity) {
+ if (serviceSubtaskEntity.getSendstateView() != null) {
+ // 1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
+ if (serviceSubtaskEntity.getSendstateView() == 1)
+ serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
+ if (serviceSubtaskEntity.getSendstateView() == 2)
+ serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
+ if (serviceSubtaskEntity.getSendstateView() == 3)
+ serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
+ }
+ //鎮h�呰幏鍙栭殢璁夸换鍔�-闇�瑕佹煡璇㈠悓涓偅鑰咃紙韬唤璇侊級鎵�鏈夌殑浠诲姟 鏅畞
+ if (StringUtils.isNotEmpty(serviceSubtaskEntity.getOrgid()) && serviceSubtaskEntity.getOrgid().equals("47255004333112711A1001")) {
+ if (ObjectUtils.isNotEmpty(serviceSubtaskEntity.getPatid())) {
+ PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtaskEntity.getPatid());
+ if (ObjectUtils.isNotEmpty(patArchive) && StringUtils.isNotEmpty(patArchive.getIdcardno())) {
+ serviceSubtaskEntity.setPatid(null);
+ serviceSubtaskEntity.setSfzh(patArchive.getIdcardno());
+ }
+ }
+ }
+ List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
+ return selectServiceSubtaskList;
}
@Override
@@ -632,9 +644,66 @@
*/
@Override
public Map<String, Object> insertServiceSubtask(ServiceSubtask serviceSubtask) {
- serviceSubtask.setCreateTime(DateUtils.getNowDate());
- serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+ List<ServiceSubtask> serviceSubtasks = null;
+ //鍏堟煡璇竴涓嬭鎮h�呮槸鍚﹀凡缁忓垱寤烘牴鎹畇erviceType,sendstate,inhospid,patid,orgid
+ //杩欐牱鍒ゆ柇涓昏鏄负浜嗘兂璁╂柊鍗庡尰闄㈢殑澶栭儴瀵煎叆鎮h�呭垱寤轰换鍔★紝涔熻兘鐢ㄨ繖涓帴鍙�
+ if (StringUtils.isEmpty(serviceSubtask.getPatfrom()) || !serviceSubtask.getPatfrom().equals("2")) {
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+ serviceSubtaskVO.setServiceType(serviceSubtask.getServiceType());
+ serviceSubtaskVO.setInhospid(serviceSubtask.getInhospid());
+ serviceSubtaskVO.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
+ serviceSubtaskVO.setPatid(serviceSubtask.getPatid());
+ serviceSubtaskVO.setOrgid(serviceSubtask.getOrgid());
+ serviceSubtaskVO.setCampusid(serviceSubtask.getCampusid());
+ serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ }
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+ String format = null;
+ if (CollectionUtils.isNotEmpty(serviceSubtasks)) {
+ ServiceSubtask serviceSubtask1 = serviceSubtasks.get(0);
+ ServiceOutPath serviceOutPath = new ServiceOutPath();
+ serviceOutPath.setSubId(serviceSubtask1.getId());
+ List<ServiceOutPath> serviceOutPaths = serviceOutPathMapper.selectServiceOutPathList(serviceOutPath);
+ if (CollectionUtils.isNotEmpty(serviceOutPaths))
+ format = String.format("%03X", serviceOutPaths.get(0).getId());
+ else format = getOutPath(serviceSubtask1, rsaPublicKeyExample);
+ serviceSubtask = serviceSubtask1;
+ } else {
+ //濡傛灉涓嶅瓨鍦紝鍒欐柊澧�
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ if (ObjectUtils.isNotEmpty(serviceTask)) {
+ serviceSubtask.setDeptcode(serviceTask.getDeptcode());
+ serviceSubtask.setTaskDesc(serviceTask.getTaskDesc());
+ serviceSubtask.setTaskName(serviceTask.getTaskName());
+ serviceSubtask.setDeptname(serviceTask.getDeptname());
+ serviceSubtask.setTemplatename(serviceTask.getTemplatename());
+ }
+
+ serviceSubtask.setCreateTime(DateUtils.getNowDate());
+ serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+ //淇敼浣忛櫌婊℃剰搴︾姸鎬侊紙閬垮厤閲嶅鏌ヨ锛�
+ if (serviceSubtask.getServiceType() != null && "6".equals(serviceSubtask.getServiceType())) {
+ Long inhospid = serviceSubtask.getInhospid();
+ if (inhospid != null) {
+ PatMedInhosp patMedInhosp = new PatMedInhosp();
+ patMedInhosp.setInhospMydFlag("1");
+ patMedInhosp.setInhospid(inhospid);
+ patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+ }
+ }
+ format = getOutPath(serviceSubtask, rsaPublicKeyExample);
+ }
+
+ Map<String, Object> result = new HashMap<>();
+ if (StringUtils.isNotEmpty(format))
+ result.put("url", StringUtils.isNotEmpty(req_path) ? localIP + ":" + req_path + "/wt?p=" + format : localIP + "/wt?p=" + format);
+ else result.put("url", null);
+ result.put("subId", serviceSubtask.getId());
+ return result;
+ }
+
+ private String getOutPath(ServiceSubtask serviceSubtask, RSAPublicKeyExample rsaPublicKeyExample) {
+ String format;
String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
@@ -644,17 +713,15 @@
serviceOutPath.setCreateTime(new Date());
serviceOutPath.setParam6(subId);
serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ serviceOutPath.setTaskId(serviceSubtask.getTaskid());
+ serviceOutPath.setSubId(serviceSubtask.getId());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
//杞垚16杩涘埗
- String format = String.format("%03X", serviceOutPath.getId());
+ format = String.format("%03X", serviceOutPath.getId());
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-
- Map<String, Object> result = new HashMap<>();
- result.put("url", StringUtils.isNotEmpty(req_path) ? localIP + ":" + req_path + "/wt?p=" + format : localIP + "/wt?p=" + format);
- result.put("subId", serviceSubtask.getId());
- return result;
+ return format;
}
/**
@@ -1079,8 +1146,7 @@
}
}
- }
- else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
+ } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
//浠诲姟淇敼
if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
@@ -1129,15 +1195,6 @@
patMedOuthosp.setServerState("0");
patMedOuthospService.updatePatMedOuthosp(patMedOuthosp);
}
- }
- } else if (serviceSubtask.getServiceType().equals("19")) {
- ServiceTask st = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- //濡傛灉浠诲姟鏄暱鏈熶换鍔★紝闇�瑕佸皢璇ユ偅鑰呯殑鎵嬫湳璇︽儏鏁版嵁
- if (st != null && st.getLongTask() == 1 && ObjectUtils.isNotEmpty(serviceSubtask.getOperationItemId())) {
- PatMedOperationItem patMedOperationItem = new PatMedOperationItem();
- patMedOperationItem.setOpercheckFlag("0");
- patMedOperationItem.setId(serviceSubtask.getOperationItemId());
- patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
}
}
}
@@ -4955,13 +5012,107 @@
}
@Override
- public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime) {
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd,String valueType) {
//鍏堟竻鐞嗕竴涓嬮噸澶嶆暟鎹�
List<Long> repeatIds = serviceSubtaskDetailMapper.selectRepeatDetailIds();
if (!CollectionUtils.isEmpty(repeatIds)) {
serviceSubtaskDetailMapper.deleteRepeatDetailByIds(repeatIds);
}
- return serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime);
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime, scoreStart, scoreEnd, scriptContent, valueType);
+
+ // 澶勭悊 targetvalue锛氭寜 & 鍒嗗壊鎴愬鏉¤褰�
+ List<ServiceSubtaskDetailRatioExport> result = new ArrayList<>();
+ for (ServiceSubtaskDetailRatioExport export : serviceSubtaskDetailRatioExports) {
+ if (StringUtils.isNotEmpty(export.getTargetvalue()) && export.getTargetvalue().contains("&")) {
+ String[] values = export.getTargetvalue().split("&");
+ // 濡傛灉鏈夊鏉$洰鏍囧�硷紝鎷嗗垎鎴愬琛�
+ for (String value : values) {
+ //鍏堝幓 result 涓煡涓�涓嬶紝鏈夋病鏈夎繖涓� questiontext 鍜屽搴旂殑 targetvalue
+ ServiceSubtaskDetailRatioExport existingExport = result.stream()
+ .filter(e -> e.getQuestiontext().equals(export.getQuestiontext())
+ && value.trim().equals(e.getTargetvalue()))
+ .findFirst()
+ .orElse(null);
+ if (existingExport != null && existingExport.getRatio().equals("0") && existingExport.getCount().equals("0")) {
+ //濡傛灉瀛樺湪锛屽垯灏� result 閲岀殑杩欎釜闂鎵�瀵瑰簲鐨� Targetvalue=value 杩欐潯鏁版嵁鏇存柊鎴愬綋鍓嶈繖鏉℃暟鎹�
+ if(value.equals(export.getOptionresult())) {
+ existingExport.setRatio(export.getRatio());
+ existingExport.setScore(export.getScore());
+ existingExport.setCount(export.getCount());
+ existingExport.setOptionresult(export.getOptionresult());
+ }
+ } else if (existingExport != null && !existingExport.getRatio().equals("0")) {
+ continue;
+ } else {
+ ServiceSubtaskDetailRatioExport newExport = DtoConversionUtils.sourceToTarget(export, ServiceSubtaskDetailRatioExport.class);
+ newExport.setTargetvalue(value.trim()); // targetvalue 鏄剧ず鍗曚釜閫夐」
+ if (!value.equals(export.getOptionresult())) {
+ newExport.setOptionresult(null);
+ newExport.setCount("0");
+ newExport.setRatio("0");
+ }
+ result.add(newExport);
+ }
+ }
+ } else {
+ // targetvalue 涓嶅寘鍚� &锛岀洿鎺ユ坊鍔犲埌缁撴灉
+ result.add(export);
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd,String valueType) {
+ //鍏堟竻鐞嗕竴涓嬮噸澶嶆暟鎹�
+ List<Long> repeatIds = serviceSubtaskDetailMapper.selectRepeatDetailIds();
+ if (!CollectionUtils.isEmpty(repeatIds)) {
+ serviceSubtaskDetailMapper.deleteRepeatDetailByIds(repeatIds);
+ }
+
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOptionBySubtaskIds(subtaskIds, startOutHospTime, endOutHospTime, scoreStart, scoreEnd, scriptContent,valueType);
+ // 澶勭悊 targetvalue锛氭寜 & 鍒嗗壊鎴愬鏉¤褰�
+ List<ServiceSubtaskDetailRatioExport> result = new ArrayList<>();
+ for (ServiceSubtaskDetailRatioExport export : serviceSubtaskDetailRatioExports) {
+ if (StringUtils.isNotEmpty(export.getTargetvalue()) && export.getTargetvalue().contains("&")) {
+ String[] values = export.getTargetvalue().split("&");
+ // 濡傛灉鏈夊鏉$洰鏍囧�硷紝鎷嗗垎鎴愬琛�
+ for (String value : values) {
+ //鍏堝幓 result 涓煡涓�涓嬶紝鏈夋病鏈夎繖涓� questiontext 鍜屽搴旂殑 targetvalue
+ ServiceSubtaskDetailRatioExport existingExport = result.stream()
+ .filter(e -> e.getQuestiontext().equals(export.getQuestiontext())
+ && value.trim().equals(e.getTargetvalue()))
+ .findFirst()
+ .orElse(null);
+ if (existingExport != null && existingExport.getRatio().equals("0") && existingExport.getCount().equals("0")) {
+ //濡傛灉瀛樺湪锛屽垯灏� result 閲岀殑杩欎釜闂鎵�瀵瑰簲鐨� Targetvalue=value 杩欐潯鏁版嵁鏇存柊鎴愬綋鍓嶈繖鏉℃暟鎹�
+ if(value.equals(export.getOptionresult())) {
+ existingExport.setRatio(export.getRatio());
+ existingExport.setScore(export.getScore());
+ existingExport.setCount(export.getCount());
+ existingExport.setOptionresult(export.getOptionresult());
+ }
+ } else if (existingExport != null && !existingExport.getRatio().equals("0")) {
+ continue;
+ } else {
+ ServiceSubtaskDetailRatioExport newExport = DtoConversionUtils.sourceToTarget(export, ServiceSubtaskDetailRatioExport.class);
+ newExport.setTargetvalue(value.trim()); // targetvalue 鏄剧ず鍗曚釜閫夐」
+ if (!value.equals(export.getOptionresult())) {
+ newExport.setOptionresult(null);
+ newExport.setCount("0");
+ newExport.setRatio("0");
+ }
+ result.add(newExport);
+ }
+ }
+ } else {
+ // targetvalue 涓嶅寘鍚� &锛岀洿鎺ユ坊鍔犲埌缁撴灉
+ result.add(export);
+ }
+ }
+
+ return result;
}
/**
@@ -5266,6 +5417,163 @@
}
}
+
+ public PhoneCallBackSHVO getFirstQues(PhoneCallReqYQVO phoneCallReqYQVO) {
+ //鐢ㄤ簬杩斿洖
+ PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
+
+ //鏍规嵁鎵嬫満鍙疯幏鍙栫敤鎴风殑鐨勫瓙浠诲姟淇℃伅
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+ serviceSubtaskVO.setPhone(phoneCallReqYQVO.getPhone());
+ serviceSubtaskVO.setType("1");
+ serviceSubtaskVO.setSendstate(2L);
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ if (CollectionUtils.isNotEmpty(serviceSubtasks)) {
+ ServiceSubtask serviceSubtask = serviceSubtasks.get(0);
+ IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
+
+ //閫氳繃浠诲姟妯℃澘涓殑"绗竴娆¢棶棰樼紪鍙�"鑾峰彇绗竴涓棶棰�;
+ IvrTaskTemplateScript ivrTaskTemplateScript = null;
+ IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();
+ ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());
+ List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);
+
+ for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {
+ if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {
+ ivrTaskTemplateScript = ivrTaskTemplateScript2;
+ break;
+ }
+ }
+ //鑾峰彇寮�鍦虹櫧
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+
+ phoneCallBackSHVO.setSubId(serviceSubtask.getId());
+ phoneCallBackSHVO.setScriptId(ivrTaskTemplateScript.getId());
+ phoneCallBackSHVO.setSort(ivrTaskTemplateScript.getSort());
+ phoneCallBackSHVO.setTaskTemplateid(ivrTaskTemplateScript.getTemplateID());
+ phoneCallBackSHVO.setScriptContent(serviceTask.getKcb() + "," + ivrTaskTemplateScript.getScriptContent());
+ }
+ return phoneCallBackSHVO;
+ }
+
+
+ /**
+ * 涓夋眹ASR缁撴灉澶勭悊
+ *
+ * @param phoneCallResultYQVO
+ * @return
+ */
+ public PhoneCallBackSHVO processResust(PhoneCallResultYQVO phoneCallResultYQVO) {
+ PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
+ //閫氳繃scriptid锛岃幏鍙栨墍鏈夌殑缁撴灉
+ String url = configService.selectConfigByKey("sys.voice.match.ai.url", phoneCallResultYQVO.getOrgid());
+ ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(phoneCallResultYQVO.getSubId());
+ IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
+ IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(phoneCallResultYQVO.getScriptId()));
+ Integer i = matchOptionIndex(url, phoneCallResultYQVO.getScriptContent(), phoneCallResultYQVO.getAsrResult(), ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), phoneCallResultYQVO.getUuid());
+ if (i >= 0) {
+ String optiondesc = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(i).getOptiondesc();
+ //灏嗘偅鑰呯殑鍥炵瓟鍐欒繘service_subtask_detail涓�
+ ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
+ List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
+ ivrTaskTemplateScriptVO.setQuestionResult(optiondesc);
+
+ PhoneCallReqYQVO phoneCallReqYQVO = new PhoneCallReqYQVO();
+ phoneCallReqYQVO.setTaskid("" + serviceSubtask.getId());
+ phoneCallReqYQVO.setPhone(phoneCallResultYQVO.getPhone());
+ phoneCallReqYQVO.setAsrtext(phoneCallResultYQVO.getAsrResult());
+ ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
+ //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
+ if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
+ String questionvoice = serviceSubtaskDetail.getQuestionvoice();
+ String[] split = questionvoice.split("\\\\");
+ if (split.length > 0) {
+ String lastPart = split[split.length - 1];
+ serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
+ }
+ }
+ serviceSubtaskDetailList.add(serviceSubtaskDetail);
+ serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
+ serviceSubTaskDetailReq.setGuid(phoneCallResultYQVO.getGuid());
+ serviceSubTaskDetailReq.setOrgid(phoneCallResultYQVO.getOrgid());
+ saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+
+ IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
+ ivrTaskTemplateScript.setTemplateID(ivrTaskTemplateScriptVO.getTemplateID());
+ List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
+
+ //鑾峰彇涓嬩竴棰�
+ for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
+ if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ phoneCallBackSHVO.setScriptContent(serviceTask.getJsy());
+ phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
+ phoneCallBackSHVO.setSort(script.getSort());
+ phoneCallBackSHVO.setScriptId(script.getId());
+ phoneCallBackSHVO.setSubId(serviceSubtask.getId());
+ phoneCallBackSHVO.setStatus("0");
+ } else if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
+ phoneCallBackSHVO.setScriptContent(script.getScriptContent());
+ phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
+ phoneCallBackSHVO.setSort(script.getSort());
+ phoneCallBackSHVO.setScriptId(script.getId());
+ phoneCallBackSHVO.setSubId(serviceSubtask.getId());
+ break;
+ }
+ }
+ //鎶婄紦瀛樻竻闄�
+ redisCache.deleteObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
+ } else {
+ //鍐嶅皢閲嶅璇㈤棶
+ //璁板綍涓�涓嬭繖涓棶棰樿闂鐨勬鏁�
+ Object cacheObject = redisCache.getCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
+ if (cacheObject == null || (Integer) cacheObject < ivrTaskTemplate.getMateNum()) {
+
+
+ // 鑾峰彇閫夐」闆嗗悎涓殑 optiondesc 鐢ㄤ簬寮曞鎮h��
+ List<IvrTaskTemplateTargetoption> optionList = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
+ String optionDescStr = "";
+ if (optionList != null && !optionList.isEmpty()) {
+ optionDescStr = optionList.stream().map(IvrTaskTemplateTargetoption::getTargetvalue).filter(StringUtils::isNotEmpty).collect(Collectors.joining("鎴�"));
+ }
+
+ String scriptContent = "璇烽棶" + phoneCallResultYQVO.getScriptContent();
+ if (StringUtils.isNotEmpty(optionDescStr)) {
+ scriptContent += "锛屼綘鍙互鍥炵瓟锛�" + optionDescStr;
+ }
+ phoneCallBackSHVO.setScriptContent(scriptContent);
+ phoneCallBackSHVO.setTaskTemplateid(phoneCallResultYQVO.getTaskTemplateid());
+ phoneCallBackSHVO.setSort(phoneCallResultYQVO.getSort());
+ phoneCallBackSHVO.setScriptId(phoneCallResultYQVO.getScriptId());
+ phoneCallBackSHVO.setSubId(phoneCallResultYQVO.getSubId());
+ if (cacheObject == null)
+ redisCache.setCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId(), 1, 120, TimeUnit.MINUTES);
+ else
+ redisCache.setCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId(), (Integer) cacheObject + 1, 120, TimeUnit.MINUTES);
+ } else if ((Integer) cacheObject >= ivrTaskTemplate.getMateNum()) {
+ //濡傛灉宸茬粡闂簡瑙勫畾娆℃暟锛屽氨涓嶉棶浜嗭紝缁х画闂笅涓�棰橈紙杩欎釜瑕佸晢閲忎竴涓嬶紝鏄户缁棶涓嬩竴棰橈紝杩樻槸鍋滀簡锛屾槸涓嶆槸瑕佸仛涓紑鍏筹級
+ IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
+ ivrTaskTemplateScript.setTemplateID(ivrTaskTemplateScriptVO.getTemplateID());
+ List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
+ //鑾峰彇涓嬩竴棰�
+ for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
+ if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
+ phoneCallBackSHVO.setScriptContent(script.getScriptContent());
+ phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
+ phoneCallBackSHVO.setSort(script.getSort());
+ phoneCallBackSHVO.setScriptId(script.getId());
+ phoneCallBackSHVO.setSubId(serviceSubtask.getId());
+ break;
+ }
+ }
+ //鎶婄紦瀛樻竻闄�
+ redisCache.deleteObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
+ }
+ }
+ return phoneCallBackSHVO;
+ }
+
+
public PhoneCallBackYQVO AiMatch(String url, PhoneCallReqYQVO phoneCallReqYQVO, PhoneCallBackYQVO phoneCallBackYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate, List<IvrTaskTemplateScript> ivrTaskTemplateScripts, String scriptId, Integer flag, String uuid) {
PhoneCallBackYQVO back = null;
List<IvrTaskTemplateTargetoption> options = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
@@ -5492,15 +5800,36 @@
return back;
}
+
+ /**
+ * 闂缁撴灉鍗犳瘮
+ *
+ * @param serviceSubtaskEntity
+ * @param serviceSubtaskRes
+ * @return
+ */
+ public List<ServiceSubtaskDetailRatioExport> getDetailRatio(QuestionResultVO questionResultVO, List<ServiceSubtaskRes> serviceSubtaskRes) {
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = null;
+ if (StringUtils.isNotEmpty(questionResultVO.getServiceType()) && questionResultVO.getServiceType().equals("2")) {
+ //鑾峰彇serviceSubtaskList涓殑鎵�鏈塼askid
+ List<Long> taskIds = serviceSubtaskRes.stream().map(ServiceSubtaskRes::getTaskid).filter(ObjectUtils::isNotEmpty).distinct().collect(Collectors.toList());
+ serviceSubtaskDetailRatioExports = statQuestionOption(taskIds, questionResultVO.getStartOutHospTime(), questionResultVO.getEndOutHospTime(), questionResultVO.getQuestionContent(), questionResultVO.getStartScore(), questionResultVO.getEndScore(),questionResultVO.getValueType());
+ } else if (StringUtils.isNotEmpty(questionResultVO.getServiceType()) && questionResultVO.getServiceType().equals("6")) {
+ //婊℃剰搴︾粺璁� 锛堥�氳繃 subtask 鐨� id 鍘荤粺璁★級
+ List<Long> subtaskIds = serviceSubtaskRes.stream().map(ServiceSubtaskRes::getId).collect(Collectors.toList());
+ serviceSubtaskDetailRatioExports = statQuestionOptionBySubtaskIds(subtaskIds, questionResultVO.getStartOutHospTime(), questionResultVO.getEndOutHospTime(), questionResultVO.getQuestionContent(), questionResultVO.getStartScore(), questionResultVO.getEndScore(),questionResultVO.getValueType());
+ }
+ return serviceSubtaskDetailRatioExports;
+ }
+
//鑾峰彇浠诲姟缁勪俊鎭�
- private void findServiceTaskScheduleVO(ServiceTaskVO serviceTaskVO){
- if(StringUtils.isNotEmpty(serviceTaskVO.getAppltype()) && serviceTaskVO.getAppltype().equals("5")){
+ private void findServiceTaskScheduleVO(ServiceTaskVO serviceTaskVO) {
+ if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype()) && serviceTaskVO.getAppltype().equals("5")) {
//浠诲姟缁勪俊鎭�
ServiceTaskSchedule schedule = serviceTaskScheduleService.selectByTaskid(serviceTaskVO.getTaskid());
if (ObjectUtils.isNotEmpty(schedule)) {
ServiceTaskScheduleVO serviceTaskScheduleVO = DtoConversionUtils.sourceToTarget(schedule, ServiceTaskScheduleVO.class);
- List<ServiceTaskScheduleDetail> scheduleDetailList =
- serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
+ List<ServiceTaskScheduleDetail> scheduleDetailList = serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
serviceTaskScheduleVO.setDetailList(scheduleDetailList);
serviceTaskVO.setServiceTaskScheduleVO(serviceTaskScheduleVO);
}
--
Gitblit v1.9.3