2024-08-21 17:58:34 +08:00
|
|
|
|
package com.xinelu.quartz.task;
|
|
|
|
|
|
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
2024-11-22 15:19:16 +08:00
|
|
|
|
import com.xinelu.common.constant.AiobTaskTypeContant;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.common.enums.NodeExecuteStatusEnum;
|
|
|
|
|
|
import com.xinelu.common.enums.PhoneDialMethodEnum;
|
2024-09-13 11:32:35 +08:00
|
|
|
|
import com.xinelu.common.enums.PhoneRedialTimesEnum;
|
2024-12-03 09:06:36 +08:00
|
|
|
|
import com.xinelu.common.enums.TaskExcuteTypeEnum;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import com.xinelu.common.utils.StringUtils;
|
|
|
|
|
|
import com.xinelu.manage.domain.patientinfo.PatientInfo;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import com.xinelu.manage.domain.scriptInfo.ScriptInfo;
|
|
|
|
|
|
import com.xinelu.manage.domain.scriptinfotaskinfo.ScriptInfoTaskInfo;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
|
|
|
|
|
|
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
|
|
|
|
|
|
import com.xinelu.manage.domain.signpatientrecord.SignPatientRecord;
|
2024-11-22 15:19:16 +08:00
|
|
|
|
import com.xinelu.manage.dto.aiob.ActualTimeTaskDto;
|
|
|
|
|
|
import com.xinelu.manage.dto.aiob.CreateTaskDto;
|
|
|
|
|
|
import com.xinelu.manage.dto.aiob.CustomerInfoDto;
|
|
|
|
|
|
import com.xinelu.manage.dto.aiob.ImportTaskDto;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import com.xinelu.manage.mapper.labelfieldcontent.LabelFieldContentMapper;
|
|
|
|
|
|
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.manage.mapper.patientvisitrecord.PatientVisitRecordMapper;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper;
|
|
|
|
|
|
import com.xinelu.manage.mapper.scriptinfotaskinfo.ScriptInfoTaskInfoMapper;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
|
|
|
|
|
|
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
|
|
|
|
|
|
import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper;
|
2024-11-22 15:19:16 +08:00
|
|
|
|
import com.xinelu.manage.service.aiob.IAIOBService;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
|
2024-11-22 15:19:16 +08:00
|
|
|
|
import com.xinelu.manage.vo.aiob.ImportTaskVo;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldInfoContentVo;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import java.time.format.DateTimeFormatter;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import java.util.ArrayList;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import java.util.Arrays;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import java.util.List;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import java.util.Objects;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
2024-08-30 17:11:03 +08:00
|
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
2024-09-05 13:58:57 +08:00
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2024-09-05 13:58:57 +08:00
|
|
|
|
* @description: 百度智能外呼上传任务定时任务
|
2024-08-21 17:58:34 +08:00
|
|
|
|
* @author: haown
|
|
|
|
|
|
* @create: 2024-08-19 13:58
|
|
|
|
|
|
**/
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
|
@Component("UploadRobotPublishTask")
|
|
|
|
|
|
public class UploadRobotPublishTask {
|
|
|
|
|
|
|
2024-09-05 13:58:57 +08:00
|
|
|
|
@Value("${aiob.callBackUrl}")
|
|
|
|
|
|
private String callBackUrl;
|
2024-08-21 17:58:34 +08:00
|
|
|
|
@Resource
|
|
|
|
|
|
private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private ISignPatientManageRouteNodeService signPatientManageRouteNodeService;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private SignPatientManageRouteMapper signPatientManageRouteMapper;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private SignPatientRecordMapper signPatientRecordMapper;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private PatientVisitRecordMapper patientVisitRecordMapper;
|
|
|
|
|
|
@Resource
|
2024-08-30 17:11:03 +08:00
|
|
|
|
private ScriptInfoTaskInfoMapper scriptInfoTaskInfoMapper;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private IAIOBService aiobService;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private ScriptInfoMapper scriptInfoMapper;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private PatientInfoMapper patientInfoMapper;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private LabelFieldContentMapper labelFieldContentMapper;
|
|
|
|
|
|
|
2024-09-05 13:58:57 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @description 创建百度智能外呼任务并导入客户名单
|
|
|
|
|
|
* @Author haown
|
|
|
|
|
|
* @Date 2024-9-5 13:55
|
|
|
|
|
|
*/
|
2024-08-21 17:58:34 +08:00
|
|
|
|
public void uploadRobotPublishTask() {
|
2024-08-30 17:11:03 +08:00
|
|
|
|
log.info("开始执行百度智能外呼创建任务定时任务......");
|
2024-09-06 17:05:46 +08:00
|
|
|
|
// 查找需要当天执行的AI打电话任务(问卷或电话外呼类型)
|
2024-08-21 17:58:34 +08:00
|
|
|
|
SignPatientManageRouteNodeDto signPatientManageRouteNodeDto = new SignPatientManageRouteNodeDto();
|
2024-09-12 10:10:55 +08:00
|
|
|
|
//signPatientManageRouteNodeDto.setTaskNodeType(TaskNodeTypeEnum.PHONE_OUTBOUND.getInfo());
|
2024-08-21 17:58:34 +08:00
|
|
|
|
signPatientManageRouteNodeDto.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
|
|
|
|
|
|
signPatientManageRouteNodeDto.setPhoneDialMethod(PhoneDialMethodEnum.AI.getInfo());
|
|
|
|
|
|
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto);
|
|
|
|
|
|
|
|
|
|
|
|
List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>();
|
|
|
|
|
|
nodeList.forEach(node -> {
|
|
|
|
|
|
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());
|
|
|
|
|
|
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId());
|
|
|
|
|
|
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
|
|
|
|
|
|
LocalDateTime executeTime = signPatientManageRouteNodeService.getExecuteTime(node.getExecuteTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord);
|
2024-09-13 11:32:35 +08:00
|
|
|
|
if (node.getScriptInfoId() != null && (executeTime.toLocalDate().isBefore(LocalDate.now()) || executeTime.toLocalDate().isEqual(LocalDate.now()))) {
|
2024-08-21 17:58:34 +08:00
|
|
|
|
executeNodeList.add(node);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2024-09-05 13:58:57 +08:00
|
|
|
|
|
2024-08-21 17:58:34 +08:00
|
|
|
|
if (CollectionUtils.isNotEmpty(executeNodeList)) {
|
2024-08-30 17:11:03 +08:00
|
|
|
|
// 根据机器人id查询智能外呼系统的任务id
|
2024-09-13 11:32:35 +08:00
|
|
|
|
executeNodeList.forEach(node -> {
|
|
|
|
|
|
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(node.getScriptInfoId());
|
2024-11-22 15:19:16 +08:00
|
|
|
|
String taskId = scriptInfoTaskInfoMapper.getByNodeId(node.getId(), AiobTaskTypeContant.BATCHTASK);
|
2024-08-30 17:11:03 +08:00
|
|
|
|
if (StringUtils.isBlank(taskId)) {
|
|
|
|
|
|
// 没有任务则创建任务
|
|
|
|
|
|
if (ObjectUtils.isNotEmpty(scriptInfo)) {
|
2024-09-05 13:58:57 +08:00
|
|
|
|
log.info("创建任务......");
|
2024-08-30 17:11:03 +08:00
|
|
|
|
CreateTaskDto createTaskDto = new CreateTaskDto();
|
2024-09-13 11:32:35 +08:00
|
|
|
|
createTaskDto.setTaskName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + scriptInfo.getScriptName() + "(" +node.getId()+ ")");
|
2024-08-30 17:11:03 +08:00
|
|
|
|
createTaskDto.setRobotId(scriptInfo.getRobotPublishId());
|
|
|
|
|
|
createTaskDto.setDialStartDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
|
|
|
|
createTaskDto.setDialEndDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
|
|
|
|
createTaskDto.setForbidDialDate(Arrays.asList(99));
|
2024-09-13 11:32:35 +08:00
|
|
|
|
createTaskDto.setRetryTimes(StringUtils.isBlank(node.getPhoneRedialTimes()) ? 0 : PhoneRedialTimesEnum.getValueByInfo(node.getPhoneRedialTimes()).getValue());
|
|
|
|
|
|
createTaskDto.setRetryInterval(node.getPhoneTimeInterval());
|
2024-08-30 17:11:03 +08:00
|
|
|
|
createTaskDto.setNumTypeFilterList(Arrays.asList(1,2));
|
2024-09-05 13:58:57 +08:00
|
|
|
|
createTaskDto.setTaskDataCallback(true);
|
|
|
|
|
|
createTaskDto.setCallBackUrl(callBackUrl);
|
2024-08-30 17:11:03 +08:00
|
|
|
|
taskId = aiobService.createTask(createTaskDto);
|
2024-09-05 13:58:57 +08:00
|
|
|
|
// 开启任务
|
|
|
|
|
|
log.info("开启任务......");
|
|
|
|
|
|
aiobService.updateTaskStatus(taskId, 2);
|
2024-08-30 17:11:03 +08:00
|
|
|
|
|
|
|
|
|
|
ScriptInfoTaskInfo scriptInfoTaskInfo = new ScriptInfoTaskInfo();
|
2024-09-13 11:32:35 +08:00
|
|
|
|
scriptInfoTaskInfo.setScriptInfoId(node.getScriptInfoId());
|
2024-08-30 17:11:03 +08:00
|
|
|
|
scriptInfoTaskInfo.setTaskId(taskId);
|
|
|
|
|
|
scriptInfoTaskInfo.setRobotId(scriptInfo.getRobotPublishId());
|
|
|
|
|
|
scriptInfoTaskInfo.setCreateTime(LocalDateTime.now());
|
2024-09-13 11:32:35 +08:00
|
|
|
|
scriptInfoTaskInfo.setSignPatientManageRouteNodeId(node.getId());
|
2024-11-22 15:19:16 +08:00
|
|
|
|
scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
|
2024-08-30 17:11:03 +08:00
|
|
|
|
scriptInfoTaskInfoMapper.insertScriptInfoTaskInfo(scriptInfoTaskInfo);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 客户名单list
|
|
|
|
|
|
List<CustomerInfoDto> customerInfoList = new ArrayList<>();
|
|
|
|
|
|
|
2024-09-13 11:32:35 +08:00
|
|
|
|
CustomerInfoDto customerInfoDto = new CustomerInfoDto();
|
|
|
|
|
|
customerInfoDto.setExtJson(node.getId() + "");
|
|
|
|
|
|
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());
|
|
|
|
|
|
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(signPatientManageRoute.getPatientId());
|
|
|
|
|
|
customerInfoDto.setMobile(patientInfo.getPatientPhone());
|
|
|
|
|
|
// 查询患者画像信息
|
|
|
|
|
|
List<LabelFieldInfoContentVo> labelFieldContentList = labelFieldContentMapper.selectByPatientId(patientInfo.getId());
|
|
|
|
|
|
// 处理变量
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
|
|
if (StringUtils.isNotBlank(scriptInfo.getVariables())) {
|
|
|
|
|
|
List<String> variables = Arrays.asList(scriptInfo.getVariables().split("\\|"));
|
|
|
|
|
|
variables.forEach(variable -> {
|
|
|
|
|
|
LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), variable.replaceAll("_", "").toUpperCase())).findFirst().orElse(null);
|
|
|
|
|
|
jsonObject.fluentPut(variable, ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue());
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
customerInfoDto.setVar(jsonObject);
|
|
|
|
|
|
customerInfoList.add(customerInfoDto);
|
2024-08-30 17:11:03 +08:00
|
|
|
|
|
|
|
|
|
|
// 上传名单
|
2024-09-05 13:58:57 +08:00
|
|
|
|
log.info("任务导入客户名单......");
|
2024-08-30 17:11:03 +08:00
|
|
|
|
ImportTaskDto importTaskDto = new ImportTaskDto();
|
|
|
|
|
|
importTaskDto.setTaskId(taskId);
|
|
|
|
|
|
importTaskDto.setSecretType(2);
|
|
|
|
|
|
importTaskDto.setCustomerInfoList(customerInfoList);
|
2024-09-05 13:58:57 +08:00
|
|
|
|
List<ImportTaskVo> importTaskList = aiobService.importTask(importTaskDto);
|
|
|
|
|
|
String finalTaskId = taskId;
|
|
|
|
|
|
importTaskList.forEach(importTaskVo -> {
|
|
|
|
|
|
// 名单导入成功后,sign_patient_manage_route_node表中设置taskId
|
|
|
|
|
|
if (importTaskVo.getStatus()) {
|
|
|
|
|
|
node.setTaskIdExt(finalTaskId);
|
|
|
|
|
|
node.setId(Long.valueOf(importTaskVo.getExtJson()));
|
|
|
|
|
|
signPatientManageRouteNodeMapper.updateSignPatientManageRouteNode(node);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2024-09-13 11:32:35 +08:00
|
|
|
|
});
|
2024-08-21 17:58:34 +08:00
|
|
|
|
}
|
2024-09-05 13:58:57 +08:00
|
|
|
|
log.info("百度智能外呼创建任务定时任务执行完成......");
|
2024-08-21 17:58:34 +08:00
|
|
|
|
}
|
2024-09-05 13:58:57 +08:00
|
|
|
|
|
2024-09-24 17:10:16 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @description 创建实时任务
|
|
|
|
|
|
* @return null
|
|
|
|
|
|
* @Author haown
|
|
|
|
|
|
* @Date 2024-9-23 10:41
|
|
|
|
|
|
*/
|
|
|
|
|
|
public void actualTimeTask() {
|
|
|
|
|
|
log.info("开始执行百度智能外呼创建实时任务定时任务......");
|
|
|
|
|
|
// 查找需要当天执行的AI打电话任务(问卷或电话外呼类型)
|
|
|
|
|
|
SignPatientManageRouteNodeDto signPatientManageRouteNodeDto = new SignPatientManageRouteNodeDto();
|
|
|
|
|
|
signPatientManageRouteNodeDto.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
|
|
|
|
|
|
signPatientManageRouteNodeDto.setPhoneDialMethod(PhoneDialMethodEnum.AI.getInfo());
|
2024-12-03 09:06:36 +08:00
|
|
|
|
//只获取 任务执行类型为 单个执行的
|
|
|
|
|
|
signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.ACTUAL_TIME_TASK.getInfo());
|
2024-09-24 17:10:16 +08:00
|
|
|
|
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto);
|
|
|
|
|
|
List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>();
|
|
|
|
|
|
nodeList.forEach(node -> {
|
2024-12-03 09:06:36 +08:00
|
|
|
|
LocalDateTime executeTime ;
|
|
|
|
|
|
//如果有计划执行时间,则直接获取
|
2024-12-05 10:48:10 +08:00
|
|
|
|
if(node.getNodePlanTime()!=null)
|
|
|
|
|
|
{ executeTime = node.getNodePlanTime(); }
|
2024-12-03 09:06:36 +08:00
|
|
|
|
// 否则 ,则根据诊后/院后 第几天 计算
|
|
|
|
|
|
else {
|
|
|
|
|
|
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());
|
|
|
|
|
|
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId());
|
|
|
|
|
|
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
|
|
|
|
|
|
executeTime = signPatientManageRouteNodeService.getExecuteTime(node.getExecuteTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord);
|
|
|
|
|
|
}
|
2024-09-24 17:10:16 +08:00
|
|
|
|
if (node.getScriptInfoId() != null && (executeTime.toLocalDate().isBefore(LocalDate.now()) || executeTime.toLocalDate().isEqual(LocalDate.now()))) {
|
|
|
|
|
|
executeNodeList.add(node);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 查询需要重拨的任务
|
|
|
|
|
|
ScriptInfoTaskInfo scriptInfoTaskInfo = new ScriptInfoTaskInfo();
|
2024-09-27 14:48:23 +08:00
|
|
|
|
scriptInfoTaskInfo.setExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
|
2024-11-22 15:19:16 +08:00
|
|
|
|
scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.ACTUALTIMETASK);
|
2024-09-24 17:10:16 +08:00
|
|
|
|
List<ScriptInfoTaskInfo> scriptInfoTaskInfoList = scriptInfoTaskInfoMapper.selectList(scriptInfoTaskInfo);
|
|
|
|
|
|
scriptInfoTaskInfoList.forEach(taskInfo -> {
|
|
|
|
|
|
SignPatientManageRouteNode node = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeById(taskInfo.getSignPatientManageRouteNodeId());
|
|
|
|
|
|
if (taskInfo.getExecuteTime().isBefore(LocalDateTime.now()) || taskInfo.getExecuteTime().isEqual(LocalDateTime.now())) {
|
|
|
|
|
|
executeNodeList.add(node);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(executeNodeList)) {
|
|
|
|
|
|
// 根据机器人id查询智能外呼系统的任务id
|
|
|
|
|
|
executeNodeList.forEach(node -> {
|
|
|
|
|
|
createTask(node);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
log.info("百度智能外呼创建实时任务定时任务执行完成......");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void createTask(SignPatientManageRouteNode node) {
|
|
|
|
|
|
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(node.getScriptInfoId());
|
|
|
|
|
|
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());
|
|
|
|
|
|
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(signPatientManageRoute.getPatientId());
|
|
|
|
|
|
// 没有任务则创建任务
|
|
|
|
|
|
if (ObjectUtils.isNotEmpty(scriptInfo)) {
|
|
|
|
|
|
log.info("创建任务......");
|
|
|
|
|
|
ActualTimeTaskDto actualTimeTaskDto = new ActualTimeTaskDto();
|
|
|
|
|
|
actualTimeTaskDto.setRobotId(scriptInfo.getRobotPublishId());
|
|
|
|
|
|
actualTimeTaskDto.setMobile(patientInfo.getPatientPhone());
|
|
|
|
|
|
actualTimeTaskDto.setSecretType(2);
|
2024-11-29 09:13:31 +08:00
|
|
|
|
actualTimeTaskDto.setStopDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " 20:00:00");
|
2024-09-24 17:10:16 +08:00
|
|
|
|
// 查询患者画像信息
|
|
|
|
|
|
List<LabelFieldInfoContentVo> labelFieldContentList = labelFieldContentMapper.selectByPatientId(patientInfo.getId());
|
|
|
|
|
|
// 处理变量
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
|
|
if (StringUtils.isNotBlank(scriptInfo.getVariables())) {
|
|
|
|
|
|
List<String> variables = Arrays.asList(scriptInfo.getVariables().split("\\|"));
|
|
|
|
|
|
variables.forEach(variable -> {
|
|
|
|
|
|
LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), variable.replaceAll("_", "").toUpperCase())).findFirst().orElse(null);
|
|
|
|
|
|
jsonObject.fluentPut(variable, ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue());
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
actualTimeTaskDto.setDialogVar(jsonObject);
|
|
|
|
|
|
actualTimeTaskDto.setCallBackUrl(callBackUrl);
|
|
|
|
|
|
actualTimeTaskDto.setExtJson(node.getId()+ "");
|
|
|
|
|
|
aiobService.createActualTimeTask(actualTimeTaskDto);
|
|
|
|
|
|
log.info("创建任务完成......");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-08-21 17:58:34 +08:00
|
|
|
|
}
|