修改曜智外呼。

This commit is contained in:
haown 2026-01-29 11:23:00 +08:00
parent 601e89dd79
commit bf57c37b93
5 changed files with 72 additions and 55 deletions

View File

@ -1,7 +1,6 @@
package com.xinelu.manage.mapper.patientquestionoptionresult;
import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult;
import java.util.List;
/**

View File

@ -708,7 +708,8 @@ public class AIOBServiceImpl implements IAIOBService {
}
questionSubmitResultMapper.updatePatientQuestionSubmitResult(patientQuestionSubmitResult);
if(patientQuestionOptionResults.size()>0) {
if(CollectionUtils.isNotEmpty(patientQuestionOptionResults)) {
log.info("问卷选项结果:{}", patientQuestionOptionResults);
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
}
totalScore[0] = totalScore[0].add(questionSubjectVO.getQuestionScore() == null ? BigDecimal.ZERO : questionSubjectVO.getQuestionScore());
@ -736,7 +737,8 @@ public class AIOBServiceImpl implements IAIOBService {
patientQuestionOptionResult.setQuestionSubjectResultId(patientQuestionSubjectResult.getId());
patientQuestionOptionResults.add(patientQuestionOptionResult);
});
if(patientQuestionOptionResults.size()>0) {
if(CollectionUtils.isNotEmpty(patientQuestionOptionResults)) {
log.info("问卷选项结果:{}", patientQuestionOptionResults);
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
}
totalScore[0] = totalScore[0].add(BigDecimal.ZERO);

View File

@ -9,7 +9,6 @@ import com.xinelu.common.config.SystemBusinessConfig;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.constant.PhoneMessageRemindConstants;
import com.xinelu.common.constant.TaskCreateTypeConstant;
import com.xinelu.common.constant.TaskStatisticsTypeConstants;
import com.xinelu.common.enums.ContentedAndRemarkableFlagEnum;
import com.xinelu.common.enums.ErrorStatusEnum;
import com.xinelu.common.enums.NodeExecuteResultStatusEnum;
@ -289,10 +288,10 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
phoneDialRecordMapper.insertPhoneDialRecord(phoneDialRecord);
// 修改任务统计表数据
if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) {
// 任务统计表修改
patientTaskStatisticsService.updateNum(signPatientManageRoute.getPatientId(), TaskStatisticsTypeConstants.TASK_EXECUTE_NUM, 1);
}
//if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) {
// // 任务统计表修改
// patientTaskStatisticsService.updateNum(signPatientManageRoute.getPatientId(), TaskStatisticsTypeConstants.TASK_EXECUTE_NUM, 1);
//}
//接通状态1-已接通
if (dutyCallbackDataDto.getIsAnswer() != null && dutyCallbackDataDto.getIsAnswer() == 1) {
@ -409,7 +408,9 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
boolean hasQuestion = false;
String aiobQuestionName = "";
for (int i = 0; i < recordList.size(); i++) {
if (recordList.get(i).getContextText().contains(questionNameAlias.replaceAll("\\p{P}", ""))) {
if (StringUtils.equals(recordList.get(i).getRole(), "speech") && StringUtils.isNotBlank(recordList.get(i).getContextText())
&&recordList.get(i).getContextText().contains(questionNameAlias.replaceAll("\\p{P}", ""))
) {
hasQuestion = true;
aiobQuestionName = recordList.get(i).getContextText();
break;
@ -440,13 +441,10 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
questionSubjectOptions.forEach(questionSubjectOption -> {
PatientQuestionOptionResult patientQuestionOptionResult = new PatientQuestionOptionResult();
BeanUtils.copyProperties(questionSubjectOption, patientQuestionOptionResult);
patientQuestionOptionResult.setOptionChooseSign(0);
patientQuestionOptionResult.setOptionChooseSign(1);
// 设置是否选中, 根据回调数据中命中的意向查询
List<String> intents = Arrays.asList(questionSubjectOption.getIntent().split("\\|"));
for (String intent : intents) {
if (callResultIntents.contains(intent)) {
patientQuestionOptionResult.setOptionChooseSign(1);
}
if (callResultIntents.contains(questionSubjectOption.getIntent())) {
patientQuestionOptionResult.setOptionChooseSign(0);
}
patientQuestionOptionResult.setId(null);
@ -477,11 +475,10 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
if (!CollectionUtils.isEmpty(contentedFlag)) {
patientQuestionSubmitResult.setContentedFlag(ContentedAndRemarkableFlagEnum.DISCONTENTED.getInfo());
}
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
}
questionSubmitResultMapper.updatePatientQuestionSubmitResult(patientQuestionSubmitResult);
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
totalScore[0] = totalScore[0].add(questionSubjectVO.getQuestionScore() == null ? BigDecimal.ZERO : questionSubjectVO.getQuestionScore());
} else {
@ -508,7 +505,8 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
patientQuestionOptionResult.setQuestionSubjectResultId(patientQuestionSubjectResult.getId());
patientQuestionOptionResults.add(patientQuestionOptionResult);
});
if(patientQuestionOptionResults.size()>0) {
if(!CollectionUtils.isEmpty(patientQuestionOptionResults)) {
log.info("问卷选项结果:{}", patientQuestionOptionResults);
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
}
totalScore[0] = totalScore[0].add(BigDecimal.ZERO);
@ -537,20 +535,18 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
callRecord.setRole(str1[0]);
if (StringUtils.equals("机器人", str1[0])) {
callRecord.setRole("speech");
if (str1.length > 1) {
if(StringUtils.isNotBlank(str1[1])) {
// ^分隔
String[] content = str1[1].split("\\^");
for (int i = 0; i < content.length; i++) {
if (StringUtils.contains(content[i], "txt=")) {
callRecord.setContextText(content[i].replaceAll("txt=", ""));
}
if (str1.length > 1 && StringUtils.isNotBlank(str1[1])) {
// ^分隔
String[] content = str1[1].split("\\^");
for (int i = 0; i < content.length; i++) {
if (StringUtils.contains(content[i], "txt=")) {
callRecord.setContextText(content[i].replaceAll("txt=", ""));
}
}
}
} else if (StringUtils.equals("用户", str1[0])) {
callRecord.setRole("voice");
if (str1.length > 1) {
if (str1.length > 1 && StringUtils.isNotBlank(str1[1])) {
callRecord.setContextText(str1[1]);
}
}
@ -570,15 +566,33 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
*/
private String getReply(List<CallRecord> callRecordList, String question) {
for (int i = 0; i < callRecordList.size(); i++) {
if (StringUtils.equals(callRecordList.get(i).getContextText(), question)) {
if (StringUtils.equals("voice",callRecordList.get(i+1).getRole())) {
if (StringUtils.equals(callRecordList.get(i).getContextText(), question) && i+1 <= callRecordList.size() && StringUtils.equals("voice", callRecordList.get(i+1).getRole())) {
// 问题可能出现多次补充的情况[p2000]标签来标识是补充的问题
if (callRecordList.get(i).getContextText().contains("[p2000]")) {
// 查找通话内容中包含[p2000]的用户回复
return getReplyByLabel(callRecordList, "[p2000]", i);
} else {
return callRecordList.get(i+1).getContextText();
}
}
}
return null;
}
private String getReplyByLabel(List<CallRecord> callRecordList, String label, int i) {
List<CallRecord> subRecord = callRecordList.subList(i, callRecordList.size());
StringBuffer reply = new StringBuffer();
if (!CollectionUtils.isEmpty(subRecord)) {
for (int j = 0; j < subRecord.size(); j++) {
if (StringUtils.isNotBlank(subRecord.get(j).getContextText()) && subRecord.get(j).getContextText().contains(label) && j+1 <= subRecord.size() && StringUtils.equals("voice",subRecord.get(j+1).getRole())) {
reply.append(StringUtils.isBlank(subRecord.get(j+1).getContextText()) ? "" : subRecord.get(j+1).getContextText());
}
}
}
return reply.toString();
}
private void genenrateQuestion(SignPatientManageRouteNode node, PatientInfo patientInfo, Long taskExecuteRecordId) {
QuestionInfo questionInfo = questionInfoMapper.selectQuestionInfoById(node.getQuestionInfoId());
// 1保存patient_question_submit_result
@ -627,8 +641,7 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
questionSubjectOptions.forEach(questionSubjectOption -> {
PatientQuestionOptionResult patientQuestionOptionResult = new PatientQuestionOptionResult();
BeanUtils.copyProperties(questionSubjectOption, patientQuestionOptionResult);
patientQuestionOptionResult.setOptionChooseSign(0);
patientQuestionOptionResult.setOptionChooseSign(0);
patientQuestionOptionResult.setOptionChooseSign(1);
patientQuestionOptionResult.setId(null);
patientQuestionOptionResult.setCreateTime(LocalDateTime.now());
patientQuestionOptionResult.setQuestionSubjectResultId(patientQuestionSubjectResult.getId());
@ -653,9 +666,11 @@ public class YZAIOBSServiceImpl implements IYZAIOBSService {
if (!CollectionUtils.isEmpty(contentedFlag)) {
patientQuestionSubmitResult.setContentedFlag(ContentedAndRemarkableFlagEnum.DISCONTENTED.getInfo());
}
log.info("问卷选项结果:{}", patientQuestionOptionResults);
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
}
questionSubmitResultMapper.updatePatientQuestionSubmitResult(patientQuestionSubmitResult);
patientQuestionOptionResultMapper.saveQuestionOptionList(patientQuestionOptionResults);
});
}
}

View File

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper">
<resultMap type="PatientQuestionOptionResult" id="PatientQuestionOptionResultResult">
<resultMap type="com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult" id="PatientQuestionOptionResult">
<result property="id" column="id"/>
<result property="questionSubjectResultId" column="question_subject_result_id"/>
<result property="questionnaireSubjectId" column="questionnaire_subject_id"/>
@ -48,7 +48,7 @@
</sql>
<select id="selectPatientQuestionOptionResultList" parameterType="PatientQuestionOptionResult"
resultMap="PatientQuestionOptionResultResult">
resultMap="PatientQuestionOptionResult">
<include refid="selectPatientQuestionOptionResultVo"/>
<where>
<if test="questionSubjectResultId != null ">
@ -94,7 +94,7 @@
</select>
<select id="selectPatientQuestionOptionResultById" parameterType="Long"
resultMap="PatientQuestionOptionResultResult">
resultMap="PatientQuestionOptionResult">
<include refid="selectPatientQuestionOptionResultVo"/>
where id = #{id}
</select>
@ -194,23 +194,23 @@
remarkable_flag,
question_subject_option_id
) values
<foreach item="QuestionSubjectOption" index="index" collection="list" separator=",">
<foreach item="item" index="index" collection="list" separator=",">
(
#{QuestionSubjectOption.questionSubjectResultId},
#{QuestionSubjectOption.questionnaireSubjectId},
#{QuestionSubjectOption.questionName},
#{QuestionSubjectOption.optionName},
#{QuestionSubjectOption.optionAnswer},
#{QuestionSubjectOption.optionScore},
#{QuestionSubjectOption.optionChooseSign},
#{QuestionSubjectOption.optionSubmitAnswer},
#{QuestionSubjectOption.optionSort},
#{QuestionSubjectOption.optionRemark},
#{QuestionSubjectOption.createBy},
#{QuestionSubjectOption.createTime},
#{QuestionSubjectOption.contentedFlag},
#{QuestionSubjectOption.remarkableFlag},
#{QuestionSubjectOption.questionSubjectOptionId}
#{item.questionSubjectResultId},
#{item.questionnaireSubjectId},
#{item.questionName},
#{item.optionName},
#{item.optionAnswer},
#{item.optionScore},
#{item.optionChooseSign},
#{item.optionSubmitAnswer},
#{item.optionSort},
#{item.optionRemark},
#{item.createBy},
#{item.createTime},
#{item.contentedFlag},
#{item.remarkableFlag},
#{item.questionSubjectOptionId}
)
</foreach>
</insert>

View File

@ -128,8 +128,8 @@ public class YZAIOBSTask {
if (ObjectUtils.isNotEmpty(scriptInfo)) {
// 查询机构拨打时间设置
LocalTime localStartTime = LocalTime.now();
LocalTime localEndTime = LocalTime.now();
LocalTime localStartTime = LocalTime.parse("08:00");
LocalTime localEndTime = LocalTime.parse("17:00");
Long hospitalId = patientInfoImportMainMapper.selectHospitalAgencyId(sn);
if (hospitalId != null) {
DialTime dialTime = patientInfoImportMainMapper.selectDialTimeById(hospitalId);
@ -141,7 +141,7 @@ public class YZAIOBSTask {
List<SysDictData> sysDictDataList = iSysDictTypeService.selectDictDataByType(Constants.DIAL_TIME);
if (CollectionUtils.isEmpty(sysDictDataList) || sysDictDataList.size() != 2) {
dateStartTime = LocalTime.parse("08:00");
dateEndTime = LocalTime.parse("19:00");
dateEndTime = LocalTime.parse("17:00");
} else {
dateStartTime = LocalTime.parse(sysDictDataList.get(0).getDictValue());
dateEndTime = LocalTime.parse(sysDictDataList.get(1).getDictValue());
@ -303,7 +303,8 @@ public class YZAIOBSTask {
createDutyDto.setDutyName(dutyName);
createDutyDto.setDutyType(scriptInfo.getRobotPublishId());
createDutyDto.setDutySceneId(Integer.parseInt(scriptInfo.getRobotPublishId()));
createDutyDto.setOutboundPeriods("[\"09:00~11:30\",\"14:00~17:30\"]");
//createDutyDto.setOutboundPeriods("[\"09:00~11:30\",\"14:00~18:30\"]");
createDutyDto.setOutboundPeriods("[\"08:00~18:30\"]");
createDutyDto.setStartDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
createDutyDto.setEndDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
JSONObject repStrategy = new JSONObject();