From b0fd5033aa4fd99856ea409ef2071eed8f83fcbe Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 03 八月 2026 13:50:07 +0800
Subject: [PATCH] 【景宁】随访患者获取随访任务-需要查询同个患者(身份证)所有的任务 景宁
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 99 insertions(+), 16 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 95d1918..87fe1b8 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -19,6 +19,7 @@
import com.ruoyi.system.service.ISysConfigService;
import com.smartor.common.FtpService;
import com.smartor.common.MtSubmitSmUtil;
+import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
@@ -118,6 +119,15 @@
@Autowired
private IServiceSubtaskDetailTraceService traceService;
+
+ @Autowired
+ private IServiceTaskScheduleService serviceTaskScheduleService;
+
+ @Autowired
+ private IPatArchiveService patArchiveService;
+
+ @Autowired
+ private ScheduleSubtaskBuilder scheduleSubtaskBuilder;
@Autowired
private FtpService ftpService;
@@ -400,7 +410,16 @@
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<ServiceSubtaskRes> serviceSubtaskResList = new ArrayList<>();
@@ -831,6 +850,29 @@
serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
}
}
+
+ } else if (serviceTaskVO.getAppltype().equals("5")) {
+ // 浠诲姟缁勶細蹇呴』涓洪暱鏈熶换鍔★紙鍚﹀垯 findMatchingTaskIds 鎵笉鍒帮紝鏃犳硶鑷姩绾冲叆鏂板嚭闄㈡偅鑰咃級
+ if (serviceTaskVO.getLongTask() == null || serviceTaskVO.getLongTask() != 1) {
+ throw new BaseException("appltype=5 浠诲姟缁勫繀椤讳负闀挎湡浠诲姟锛坙ongTask=1锛�");
+ }
+ // 淇濆瓨璁″垝 + 鏄庣粏
+ ServiceTaskScheduleVO scheduleVO = serviceTaskVO.getServiceTaskScheduleVO();
+ if (scheduleVO == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細serviceTaskScheduleVO 涓嶈兘涓虹┖");
+ }
+ scheduleVO.setTaskid(serviceTask.getTaskid());
+ scheduleVO.setOrgid(serviceTask.getOrgid());
+ scheduleVO.setCampusid(serviceTask.getCampusid());
+ scheduleVO.setCreateBy(serviceTask.getCreateBy());
+
+ scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode());
+ scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode());
+ scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code());
+ scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
+
+ log.info("----serviceTaskSchedule鐨勫�间负锛歿}", scheduleVO);
+ serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
} else {
ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -916,6 +958,20 @@
serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
}
+
+ // ===== appltype=5 浠诲姟缁勶細鎸� schedule 鐨� detailList 娲剧敓澶氭潯 subtask =====
+ if ("5".equals(serviceTaskVO.getAppltype())) {
+ ServiceTaskSchedule schedule = serviceTaskScheduleService.selectByTaskid(serviceTask.getTaskid());
+ if (schedule == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細鏈壘鍒� taskid=" + serviceTask.getTaskid() + " 鐨勮鍒�");
+ }
+ List<ServiceTaskScheduleDetail> detailList =
+ serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
+ scheduleSubtaskBuilder.buildSubtasksForPatient(
+ serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask);
+ continue;
+ }
+
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
serviceSubtask.getId().intValue();
@@ -1130,6 +1186,24 @@
}
}
}
+ } else if (serviceTaskVO.getAppltype().equals("5")) {
+ // 浠诲姟缁勪慨鏀癸細鍒犳棫 schedule + 鏄庣粏锛岄噸寤恒�俿ubtask 涓婇潰宸叉壒閲忔竻鐞嗐��
+ if (serviceTaskVO.getLongTask() == null || serviceTaskVO.getLongTask() != 1) {
+ throw new BaseException("appltype=5 浠诲姟缁勫繀椤讳负闀挎湡浠诲姟锛坙ongTask=1锛�");
+ }
+ ServiceTaskScheduleVO scheduleVO = serviceTaskVO.getServiceTaskScheduleVO();
+ if (scheduleVO == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細serviceTaskScheduleVO 涓嶈兘涓虹┖");
+ }
+ scheduleVO.setTaskid(serviceTask.getTaskid());
+ scheduleVO.setOrgid(serviceTask.getOrgid());
+ scheduleVO.setCampusid(serviceTask.getCampusid());
+ scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode());
+ scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode());
+ scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code());
+ scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
+ scheduleVO.setCreateBy(serviceTask.getUpdateBy());
+ serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
}
}
if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
@@ -1183,6 +1257,20 @@
serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
if (patTaskRelevance.getIsoperation() != null) {
+ // appltype=5 浠诲姟缁勶細杩藉姞鎮h�咃紙isoperation=1锛夎蛋璁″垝娲剧敓锛涗慨鏀癸紙2锛�/鍒犻櫎锛�3锛変粛璧板師閫昏緫
+ if ("5".equals(serviceTaskVO.getAppltype()) && patTaskRelevance.getIsoperation() == 1) {
+ ServiceTaskSchedule schedule = serviceTaskScheduleService.selectByTaskid(serviceTask.getTaskid());
+ if (schedule == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細鏈壘鍒� taskid=" + serviceTask.getTaskid() + " 鐨勮鍒�");
+ }
+ List<ServiceTaskScheduleDetail> detailList =
+ serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
+ serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+ serviceSubtask.setCreateBy(serviceTask.getUpdateBy());
+ scheduleSubtaskBuilder.buildSubtasksForPatient(
+ serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask);
+ continue;
+ }
if (patTaskRelevance.getIsoperation() == 2) {
serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
@@ -1235,7 +1323,6 @@
map.put("taskId", serviceTask.getTaskid().intValue());
return map;
}
-
@Override
public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
@@ -1737,14 +1824,10 @@
//鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
Integer flag = 0;
//1-AI璇嗗埆
- SysConfig configVoiceMatchAi = new SysConfig();
- configVoiceMatchAi.setOrgid(phoneCallReqYQVO.getOrgid());
- configVoiceMatchAi.setConfigKey("sys.voice.match.ai");
- SysConfig matchAi = sysConfigMapper.selectConfig(configVoiceMatchAi);
+ String url = configService.selectConfigByKey("sys.voice.match.ai.url",phoneCallReqYQVO.getOrgid());
- if (ObjectUtils.isNotEmpty(matchAi) && StringUtils.isNotEmpty(matchAi.getConfigValue())
- && matchAi.getConfigValue().equals("1")) {
- PhoneCallBackYQVO aiMatchResult = AiMatch(phoneCallReqYQVO, phoneCallBackYQVO,
+ if (ObjectUtils.isNotEmpty(url)) {
+ PhoneCallBackYQVO aiMatchResult = AiMatch(url, phoneCallReqYQVO, phoneCallBackYQVO,
ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate,
ivrTaskTemplateScripts, scriptId, flag, phoneCallReqYQVO.getUuid());
if(aiMatchResult != null){
@@ -4986,7 +5069,7 @@
* @param options
* @return
*/
- public Integer matchOptionIndex(String questionText, String voiceText, List<IvrTaskTemplateTargetoption> options, String uuid){
+ public Integer matchOptionIndex(String url, String questionText, String voiceText, List<IvrTaskTemplateTargetoption> options, String uuid){
JSONObject jsonObject = new JSONObject();
jsonObject.put("userQuestion",questionText);
jsonObject.put("userAnswer",voiceText);
@@ -4995,8 +5078,7 @@
String jsonString = jsonObject.toJSONString();
String result = null;
- String url = "http://localhost:8099/matchOptionIndex";
-// String url = configService.selectConfigByKey("sys.voice.match.ai.url");
+// String url = "http://localhost:8099/matchOptionIndex";
if(StringUtils.isNotEmpty(url)){
try {
Map<String, String> headers = new HashMap<>();
@@ -5014,7 +5096,7 @@
}
}
- public PhoneCallBackYQVO AiMatch(PhoneCallReqYQVO phoneCallReqYQVO, PhoneCallBackYQVO phoneCallBackYQVO,
+ 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;
@@ -5022,7 +5104,7 @@
String voiceText = phoneCallReqYQVO.getAsrtext();
String questionText = StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent();
Integer matched = -1;
- matched = matchOptionIndex(questionText, voiceText, options, uuid);
+ matched = matchOptionIndex(url, questionText, voiceText, options, uuid);
//璇存槑鍖归厤姝g‘浜�
if(matched != null && matched >= 0){
IvrTaskTemplateTargetoption chosenOption = options.get(matched);
@@ -5258,8 +5340,9 @@
IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption3 = new IvrTaskTemplateTargetoption();
ivrTaskTemplateTargetoption3.setTargetvalue("鍏朵粬");
options.add(ivrTaskTemplateTargetoption3);
-
- Integer matched = matchOptionIndex(questionText,voiceText,options,"1");
+ //1-AI璇嗗埆
+ String url = configService.selectConfigByKey("sys.voice.match.ai.url");
+ Integer matched = matchOptionIndex(url, questionText,voiceText,options,"1");
if(ObjectUtils.isNotEmpty(matched)){
if(matched >= 0){
matchedText = options.get(matched).getTargetvalue();
--
Gitblit v1.9.3