修复批量外呼时相关bug
This commit is contained in:
parent
368978460b
commit
8417760a5e
@ -69,4 +69,9 @@ public class ScriptInfoTaskInfo {
|
|||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入流水号
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "导入流水号")
|
||||||
|
private String sn;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -425,4 +425,7 @@ public class SignPatientManageRouteNode extends BaseEntity {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "拨打状态:DIALED,已拨打:NODIALED:未拨打;默认NULL表示未拨打")
|
@ApiModelProperty(value = "拨打状态:DIALED,已拨打:NODIALED:未拨打;默认NULL表示未拨打")
|
||||||
private String dialStatus;
|
private String dialStatus;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "导入流水号")
|
||||||
|
private String sn;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,7 +93,7 @@ public interface SignPatientManageRouteNodeMapper {
|
|||||||
* @param signPatientManageRouteNode
|
* @param signPatientManageRouteNode
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
int updateDialStatusByManageRouteId(SignPatientManageRouteNode signPatientManageRouteNode);
|
int updateDialStatus(SignPatientManageRouteNode signPatientManageRouteNode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改 拔打状态
|
* 修改 拔打状态
|
||||||
|
|||||||
@ -154,7 +154,6 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
private ILabelFieldContentService labelFieldContentService;
|
private ILabelFieldContentService labelFieldContentService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PatientInfoMapper patientInfoMapper;
|
private PatientInfoMapper patientInfoMapper;
|
||||||
@Resource
|
@Resource
|
||||||
@ -196,47 +195,44 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
@Override
|
@Override
|
||||||
public AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute) {
|
public AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute) {
|
||||||
//如果是批量 创建
|
//如果是批量 创建
|
||||||
if(StringUtils.isNotBlank(signPatientManageRoute.getSn()))
|
if (StringUtils.isNotBlank(signPatientManageRoute.getSn())) {
|
||||||
{
|
|
||||||
//获取患者信息
|
//获取患者信息
|
||||||
List<PatientInfoVo> listPatient = new ArrayList<>();
|
List<PatientInfoVo> listPatient = new ArrayList<>();
|
||||||
PatientInfoDto patientInfo = new PatientInfoDto();
|
PatientInfoDto patientInfo = new PatientInfoDto();
|
||||||
patientInfo.setSn(signPatientManageRoute.getSn());
|
patientInfo.setSn(signPatientManageRoute.getSn());
|
||||||
listPatient = patientInfoMapper.getPatientList(patientInfo);
|
listPatient = patientInfoMapper.getPatientList(patientInfo);
|
||||||
for(PatientInfoVo patientInfoVo : listPatient)
|
for (PatientInfoVo patientInfoVo : listPatient) {
|
||||||
{
|
|
||||||
signPatientManageRoute.setPatientId(patientInfoVo.getId());
|
signPatientManageRoute.setPatientId(patientInfoVo.getId());
|
||||||
signPatientManageRoute.setPatientName(patientInfoVo.getPatientName());
|
signPatientManageRoute.setPatientName(patientInfoVo.getPatientName());
|
||||||
signPatientManageRoute.setDepartmentId(patientInfoVo.getDepartmentId());
|
signPatientManageRoute.setDepartmentId(patientInfoVo.getDepartmentId());
|
||||||
signPatientManageRoute.setDepartmentName(patientInfoVo.getDepartmentName());
|
signPatientManageRoute.setDepartmentName(patientInfoVo.getDepartmentName());
|
||||||
AjaxResult ar = insertSignPatientManageRouteForPatient(signPatientManageRoute);
|
AjaxResult ar = insertSignPatientManageRouteForPatient(signPatientManageRoute);
|
||||||
//如果有错误码,直接返回;
|
//如果有错误码,直接返回;
|
||||||
if(ar.containsValue(901))
|
if (ar.containsValue(901))
|
||||||
return ar;
|
return ar;
|
||||||
}
|
}
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return insertSignPatientManageRouteForPatient(signPatientManageRoute);
|
return insertSignPatientManageRouteForPatient(signPatientManageRoute);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public AjaxResult insertSignPatientManageRouteForPatient(SignPatientManageRouteVO signPatientManageRoute)
|
|
||||||
{
|
public AjaxResult insertSignPatientManageRouteForPatient(SignPatientManageRouteVO signPatientManageRoute) {
|
||||||
// 新增主表
|
// 新增主表
|
||||||
signPatientManageRoute.setTaskCreateType(TaskCreateTypeEnum.MANUAL_CREATE.getInfo());
|
signPatientManageRoute.setTaskCreateType(TaskCreateTypeEnum.MANUAL_CREATE.getInfo());
|
||||||
signPatientManageRoute.setCreateBy(SecurityUtils.getUsername());
|
signPatientManageRoute.setCreateBy(SecurityUtils.getUsername());
|
||||||
signPatientManageRoute.setCreateTime(LocalDateTime.now());
|
signPatientManageRoute.setCreateTime(LocalDateTime.now());
|
||||||
//任务执行类型,批量执行
|
//任务执行类型,批量执行
|
||||||
if(StringUtils.isNotBlank(signPatientManageRoute.getSn()))
|
if (StringUtils.isNotBlank(signPatientManageRoute.getSn())) {
|
||||||
{ signPatientManageRoute.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());}
|
signPatientManageRoute.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
|
||||||
|
}
|
||||||
|
|
||||||
//任务路由主表 新增
|
//任务路由主表 新增
|
||||||
int insertRoute = signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute);
|
int insertRoute = signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute);
|
||||||
if (insertRoute < 0) {
|
if (insertRoute < 0) {
|
||||||
return AjaxResult.error(901,"患者管理任务路径失败!请联系管理员!");//新增签约
|
return AjaxResult.error(901, "患者管理任务路径失败!请联系管理员!");//新增签约
|
||||||
}
|
}
|
||||||
// 新增节点表
|
// 新增节点表
|
||||||
List<SignPatientManageRouteNode> signPatientManageRouteNodes = new ArrayList<>();
|
List<SignPatientManageRouteNode> signPatientManageRouteNodes = new ArrayList<>();
|
||||||
@ -247,21 +243,23 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//任务执行类型,批量执行
|
//任务执行类型,批量执行
|
||||||
if(StringUtils.isNotBlank(signPatientManageRoute.getSn()))
|
if (StringUtils.isNotBlank(signPatientManageRoute.getSn())) {
|
||||||
{ routeNode.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());}
|
routeNode.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
|
||||||
if(Objects.isNull(signPatientManageRoute.getSignPatientRecordId())) {
|
routeNode.setSn(signPatientManageRoute.getSn());
|
||||||
|
}
|
||||||
|
if (Objects.isNull(signPatientManageRoute.getSignPatientRecordId())) {
|
||||||
//更新 审核状态为 已审核,适用场景:对未签约患者 手动创建任务 zyk 20241204
|
//更新 审核状态为 已审核,适用场景:对未签约患者 手动创建任务 zyk 20241204
|
||||||
routeNode.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.getInfo());
|
routeNode.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.getInfo());
|
||||||
}
|
}
|
||||||
extracted(signPatientManageRoute, signPatientManageRouteNodes, routeNode);
|
extracted(signPatientManageRoute, signPatientManageRouteNodes, routeNode);
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isEmpty(signPatientManageRouteNodes)) {
|
if (CollectionUtils.isEmpty(signPatientManageRouteNodes)) {
|
||||||
return AjaxResult.error(901,"创建任务中至少有一个管理任务节点!可能是因为时间或其它属性信息不全导致,请完善后重试。");
|
return AjaxResult.error(901, "创建任务中至少有一个管理任务节点!可能是因为时间或其它属性信息不全导致,请完善后重试。");
|
||||||
}
|
}
|
||||||
//批量插入任务
|
//批量插入任务
|
||||||
int insertBatchCount = signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes);
|
int insertBatchCount = signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes);
|
||||||
if (insertBatchCount < 0) {
|
if (insertBatchCount < 0) {
|
||||||
return AjaxResult.error(901,"新增签约患者管理任务路径失败!请联系管理员!");
|
return AjaxResult.error(901, "新增签约患者管理任务路径失败!请联系管理员!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -274,20 +272,18 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
// else
|
// else
|
||||||
|
|
||||||
//×××××更新 签约记录的 审核状态为 未审核,适用场景:对已签约患者 手动创建任务 zyk 20241204
|
//×××××更新 签约记录的 审核状态为 未审核,适用场景:对已签约患者 手动创建任务 zyk 20241204
|
||||||
if(Objects.nonNull(signPatientManageRoute.getSignPatientRecordId()))
|
if (Objects.nonNull(signPatientManageRoute.getSignPatientRecordId())) {
|
||||||
{
|
|
||||||
signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.UNAUDITED.getInfo());
|
signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.UNAUDITED.getInfo());
|
||||||
signPatientRecord.setId(signPatientManageRoute.getSignPatientRecordId());
|
signPatientRecord.setId(signPatientManageRoute.getSignPatientRecordId());
|
||||||
int updateRecord = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord);
|
int updateRecord = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord);
|
||||||
if (updateRecord < 0) {
|
if (updateRecord < 0) {
|
||||||
return AjaxResult.error(901,"修改签约患者管理任务路径失败!请联系管理员!");
|
return AjaxResult.error(901, "修改签约患者管理任务路径失败!请联系管理员!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//适用场景:对未签约患者 手动创建任务
|
//适用场景:对未签约患者 手动创建任务
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
//获取画像信息
|
//获取画像信息
|
||||||
List<LabelFieldAndPartitionDict> labelFieldAndPartitionDictList = labelFieldContentService.groupingValue(0L,signPatientManageRoute.getPatientId());
|
List<LabelFieldAndPartitionDict> labelFieldAndPartitionDictList = labelFieldContentService.groupingValue(0L, signPatientManageRoute.getPatientId());
|
||||||
// 画像信息保存
|
// 画像信息保存
|
||||||
LabelField labelField = new LabelField();
|
LabelField labelField = new LabelField();
|
||||||
labelField.setLabelFieldAndPartitionDictList(labelFieldAndPartitionDictList);
|
labelField.setLabelFieldAndPartitionDictList(labelFieldAndPartitionDictList);
|
||||||
@ -403,10 +399,9 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
//3.1判断路径节点,组装数据
|
//3.1判断路径节点,组装数据
|
||||||
//任务执行时间,
|
//任务执行时间,
|
||||||
LocalDate localDate = null;
|
LocalDate localDate = null;
|
||||||
if(Objects.nonNull( manualFollowUpVO.getNodePlanTime()) && StringUtils.isNotBlank( manualFollowUpVO.getNodePlanTime().toString())) {
|
if (Objects.nonNull(manualFollowUpVO.getNodePlanTime()) && StringUtils.isNotBlank(manualFollowUpVO.getNodePlanTime().toString())) {
|
||||||
localDate = manualFollowUpVO.getNodePlanTime().toLocalDate();
|
localDate = manualFollowUpVO.getNodePlanTime().toLocalDate();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
//3.2根据出院时间 和 第几天 计算
|
//3.2根据出院时间 和 第几天 计算
|
||||||
if (Objects.nonNull(manualFollowUpVO.getDischargeTime())) {
|
if (Objects.nonNull(manualFollowUpVO.getDischargeTime())) {
|
||||||
localDate = manualFollowUpVO.getDischargeTime().plusDays(manualFollowUpVO.getRouteNodeDay()).toLocalDate();
|
localDate = manualFollowUpVO.getDischargeTime().plusDays(manualFollowUpVO.getRouteNodeDay()).toLocalDate();
|
||||||
@ -436,13 +431,14 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @return 结果
|
||||||
* @description 随访待办列表-创建实时呼叫任务
|
* @description 随访待办列表-创建实时呼叫任务
|
||||||
* @Param createAiboActualTimeTaskDto 创建百度外呼实时任务传输对象
|
* @Param createAiboActualTimeTaskDto 创建百度外呼实时任务传输对象
|
||||||
* @return 结果
|
|
||||||
* @Author haown
|
* @Author haown
|
||||||
* @Date 2024-11-4 16:06
|
* @Date 2024-11-4 16:06
|
||||||
*/
|
*/
|
||||||
@Override public Long createActualTimeTask(CreateAiobActualTimeTaskDto createAiboActualTimeTaskDto) {
|
@Override
|
||||||
|
public Long createActualTimeTask(CreateAiobActualTimeTaskDto createAiboActualTimeTaskDto) {
|
||||||
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(createAiboActualTimeTaskDto.getScriptInfoId());
|
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(createAiboActualTimeTaskDto.getScriptInfoId());
|
||||||
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(createAiboActualTimeTaskDto.getManageRouteId());
|
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(createAiboActualTimeTaskDto.getManageRouteId());
|
||||||
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(signPatientManageRoute.getPatientId());
|
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(signPatientManageRoute.getPatientId());
|
||||||
@ -466,7 +462,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
}
|
}
|
||||||
actualTimeTaskDto.setDialogVar(jsonObject);
|
actualTimeTaskDto.setDialogVar(jsonObject);
|
||||||
actualTimeTaskDto.setCallBackUrl(callBackUrl);
|
actualTimeTaskDto.setCallBackUrl(callBackUrl);
|
||||||
actualTimeTaskDto.setExtJson(createAiboActualTimeTaskDto.getSignPatientManageRouteNodeId()+ "");
|
actualTimeTaskDto.setExtJson(createAiboActualTimeTaskDto.getSignPatientManageRouteNodeId() + "");
|
||||||
return aiobService.createActualTimeTask(actualTimeTaskDto);
|
return aiobService.createActualTimeTask(actualTimeTaskDto);
|
||||||
}
|
}
|
||||||
return 0L;
|
return 0L;
|
||||||
@ -1095,8 +1091,11 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
|||||||
private void extracted(SignPatientManageRouteVO signPatientManageRoute, List<SignPatientManageRouteNode> signPatientManageRouteNodes, SignPatientManageRouteNode routeNode) {
|
private void extracted(SignPatientManageRouteVO signPatientManageRoute, List<SignPatientManageRouteNode> signPatientManageRouteNodes, SignPatientManageRouteNode routeNode) {
|
||||||
SignPatientManageRouteNode signPatientManageRouteNode = new SignPatientManageRouteNode();
|
SignPatientManageRouteNode signPatientManageRouteNode = new SignPatientManageRouteNode();
|
||||||
//如果 导入患者主表id不为空,则认为此任务是批量执行类型
|
//如果 导入患者主表id不为空,则认为此任务是批量执行类型
|
||||||
if(StringUtils.isNotBlank(signPatientManageRoute.getSn()))
|
if (StringUtils.isNotBlank(signPatientManageRoute.getSn())) {
|
||||||
signPatientManageRouteNode.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
|
signPatientManageRouteNode.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
|
||||||
|
signPatientManageRouteNode.setSn(signPatientManageRoute.getSn());
|
||||||
|
|
||||||
|
}
|
||||||
else
|
else
|
||||||
signPatientManageRouteNode.setTaskExcuteType(TaskExcuteTypeEnum.ACTUAL_TIME_TASK.getInfo());
|
signPatientManageRouteNode.setTaskExcuteType(TaskExcuteTypeEnum.ACTUAL_TIME_TASK.getInfo());
|
||||||
signPatientManageRouteNode.setNodePlanTime(routeNode.getNodePlanTime());
|
signPatientManageRouteNode.setNodePlanTime(routeNode.getNodePlanTime());
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
<result property="taskId" column="task_id"/>
|
<result property="taskId" column="task_id"/>
|
||||||
<result property="signPatientManageRouteNodeId" column="sign_patient_manage_route_node_id"/>
|
<result property="signPatientManageRouteNodeId" column="sign_patient_manage_route_node_id"/>
|
||||||
<result property="signPatientManageRouteId" column="sign_patient_manage_route_id"/>
|
<result property="signPatientManageRouteId" column="sign_patient_manage_route_id"/>
|
||||||
|
<result property="sn" column="sn"/>
|
||||||
<result property="executeTime" column="execute_time"/>
|
<result property="executeTime" column="execute_time"/>
|
||||||
<result property="aiobTaskType" column="aiob_task_type"/>
|
<result property="aiobTaskType" column="aiob_task_type"/>
|
||||||
<result property="executeStatus" column="execute_status"/>
|
<result property="executeStatus" column="execute_status"/>
|
||||||
@ -37,6 +38,9 @@
|
|||||||
<if test="signPatientManageRouteNodeId!=null">
|
<if test="signPatientManageRouteNodeId!=null">
|
||||||
AND sign_patient_manage_route_node_id = #{signPatientManageRouteNodeId}
|
AND sign_patient_manage_route_node_id = #{signPatientManageRouteNodeId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="sn!=null">
|
||||||
|
AND sn = #{sn}
|
||||||
|
</if>
|
||||||
<if test="signPatientManageRouteId!=null">
|
<if test="signPatientManageRouteId!=null">
|
||||||
AND sign_patient_manage_route_id = #{signPatientManageRouteId}
|
AND sign_patient_manage_route_id = #{signPatientManageRouteId}
|
||||||
</if>
|
</if>
|
||||||
@ -74,6 +78,8 @@
|
|||||||
</if>
|
</if>
|
||||||
<if test="signPatientManageRouteId != null">sign_patient_manage_route_id,
|
<if test="signPatientManageRouteId != null">sign_patient_manage_route_id,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="sn != null">sn,
|
||||||
|
</if>
|
||||||
<if test="executeTime != null">execute_time,
|
<if test="executeTime != null">execute_time,
|
||||||
</if>
|
</if>
|
||||||
<if test="aiobTaskType != null">aiob_task_type,
|
<if test="aiobTaskType != null">aiob_task_type,
|
||||||
@ -93,6 +99,8 @@
|
|||||||
<if test="signPatientManageRouteNodeId != null">#{signPatientManageRouteNodeId},
|
<if test="signPatientManageRouteNodeId != null">#{signPatientManageRouteNodeId},
|
||||||
</if>
|
</if>
|
||||||
<if test="signPatientManageRouteId != null">#{signPatientManageRouteId},
|
<if test="signPatientManageRouteId != null">#{signPatientManageRouteId},
|
||||||
|
</if>
|
||||||
|
<if test="sn != null">#{sn},
|
||||||
</if>
|
</if>
|
||||||
<if test="executeTime != null">#{executeTime},
|
<if test="executeTime != null">#{executeTime},
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@ -84,10 +84,11 @@
|
|||||||
<result property="nodeFinishDate" column="node_finish_date"/>
|
<result property="nodeFinishDate" column="node_finish_date"/>
|
||||||
<result property="taskIdExt" column="task_id_ext"/>
|
<result property="taskIdExt" column="task_id_ext"/>
|
||||||
<result property="dialStatus" column="dial_status"/>
|
<result property="dialStatus" column="dial_status"/>
|
||||||
|
<result property="sn" column="sn"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectSignPatientManageRouteNodeVo">
|
<sql id="selectSignPatientManageRouteNodeVo">
|
||||||
select id, manage_route_id, manage_route_name, route_node_id, route_node_name, route_node_day, task_excute_type,node_plan_time,task_type, task_status, task_subdivision, task_node_type, second_classify_describe, execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content,phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id, phone_message_template_name,phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign, message_template_id, message_template_code, message_template_name, message_preview, message_node_content, official_push_sign, official_template_id, official_template_code, official_template_name, official_remind_content, official_node_content, follow_template_id, follow_template_name, applet_push_sign, applet_template_id, applet_template_code, applet_template_name, applet_remind_content, applet_prompt_description, applet_node_content, route_check_status, route_check_person, route_check_date, route_check_remark, route_node_remark, node_execute_status, route_handle_remark, route_handle_id, route_handle_person, route_link,text_remind_content, node_content,message_status, del_flag, create_by, create_time, update_by, update_time, phone_dial_method, phone_node_execute_result_status, message_node_execute_result_status, official_node_execute_result_status, applet_node_execute_result_status, node_finish_date, task_id_ext,dial_status from sign_patient_manage_route_node
|
select id, manage_route_id, manage_route_name, route_node_id, route_node_name, route_node_day, task_excute_type,node_plan_time,task_type, task_status, task_subdivision, task_node_type, second_classify_describe, execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content,phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id, phone_message_template_name,phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign, message_template_id, message_template_code, message_template_name, message_preview, message_node_content, official_push_sign, official_template_id, official_template_code, official_template_name, official_remind_content, official_node_content, follow_template_id, follow_template_name, applet_push_sign, applet_template_id, applet_template_code, applet_template_name, applet_remind_content, applet_prompt_description, applet_node_content, route_check_status, route_check_person, route_check_date, route_check_remark, route_node_remark, node_execute_status, route_handle_remark, route_handle_id, route_handle_person, route_link,text_remind_content, node_content,message_status, del_flag, create_by, create_time, update_by, update_time, phone_dial_method, phone_node_execute_result_status, message_node_execute_result_status, official_node_execute_result_status, applet_node_execute_result_status, node_finish_date, task_id_ext,dial_status,sn from sign_patient_manage_route_node
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectSignPatientManageRouteNodeList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto" resultMap="SignPatientManageRouteNodeResult">
|
<select id="selectSignPatientManageRouteNodeList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto" resultMap="SignPatientManageRouteNodeResult">
|
||||||
@ -536,7 +537,7 @@
|
|||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="insertBatch">
|
<insert id="insertBatch">
|
||||||
insert into sign_patient_manage_route_node(manage_route_id, manage_route_name, route_node_id, route_node_name, route_node_day,task_excute_type,node_plan_time, task_type, task_status, task_subdivision, task_node_type, second_classify_describe,
|
insert into sign_patient_manage_route_node(manage_route_id, manage_route_name, route_node_id, route_node_name, route_node_day,sn,task_excute_type,node_plan_time, task_type, task_status, task_subdivision, task_node_type, second_classify_describe,
|
||||||
execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content, phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id,
|
execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content, phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id,
|
||||||
phone_message_template_name, phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign,
|
phone_message_template_name, phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign,
|
||||||
message_template_id, message_template_code, message_template_name, message_preview, message_node_content, official_push_sign, official_template_id, official_template_code,official_template_name, official_remind_content,
|
message_template_id, message_template_code, message_template_name, message_preview, message_node_content, official_push_sign, official_template_id, official_template_code,official_template_name, official_remind_content,
|
||||||
@ -545,7 +546,7 @@
|
|||||||
route_handle_id, route_handle_person, route_link, text_remind_content,node_content, del_flag, create_by, create_time, update_by, update_time,phone_dial_method,follow_template_id, follow_template_name, task_id_ext)
|
route_handle_id, route_handle_person, route_link, text_remind_content,node_content, del_flag, create_by, create_time, update_by, update_time,phone_dial_method,follow_template_id, follow_template_name, task_id_ext)
|
||||||
values
|
values
|
||||||
<foreach collection="nodeList" item="item" separator=",">
|
<foreach collection="nodeList" item="item" separator=",">
|
||||||
(#{item.manageRouteId},#{item.manageRouteName},#{item.routeNodeId},#{item.routeNodeName},#{item.routeNodeDay},#{item.taskExcuteType},#{item.nodePlanTime},#{item.taskType},#{item.taskStatus},#{item.taskSubdivision},#{item.taskNodeType},#{item.secondClassifyDescribe},
|
(#{item.manageRouteId},#{item.manageRouteName},#{item.routeNodeId},#{item.routeNodeName},#{item.routeNodeDay},#{item.sn},#{item.taskExcuteType},#{item.nodePlanTime},#{item.taskType},#{item.taskStatus},#{item.taskSubdivision},#{item.taskNodeType},#{item.secondClassifyDescribe},
|
||||||
#{item.executeTime},#{item.phonePushSign},#{item.scriptInfoId},#{item.robotPublishId},#{item.phoneTemplateId},#{item.phoneTemplateName},#{item.phoneNodeContent},#{item.phoneResultJson},#{item.phoneRedialTimes},#{item.phoneTimeInterval},#{item.phoneMessageRemind},#{item.phoneMessageTemplateId},
|
#{item.executeTime},#{item.phonePushSign},#{item.scriptInfoId},#{item.robotPublishId},#{item.phoneTemplateId},#{item.phoneTemplateName},#{item.phoneNodeContent},#{item.phoneResultJson},#{item.phoneRedialTimes},#{item.phoneTimeInterval},#{item.phoneMessageRemind},#{item.phoneMessageTemplateId},
|
||||||
#{item.phoneMessageTemplateName},#{item.phoneMessageTemplateContent},
|
#{item.phoneMessageTemplateName},#{item.phoneMessageTemplateContent},
|
||||||
#{item.questionInfoId},#{item.questionnaireName},#{item.questionnaireContent},#{item.questionExpirationDate},#{item.propagandaInfoId},#{item.propagandaTitle},#{item.propagandaContent},#{item.messagePushSign},
|
#{item.questionInfoId},#{item.questionnaireName},#{item.questionnaireContent},#{item.questionExpirationDate},#{item.propagandaInfoId},#{item.propagandaTitle},#{item.propagandaContent},#{item.messagePushSign},
|
||||||
@ -819,9 +820,11 @@
|
|||||||
where manage_route_id = #{manageRouteId}
|
where manage_route_id = #{manageRouteId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateDialStatusByManageRouteId" parameterType="SignPatientManageRouteNode">
|
<update id="updateDialStatus" parameterType="SignPatientManageRouteNode">
|
||||||
update sign_patient_manage_route_node set dial_status = #{dialStatus}
|
update sign_patient_manage_route_node set dial_status = #{dialStatus}
|
||||||
where manage_route_id = #{manageRouteId}
|
where
|
||||||
|
sn = #{sn}
|
||||||
|
and script_info_id = #{scriptInfoId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateDialStatusByNodeId" parameterType="SignPatientManageRouteNode">
|
<update id="updateDialStatusByNodeId" parameterType="SignPatientManageRouteNode">
|
||||||
|
|||||||
@ -38,7 +38,6 @@ import javax.annotation.Resource;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.collections4.MapUtils;
|
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -97,6 +96,7 @@ public class UploadRobotPublishTask {
|
|||||||
|
|
||||||
List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>();
|
List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>();
|
||||||
nodeList.forEach(node -> {
|
nodeList.forEach(node -> {
|
||||||
|
|
||||||
LocalDateTime executeTime;
|
LocalDateTime executeTime;
|
||||||
if (Objects.nonNull(node.getNodePlanTime()) && org.apache.commons.lang3.StringUtils.isNotBlank(node.getNodePlanTime().toString())) {
|
if (Objects.nonNull(node.getNodePlanTime()) && org.apache.commons.lang3.StringUtils.isNotBlank(node.getNodePlanTime().toString())) {
|
||||||
executeTime = node.getNodePlanTime();
|
executeTime = node.getNodePlanTime();
|
||||||
@ -106,51 +106,58 @@ public class UploadRobotPublishTask {
|
|||||||
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
|
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
|
||||||
executeTime = signPatientManageRouteNodeService.getExecuteTime(node.getExecuteTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord);
|
executeTime = signPatientManageRouteNodeService.getExecuteTime(node.getExecuteTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord);
|
||||||
}
|
}
|
||||||
if (node.getScriptInfoId() != null && (executeTime.toLocalDate().isBefore(LocalDate.now()) || executeTime.toLocalDate().isEqual(LocalDate.now()))) {
|
//只处理 流水号不为空的
|
||||||
|
if (node.getSn() != null &&
|
||||||
|
node.getScriptInfoId() != null && (executeTime.toLocalDate().isBefore(LocalDate.now()) || executeTime.toLocalDate().isEqual(LocalDate.now()))) {
|
||||||
executeNodeList.add(node);
|
executeNodeList.add(node);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (executeNodeList.isEmpty()) return;
|
if (executeNodeList.isEmpty()) return;
|
||||||
|
|
||||||
//1、最外层,按照路径ID分组
|
//1、最外层,按照导入流水号分组
|
||||||
Map<Long, List<SignPatientManageRouteNode>> routeNodeGroupListByRouteId =
|
Map<String, List<SignPatientManageRouteNode>> routeNodeGroupListBySn =
|
||||||
executeNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getManageRouteId));
|
executeNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getSn));
|
||||||
|
|
||||||
//开始遍历
|
// 开始遍历
|
||||||
routeNodeGroupListByRouteId.keySet().forEach(routeId -> {
|
routeNodeGroupListBySn.keySet().forEach(sn -> {
|
||||||
//2、次外层,按照话术ID分组
|
//2、次外层,按照话术ID分组
|
||||||
Map<Long, List<SignPatientManageRouteNode>> routeNodeGroupListByScriptInfoId =
|
Map<Long, List<SignPatientManageRouteNode>> routeNodeGroupListByScriptInfoId =
|
||||||
executeNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getScriptInfoId));
|
routeNodeGroupListBySn.get(sn).stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getScriptInfoId));
|
||||||
//开始遍历,生成任务
|
//开始遍历,生成任务
|
||||||
routeNodeGroupListByScriptInfoId.keySet().forEach(scriptInfoId -> {
|
routeNodeGroupListByScriptInfoId.keySet().forEach(scriptInfoId -> {
|
||||||
// 同一分组下的任务节点,配置属性 应该是 是相同的,所以取第0项节点 来使用
|
// 同一分组下的任务节点,配置属性 应该是 是相同的,所以取第0项节点 来使用
|
||||||
SignPatientManageRouteNode nodeTemp = routeNodeGroupListByScriptInfoId.get(scriptInfoId).get(0);
|
SignPatientManageRouteNode nodeFirstTemp = routeNodeGroupListByScriptInfoId.get(scriptInfoId).get(0);
|
||||||
//话术
|
//话术
|
||||||
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(scriptInfoId);
|
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(scriptInfoId);
|
||||||
//拼接一个taskId,(格式:NodeId_ScriptInfoId_ManageRouteId,不用了)
|
//拼接一个taskId,(格式:NodeId_ScriptInfoId_ManageRouteId,不用了)
|
||||||
// String taskId = scriptInfoTaskInfoMapper.getByNodeId(Long.toString(nodeTemp.getId()).concat("_")
|
// String taskId = scriptInfoTaskInfoMapper.getByNodeId(Long.toString(nodeFirstTemp.getId()).concat("_")
|
||||||
// .concat(Long.toString(nodeTemp.getManageRouteId())).concat("_")
|
// .concat(Long.toString(nodeFirstTemp.getManageRouteId())).concat("_")
|
||||||
// .concat(String.valueOf(nodeTemp.getScriptInfoId()))
|
// .concat(String.valueOf(nodeFirstTemp.getScriptInfoId()))
|
||||||
// , AiobTaskTypeContant.BATCHTASK);
|
// , AiobTaskTypeContant.BATCHTASK);
|
||||||
ScriptInfoTaskInfo scriptInfoTaskInfoQuery = new ScriptInfoTaskInfo();
|
ScriptInfoTaskInfo scriptInfoTaskInfoQuery = new ScriptInfoTaskInfo();
|
||||||
scriptInfoTaskInfoQuery.setSignPatientManageRouteId(nodeTemp.getManageRouteId());
|
//同一流水号sn下所有任务id相同,所以以第一个节点的属性作为查询条件即可。
|
||||||
scriptInfoTaskInfoQuery.setScriptInfoId(nodeTemp.getScriptInfoId());
|
// scriptInfoTaskInfoQuery.setSignPatientManageRouteId(nodeFirstTemp.getManageRouteId());
|
||||||
scriptInfoTaskInfoQuery.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
|
// scriptInfoTaskInfoQuery.setScriptInfoId(nodeFirstTemp.getScriptInfoId());
|
||||||
|
// scriptInfoTaskInfoQuery.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
|
||||||
|
scriptInfoTaskInfoQuery.setSn(sn);
|
||||||
String taskId = scriptInfoTaskInfoMapper.getByNodeId(scriptInfoTaskInfoQuery);
|
String taskId = scriptInfoTaskInfoMapper.getByNodeId(scriptInfoTaskInfoQuery);
|
||||||
if (StringUtils.isBlank(taskId)) {
|
if (StringUtils.isBlank(taskId)) {
|
||||||
// 没有任务则创建任务
|
// 没有任务则创建任务
|
||||||
if (ObjectUtils.isNotEmpty(scriptInfo)) {
|
if (ObjectUtils.isNotEmpty(scriptInfo)) {
|
||||||
log.info("创建任务......");
|
log.info("创建任务......");
|
||||||
CreateTaskDto createTaskDto = new CreateTaskDto();
|
CreateTaskDto createTaskDto = new CreateTaskDto();
|
||||||
|
|
||||||
//临时重复测试用,
|
//临时重复测试用,
|
||||||
createTaskDto.setTaskName(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + scriptInfo.getScriptName() + "(" + nodeTemp.getManageRouteId() + ")");
|
String taskName = "T_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + scriptInfo.getScriptName() + "(" + sn + ")";
|
||||||
// createTaskDto.setTaskName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + scriptInfo.getScriptName() + "(" + nodeTemp.getManageRouteId() + ")");
|
log.info("任务名称:" + taskName);
|
||||||
|
createTaskDto.setTaskName(taskName);
|
||||||
|
// createTaskDto.setTaskName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + scriptInfo.getScriptName() + "(" + nodeFirstTemp.getManageRouteId() + ")");
|
||||||
createTaskDto.setRobotId(scriptInfo.getRobotPublishId());
|
createTaskDto.setRobotId(scriptInfo.getRobotPublishId());
|
||||||
createTaskDto.setDialStartDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
createTaskDto.setDialStartDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
createTaskDto.setDialEndDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
createTaskDto.setDialEndDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
createTaskDto.setForbidDialDate(Arrays.asList(99));
|
createTaskDto.setForbidDialDate(Arrays.asList(99));
|
||||||
createTaskDto.setRetryTimes(StringUtils.isBlank(nodeTemp.getPhoneRedialTimes()) ? 0 : PhoneRedialTimesEnum.getValueByInfo(nodeTemp.getPhoneRedialTimes()).getValue());
|
createTaskDto.setRetryTimes(StringUtils.isBlank(nodeFirstTemp.getPhoneRedialTimes()) ? 0 : PhoneRedialTimesEnum.getValueByInfo(nodeFirstTemp.getPhoneRedialTimes()).getValue());
|
||||||
createTaskDto.setRetryInterval(nodeTemp.getPhoneTimeInterval());
|
createTaskDto.setRetryInterval(nodeFirstTemp.getPhoneTimeInterval());
|
||||||
createTaskDto.setNumTypeFilterList(Arrays.asList(1, 2));
|
createTaskDto.setNumTypeFilterList(Arrays.asList(1, 2));
|
||||||
createTaskDto.setTaskDataCallback(true);
|
createTaskDto.setTaskDataCallback(true);
|
||||||
createTaskDto.setCallBackUrl(callBackUrl);
|
createTaskDto.setCallBackUrl(callBackUrl);
|
||||||
@ -159,18 +166,23 @@ public class UploadRobotPublishTask {
|
|||||||
log.info("开启任务......");
|
log.info("开启任务......");
|
||||||
aiobService.updateTaskStatus(taskId, 2);
|
aiobService.updateTaskStatus(taskId, 2);
|
||||||
|
|
||||||
|
String finalTaskId1 = taskId;
|
||||||
|
routeNodeGroupListByScriptInfoId.get(scriptInfoId).forEach(nodeForTask -> {
|
||||||
ScriptInfoTaskInfo scriptInfoTaskInfo = new ScriptInfoTaskInfo();
|
ScriptInfoTaskInfo scriptInfoTaskInfo = new ScriptInfoTaskInfo();
|
||||||
scriptInfoTaskInfo.setScriptInfoId(nodeTemp.getScriptInfoId());
|
scriptInfoTaskInfo.setScriptInfoId(scriptInfoId);
|
||||||
scriptInfoTaskInfo.setTaskId(taskId);
|
scriptInfoTaskInfo.setTaskId(finalTaskId1);
|
||||||
scriptInfoTaskInfo.setRobotId(scriptInfo.getRobotPublishId());
|
scriptInfoTaskInfo.setRobotId(scriptInfo.getRobotPublishId());
|
||||||
scriptInfoTaskInfo.setCreateTime(LocalDateTime.now());
|
scriptInfoTaskInfo.setCreateTime(LocalDateTime.now());
|
||||||
// scriptInfoTaskInfo.setSignPatientManageRouteNodeId(nodeTemp.getId());
|
scriptInfoTaskInfo.setSn(sn);
|
||||||
scriptInfoTaskInfo.setSignPatientManageRouteId(nodeTemp.getManageRouteId());
|
scriptInfoTaskInfo.setSignPatientManageRouteNodeId(nodeForTask.getId());
|
||||||
|
scriptInfoTaskInfo.setSignPatientManageRouteId(nodeForTask.getManageRouteId());
|
||||||
scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
|
scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
|
||||||
//进入拔打记录表(用于后续重拨处理等判断)
|
//进入拔打记录表(用于后续重拨处理等判断)----有时间再优化为批量插入
|
||||||
scriptInfoTaskInfoMapper.insertScriptInfoTaskInfo(scriptInfoTaskInfo);
|
scriptInfoTaskInfoMapper.insertScriptInfoTaskInfo(scriptInfoTaskInfo);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
//3、开始组装本任务下的客户变量
|
//3、开始组装本任务下的客户变量
|
||||||
// 客户名单list
|
// 客户名单list
|
||||||
List<CustomerInfoDto> customerInfoList = new ArrayList<>();
|
List<CustomerInfoDto> customerInfoList = new ArrayList<>();
|
||||||
@ -206,9 +218,11 @@ public class UploadRobotPublishTask {
|
|||||||
|
|
||||||
//设置拨打状态
|
//设置拨打状态
|
||||||
SignPatientManageRouteNode signPatientManageRouteNode_DialStatus = new SignPatientManageRouteNode();
|
SignPatientManageRouteNode signPatientManageRouteNode_DialStatus = new SignPatientManageRouteNode();
|
||||||
signPatientManageRouteNode_DialStatus.setManageRouteId(routeId);
|
// signPatientManageRouteNode_DialStatus.setManageRouteId(routeId);
|
||||||
|
signPatientManageRouteNode_DialStatus.setSn(sn);
|
||||||
|
signPatientManageRouteNode_DialStatus.setScriptInfoId(scriptInfoId);
|
||||||
signPatientManageRouteNode_DialStatus.setDialStatus(DialStatusEnum.DIALED.getInfo());
|
signPatientManageRouteNode_DialStatus.setDialStatus(DialStatusEnum.DIALED.getInfo());
|
||||||
signPatientManageRouteNodeMapper.updateDialStatusByManageRouteId(signPatientManageRouteNode_DialStatus);
|
signPatientManageRouteNodeMapper.updateDialStatus(signPatientManageRouteNode_DialStatus);
|
||||||
|
|
||||||
String finalTaskId = taskId;
|
String finalTaskId = taskId;
|
||||||
importTaskList.forEach(importTaskVo -> {
|
importTaskList.forEach(importTaskVo -> {
|
||||||
@ -326,7 +340,6 @@ public class UploadRobotPublishTask {
|
|||||||
signPatientManageRouteNodeMapper.updateDialStatusByNodeId(signPatientManageRouteNode_DialStatus);
|
signPatientManageRouteNodeMapper.updateDialStatusByNodeId(signPatientManageRouteNode_DialStatus);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user