From 18f876d637cf1e9b0b264a4586e4a676a21f8166 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 13 十一月 2026 10:30:46 +0800
Subject: [PATCH] 代码提交
---
ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java | 83 +++++++++++++++++++++++++++++++++--------
1 files changed, 66 insertions(+), 17 deletions(-)
diff --git a/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java b/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
index b6e3e55..a09ba77 100644
--- a/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
+++ b/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
@@ -18,9 +18,8 @@
import com.ruoyi.phone.domain.QuestionMessage;
import com.ruoyi.phone.service.IPhoneService;
import com.ruoyi.task.api.TaskSubtaskApi;
-import com.ruoyi.task.api.spi.TaskFtpPort;
-import com.ruoyi.task.api.spi.TaskPreachformPort;
-import com.ruoyi.task.api.spi.TaskSysConfigPort;
+import com.ruoyi.common.utils.FtpService;
+import com.ruoyi.task.mapper.ServiceSubtaskPreachformMapper;
import com.ruoyi.task.domain.IvrTaskVisitResult;
import com.ruoyi.task.domain.ServiceSubTaskDetailReq;
import com.ruoyi.task.domain.ServiceSubtask;
@@ -60,6 +59,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import com.ruoyi.system.service.ISysConfigService;
/**
* 鐢佃瘽涓氬姟Service瀹炵幇锛堝師 {@code ruoyi-task} 閲� {@code ServiceSubtaskServiceImpl} 鐨勭數璇濋儴鍒嗭級銆�
@@ -110,19 +110,21 @@
* 璇ヨ〃褰� ruoyi-inhospvisit锛岀敱 smartor 渚ч�傞厤瀹炵幇鏈鍙c��
*/
@Autowired
- private TaskPreachformPort taskPreachformPort;
+ private ServiceSubtaskPreachformMapper taskPreachformPort;
/**
* 褰曢煶鏂囦欢涓嬭浇锛堥洦缁�氳瘽璁板綍鍥炶皟閲屾妸褰撳ぉ褰曢煶浠� FTP 鎷夊洖鏈湴锛�
+ * <p>2026-11锛歿@code FtpService} 宸蹭粠 smartor 涓嬫矇鍒� {@code ruoyi-common}锛�
+ * 鍘熸潵鐨勮繃娓$鍙� {@code TaskFtpPort} 闅忎箣鍒犻櫎锛岃繖閲岀洿鎺ユ敞鍏ラ�氱敤宸ュ叿銆�
*/
@Autowired
- private TaskFtpPort taskFtpPort;
+ private FtpService ftpService;
/**
* 鍙傛暟閰嶇疆璇诲彇锛坽@code sys.voice.match.ai.url}锛欰I 閫夐」鍖归厤鏈嶅姟鍦板潃锛屾寜鏈烘瀯閰嶇疆锛�
*/
@Autowired
- private TaskSysConfigPort taskSysConfigPort;
+ private ISysConfigService sysConfigService;
/**
* AI 閫夐」鍖归厤濂戠害锛坮uoyi-common锛屽疄鐜板湪 ruoyi-task锛屽嵆鍘� {@code matchOptionIndex}锛�
@@ -327,6 +329,8 @@
ServiceSubtask ss = new ServiceSubtask();
ss.setId(serviceSubtask.getId());
ss.setSendstate(6L);
+ //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+ ss.setFinishtime(new Date());
taskSubtaskApi.updateSubtask(ss);
String date = simpleDateFormat1.format(new Date());
log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
@@ -372,6 +376,8 @@
ServiceSubtask ss = new ServiceSubtask();
ss.setId(serviceSubtask.getId());
ss.setSendstate(6L);
+ //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+ ss.setFinishtime(new Date());
taskSubtaskApi.updateSubtask(ss);
String date = simpleDateFormat1.format(new Date());
@@ -605,12 +611,21 @@
//鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
Long id = serviceSubtask.getId();
//鍏堟洿鏂颁竴涓嬪垎鏁�
+ //鈿狅笍 闈欓粯鎸傛満 = 鐢佃瘽娌℃帴閫� / 鎮h�呬竴鐩存病搴旂瓟锛屽睘浜�"鏈��"锛屼笉鏄�"瀹屾垚"锛�
+ // 鈶� 涓嶅啓 finishtime 鈥斺�� 杩欐潯鍗曞瓙鎺ヤ笅鏉ヨ浜ょ粰琛ュ伩浠诲姟锛坰etFailPreachForm 缃� 5 鎴� 3锛�
+ // 鍐嶇敱 compensateTask 鎹炶捣鏉ョ户缁彂涓嬩竴绉嶆柟寮� / 鍒よ秴鏃讹級锛涗竴鏃﹀啓浜嗗畬鎴愭椂闂达紝
+ // 鍚庨潰琚疆鎴�"瓒呮椂(7)"鏃跺氨浼氱暀涓�"瓒呮椂鍗存湁瀹屾垚鏃堕棿"鐨勮剰鏁版嵁锛�
+ // 鍙婃椂鐜囥�佸畬鎴愮巼锛圫erviceSubtaskMapper#selectTimelyRateBatch 璁� finishtime 闈炵┖锛変篃浼氳铏氶珮锛�
+ // 鈶� 涓嶆暣琛屽洖鍐� serviceSubtask 鈥斺�� 閭d細鎶婁笂闈㈠垰鍐欑殑 sendstate=5锛堢數璇濋潤榛橈級瑕嗙洊鍥炴煡搴撴椂鐨勬棫鍊硷紝
+ // 鎵�浠ヨ繖閲屽彧鍥炲啓 id + 鍒嗘暟 + 鏇存柊鏃堕棿锛岀姸鎬佷氦缁欎笅闈㈢殑 setFailPreachForm 鍐冲畾
+ // 锛堟渶鍚庝竴绉嶆柟寮� 鈫� 5 鍙戦�佸け璐ワ紱杩樻湁涓嬩竴绉� 鈫� 3 宸插彂閫侊紝涓よ�呴兘浼氳琛ュ伩浠诲姟鎹炶捣鏉ワ級銆�
double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setUpdateTime(new Date());
- log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
- taskSubtaskApi.updateSubtask(serviceSubtask);
+ ServiceSubtask scoreUpdate = new ServiceSubtask();
+ scoreUpdate.setId(id);
+ scoreUpdate.setScore(String.valueOf(score));
+ scoreUpdate.setUpdateTime(new Date());
+ log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆coreUpdate鐨勫�间负锛歿}", scoreUpdate);
+ taskSubtaskApi.updateSubtask(scoreUpdate);
//璁板綍鐘舵��
setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
@@ -667,6 +682,8 @@
ss.setId(serviceSubtask.getId());
ss.setSendstate(6L);
ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+ //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+ ss.setFinishtime(new Date());
taskSubtaskApi.updateSubtask(ss);
//璁板綍鐘舵��
setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
@@ -700,7 +717,7 @@
//鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
Integer flag = 0;
//1-AI璇嗗埆
- String url = taskSysConfigPort.selectConfigValue("sys.voice.match.ai.url", phoneCallReqYQVO.getOrgid());
+ String url = sysConfigService.selectConfigByKey("sys.voice.match.ai.url", phoneCallReqYQVO.getOrgid());
if (ObjectUtils.isNotEmpty(url)) {
PhoneCallBackYQVO aiMatchResult = AiMatch(url, phoneCallReqYQVO, phoneCallBackYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate, ivrTaskTemplateScripts, scriptId, flag, phoneCallReqYQVO.getUuid());
@@ -852,6 +869,8 @@
ss.setId(serviceSubtask.getId());
ss.setSendstate(6L);
ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+ //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+ ss.setFinishtime(new Date());
taskSubtaskApi.updateSubtask(ss);
//璁板綍鐘舵��
setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
@@ -1415,7 +1434,7 @@
taskSubtaskApi.updateSubtask(serviceSubtask);
setFailPreachForm(serviceSubtask, StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) ? serviceSubtask.getCurrentPreachform() : "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
//涓嬭浇鏂囦欢
- taskFtpPort.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
+ ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
} else {
//鎮h�呮嫆缁濋殢璁�
@@ -1564,12 +1583,13 @@
serviceSubtask.setCurrentPreachform(preachform);
serviceSubtask.setSendstate(5L);
serviceSubtask.setRemark(remark + ";鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
- taskSubtaskApi.updateSubtask(serviceSubtask);
+ //鍙洖鍐欐湰娆¤鏀圭殑鍒楋紙涓嶅啀鏁磋鍥炲啓锛岄伩鍏嶆妸搴撻噷鐨勬棫 finishtime 绛変竴璧峰甫鍥炴潵锛�
+ updateSubtaskState(serviceSubtask, 5L, preachform, serviceSubtask.getRemark(), null);
return true;
} else {
//鍔犲叆鐩墠琛ュ伩閲岀殑 remark
serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
- taskSubtaskApi.updateSubtask(serviceSubtask);
+ updateSubtaskState(serviceSubtask, null, null, serviceSubtask.getRemark(), null);
}
}
@@ -1579,8 +1599,35 @@
//濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
- taskSubtaskApi.updateSubtask(serviceSubtask);
+ updateSubtaskState(serviceSubtask, serviceSubtask.getSendstate(), preachform, null, serviceSubtask.getVisitTime());
return true;
+ }
+
+ /**
+ * 鍙洖鍐欐湰娆$湡姝h鏀圭殑鍒楋紙鏇夸唬"鏁磋鍥炲啓 serviceSubtask"锛夈��
+ * <p>
+ * 涓轰粈涔堝繀椤绘敹绐勶細mapper 鐨� updateServiceSubtask 鏄�<if test="xx != null">鍔ㄦ�� SET锛�
+ * 鏁磋鍥炲啓浼氭妸搴撻噷宸叉湁鐨� finishtime / visit_time / score 绛夋棫鍊煎師鏍峰啀鍐欎竴閬� 鈥斺�� 鏃㈠彲鑳借鐩�
+ * 骞跺彂鍐欏叆锛屼篃鏄�"鐘舵�� 3/5/7 鍗村甫鐫�瀹屾垚鏃堕棿"杩欑被鑴忔暟鎹殑鎼繍宸ャ��
+ * <p>
+ * 瀹屾垚鏃堕棿鍙e緞锛歴endstate=6锛堝畬鎴愶級鏃惰ˉ瀹屾垚鏃堕棿锛�3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂绛夐潪瀹屾垚鐘舵��
+ * 涓�寰嬩笉鍐欙紝Mapper 渚х殑"瀹屾垚鏃堕棿涓嶅彉閲�"浼氶『鎵嬫妸鏃у�兼竻鎺夈��
+ */
+ private void updateSubtaskState(ServiceSubtask source, Long sendstate, String currentPreachform,
+ String remark, Date visitTime) {
+ if (source == null || source.getId() == null) {
+ return;
+ }
+ ServiceSubtask update = new ServiceSubtask();
+ update.setId(source.getId());
+ update.setSendstate(sendstate);
+ update.setCurrentPreachform(currentPreachform);
+ update.setRemark(remark);
+ update.setVisitTime(visitTime);
+ if (sendstate != null && sendstate == 6L) {
+ update.setFinishtime(source.getFinishtime() != null ? source.getFinishtime() : new Date());
+ }
+ taskSubtaskApi.updateSubtask(update);
}
private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
@@ -1652,7 +1699,7 @@
public PhoneCallBackSHVO processResust(PhoneCallResultYQVO phoneCallResultYQVO) {
PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
//閫氳繃scriptid锛岃幏鍙栨墍鏈夌殑缁撴灉
- String url = taskSysConfigPort.selectConfigValue("sys.voice.match.ai.url", phoneCallResultYQVO.getOrgid());
+ String url = sysConfigService.selectConfigByKey("sys.voice.match.ai.url", phoneCallResultYQVO.getOrgid());
ServiceSubtask serviceSubtask = taskSubtaskApi.getSubtask(phoneCallResultYQVO.getSubId());
IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(phoneCallResultYQVO.getScriptId()));
@@ -1891,6 +1938,8 @@
ss.setId(serviceSubtask.getId());
ss.setSendstate(6L);
ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+ //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+ ss.setFinishtime(new Date());
taskSubtaskApi.updateSubtask(ss);
//璁板綍鐘舵��
setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
--
Gitblit v1.9.3