From b65c4cdd68b72771634fcfd52709edfd77d7abc6 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 07 八月 2026 17:47:43 +0800
Subject: [PATCH] 【景宁】发送方式改执行方式
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 153 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 140 insertions(+), 13 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 e2975bc..8e22d35 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -86,6 +86,8 @@
@Autowired
private IServiceTaskdeptService serviceTaskdeptService;
+ @Autowired
+ private IServiceTaskmedicalService serviceTaskmedicalService;
@Autowired
private IServiceTaskdiagService serviceTaskdiagService;
@@ -122,6 +124,9 @@
@Autowired
private IServiceTaskScheduleService serviceTaskScheduleService;
+
+ @Autowired
+ private IPatArchiveService patArchiveService;
@Autowired
private ScheduleSubtaskBuilder scheduleSubtaskBuilder;
@@ -264,6 +269,7 @@
e.printStackTrace();
}
+ findServiceTaskScheduleVO(serviceTaskVO);
return serviceTaskVO;
}
@@ -393,6 +399,7 @@
}
}
serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
+ findServiceTaskScheduleVO(serviceTaskVO);
return serviceTaskVO;
}
@@ -407,7 +414,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<>();
@@ -588,9 +604,30 @@
* @return 缁撴灉
*/
@Override
- public int insertServiceSubtask(ServiceSubtask serviceSubtask) {
+ public Map<String, Object> insertServiceSubtask(ServiceSubtask serviceSubtask) {
serviceSubtask.setCreateTime(DateUtils.getNowDate());
- return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+ serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+ 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);
+ ServiceOutPath serviceOutPath = new ServiceOutPath();
+ serviceOutPath.setParam1(taskId);
+ serviceOutPath.setParam2(patid);
+ serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setParam6(subId);
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+ //杞垚16杩涘埗
+ String 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", localIP + ":" + req_path + "/wt?p=" + format);
+ result.put("subId",serviceSubtask.getId());
+ return result;
}
/**
@@ -861,6 +898,36 @@
log.info("----serviceTaskSchedule鐨勫�间负锛歿}", scheduleVO);
serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
+ } else if (serviceTaskVO.getAppltype().equals("6")) {
+ ServiceTaskmedical serviceTaskmedical = new ServiceTaskmedical();
+ serviceTaskmedical.setTaskId(serviceTask.getTaskid());
+ serviceTaskmedical.setTaskName(serviceTask.getTaskName());
+ serviceTaskmedical.setServiceType(serviceTaskVO.getServiceType());
+ serviceTaskmedical.setLongtask(Long.valueOf(serviceTask.getLongTask()));
+ if (serviceTaskVO.getLongTask() == 1) serviceTaskmedical.setLongtask(1L);
+ serviceTaskmedical.setMedicalCode(serviceTaskVO.getIcd10code());
+ serviceTaskmedical.setMedicalName(serviceTaskVO.getIcd10name());
+ serviceTaskmedical.setGuid(serviceTask.getGuid());
+ serviceTaskmedical.setOrgid(serviceTask.getOrgid());
+ serviceTaskmedical.setCreateTime(new Date());
+ serviceTaskmedical.setDeptCode(serviceTaskVO.getDeptcode());
+ serviceTaskmedical.setDeptName(serviceTaskVO.getDeptname());
+ serviceTaskmedical.setWardCode(serviceTaskVO.getLeavehospitaldistrictcode());
+ serviceTaskmedical.setWardName(serviceTaskVO.getLeavehospitaldistrictname());
+ //鍗楀崕闄勪竴鐨刬cd10code鏄湁閲嶅鐨勶紝鎵�浠ヤ笉鑳界敤鍗楀崕闄勪竴鐨刬cd10code鍘绘煡璇�
+ log.info("----serviceTaskmedical鐨勫�间负锛歿}", serviceTaskmedical);
+ if (!StringUtils.isEmpty(serviceTaskVO.getMedicalName())) {
+ String[] medicalNames = serviceTaskVO.getMedicalName().split(",");
+ String[] medicalcodes = serviceTaskVO.getMedicalCode().split(",");
+ String[] medicalCompanys = serviceTaskVO.getMedicalCompany().split(",");
+ for (int i = 0; i < medicalNames.length; i++) {
+ serviceTaskmedical.setMedicalCode(medicalNames[i]);
+ serviceTaskmedical.setMedicalName(medicalcodes[i]);
+ if (ObjectUtils.isNotEmpty(medicalCompanys))
+ serviceTaskmedical.setMedicalCompany(medicalcodes[i]);
+ serviceTaskmedicalService.insertServiceTaskmedical(serviceTaskmedical);
+ }
+ }
} else {
ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -1130,6 +1197,51 @@
serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag);
} else {
serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);
+ }
+ }
+ }
+
+ } else if (serviceTaskVO.getAppltype().equals("6")) {
+ ServiceTaskmedical serviceTaskmedical = new ServiceTaskmedical();
+ serviceTaskmedical.setTaskId(serviceTask.getTaskid());
+ serviceTaskmedical.setTaskName(serviceTask.getTaskName());
+ if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
+ throw new BaseException("鑽搧缂栫爜涓虹┖");
+ }
+ serviceTaskmedical.setLongtask(Long.valueOf(serviceTask.getLongTask()));
+ serviceTaskmedical.setMedicalName(serviceTaskVO.getMedicalName());
+ serviceTaskmedical.setGuid(serviceTask1.getGuid());
+ serviceTaskmedical.setServiceType(serviceTask1.getServiceType());
+ serviceTaskmedical.setOrgid(serviceTask1.getOrgid());
+ serviceTaskmedical.setDeptCode(serviceTask1.getDeptcode());
+ serviceTaskmedical.setDeptName(serviceTask1.getDeptname());
+ serviceTaskmedical.setWardCode(serviceTask1.getLeavehospitaldistrictcode());
+ serviceTaskmedical.setWardName(serviceTask1.getLeavehospitaldistrictname());
+ serviceTaskmedical.setUpdateTime(new Date());
+ if (StringUtils.isNotEmpty(serviceTaskVO.getMedicalCode())) {
+ String[] medicalCodes = serviceTaskVO.getMedicalCode().split(",");
+ String[] medicalNames = serviceTaskVO.getMedicalName().split(",");
+ String[] medicalCompany = serviceTaskVO.getMedicalCompany().split(",");
+ if (!active.equals("nhfy") && !active.equals("druid")) {
+ if (medicalCodes.length != medicalNames.length) {
+ throw new BaseException("鑽搧缂栫爜鍜岃嵂鍝佸悕绉版暟閲忎笉涓�鑷�");
+ }
+ }
+ for (int i = 0; i < medicalCodes.length; i++) {
+ //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+ ServiceTaskmedical serviceTaskmedical1 = new ServiceTaskmedical();
+ serviceTaskmedical1.setTaskId(serviceTaskVO.getTaskid());
+ serviceTaskmedical1.setMedicalCode(medicalCodes[i]);
+ serviceTaskmedical1.setMedicalName(medicalNames[i]);
+ List<ServiceTaskmedical> serviceTaskmedicals = serviceTaskmedicalService.selectServiceTaskmedicalList(serviceTaskmedical1);
+ serviceTaskmedical.setMedicalCode(medicalCodes[i]);
+ serviceTaskmedical.setMedicalName(medicalNames[i]);
+ log.info("----serviceTaskmedical鏇存柊鐨勫�间负锛歿}", serviceTaskmedical);
+ if (CollectionUtils.isNotEmpty(serviceTaskmedicals)) {
+ serviceTaskmedical.setId(serviceTaskmedicals.get(0).getId());
+ serviceTaskmedicalService.updateServiceTaskmedical(serviceTaskmedical);
+ } else {
+ serviceTaskmedicalService.insertServiceTaskmedical(serviceTaskmedical);
}
}
}
@@ -1812,10 +1924,10 @@
//鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
Integer flag = 0;
//1-AI璇嗗埆
- String aiUrl = configService.selectConfigByKey("sys.voice.match.ai.url");
+ String url = configService.selectConfigByKey("sys.voice.match.ai.url",phoneCallReqYQVO.getOrgid());
- if (ObjectUtils.isNotEmpty(aiUrl)) {
- 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){
@@ -4383,7 +4495,7 @@
if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
serviceSubtask.setCurrentPreachform(preachform);
serviceSubtask.setSendstate(5L);
- serviceSubtask.setRemark(remark + ";鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
+ serviceSubtask.setRemark(remark + ";鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
return true;
} else {
@@ -5057,7 +5169,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);
@@ -5067,7 +5179,6 @@
String result = null;
// String url = "http://localhost:8099/matchOptionIndex";
- String url = configService.selectConfigByKey("sys.voice.match.ai.url");
if(StringUtils.isNotEmpty(url)){
try {
Map<String, String> headers = new HashMap<>();
@@ -5085,7 +5196,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;
@@ -5093,7 +5204,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);
@@ -5314,6 +5425,21 @@
return back;
}
+ //鑾峰彇浠诲姟缁勪俊鎭�
+ 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());
+ serviceTaskScheduleVO.setDetailList(scheduleDetailList);
+ serviceTaskVO.setServiceTaskScheduleVO(serviceTaskScheduleVO);
+ }
+ }
+ }
+
@Test
public void TestMatch(){
String questionText = "鎮ㄥソ,璇烽棶鎮ㄦ槸鎮h�呮湰浜鸿繕鏄灞烇紵\n";
@@ -5329,8 +5455,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