From efaa2a7a5b7d9d1a36f4d6a7e275d2b76f6cd9d3 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 06 八月 2026 18:06:09 +0800
Subject: [PATCH] 【景宁】查询随访任务组科室关联列表、查询随访任务组疾病关联列表
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java | 815 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 709 insertions(+), 106 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 2b8408b..63a5cda 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -1,17 +1,21 @@
package com.smartor.service.impl;
import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.exception.base.BaseException;
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.domain.DTO.ServiceSubtaskDetailDTO;
+import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
-import com.smartor.service.IServiceSubtaskAnswerService;
-import com.smartor.service.IServiceTaskService;
+import com.smartor.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -22,6 +26,7 @@
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
/**
* 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞�
@@ -48,6 +53,12 @@
private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
@Autowired
+ private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper;
+
+ @Autowired
+ private IvrLibaScriptAssortMapper ivrLibaScriptAssortMapper;
+
+ @Autowired
private IServiceTaskService serviceTaskService;
@Autowired
@@ -59,6 +70,24 @@
@Autowired
private PatMedOuthospMapper patMedOuthospMapper;
+
+ @Autowired
+ private IServiceSubtaskDetailTraceService traceService;
+
+ @Autowired
+ private ISvyTaskTemplateService svyTaskTemplateService;
+
+ @Autowired
+ private ISvyLibTemplateScriptService svyLibTemplateScriptService;
+
+ @Autowired
+ private ISvyTaskTemplateTargetoptionService svyTaskTemplateTargetoptionService;
+
+ @Autowired
+ private IIvrTaskTemplateService ivrTaskTemplateService;
+
+ @Autowired
+ private IIvrLibaTemplateScriptService ivrLibaTemplateScriptService;
@Value("${pri_key}")
private String pri_key;
@@ -138,6 +167,7 @@
public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq, Long flag) {
Long tid = null;
Long pid = null;
+ Long subid = null;
Double score = null;
Long isabno = 0L;
Set<String> allKeys = redisCache.getAllKeys();
@@ -148,16 +178,19 @@
if (flag == 0) {
tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));
pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));
+ if (StringUtils.isNotEmpty(serviceSubTaskAnswerReq.getParam6()))
+ subid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam6(), pri_key));
} else if (flag == 1) {
tid = Long.valueOf(serviceSubTaskAnswerReq.getParam1());
pid = Long.valueOf(serviceSubTaskAnswerReq.getParam2());
+ subid = Long.valueOf(serviceSubTaskAnswerReq.getParam6());
}
if (serviceSubTaskAnswerReq.getType() != null && serviceSubTaskAnswerReq.getType() == 2) {
allKeys = new HashSet<>();
- allKeys.add(pid + "-" + tid + "-WJscriptCache");
+ allKeys.add(pid + "-" + tid + "-" + subid + "-WJscriptCache");
} else if (serviceSubTaskAnswerReq.getType() != null && serviceSubTaskAnswerReq.getType() == 1) {
allKeys = new HashSet<>();
- allKeys.add(pid + "-" + tid + "-SFscriptCache");
+ allKeys.add(pid + "-" + tid + "-" + subid + "-SFscriptCache");
}
}
@@ -167,7 +200,7 @@
String[] split = key.split("-");
//鍏堝垽鏂紝鏄笉鏄綋鍓嶆彁浜や汉鐨勶紝涓嶆槸褰撳墠鎻愪氦浜虹殑锛岃烦杩�
try {
- if (ObjectUtils.isNotEmpty(split[0]) && ObjectUtils.isNotEmpty(split[1]) && !Long.valueOf(split[0]).equals(pid) && !Long.valueOf(split[1]).equals(tid)) {
+ if (ObjectUtils.isNotEmpty(split[0]) && ObjectUtils.isNotEmpty(split[1]) && !Long.valueOf(split[0]).equals(pid) && !Long.valueOf(split[1]).equals(tid) && !Objects.isNull(split[2]) && !Long.valueOf(split[2]).equals(subid)) {
continue;
}
} catch (Exception e) {
@@ -177,18 +210,20 @@
if (key.contains("-WJscriptCache")) {
List<SvyTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
- log.error("闂嵎鍥炵瓟缁撴灉锛歿}", cacheList);
+ log.info("闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+
+ //鏍¢獙涓�涓嬮鐨勫簭鍙锋槸鍚︽湁闂 (濡傛灉鏍规嵁閫夐」鏃犲簭璺宠浆锛屽氨浼氬鑷撮敊璇�)
+ cacheList = checkQuestionSort(cacheList);
+
for (int i = 0; i < cacheList.size(); i++) {
if (i == 0) {
//杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) {
if (svyTaskTemplateScriptVO.getSort() == 1L) {
//璇存槑鏄涓�棰�
-// SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), SvyTaskTemplateScriptVO.class);
List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(0).getSvyTaskTemplateTargetoptions();
-// List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyTaskTemplateTargetoptions, SvyTaskTemplateTargetoption.class);
svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
- Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid);
+ Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid);
if (map == null) continue aa;
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
@@ -203,14 +238,11 @@
} else {
SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
log.info("svyTaskTemplateScriptVO鐨勪俊鎭负锛歿}锛宨鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getScriptno(), i);
-// SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), SvyTaskTemplateScriptVO.class);
List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(i).getSvyTaskTemplateTargetoptions();
-// List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getSvyTaskTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
-// log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
- Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
+ Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]), Objects.isNull(split[2]) ? null : Long.valueOf(split[2]));
log.error("nextScriptNo鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
@@ -225,18 +257,16 @@
} else if (key.contains("-SFscriptCache")) {
List<IvrTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
cacheList.sort(Comparator.comparingLong(IvrTaskTemplateScriptVO::getSort));
- log.error("鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}", cacheList.size());
+ log.error("鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
for (int i = 0; i < cacheList.size(); i++) {
if (i == 0) {
//杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : cacheList) {
if (ivrTaskTemplateScriptVO.getSort() == 1L) {
//璇存槑鏄涓�棰�
-// IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), IvrTaskTemplateScriptVO.class);
List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = cacheList.get(0).getIvrTaskScriptTargetoptionList();
-// List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(ivrLibaTemplateTargetoptions, IvrTaskTemplateTargetoption.class);
ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
- Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid);
+ Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
if (score == null) {
@@ -253,7 +283,7 @@
ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
- Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
+ Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]), Objects.isNull(split[2]) ? null : Long.valueOf(split[2]));
log.error("----nextScriptNo2鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
@@ -272,7 +302,7 @@
redisCache.deleteObject(key);
//鏌ヨ鍑鸿浠诲姟涓鍦ㄦ墽琛岀殑鎮h�呬俊鎭�
- ServiceSubtaskVO ssVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity ssVO = new ServiceSubtaskEntity();
ssVO.setTaskid(tid);
ssVO.setPatid(pid);
// ssVO.setSendstate(3L);
@@ -308,6 +338,155 @@
}
@Override
+ public Integer saveQuestionDetail(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) {
+ Long tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());
+ Long pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());
+ Long subid = Long.valueOf(serviceSubTaskCacheReq.getParam6());
+ Double score = null;
+ if (ObjectUtils.isNotEmpty(serviceSubTaskCacheReq)) {
+ Long nextScriptno = null;
+ String isabnormalFlag = "0";
+ if (serviceSubTaskCacheReq.getType() == 2) {
+ List<SvyTaskTemplateScriptVO> cacheList = serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS();
+ //妫�鏌ュ苟淇闂嵎棰樼洰鎺掑簭
+ cacheList = checkQuestionSort(cacheList);
+ cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
+ log.info("闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+ // 棰勬煡璇㈠惊鐜腑涓嶅彉鐨勬暟鎹紝閬垮厤姣忛閲嶅鏌ユ暟鎹簱
+ ServiceSubtaskEntity preSubtaskVO = new ServiceSubtaskEntity();
+ preSubtaskVO.setTaskid(tid);
+ preSubtaskVO.setPatid(pid);
+ preSubtaskVO.setSubId(subid);
+ List<ServiceSubtask> preServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(preSubtaskVO);
+ ServiceTask preServiceTask = serviceTaskService.selectServiceTaskByTaskid(tid);
+ Map<Long, Long> preDetailIdMap = getExistingDetailIdMap(subid);
+ Map<Long, Long> preTraceIdMap = getExistingTraceIdMap(subid);
+
+ // 鎻愬墠瀹氫綅绗竴棰樼殑绱㈠紩锛岄伩鍏嶅悗缁祵濂楀惊鐜�
+ Integer firstSortIndex = -1;
+ if (CollectionUtils.isNotEmpty(cacheList)) {
+ for (int j = 0; j < cacheList.size(); j++) {
+ if (cacheList.get(j).getSort() != null && cacheList.get(j).getSort() == 1L) {
+ firstSortIndex = j;
+ break;
+ }
+ }
+ }
+
+ for (int i = 0; i < cacheList.size(); i++) {
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
+ log.info("svyTaskTemplateScriptVO 鐨勪俊鎭负锛歿}锛宨 鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getScriptno(), i);
+ List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions();
+ svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+
+ // 濡傛灉鏄涓�棰樻垨鑰呭尮閰� nextScriptno 鐨勯鐩�
+ boolean shouldProcess = false;
+ if (i == firstSortIndex) {
+ shouldProcess = true;
+ } else if (nextScriptno != null && svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
+ shouldProcess = true;
+ }
+
+ if (shouldProcess) {
+ Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap);
+ log.error("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
+ if (map == null) continue;
+
+ if (!Objects.isNull(map.get("nextScriptNo")))
+ nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+
+ if (score == null) {
+ score = Double.valueOf(map.get("score"));
+ } else {
+ score = score + Double.valueOf(map.get("score"));
+ }
+ isabnormalFlag = map.get("isabnormal");
+ }
+ }
+ } else if (serviceSubTaskCacheReq.getType() == 1) {
+ List<IvrTaskTemplateScriptVO> cacheList = serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList();
+ cacheList.sort(Comparator.comparingLong(vo -> Optional.ofNullable(vo.getSort()).orElse(0)));
+ log.error("鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+
+ // 鎻愬墠瀹氫綅绗竴棰樼殑绱㈠紩
+ Integer firstIvrSortIndex = -1;
+ if (CollectionUtils.isNotEmpty(cacheList)) {
+ for (int j = 0; j < cacheList.size(); j++) {
+ if (cacheList.get(j).getSort() != null && cacheList.get(j).getSort() == 1L) {
+ firstIvrSortIndex = j;
+ break;
+ }
+ }
+ }
+
+ for (int i = 0; i < cacheList.size(); i++) {
+ IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);
+ List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrTaskScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);
+ ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
+ //瀹冧咯閮芥槸 ivr_task_templatescript_id,鎵�浠ヨ繖閲岄渶瑕佽缃竴涓�
+ ivrTaskTemplateScriptVO.setId(ivrTaskTemplateScriptVO.getScriptID());
+
+ boolean shouldProcess = false;
+ if (i == firstIvrSortIndex) {
+ shouldProcess = true;
+ } else if (nextScriptno != null && ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
+ shouldProcess = true;
+ }
+
+ if (shouldProcess) {
+ Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
+ log.error("----nextScriptNo2 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
+ if (!Objects.isNull(map.get("nextScriptNo")))
+ nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+ if (score == null) {
+ score = Double.valueOf(map.get("score"));
+ } else {
+ score = score + Double.valueOf(map.get("score"));
+ }
+ isabnormalFlag = map.get("isabnormal");
+ }
+ }
+ }
+
+ //鏌ヨ鍑鸿浠诲姟涓鍦ㄦ墽琛岀殑鎮h�呬俊鎭�
+ ServiceSubtaskEntity ssVO = new ServiceSubtaskEntity();
+ ssVO.setTaskid(tid);
+ ssVO.setPatid(pid);
+ List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
+
+ ServiceSubtask serviceSubtask = new ServiceSubtask();
+ serviceSubtask.setId(subid);
+ serviceSubtask.setTaskid(tid);
+ serviceSubtask.setPatid(pid);
+ serviceSubtask.setSubmit(1L);
+ serviceSubtask.setIsabnormal(Integer.valueOf(isabnormalFlag));
+ serviceSubtask.setSendstate(6L);
+ serviceSubtask.setExcep(isabnormalFlag);
+ serviceSubtask.setFinishtime(new Date());
+ serviceSubtask.setUpdateTime(new Date());
+ if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));
+ serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+
+ //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
+ ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+ if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+ serviceSubtaskPreachform.setPreachform(serviceSubtaskList.get(0).getCurrentPreachform());
+ }
+ serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+ serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+ if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+ ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
+ ssp.setSendstate("9");
+ serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
+ }
+ }
+
+ return 1;
+ }
+
+
+ @Override
public Boolean saveMYDQuestionAnswer(ServiceSubTaskMYDAnswerReq serviceSubTaskMYDAnswerReq) {
//鐢ㄦ潵澶勭悊鎶曡瘔寤鸿鐨勯儴闂�
String dealDept = null;
@@ -324,9 +503,9 @@
if (CollectionUtils.isNotEmpty(patMedInhospList)) patid = patMedInhospList.get(0).getPatid();
} else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("2")) {
//闂ㄨ瘖
- PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
+ PatMedOuthospQueryReq patMedOuthosp = new PatMedOuthospQueryReq();
patMedOuthosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
- patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
+ patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(patMedOuthosp);
if (CollectionUtils.isNotEmpty(patMedOuthosps)) patid = patMedOuthosps.get(0).getPatid();
} else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("3")) {
//鎸囧畾涓�涓儴闂紝鐢ㄦ潵澶勭悊鎶曡瘔寤鸿
@@ -344,52 +523,46 @@
Double score = null;
List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = serviceSubTaskMYDAnswerReq.getSvyTaskTemplateScriptVOS();
Long nextScriptno = null;
+
+ // 鎻愬墠瀹氫綅绗竴棰樼殑绱㈠紩
+ Integer firstMydSortIndex = -1;
+ if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptVOS)) {
+ for (int j = 0; j < svyTaskTemplateScriptVOS.size(); j++) {
+ if (svyTaskTemplateScriptVOS.get(j).getSort() != null && svyTaskTemplateScriptVOS.get(j).getSort() == 1L) {
+ firstMydSortIndex = j;
+ break;
+ }
+ }
+ }
+
for (int i = 0; i < svyTaskTemplateScriptVOS.size(); i++) {
- if (i == 0) {
- //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
- for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateScriptVOS) {
- if (svyTaskTemplateScriptVO.getSort() == 1L) {
- //璇存槑鏄涓�棰�
-// SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(0), SvyTaskTemplateScriptVO.class);
- List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(0).getSvyTaskTemplateTargetoptions();
-// List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyTaskTemplateTargetoptions, SvyTaskTemplateTargetoption.class);
- svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
- Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid);
- if (map == null) continue;
- if (!Objects.isNull(map.get("nextScriptNo")))
- nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = Double.valueOf(map.get("score"));
- } else {
- score = score + Double.valueOf(map.get("score"));
- }
- if (!Objects.isNull(map.get("id"))) {
- idList.add(Long.valueOf(map.get("id")));
- }
- }
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = svyTaskTemplateScriptVOS.get(i);
+ List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(i).getSvyTaskTemplateTargetoptions();
+ svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+
+ boolean shouldProcess = false;
+ if (i == firstMydSortIndex) {
+ shouldProcess = true;
+ } else if (nextScriptno != null && svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
+ shouldProcess = true;
+ }
+
+ if (shouldProcess) {
+ Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid, serviceSubTaskMYDAnswerReq.getSubId());
+ if (map == null) continue;
+
+ log.error("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
+ if (!Objects.isNull(map.get("nextScriptNo")))
+ nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+
+ if (score == null) {
+ score = Double.valueOf(map.get("score"));
+ } else {
+ score = score + Double.valueOf(map.get("score"));
}
- } else {
- SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = svyTaskTemplateScriptVOS.get(i);
-// SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i), SvyTaskTemplateScriptVO.class);
- List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(i).getSvyTaskTemplateTargetoptions();
-// List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
- svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-
- if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
- log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
- Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid);
- log.error("map鐨勪俊鎭负锛歿}", map);
- if (!Objects.isNull(map.get("nextScriptNo")))
- nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = Double.valueOf(map.get("score"));
- } else {
- score = score + Double.valueOf(map.get("score"));
- }
- if (!Objects.isNull(map.get("id"))) {
- idList.add(Long.valueOf(map.get("id")));
- }
+ if (!Objects.isNull(map.get("id"))) {
+ idList.add(Long.valueOf(map.get("id")));
}
}
}
@@ -474,7 +647,6 @@
return true;
}
-
/**
* 灏嗛棶棰樹繚瀛樺埌缂撳瓨涓�
*
@@ -487,28 +659,33 @@
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
Long tid = null;
Long pid = null;
+ Long subid = null;
if (flag == 0L) {
tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));
pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));
+ if (StringUtils.isNotEmpty(serviceSubTaskCacheReq.getParam6()))
+ subid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam6(), pri_key));
+
} else if (flag == 1L) {
tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());
pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());
+ subid = Long.valueOf(serviceSubTaskCacheReq.getParam6());
}
if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS()) && serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS().size() > 0) {
//闂嵎
- redisCache.deleteObject(pid + "-" + tid + "-WJscriptCache");
- redisCache.setCacheListRight(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS());
+ redisCache.deleteObject(pid + "-" + tid + "-" + subid + "-WJscriptCache");
+ redisCache.setCacheListRight(pid + "-" + tid + "-" + subid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS());
//璁剧疆杩囨湡鏃堕棿 3澶�
Long tims = Long.valueOf(3 * 24 * 3600);
- boolean expire = redisCache.expire(pid + "-" + tid + "-WJscriptCache", tims);
+ boolean expire = redisCache.expire(pid + "-" + tid + "-" + subid + "-WJscriptCache", tims);
return 1;
} else if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList()) && serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList().size() > 0) {
//闂嵎
- redisCache.deleteObject(pid + "-" + tid + "-SFscriptCache");
- redisCache.setCacheListRight(pid + "-" + tid + "-SFscriptCache", serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList());
+ redisCache.deleteObject(pid + "-" + tid + "-" + subid + "-SFscriptCache");
+ redisCache.setCacheListRight(pid + "-" + tid + "-" + subid + "-SFscriptCache", serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList());
//璁剧疆杩囨湡鏃堕棿 3澶�
Long tims = Long.valueOf(3 * 24 * 3600);
- redisCache.expire(pid + "-" + tid + "-SFscriptCache", tims);
+ redisCache.expire(pid + "-" + tid + "-" + subid + "-SFscriptCache", tims);
return 1;
}
} catch (Exception e) {
@@ -540,7 +717,7 @@
subId = Long.valueOf(serviceSubTaskCacheReq.getParam6());
}
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(tid);
serviceSubtaskVO.setPatid(pid);
serviceSubtaskVO.setSubId(subId);
@@ -562,19 +739,27 @@
@Override
public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) {
- log.error("selectPatQuesTionResult鐨勫叆鍙備负锛歿}", serviceSubTaskQueryReq);
+ log.info("selectPatQuesTionResult鐨勫叆鍙備负锛歿}", serviceSubTaskQueryReq);
Map<String, Object> map = new HashMap<>();
+ if (serviceSubTaskQueryReq.getSubId() != null) {
+ ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubTaskQueryReq.getSubId());
+ if (serviceSubtask.getSendstate() == 4L) {
+ log.info("鎮h�呭瓙浠诲姟ID涓猴細{}锛岀姸鎬佷负锛歿}", serviceSubTaskQueryReq.getSubId(), serviceSubtask.getSendstate());
+ throw new BaseException("璇ヤ换鍔′笉鎵ц");
+ }
+ }
//鑾峰彇鏈鐨勯棶绛旂粨鏋�
- Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());
+ Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom(), serviceSubTaskQueryReq.getSubId());
map = getMap(scriptInfoByCondition, serviceSubTaskQueryReq.getSubId(), serviceSubTaskQueryReq.getPatid());
//鑾峰彇涓婃鐨勯棶绛旂粨鏋�
ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubTaskQueryReq.getSubId());
map.put("upScriptResult", null);
+ map.put("templateName", serviceSubtask.getTemplatename());
map.put("upTaskName", null);
if (ObjectUtils.isNotEmpty(serviceSubtask) && serviceSubtask.getUpid() != null) {
- Map<String, Object> scriptInfoByCondition2 = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());
+ Map<String, Object> scriptInfoByCondition2 = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom(), serviceSubTaskQueryReq.getSubId());
Map<String, Object> map1 = getMap(scriptInfoByCondition2, Long.valueOf(serviceSubtask.getUpid()), serviceSubTaskQueryReq.getPatid());
if (!map1.isEmpty()) {
map.put("upScriptResult", map1.get("scriptResult"));
@@ -589,29 +774,31 @@
private Map<String, Object> getMap(Map<String, Object> scriptInfoByCondition, Long subid, Long patid) {
Map<String, Object> map = new HashMap<>();
if (ObjectUtils.isNotEmpty(scriptInfoByCondition) && ObjectUtils.isNotEmpty(scriptInfoByCondition.get("script"))) {
-// log.error("-----------scriptInfoByCondition鐨勫�间负锛歿}", scriptInfoByCondition);
if (scriptInfoByCondition.get("type").equals("1")) {
List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = (List<IvrTaskTemplateScriptVO>) scriptInfoByCondition.get("script");
-// List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVOS, IvrLibaTemplateScriptVO.class);
+ // 鎵归噺鏌ヨ鎵�鏈夋槑缁嗭紝閬垮厤寰幆涓�愭潯鏌ユ暟鎹簱锛圢+1闂浼樺寲锛�
+ Map<Long, ServiceSubtaskDetail> detailMap = getScriptResultMap(subid, patid);
for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOS) {
- Map<String, String> scriptResult = getScriptResult(subid, patid, ivrTaskTemplateScriptVO.getId());
- if (ObjectUtils.isNotEmpty(scriptResult)) {
- ivrTaskTemplateScriptVO.setScriptResult(scriptResult.get("asrtext"));
- ivrTaskTemplateScriptVO.setScriptResultId(scriptResult.get("asrtextId"));
+ ServiceSubtaskDetail detail = detailMap.get(ivrTaskTemplateScriptVO.getId());
+ if (detail != null) {
+ ivrTaskTemplateScriptVO.setScriptResult(detail.getAsrtext());
+ ivrTaskTemplateScriptVO.setScriptResultId(String.valueOf(detail.getId()));
}
}
map.put("scriptResult", ivrTaskTemplateScriptVOS);
map.put("taskName", scriptInfoByCondition.get("taskName"));
} else if (scriptInfoByCondition.get("type").equals("2")) {
List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOList = (List) scriptInfoByCondition.get("script");
+ // 鎵归噺鏌ヨ鎵�鏈夋槑缁嗭紝閬垮厤寰幆涓�愭潯鏌ユ暟鎹簱锛圢+1闂浼樺寲锛�
+ Map<Long, ServiceSubtaskDetail> detailMap = getScriptResultMap(subid, patid);
for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateScriptVOList) {
- Map<String, String> scriptResult = getScriptResult(subid, patid, svyTaskTemplateScriptVO.getId());
- if (ObjectUtils.isNotEmpty(scriptResult)) {
- if (StringUtils.isNotEmpty(scriptResult.get("asrtext")))
- svyTaskTemplateScriptVO.setScriptResult(StringUtils.isNotEmpty(scriptResult.get("asrtext")) ? scriptResult.get("asrtext").replaceAll("^(\"|')(.*)\\1$", "$2") : "");
- svyTaskTemplateScriptVO.setScriptResultId(scriptResult.get("asrtextId"));
- if (StringUtils.isNotEmpty(scriptResult.get("answerps")))
- svyTaskTemplateScriptVO.setAnswerps(scriptResult.get("answerps"));
+ ServiceSubtaskDetail detail = detailMap.get(svyTaskTemplateScriptVO.getId());
+ if (detail != null) {
+ if (StringUtils.isNotEmpty(detail.getAsrtext()))
+ svyTaskTemplateScriptVO.setScriptResult(detail.getAsrtext().replaceAll("^(\"|')(.*)\\1$", "$2"));
+ svyTaskTemplateScriptVO.setScriptResultId(String.valueOf(detail.getId()));
+ if (StringUtils.isNotEmpty(detail.getAnswerps()))
+ svyTaskTemplateScriptVO.setAnswerps(detail.getAnswerps());
}
}
map.put("scriptResult", svyTaskTemplateScriptVOList);
@@ -624,6 +811,31 @@
}
}
return map;
+ }
+
+ /**
+ * 鎵归噺鏌ヨ瀛愪换鍔℃槑缁嗗苟鎸塻criptid鍒嗙粍锛岄伩鍏嶅惊鐜腑閫愭潯鏌ユ暟鎹簱
+ *
+ * @param subid 瀛愪换鍔D
+ * @param pid 鎮h�匢D
+ * @return key=scriptid, value=瀵瑰簲鐨勭涓�鏉erviceSubtaskDetail
+ */
+ private Map<Long, ServiceSubtaskDetail> getScriptResultMap(Long subid, Long pid) {
+ ServiceSubtaskDetail query = new ServiceSubtaskDetail();
+ query.setSubId(subid);
+ query.setPatid(pid);
+ List<ServiceSubtaskDetail> details = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(query);
+ if (CollectionUtils.isEmpty(details)) {
+ return Collections.emptyMap();
+ }
+ Map<Long, ServiceSubtaskDetail> result = new HashMap<>();
+ for (ServiceSubtaskDetail detail : details) {
+ // 鍚屼竴涓猻criptid鍙兘鏈夊鏉¤褰曪紝鍙彇绗竴鏉★紙涓庡師閫昏緫涓�鑷达級
+ if (!result.containsKey(detail.getScriptid())) {
+ result.put(detail.getScriptid(), detail);
+ }
+ }
+ return result;
}
@@ -643,12 +855,57 @@
return null;
}
- private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) {
+ private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid, Long subid) {
log.error("-----svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(taskid);
serviceSubtaskVO.setPatid(patid);
+ serviceSubtaskVO.setSubId(subid);
List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskid);
+ Map<Long, Long> existingDetailIdMap = getExistingDetailIdMap(subid);
+ Map<Long, Long> existingTraceIdMap = getExistingTraceIdMap(subid);
+ return setWJInfo(svyTaskTemplateScriptVO, taskid, patid, subid, selectServiceSubtaskList, serviceTask, existingDetailIdMap, existingTraceIdMap);
+ }
+
+ /**
+ * 鎵归噺鏌ヨ宸插瓨鍦ㄧ殑鏄庣粏璁板綍ID锛屾寜scriptid鍒嗙粍锛堥伩鍏嶅惊鐜腑閫愭潯鏌ヨ锛�
+ */
+ private Map<Long, Long> getExistingDetailIdMap(Long subid) {
+ if (subid == null) return Collections.emptyMap();
+ ServiceSubtaskDetail query = new ServiceSubtaskDetail();
+ query.setSubId(subid);
+ List<ServiceSubtaskDetail> details = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(query);
+ if (CollectionUtils.isEmpty(details)) return Collections.emptyMap();
+ Map<Long, Long> map = new HashMap<>();
+ for (ServiceSubtaskDetail d : details) {
+ if ((d.getDelFlag() == null || "0".equals(d.getDelFlag())) && d.getScriptid() != null && !map.containsKey(d.getScriptid())) {
+ map.put(d.getScriptid(), d.getId());
+ }
+ }
+ return map;
+ }
+
+ /**
+ * 鎵归噺鏌ヨ寮傚父璺熻釜璁板綍ID锛屾寜scriptid鍒嗙粍锛堥伩鍏嶅惊鐜腑閫愭潯鏌ヨ锛�
+ */
+ private Map<Long, Long> getExistingTraceIdMap(Long subid) {
+ if (subid == null) return Collections.emptyMap();
+ ServiceSubtaskDetailTraceVO query = new ServiceSubtaskDetailTraceVO();
+ query.setSubId(subid);
+ List<ServiceSubtaskDetailTrace> traces = traceService.selectServiceSubtaskDetailTtraceList(query);
+ if (CollectionUtils.isEmpty(traces)) return Collections.emptyMap();
+ Map<Long, Long> map = new HashMap<>();
+ for (ServiceSubtaskDetailTrace t : traces) {
+ if (t.getScriptid() != null && !map.containsKey(t.getScriptid())) {
+ map.put(t.getScriptid(), t.getId());
+ }
+ }
+ return map;
+ }
+
+ private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid, Long subid, List<ServiceSubtask> selectServiceSubtaskList, ServiceTask serviceTask, Map<Long, Long> existingDetailIdMap, Map<Long, Long> existingTraceIdMap) {
+ log.error("-----svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
String score = "0";
//涓嬮璺宠浆
String nextScriptNo = null;
@@ -666,11 +923,16 @@
}
nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
+ if (StringUtils.isEmpty(nextScriptNo)) {
+ nextScriptNo = getNextScriptNo(svyTaskTemplateScriptVO.getTemplateID(), svyTaskTemplateScriptVO.getScriptContent());
+ }
if (svyTaskTemplateScriptVO.getScore() != null) {
score = String.valueOf(svyTaskTemplateScriptVO.getScore());
}
serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
+ serviceSubtaskDetailVO.setScore(svyTaskTemplateScriptVO.getScore() != null ? svyTaskTemplateScriptVO.getScore().toString() : "0");
+ serviceSubtaskDetailVO.setAnswerps(svyTaskTemplateScriptVO.getAnswerps());
} else {
//闈炲崟澶氶��
if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptResult())) {
@@ -679,10 +941,15 @@
score = String.valueOf(svyTaskTemplateScriptVO.getScore());
}
}
- nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
+ nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
+ if (StringUtils.isEmpty(nextScriptNo)) {
+ nextScriptNo = getNextScriptNo(svyTaskTemplateScriptVO.getTemplateID(), svyTaskTemplateScriptVO.getScriptContent());
+ }
}
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskid);
serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent());
+ serviceSubtaskDetailVO.setIsMydException(svyTaskTemplateScriptVO.getIsMydException());
+ serviceSubtaskDetailVO.setDimension(svyTaskTemplateScriptVO.getDimension());
+ serviceSubtaskDetailVO.setCategoryid(svyTaskTemplateScriptVO.getCategoryid());
serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));
serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null);
serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
@@ -692,14 +959,94 @@
serviceSubtaskDetailVO.setComment(null);
serviceSubtaskDetailVO.setCreateTime(new Date());
serviceSubtaskDetailVO.setUpdateTime(new Date());
+ serviceSubtaskDetailVO.setTemplateType(2);
+ serviceSubtaskDetailVO.setLibTemplateid(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? (ObjectUtils.isNotEmpty(selectServiceSubtaskList.get(0).getLibtemplateid()) ? selectServiceSubtaskList.get(0).getLibtemplateid().intValue() : null) : null);
if (ObjectUtils.isNotEmpty(serviceTask)) {
serviceSubtaskDetailVO.setGuid(serviceTask.getGuid());
serviceSubtaskDetailVO.setOrgid(serviceTask.getOrgid());
}
- serviceSubtaskDetailVO.setSubId(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? selectServiceSubtaskList.get(0).getId() : null);
+ serviceSubtaskDetailVO.setSubId(subid == null ? CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? selectServiceSubtaskList.get(0).getId() : null : subid);
serviceSubtaskDetailVO.setTemplatequestionnum(svyTaskTemplateScriptVO.getId());
ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);
- serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+
+ //鍏堢敤subid鍜宻criptid鏌ヨ涓�涓嬫槸鍚﹀瓨鍦紝濡傛灉瀛樺湪鍒欐洿鏂帮紝涓嶅瓨鍦ㄥ垯鎻掑叆锛堜娇鐢ㄩ鏌ヨ鐨凪ap锛岄伩鍏嶉�愭潯鏌ユ暟鎹簱锛�
+ Long existDetailId = existingDetailIdMap.get(serviceSubtaskDetailVO.getScriptid());
+ if (existDetailId != null) {
+ serviceSubtaskDetail.setId(existDetailId);
+ serviceSubtaskDetail.setUpdateTime(new Date());
+ serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);
+ } else {
+ serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+ }
+
+ //鑾峰彇涓�涓嬮棶棰橀�夐」
+ SvyTaskTemplateTargetoption stt = null;
+ Long isabnormalFlag = 0L;
+ for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) {
+ if (StringUtils.isNotEmpty(svyTaskTemplateTargetoption.getOptioncontent()) && svyTaskTemplateTargetoption.getOptioncontent().trim().equals(svyTaskTemplateScriptVO.getScriptResult()))
+ stt = svyTaskTemplateTargetoption;
+ }
+
+ //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
+ if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && stt != null && 1 == stt.getIsabnormal()) {
+ isabnormalFlag = 1L;
+ ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
+ subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
+ subtaskDetailTrace.setSubId(serviceSubtaskDetailVO.getSubId());
+ subtaskDetailTrace.setTaskid(serviceSubtaskDetailVO.getTaskid());
+ subtaskDetailTrace.setTemplateid(StringUtils.isNotEmpty(serviceSubtaskDetailVO.getTemplateid()) ? Long.valueOf(serviceSubtaskDetailVO.getTemplateid()) : null);
+ subtaskDetailTrace.setTemplatequestionnum(svyTaskTemplateScriptVO.getScriptid());
+ subtaskDetailTrace.setSwitchid(stt.getId());
+ subtaskDetailTrace.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent());
+ subtaskDetailTrace.setQuestionvoice(null);
+ subtaskDetailTrace.setCategoryname(svyTaskTemplateScriptVO.getCategoryName());
+ subtaskDetailTrace.setCategoryid(svyTaskTemplateScriptVO.getCategoryid());
+ //鑾峰彇鎵�鏈夐�夐」
+ subtaskDetailTrace.setTargetid(stt.getId());
+ subtaskDetailTrace.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue());
+ subtaskDetailTrace.setMatchedtext(stt.getOptioncontent());
+ subtaskDetailTrace.setGuid(svyTaskTemplateScriptVO.getGuid());
+ subtaskDetailTrace.setValueType(serviceSubtaskDetail.getValueType());
+ subtaskDetailTrace.setTemplateType(2);
+
+ SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(svyTaskTemplateScriptVO.getCategoryid());
+ subtaskDetailTrace.setType(svyLibScriptCategory != null ? svyLibScriptCategory.getType() : null);
+
+ subtaskDetailTrace.setScriptid(svyTaskTemplateScriptVO.getId());
+ subtaskDetailTrace.setAsrtext(stt.getOptioncontent());
+ subtaskDetailTrace.setRecordpath(null);
+ subtaskDetailTrace.setPatid(selectServiceSubtaskList.get(0).getPatid());
+ JSONObject patdescJson1 = new JSONObject();
+ patdescJson1.put("sendname", selectServiceSubtaskList.get(0).getSendname());
+ patdescJson1.put("phone", selectServiceSubtaskList.get(0).getPhone());
+ patdescJson1.put("sex", selectServiceSubtaskList.get(0).getSex() != null ? selectServiceSubtaskList.get(0).getSex() == 1 ? "鐢�" : "濂�" : null);
+ patdescJson1.put("age", selectServiceSubtaskList.get(0).getAge());
+ subtaskDetailTrace.setPatdesc(patdescJson1.toJSONString());
+ subtaskDetailTrace.setTodeptcode(svyTaskTemplateScriptVO.getDutyDeptCode());
+ subtaskDetailTrace.setTodeptname(svyTaskTemplateScriptVO.getDutyDeptName());
+ subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid());
+ subtaskDetailTrace.setHandleFlag("0");
+ subtaskDetailTrace.setCreateTime(new Date());
+ subtaskDetailTrace.setUpdateTime(new Date());
+ subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid());
+ subtaskDetailTrace.setDutyDeptPersonCode(svyTaskTemplateScriptVO.getDutyDeptPersonCode());
+ subtaskDetailTrace.setDutyDeptPersonName(svyTaskTemplateScriptVO.getDutyDeptPersonName());
+ subtaskDetailTrace.setReportDeptPersonCode(svyTaskTemplateScriptVO.getReportDeptPersonCode());
+ subtaskDetailTrace.setReportDeptPersonName(svyTaskTemplateScriptVO.getReportDeptPersonName());
+
+ Long existTraceId = existingTraceIdMap.get(subtaskDetailTrace.getScriptid());
+ if (existTraceId != null) {
+ subtaskDetailTrace.setId(existTraceId);
+ traceService.updateServiceSubtaskDetailTtrace(subtaskDetailTrace);
+ } else traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
+ } else if (ObjectUtils.isNotEmpty(stt) && stt.getIsabnormal() != 1L) {
+ //杩欓噷涓昏鏄�曞尰鎶や汉鍛樻妸寮傚父閫夐」鏀规垚浜嗛潪寮傚父鐨勶紝杩欓噷灏遍渶瑕佹煡涓�涓嬭繖鏉℃暟鎹槸涓嶆槸鍦ㄦ弧鎰忓害寮傚父琛紝濡傛灉鍦紝鍒欒鍒犻櫎
+ Long existTraceId = existingTraceIdMap.get(svyTaskTemplateScriptVO.getId());
+ if (existTraceId != null) {
+ traceService.deleteServiceSubtaskDetailTtraceById(existTraceId);
+ }
+ }
+
//濡備綍杩欓渶瑕佹湇鍔¤ˉ鍋跨殑鏈嶅姟ID涓嶄负绌虹殑璇濓紝鍒欒繘琛岀珛鍗冲彂閫�
log.error("------svyTaskTemplateScriptVO.getSendTaskids()鐨勫�间负锛歿},selectServiceSubtaskList鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getSendTaskids(), selectServiceSubtaskList.size());
@@ -711,12 +1058,42 @@
map.put("nextScriptNo", nextScriptNo);
map.put("score", score);
map.put("id", "" + serviceSubtaskDetail.getId());
+ map.put("isabnormal", isabnormalFlag.toString());
return map;
}
+
+ private String getNextScriptNo(Long taskTemplateID, String scriptContent) {
+ SvyTaskTemplate svyTaskTemplate = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(taskTemplateID);
+ SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
+ svyLibTemplateScript.setSvyid(svyTaskTemplate.getTemplateid());
+ svyLibTemplateScript.setScriptContent(scriptContent);
+ List<SvyLibTemplateScript> svyLibTemplateScriptList = svyLibTemplateScriptService.selectSvyLibTemplateScriptList(svyLibTemplateScript);
+ if (CollectionUtils.isNotEmpty(svyLibTemplateScriptList)) {
+ return svyLibTemplateScriptList.get(0).getNextScriptno();
+ }
+ return null;
+ }
+
+ private Long getVoiceNextScriptNo(Long taskTemplateID, String scriptContent) {
+ IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(taskTemplateID);
+ IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
+ if (StringUtils.isEmpty(ivrTaskTemplate.getLibtemplateid())) return null;
+ ivrLibaTemplateScript.setTemplateid(Long.valueOf(ivrTaskTemplate.getLibtemplateid()));
+ ivrLibaTemplateScript.setScriptContent(scriptContent);
+ List<IvrLibaTemplateScript> ivrLibaTemplateScriptList = ivrLibaTemplateScriptService.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
+
+ if (CollectionUtils.isNotEmpty(ivrLibaTemplateScriptList)) {
+ return ivrLibaTemplateScriptList.get(0).getNextScriptno();
+ }
+ return null;
+ }
+
private Boolean sendTaskIds(List<Integer> sendTaskids, ServiceSubtask serviceSubtask) {
for (Integer taskId : sendTaskids) {
ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(Long.valueOf(taskId));
+ if (Objects.isNull(serviceTask)) return false;
+
String content = sendMQContent(serviceTask, null);
//鍏堟煡璇竴涓嬶紝璇ユ偅鑰呭湪璇ervice_task涓紝鏄惁宸茬粡瀛樺湪,濡傛灉宸茬粡瀛樺湪锛屽垯涓嶇敤鍐嶄繚瀛樹簡
ServiceSubtask ss = new ServiceSubtask();
@@ -795,18 +1172,19 @@
return commonTaskcallMQJson;
}
- private Map<String, String> setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) {
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ private Map<String, String> setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid, Long subid) {
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(taskid);
serviceSubtaskVO.setPatid(patid);
+ serviceSubtaskVO.setSubId(subid);
List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
String score = "0";
//涓嬮璺宠浆
String nextScriptNo = null;
ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO();
- List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>();
- if (ivrTaskTemplateScriptVO.getScriptType().equals("1") || ivrTaskTemplateScriptVO.getScriptType().equals("2")) {
+ String isabnormalFlag = "0";
+ if (ivrTaskTemplateScriptVO.getScriptType() != null && (ivrTaskTemplateScriptVO.getScriptType().equals("1") || ivrTaskTemplateScriptVO.getScriptType().equals("2"))) {
//1銆�2涓哄崟閫夋垨澶氶��
for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
//灏嗛棶棰橀�夐」璁板綍涓嬫潵
@@ -817,20 +1195,32 @@
}
}
- nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno().toString();
+ nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno() == null ? null : ivrTaskTemplateScriptVO.getNextScriptno().toString();
+ if (StringUtils.isEmpty(nextScriptNo)) {
+ nextScriptNo = "" + getVoiceNextScriptNo(ivrTaskTemplateScriptVO.getTemplateID(), ivrTaskTemplateScriptVO.getScriptContent());
+ }
+
if (ivrTaskTemplateScriptVO.getScore() != null) {
score = String.valueOf(ivrTaskTemplateScriptVO.getScore());
}
if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {
serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
+ } else {
+ //鍖荤敓鎵嬪姩濉姤鏃讹紝鍊兼槸鍦╥vrtext涓�
+ serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getIvrtext());
+ serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getIvrtext());
}
} else {
//闈炲崟澶氶��
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {
- serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
- serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
- nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno().toString();
+ if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult()) || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext())) {
+ serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult() != null ? ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", "") : ivrTaskTemplateScriptVO.getIvrtext());
+ serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult() != null ? ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", "") : ivrTaskTemplateScriptVO.getIvrtext());
+ serviceSubtaskDetailVO.setScore(ivrTaskTemplateScriptVO.getScore() != null ? ivrTaskTemplateScriptVO.getScore().toString() : "0");
+ nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno() == null ? null : ivrTaskTemplateScriptVO.getNextScriptno().toString();
+ if (StringUtils.isEmpty(nextScriptNo)) {
+ nextScriptNo = "" + getVoiceNextScriptNo(ivrTaskTemplateScriptVO.getTemplateID(), ivrTaskTemplateScriptVO.getScriptContent());
+ }
if (ivrTaskTemplateScriptVO.getScore() != null) {
score = String.valueOf(ivrTaskTemplateScriptVO.getScore());
}
@@ -840,7 +1230,7 @@
serviceSubtaskDetailVO.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));
serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
- serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID());
+ serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID() == null ? ivrTaskTemplateScriptVO.getId() : ivrTaskTemplateScriptVO.getScriptID());
serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
serviceSubtaskDetailVO.setValueType(ivrTaskTemplateScriptVO.getScriptType());
serviceSubtaskDetailVO.setComment(null);
@@ -848,10 +1238,99 @@
serviceSubtaskDetailVO.setGuid(ivrTaskTemplateScriptVO.getGuid());
serviceSubtaskDetailVO.setOrgid(ivrTaskTemplateScriptVO.getOrgid());
serviceSubtaskDetailVO.setUpdateTime(new Date());
- serviceSubtaskDetailVO.setSubId(selectServiceSubtaskList.get(0).getId());
+ serviceSubtaskDetailVO.setSubId(subid == null ? selectServiceSubtaskList.get(0).getId() : subid);
serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
+ serviceSubtaskDetailVO.setTemplateType(1);
+ serviceSubtaskDetailVO.setTemplateid(ivrTaskTemplateScriptVO.getTemplateID() == null ? null : ivrTaskTemplateScriptVO.getTemplateID().toString());
+ serviceSubtaskDetailVO.setLibTemplateid(selectServiceSubtaskList.get(0).getLibtemplateid() != null ? selectServiceSubtaskList.get(0).getLibtemplateid().intValue() : null);
ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);
- serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+ //鍏堢敤subid鍜宻criptid鏌ヨ涓�涓嬫槸鍚﹀瓨鍦紝濡傛灉瀛樺湪鍒欐洿鏂帮紝涓嶅瓨鍦ㄥ垯鎻掑叆
+ ServiceSubtaskDetailDTO existServiceSubtaskDetail = serviceSubtaskDetailMapper.isExistServiceSubtaskDetail(serviceSubtaskDetailVO.getSubId(), serviceSubtaskDetailVO.getScriptid());
+ if (ObjectUtils.isNotEmpty(existServiceSubtaskDetail)) {
+ serviceSubtaskDetail.setId(existServiceSubtaskDetail.getId());
+ serviceSubtaskDetail.setUpdateTime(new Date());
+ serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);
+ } else {
+ serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+ }
+ IvrTaskTemplateTargetoption stt = null;
+ for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
+ if (ivrTaskTemplateTargetoption.getTargetvalue().trim().equals(ivrTaskTemplateScriptVO.getIvrtext()))
+ stt = ivrTaskTemplateTargetoption;
+ }
+
+
+ //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
+ if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == stt.getIsabnormal()) {
+ isabnormalFlag = "1";
+ ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
+ subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
+ subtaskDetailTrace.setSubId(serviceSubtaskDetailVO.getSubId());
+ subtaskDetailTrace.setTaskid(serviceSubtaskDetailVO.getTaskid());
+ subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getTemplateID() != null ? Long.valueOf(ivrTaskTemplateScriptVO.getTemplateID()) : null);
+ subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getSort() == null ? null : Long.valueOf(ivrTaskTemplateScriptVO.getSort()));
+
+ //鑾峰彇鍒嗙被淇℃伅
+ IvrLibaScriptAssort ivrLibaScriptAssort = null;
+ if (ivrTaskTemplateScriptVO.getScriptAssortid() != null)
+ ivrLibaScriptAssort = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortById(ivrTaskTemplateScriptVO.getScriptAssortid());
+
+ //鑾峰彇鐢ㄦ埛閫夊嚭鐨勯�夐」鐨処D
+ subtaskDetailTrace.setSwitchid(stt.getId());
+ subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
+ subtaskDetailTrace.setQuestionvoice(null);
+ subtaskDetailTrace.setCategoryname(StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getScriptAssortname()) ? ivrTaskTemplateScriptVO.getScriptAssortname() : (ivrLibaScriptAssort != null ? ivrLibaScriptAssort.getIndexAssortName() : ""));
+ subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
+ //鑾峰彇鎵�鏈夐�夐」
+ subtaskDetailTrace.setTargetid(null);
+ subtaskDetailTrace.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue());
+ subtaskDetailTrace.setMatchedtext(ivrTaskTemplateScriptVO.getIvrtext());
+ subtaskDetailTrace.setGuid(ivrTaskTemplateScriptVO.getGuid());
+ subtaskDetailTrace.setValueType(serviceSubtaskDetail.getValueType());
+ subtaskDetailTrace.setTemplateType(1);
+ subtaskDetailTrace.setType(ivrLibaScriptAssort != null ? ivrLibaScriptAssort.getType() : null);
+ subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId() == null ? ivrTaskTemplateScriptVO.getScriptID() : ivrTaskTemplateScriptVO.getId());
+ subtaskDetailTrace.setAsrtext(ivrTaskTemplateScriptVO.getIvrtext());
+ subtaskDetailTrace.setRecordpath(null);
+ subtaskDetailTrace.setPatid(selectServiceSubtaskList.get(0).getPatid());
+ JSONObject patdescJson2 = new JSONObject();
+ patdescJson2.put("sendname", selectServiceSubtaskList.get(0).getSendname());
+ patdescJson2.put("phone", selectServiceSubtaskList.get(0).getPhone());
+ patdescJson2.put("sex", selectServiceSubtaskList.get(0).getSex() != null ? selectServiceSubtaskList.get(0).getSex() == 1 ? "鐢�" : "濂�" : null);
+ patdescJson2.put("age", selectServiceSubtaskList.get(0).getAge());
+ subtaskDetailTrace.setPatdesc(patdescJson2.toJSONString());
+ subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
+ subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
+ subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid());
+ subtaskDetailTrace.setHandleFlag("0");
+ subtaskDetailTrace.setCreateTime(new Date());
+ subtaskDetailTrace.setUpdateTime(new Date());
+ subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid());
+ subtaskDetailTrace.setDutyDeptPersonCode(ivrTaskTemplateScriptVO.getDutyDeptPersonCode());
+ subtaskDetailTrace.setDutyDeptPersonName(ivrTaskTemplateScriptVO.getDutyDeptPersonName());
+ subtaskDetailTrace.setReportDeptPersonCode(ivrTaskTemplateScriptVO.getReportDeptPersonCode());
+ subtaskDetailTrace.setReportDeptPersonName(ivrTaskTemplateScriptVO.getReportDeptPersonName());
+
+ ServiceSubtaskDetailTraceVO ssdt = new ServiceSubtaskDetailTraceVO();
+ ssdt.setSubId(subtaskDetailTrace.getSubId());
+ ssdt.setScriptid(subtaskDetailTrace.getScriptid());
+ ssdt.setTemplateType(subtaskDetailTrace.getTemplateType());
+ List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(ssdt);
+ if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTraces)) {
+ subtaskDetailTrace.setId(serviceSubtaskDetailTraces.get(0).getId());
+ traceService.updateServiceSubtaskDetailTtrace(subtaskDetailTrace);
+ } else traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
+
+ } else if (stt != null && stt.getIsabnormal() != null && stt.getIsabnormal() != 1L) {
+ //杩欓噷涓昏鏄�曞尰鎶や汉鍛樻妸寮傚父閫夐」鏀规垚浜嗛潪寮傚父鐨勶紝杩欓噷灏遍渶瑕佹煡涓�涓嬭繖鏉℃暟鎹槸涓嶆槸鍦ㄦ弧鎰忓害寮傚父琛紝濡傛灉鍦紝鍒欒鍒犻櫎
+ ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO();
+ subtaskDetailTraceVO.setSubId(serviceSubtaskDetailVO.getSubId());
+ subtaskDetailTraceVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID() == null ? ivrTaskTemplateScriptVO.getId() : ivrTaskTemplateScriptVO.getScriptID());
+ List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO);
+ if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTraces)) {
+ traceService.deleteServiceSubtaskDetailTtraceById(serviceSubtaskDetailTraces.get(0).getId());
+ }
+ }
//濡備綍杩欓渶瑕佹湇鍔¤ˉ鍋跨殑鏈嶅姟ID涓嶄负绌虹殑璇濓紝鍒欒繘琛岀珛鍗冲彂閫�
if (CollectionUtils.isNotEmpty(ivrTaskTemplateScriptVO.getSendTaskids()) && CollectionUtils.isNotEmpty(selectServiceSubtaskList)) {
@@ -862,6 +1341,130 @@
Map<String, String> map = new HashMap<>();
map.put("nextScriptNo", nextScriptNo);
map.put("score", score);
+ map.put("isabnormal", isabnormalFlag);
return map;
}
+
+ /**
+ * 妫�鏌ュ苟淇闂嵎棰樼洰鎺掑簭(濡傛灉鏍规嵁閫夐」鏃犲簭璺宠浆锛屽氨浼氬鑷撮敊璇�)
+ *
+ * @param svyTaskTemplateScriptVOList 闂嵎棰樼洰 VO 鍒楄〃
+ * @return 淇鍚庣殑闂嵎棰樼洰鍒楄〃
+ */
+ public List<SvyTaskTemplateScriptVO> checkQuestionSort(List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOList) {
+ if (CollectionUtils.isEmpty(svyTaskTemplateScriptVOList)) {
+ return svyTaskTemplateScriptVOList;
+ }
+
+ // 鎸夊綋鍓� sort 鎺掑簭
+ svyTaskTemplateScriptVOList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
+
+ // 鍏堟鏌ヤ竴涓嬫槸鍚﹀凡缁忔槸姝g‘鐨勯『搴忥細杩炵画鐨勫簭鍙� 1,2,3... 涓旀渶鍚庝竴涓棶棰樼殑 nextScriptno 涓� "0"
+ boolean isCorrect = true;
+ int expectedValue = 1;
+
+ for (int i = 0; i < svyTaskTemplateScriptVOList.size(); i++) {
+ SvyTaskTemplateScriptVO vo = svyTaskTemplateScriptVOList.get(i);
+
+ // 妫�鏌� sort 鏄惁杩炵画
+ if (!Objects.equals(expectedValue, vo.getSort())) {
+ isCorrect = false;
+ break;
+ }
+
+ // 濡傛灉涓嶆槸鏈�鍚庝竴涓棶棰橈紝妫�鏌� nextScriptno 鏄惁鏄笅涓�棰樼殑搴忓彿
+ if (i < svyTaskTemplateScriptVOList.size() - 1) {
+ String expectedNextScriptNo = String.valueOf(expectedValue + 1);
+ if (!expectedNextScriptNo.equals(vo.getNextScriptno())) {
+ isCorrect = false;
+ break;
+ }
+ } else {
+ // 鏈�鍚庝竴涓棶棰樼殑 nextScriptno 蹇呴』鏄� "0"
+ if (!"0".equals(vo.getNextScriptno())) {
+ isCorrect = false;
+ break;
+ }
+
+ // 妫�鏌ユ渶鍚庝竴涓棶棰樼殑鎵�鏈夐�夐」鐨� nextQuestion 鏄惁涓� 0
+ if (CollectionUtils.isNotEmpty(vo.getSvyTaskTemplateTargetoptions())) {
+ for (SvyTaskTemplateTargetoption option : vo.getSvyTaskTemplateTargetoptions()) {
+ if (option.getNextQuestion() == null || !option.getNextQuestion().equals(0)) {
+ isCorrect = false;
+ break;
+ }
+ }
+ }
+ }
+
+ expectedValue++;
+ }
+
+ // 濡傛灉宸茬粡鏄纭殑锛岀洿鎺ヨ繑鍥烇紝涓嶅啀杩涜鏁版嵁搴撴洿鏂�
+ if (isCorrect) {
+ log.debug("闂嵎棰樼洰鎺掑簭姝g‘锛屾棤闇�淇锛屽叡 {} 涓鐩�", svyTaskTemplateScriptVOList.size());
+ return svyTaskTemplateScriptVOList;
+ }
+
+ log.info("妫�娴嬪埌闂嵎棰樼洰闇�瑕佷慨姝o紝寮�濮嬪鐞�...");
+
+ // 閲嶆柊鍒嗛厤杩炵画鐨� sort 鍊硷細1, 2, 3...
+ int newSortValue = 1;
+ List<SvyTaskTemplateScriptVO> updatedList = new ArrayList<>();
+
+ for (int i = 0; i < svyTaskTemplateScriptVOList.size(); i++) {
+ SvyTaskTemplateScriptVO vo = svyTaskTemplateScriptVOList.get(i);
+ Long oldSort = vo.getSort();
+
+ // 濡傛灉 sort 涓嶆槸棰勬湡鐨勮繛缁�硷紝鍒欓渶瑕佹洿鏂�
+ if (!Objects.equals(newSortValue, oldSort)) {
+ log.warn("妫�娴嬪埌棰樼洰搴忓彿涓嶈繛缁紝棰樼洰 ID: {}锛屽師 sort: {}, 鏂� sort: {}", vo.getId(), oldSort, newSortValue);
+ vo.setSort((long) newSortValue);
+ }
+
+ // 澶勭悊涓嬩竴涓棶棰樼殑 nextScriptno锛氶櫎鏈�鍚庝竴涓锛宯extScriptno = 褰撳墠 sort + 1
+ if (i < svyTaskTemplateScriptVOList.size() - 1) {
+ String expectedNextScriptNo = String.valueOf(newSortValue + 1);
+ String currentNextScriptNo = vo.getNextScriptno();
+ if (!Objects.equals(expectedNextScriptNo, currentNextScriptNo)) {
+ log.warn("妫�娴嬪埌 nextScriptno 涓嶆纭紝棰樼洰 ID: {}锛屽師 nextScriptno: {}, 鏂� nextScriptno: {}", vo.getId(), currentNextScriptNo, expectedNextScriptNo);
+ vo.setNextScriptno(expectedNextScriptNo);
+ }
+ } else {
+ // 鏈�鍚庝竴涓棶棰樼殑 nextScriptno 蹇呴』鏄� "0"
+ String currentNextScriptNo = vo.getNextScriptno();
+ if (!"0".equals(currentNextScriptNo)) {
+ log.warn("妫�娴嬪埌鏈�鍚庝竴涓鐩殑 nextScriptno 搴斾负 0锛岄鐩� ID: {}锛屽師 nextScriptno: {}", vo.getId(), currentNextScriptNo);
+ vo.setNextScriptno("0");
+ }
+ }
+
+ // 澶勭悊姣忎釜閫夐」鐨� nextQuestion
+ if (CollectionUtils.isNotEmpty(vo.getSvyTaskTemplateTargetoptions())) {
+ // 鍒ゆ柇鏄惁鏄渶鍚庝竴涓棶棰�
+ boolean isLastQuestion = (i == svyTaskTemplateScriptVOList.size() - 1);
+ int expectedNextQuestion = isLastQuestion ? 0 : newSortValue;
+
+ for (SvyTaskTemplateTargetoption option : vo.getSvyTaskTemplateTargetoptions()) {
+ Integer optionNextQuestion = option.getNextQuestion();
+ int finalNextQuestion = expectedNextQuestion;
+
+ if (!isLastQuestion && (optionNextQuestion == null || !optionNextQuestion.equals(newSortValue))) {
+ log.info("妫�娴嬪埌閫夐」鐨� nextQuestion 涓嶆纭紝閫夐」 ID: {}锛岄鐩� ID: {}锛屽師 nextQuestion: {}, 鏂� nextQuestion: {}", option.getId(), vo.getId(), optionNextQuestion, newSortValue);
+ finalNextQuestion = newSortValue;
+ } else if (isLastQuestion && (optionNextQuestion == null || !optionNextQuestion.equals(0))) {
+ log.info("妫�娴嬪埌鏈�鍚庝竴涓棶棰樼殑閫夐」 nextQuestion 搴斾负 0锛岄�夐」 ID: {}锛岄鐩� ID: {}锛屽師 nextQuestion: {}, 鏂� nextQuestion: {}", option.getId(), vo.getId(), optionNextQuestion, 0);
+ }
+
+ option.setNextQuestion(finalNextQuestion);
+ }
+ }
+
+ updatedList.add(vo);
+ newSortValue++;
+ }
+
+ return updatedList;
+ }
+
}
--
Gitblit v1.9.3