From 24166f2d9ae0bb72f061a38b96a113b1b6e44fbc Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 02 二月 2026 17:17:52 +0800
Subject: [PATCH] 代码提交
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 227 insertions(+), 10 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 c82b7cf..e1a9e99 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.*;
import com.smartor.common.FtpService;
+import com.smartor.common.RandomStringGenerator;
import com.smartor.common.SendService;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.*;
@@ -58,9 +59,6 @@
private IServiceTaskService serviceTaskService;
@Autowired
- private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
-
- @Autowired
private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
@Autowired
@@ -74,12 +72,18 @@
@Autowired
private IIvrTaskTemplateService ivrTaskTemplateService;
+ @Autowired
+ private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;
+ @Autowired
+ private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
@Autowired
private ISvyTaskTemplateService svyTaskTemplateService;
-
@Autowired
- private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;
+ private ISvyLibTemplateScriptService svyLibTemplateScriptService;
+ @Autowired
+ private ISvyLibTemplateTargetoptionService svyLibTemplateTargetoptionService;
+
@Autowired
private IServiceOutPathService iServiceOutPathService;
@@ -98,9 +102,6 @@
@Value("${ASRCallBackPath}")
private String ASRCallBackPath;
-
- @Autowired
- private SendService sendService;
@Value("${hangup}")
private String hangup;
@@ -125,6 +126,7 @@
@Value("${phoneUpEveryHour}")
private Integer phoneUpEveryHour;
+
@Value("${phoneEndHour}")
private Integer phoneEndHour;
@@ -251,7 +253,36 @@
@Override
public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
- return selectServiceSubtaskList;
+ List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
+ //鑾峰彇鍒嗘暟
+ for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+ //璁$畻鎮h�呯殑鍒嗘暟
+ if (serviceSubtask.getScore() == null || BigDecimal.ZERO.equals(serviceSubtask.getScore())) {
+ //濡傛灉涓虹┖鐨勮瘽锛屽幓detail閲屾嬁鍒版瘡涓鐨勯�夐」鍒嗭紝濡傛灉鏄綔绛旈锛岀洿鎺ユ嬁棰樼洰鍒嗭紙鍓嶉锛岃妯℃澘鏄垎鏁扮被鍨嬶級
+ Map<String, Object> map = getScore(serviceSubtask, serviceSubtaskVO.getDetailResult());
+ serviceSubtask.setScore((BigDecimal) map.get("score"));
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ if ((Boolean) map.get("isExist") == true) {
+ //娴嬭瘯瀹屽垹闄わ紙搴斾粯娴嬭瘯鐢ㄧ殑锛�
+ serviceSubtaskList.add(serviceSubtask);
+ }
+ } else {
+ //娴嬭瘯瀹屽垹闄わ紙搴斾粯娴嬭瘯鐢ㄧ殑锛�
+ if (!StringUtils.isEmpty(serviceSubtaskVO.getDetailResult())) {
+ ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+ serviceSubtaskDetail.setSubId(serviceSubtask.getId());
+ List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+ for (ServiceSubtaskDetail ssd : serviceSubtaskDetails) {
+ if (ssd.getAsrtext().equals(serviceSubtaskVO.getDetailResult())) {
+ serviceSubtaskList.add(serviceSubtask);
+ }
+ }
+ }else {
+ serviceSubtaskList.add(serviceSubtask);
+ }
+ }
+ }
+ return serviceSubtaskList;
}
@Override
@@ -490,6 +521,16 @@
}
if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
+
+ //鐢熸垚澶栭摼鍦板潃
+ String outPath = null;
+ if (serviceTaskVO.getType().equals("1"))
+ outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 1);
+ else if (serviceTaskVO.getType().equals("2"))
+ outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 2);
+ else if (serviceTaskVO.getType().equals("3"))
+ outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 3);
+ serviceSubtask.setOutPath(outPath);
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
serviceSubtask.getId().intValue();
}
@@ -604,6 +645,15 @@
serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
+ //鐢熸垚澶栭摼鍦板潃
+ String outPath = null;
+ if (serviceTaskVO.getType().equals("1"))
+ outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 1);
+ else if (serviceTaskVO.getType().equals("2"))
+ outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 2);
+ else if (serviceTaskVO.getType().equals("3"))
+ outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 3);
+
if (patTaskRelevance.getIsoperation() != null) {
if (patTaskRelevance.getIsoperation() == 2) serviceSubtask.setUpdateTime(new Date());
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
@@ -2009,7 +2059,6 @@
}
-
private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
log.error("-------------serviceSubtaskList鐨勫�间负锛歿}", serviceSubtaskList);
ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
@@ -2173,4 +2222,172 @@
int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
return remainingCalls;
}
+
+ private String getOutPath(String phone, Long tid, String taskName, Long pId, Integer type) {
+ //瀵箄rl涓袱涓弬鏁板姞瀵�
+ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+ String taskId = rsaPublicKeyExample.encryptedData(tid.toString(), pub_key);
+ String outpath = null;
+ try {
+ String patid = rsaPublicKeyExample.encryptedData(pId.toString(), pub_key);
+ SendMagParam sendMagParam = new SendMagParam();
+ sendMagParam.setType("4");
+ if (type == 1) {
+ //闅忚
+ ServiceOutPath serviceOutPath = new ServiceOutPath();
+ serviceOutPath.setParam1(taskId);
+ serviceOutPath.setParam2(patid);
+ serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setType(1);
+ iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+ //杞垚16杩涘埗
+ String format = String.format("%03X", serviceOutPath.getId()) + RandomStringGenerator.generateRandomString();
+ serviceOutPath.setRadix(format);
+ outpath = localIP + ":" + req_path + "/sf?p=" + format;
+ serviceOutPath.setUpdateTime(new Date());
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+ sendMagParam.setPhone(phone);
+ sendMagParam.setUrl(outpath);
+ sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + " 濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+ } else if (type == 2) {
+ //闂埜锛堥棶棰橈級
+ ServiceOutPath serviceOutPath = new ServiceOutPath();
+ serviceOutPath.setParam1(taskId);
+ serviceOutPath.setParam2(patid);
+ serviceOutPath.setParam3(taskName);
+ serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setType(2);
+ iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+ String format = String.format("%03X", serviceOutPath.getId()) + RandomStringGenerator.generateRandomString();
+ serviceOutPath.setRadix(format);
+ serviceOutPath.setUpdateTime(new Date());
+ outpath = localIP + ":" + req_path + "/wt?p=" + format;
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
+// sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false");
+ sendMagParam.setPhone(phone);
+ sendMagParam.setUrl(outpath);
+ sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + " 濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+ log.info("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�,{}", sendMagParam.getUrl());
+ } else if (type == 3) {
+ //瀹f暀
+ ServiceOutPath serviceOutPath = new ServiceOutPath();
+ serviceOutPath.setParam1(taskId);
+ serviceOutPath.setParam2(patid);
+ serviceOutPath.setParam3(taskName);
+ serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setType(3);
+ iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+ String format = String.format("%03X", serviceOutPath.getId()) + RandomStringGenerator.generateRandomString();
+ serviceOutPath.setRadix(format);
+ serviceOutPath.setUpdateTime(new Date());
+ outpath = localIP + ":" + req_path + "/xj?p=" + format;
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+ sendMagParam.setPhone(phone);
+ sendMagParam.setUrl(outpath);
+ sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+ log.info("-----------sendMagParam鐨勫�间负锛歿}", sendMagParam);
+ }
+ } catch (Exception e) {
+ log.error("鐢熸垚澶辫触浜嗭細{}", e.getMessage());
+ }
+ return outpath;
+ }
+
+ private Map<String, Object> getScore(ServiceSubtask serviceSubtask, String detailResult) {
+ Map<String, Object> map = new HashMap<>();
+ Boolean isExist = false;
+ //缁熻鎬诲垎
+ BigDecimal bigDecimal = BigDecimal.ZERO;
+ if (serviceSubtask.getScore() != null && !BigDecimal.ZERO.equals(serviceSubtask.getScore())) {
+ //濡傛灉鏈夊垎鏁帮紝鐩存帴杩斿洖
+ map.put("score", serviceSubtask.getScore());
+ //isExist搴斾粯娴嬭瘯鐢ㄧ殑锛屾祴璇曞畬鍚庡垹闄�
+ map.put("isExist", true);
+ return map;
+ }
+
+ if (serviceSubtask.getScore() == null || BigDecimal.ZERO.equals(serviceSubtask.getScore())) {
+ //濡傛灉涓虹┖鐨勮瘽锛屽幓detail閲屾嬁鍒版瘡涓鐨勯�夐」鍒嗭紝濡傛灉鏄綔绛旈锛岀洿鎺ユ嬁棰樼洰鍒嗭紙鍓嶉锛岃妯℃澘鏄垎鏁扮被鍨嬶級
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ if (serviceTask.getType().equals("1")) {
+ //濡傛灉鏄満鍣ㄤ汉璇煶
+ IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceTask.getTemplateid());
+ //鍒ゆ柇鏄笉鏄瘎鍒�
+ if (StringUtils.isNotEmpty(ivrTaskTemplate.getScoreType()) && ivrTaskTemplate.getScoreType().equals("1")) {
+ ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+ serviceSubtaskDetail.setSubId(serviceSubtask.getId());
+ List<ServiceSubtaskDetail> serviceSubtaskDetailList = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+ for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetailList) {
+ Long scriptid = serviceSubtaskDetail1.getScriptid();
+ IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(scriptid);
+ if (StringUtils.isNotEmpty(ivrTaskTemplateScript.getScriptType())) {
+ if (ivrTaskTemplateScript.getScriptType().equals("3") || ivrTaskTemplateScript.getScriptType().equals("4")) {
+ if (StringUtils.isNotEmpty(serviceSubtaskDetail1.getAsrtext())) {
+ //涓嶆槸閫夋嫨棰橈紝鐩存帴鎷块鐩垎
+ bigDecimal = bigDecimal.add(ivrTaskTemplateScript.getScore());
+ }
+ } else if (ivrTaskTemplateScript.getScriptType().equals("1") || ivrTaskTemplateScript.getScriptType().equals("2")) {
+ IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption();
+ ivrTaskTemplateTargetoption.setScriptid(scriptid);
+ List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = serviceTaskScriptTargetoptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
+ //鑾峰彇閫夐」锛岀敤閫変腑鐨勫�煎幓閫夐」閲屽尮閰嶏紝鎷垮埌閫夐」鍒�
+ for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption1 : ivrTaskTemplateTargetoptions) {
+ if (ivrTaskTemplateTargetoption1.getTargetvalue().equals(serviceSubtaskDetail1.getMatchedtext())) {
+ bigDecimal = bigDecimal.add(ivrTaskTemplateTargetoption1.getScore());
+ //娴嬭瘯瀹屽垹闄�
+ if (StringUtils.isEmpty(detailResult) || ivrTaskTemplateTargetoption1.getTargetvalue().equals(detailResult)) {
+ isExist = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (serviceTask.getType().equals("2")) {
+ //濡傛灉鏄棶鍗�
+ SvyTaskTemplate svyTaskTemplate = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());
+ //鍒ゆ柇鏄笉鏄瘎鍒�
+ if (StringUtils.isNotEmpty(svyTaskTemplate.getScoreType()) && svyTaskTemplate.getScoreType().equals("1")) {
+ ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+ serviceSubtaskDetail.setSubId(serviceSubtask.getId());
+ List<ServiceSubtaskDetail> serviceSubtaskDetailList = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+ for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetailList) {
+ Long scriptid = serviceSubtaskDetail1.getScriptid();
+ SvyLibTemplateScript svyLibTemplateScript = svyLibTemplateScriptService.selectSvyLibTemplateScriptByTopicid(scriptid);
+ if (StringUtils.isNotEmpty(svyLibTemplateScript.getScriptType())) {
+ if (svyLibTemplateScript.getScriptType().equals("3") || svyLibTemplateScript.getScriptType().equals("4")) {
+ if (StringUtils.isNotEmpty(serviceSubtaskDetail1.getAsrtext())) {
+ //涓嶆槸閫夋嫨棰橈紝鐩存帴鎷块鐩垎
+ bigDecimal = bigDecimal.add(svyLibTemplateScript.getScore());
+ }
+ } else if (svyLibTemplateScript.getScriptType().equals("1") || svyLibTemplateScript.getScriptType().equals("2")) {
+ SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
+ svyLibTemplateTargetoption.setScriptid(scriptid);
+ List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionService.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
+ //鑾峰彇閫夐」锛岀敤閫変腑鐨勫�煎幓閫夐」閲屽尮閰嶏紝鎷垮埌閫夐」鍒�
+ for (SvyLibTemplateTargetoption svyLibTemplateTargetoption1 : svyLibTemplateTargetoptions) {
+ if (svyLibTemplateTargetoption1.getOptioncontent().equals(serviceSubtaskDetail1.getAsrtext())) {
+ bigDecimal = bigDecimal.add(svyLibTemplateTargetoption1.getScore());
+ //娴嬭瘯瀹屽垹闄�
+ if (StringUtils.isEmpty(detailResult) || svyLibTemplateTargetoption1.getOptioncontent().equals(detailResult)) {
+ isExist = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ map.put("score", bigDecimal);
+ map.put("isExist", isExist);
+ return map;
+ }
+
}
--
Gitblit v1.9.3