| | |
| | | List<SvyTaskTemplateScriptVO> cacheList = serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS(); |
| | | cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort)); |
| | | log.info("é®å·åçç»æï¼{}", cacheList); |
| | | // 颿¥è¯¢å¾ªç¯ä¸ä¸åçæ°æ®ï¼é¿å
æ¯é¢é夿¥æ°æ®åº |
| | | 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); |
| | | for (int i = 0; i < cacheList.size(); i++) { |
| | | if (i == 0) { |
| | | //è¿ä¸ªæ¶é´è¦æ¾å°ç¬¬ä¸é¢ |
| | |
| | | //è¯´ææ¯ç¬¬ä¸é¢ |
| | | List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(); |
| | | svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions); |
| | | Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid); |
| | | Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap); |
| | | if (map == null) continue; |
| | | if (!Objects.isNull(map.get("nextScriptNo"))) |
| | | nextScriptno = Long.valueOf(map.get("nextScriptNo")); |
| | |
| | | svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions); |
| | | |
| | | if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) { |
| | | Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid); |
| | | Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap); |
| | | log.error("nextScriptNoçä¿¡æ¯ä¸ºï¼{}", map.get("nextScriptNo")); |
| | | if (!Objects.isNull(map.get("nextScriptNo"))) |
| | | nextScriptno = Long.valueOf(map.get("nextScriptNo")); |
| | |
| | | if (ObjectUtils.isNotEmpty(scriptInfoByCondition) && ObjectUtils.isNotEmpty(scriptInfoByCondition.get("script"))) { |
| | | if (scriptInfoByCondition.get("type").equals("1")) { |
| | | List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = (List<IvrTaskTemplateScriptVO>) scriptInfoByCondition.get("script"); |
| | | // æ¹éæ¥è¯¢æææç»ï¼é¿å
循ç¯ä¸éæ¡æ¥æ°æ®åºï¼N+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"); |
| | | // æ¹éæ¥è¯¢æææç»ï¼é¿å
循ç¯ä¸éæ¡æ¥æ°æ®åºï¼N+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); |
| | |
| | | } |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * æ¹éæ¥è¯¢å任塿ç»å¹¶æscriptidåç»ï¼é¿å
循ç¯ä¸éæ¡æ¥æ°æ®åº |
| | | * |
| | | * @param subid åä»»å¡ID |
| | | * @param pid æ£è
ID |
| | | * @return key=scriptid, value=对åºçç¬¬ä¸æ¡ServiceSubtaskDetail |
| | | */ |
| | | 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) { |
| | | // åä¸ä¸ªscriptidå¯è½æå¤æ¡è®°å½ï¼åªåç¬¬ä¸æ¡ï¼ä¸åé»è¾ä¸è´ï¼ |
| | | if (!result.containsKey(detail.getScriptid())) { |
| | | result.put(detail.getScriptid(), detail); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | |
| | | 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; |
| | |
| | | nextScriptNo = getNextScriptNo(svyTaskTemplateScriptVO.getTemplateID(), svyTaskTemplateScriptVO.getScriptContent()); |
| | | } |
| | | } |
| | | ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskid); |
| | | serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent()); |
| | | serviceSubtaskDetailVO.setIsMydException(svyTaskTemplateScriptVO.getIsMydException()); |
| | | serviceSubtaskDetailVO.setDimension(svyTaskTemplateScriptVO.getDimension()); |
| | |
| | | serviceSubtaskDetailVO.setTemplatequestionnum(svyTaskTemplateScriptVO.getId()); |
| | | ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class); |
| | | |
| | | //å
ç¨subidåscriptidæ¥è¯¢ä¸ä¸æ¯å¦åå¨ï¼å¦æåå¨åæ´æ°ï¼ä¸åå¨åæå
¥ |
| | | ServiceSubtaskDetailDTO existServiceSubtaskDetail = serviceSubtaskDetailMapper.isExistServiceSubtaskDetail(serviceSubtaskDetailVO.getSubId(), serviceSubtaskDetailVO.getScriptid()); |
| | | if (ObjectUtils.isNotEmpty(existServiceSubtaskDetail)) { |
| | | serviceSubtaskDetail.setId(existServiceSubtaskDetail.getId()); |
| | | //å
ç¨subidåscriptidæ¥è¯¢ä¸ä¸æ¯å¦åå¨ï¼å¦æåå¨åæ´æ°ï¼ä¸åå¨åæå
¥ï¼ä½¿ç¨é¢æ¥è¯¢çMapï¼é¿å
éæ¡æ¥æ°æ®åºï¼ |
| | | Long existDetailId = existingDetailIdMap.get(serviceSubtaskDetailVO.getScriptid()); |
| | | if (existDetailId != null) { |
| | | serviceSubtaskDetail.setId(existDetailId); |
| | | serviceSubtaskDetail.setUpdateTime(new Date()); |
| | | serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail); |
| | | } else { |
| | |
| | | subtaskDetailTrace.setUpdateTime(new Date()); |
| | | subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid()); |
| | | |
| | | 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()); |
| | | 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) { |
| | | //è¿éä¸»è¦æ¯æå»æ¤äººåæå¼å¸¸éé¡¹æ¹æäºéå¼å¸¸çï¼è¿éå°±éè¦æ¥ä¸ä¸è¿æ¡æ°æ®æ¯ä¸æ¯å¨æ»¡æåº¦å¼å¸¸è¡¨ï¼å¦æå¨ï¼åè¦å é¤ |
| | | ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO(); |
| | | subtaskDetailTraceVO.setSubId(serviceSubtaskDetailVO.getSubId()); |
| | | subtaskDetailTraceVO.setScriptid(svyTaskTemplateScriptVO.getId()); |
| | | List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTraces)) { |
| | | traceService.deleteServiceSubtaskDetailTtraceById(serviceSubtaskDetailTraces.get(0).getId()); |
| | | Long existTraceId = existingTraceIdMap.get(svyTaskTemplateScriptVO.getId()); |
| | | if (existTraceId != null) { |
| | | traceService.deleteServiceSubtaskDetailTtraceById(existTraceId); |
| | | } |
| | | } |
| | | |