为了兼容诊后导入患者,未签约情况,话务外呼代码重构

This commit is contained in:
zhuangyuanke 2024-12-12 17:39:56 +08:00
parent 254839b2fd
commit 368978460b
9 changed files with 246 additions and 149 deletions

View File

@ -39,6 +39,11 @@ public class ScriptInfoTaskInfo {
*/ */
private String taskId; private String taskId;
/**
* 管理路径Id
*/
private Long signPatientManageRouteId;
/** /**
* 任务Id * 任务Id
*/ */

View File

@ -422,4 +422,7 @@ public class SignPatientManageRouteNode extends BaseEntity {
@ApiModelProperty(value = "第三方返回的任务ID") @ApiModelProperty(value = "第三方返回的任务ID")
private String taskIdExt; private String taskIdExt;
@ApiModelProperty(value = "拨打状态DIALED,已拨打NODIALED:未拨打默认NULL表示未拨打")
private String dialStatus;
} }

View File

@ -85,7 +85,7 @@ public class SignPatientManageRouteNodeDto {
* 拨打状态DIALED,已拨打NODIALED:未拨打默认NULL表示未拨打 * 拨打状态DIALED,已拨打NODIALED:未拨打默认NULL表示未拨打
*/ */
@ApiModelProperty(value = "拨打状态DIALED,已拨打NODIALED:未拨打默认NULL表示未拨打") @ApiModelProperty(value = "拨打状态DIALED,已拨打NODIALED:未拨打默认NULL表示未拨打")
private String dialStaus; private String dialStatus;

View File

@ -1,6 +1,8 @@
package com.xinelu.manage.mapper.scriptinfotaskinfo; package com.xinelu.manage.mapper.scriptinfotaskinfo;
import com.xinelu.manage.domain.scriptinfotaskinfo.ScriptInfoTaskInfo; import com.xinelu.manage.domain.scriptinfotaskinfo.ScriptInfoTaskInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
@ -11,7 +13,9 @@ import java.util.List;
*/ */
public interface ScriptInfoTaskInfoMapper { public interface ScriptInfoTaskInfoMapper {
String getByNodeId(String signPatientManageRouteNodeId, String aiobTaskType); // String getByNodeId(@Param("signPatientManageRouteNodeId") long signPatientManageRouteNodeId, @Param("aiobTaskType") String aiobTaskType);
String getByNodeId(ScriptInfoTaskInfo scriptInfoTaskInfo);
List<ScriptInfoTaskInfo> selectList(ScriptInfoTaskInfo scriptInfoTaskInfo); List<ScriptInfoTaskInfo> selectList(ScriptInfoTaskInfo scriptInfoTaskInfo);

View File

@ -88,6 +88,20 @@ public interface SignPatientManageRouteNodeMapper {
*/ */
int deleteRouteNodeByManageRouteId(Long manageRouteId); int deleteRouteNodeByManageRouteId(Long manageRouteId);
/**
* 根据ManageRouteId 修改 拔打状态
* @param signPatientManageRouteNode
* @return
*/
int updateDialStatusByManageRouteId(SignPatientManageRouteNode signPatientManageRouteNode);
/**
* 修改 拔打状态
* @param signPatientManageRouteNode
* @return
*/
int updateDialStatusByNodeId(SignPatientManageRouteNode signPatientManageRouteNode);
/** /**
* 查询患者任务列表 * 查询患者任务列表
* *

View File

@ -14,9 +14,12 @@ import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRout
import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper;
import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService;
import com.xinelu.manage.vo.patientinfo.PatientNextTaskVo; import com.xinelu.manage.vo.patientinfo.PatientNextTaskVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Objects;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -106,16 +109,27 @@ public class PatientTaskStatisticsServiceImpl implements IPatientTaskStatisticsS
return patientTaskStatisticsMapper.deletePatientTaskStatisticsByPatientId(signPatientRecordId); return patientTaskStatisticsMapper.deletePatientTaskStatisticsByPatientId(signPatientRecordId);
} }
@Override public int insertOrUpdate(PatientTaskStatistics patientTaskStatistics) { @Override
public int insertOrUpdate(PatientTaskStatistics patientTaskStatistics) {
int flag = 0; int flag = 0;
String serviceStatus = "";
String routeCheckStatus = "";
//如果有签约id则获取相关状态否则统计表不再记录 签约相关属性 20241212 zyk
if (Objects.nonNull(patientTaskStatistics.getSignPatientRecordId())) {
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(patientTaskStatistics.getSignPatientRecordId()); SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(patientTaskStatistics.getSignPatientRecordId());
if (ObjectUtils.isNotEmpty(signPatientRecord)) { if (ObjectUtils.isNotEmpty(signPatientRecord)) {
serviceStatus = signPatientRecord.getServiceStatus();
routeCheckStatus = signPatientRecord.getRouteCheckStatus();
}
}
PatientTaskStatistics patientTask = patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientTaskStatistics.getPatientId()); PatientTaskStatistics patientTask = patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientTaskStatistics.getPatientId());
if (ObjectUtils.isEmpty(patientTask)) { if (ObjectUtils.isEmpty(patientTask)) {
// 插入数据 // 插入数据
flag = patientTaskStatisticsMapper.insertPatientTaskStatistics(patientTaskStatistics); flag = patientTaskStatisticsMapper.insertPatientTaskStatistics(patientTaskStatistics);
// 查询最新的任务 // 查询最新的任务
PatientNextTaskVo patientNextTaskVo = patientTaskStatisticsMapper.getPatientNextTask(signPatientRecord.getPatientId()); PatientNextTaskVo patientNextTaskVo = patientTaskStatisticsMapper.getPatientNextTask(patientTaskStatistics.getPatientId());
if (ObjectUtils.isNotEmpty(patientNextTaskVo)) { if (ObjectUtils.isNotEmpty(patientNextTaskVo)) {
patientTaskStatistics.setNextTaskName(patientNextTaskVo.getTaskName()); patientTaskStatistics.setNextTaskName(patientNextTaskVo.getTaskName());
patientTaskStatistics.setNextTaskTime(patientNextTaskVo.getExecuteDateTime()); patientTaskStatistics.setNextTaskTime(patientNextTaskVo.getExecuteDateTime());
@ -123,30 +137,29 @@ public class PatientTaskStatisticsServiceImpl implements IPatientTaskStatisticsS
} }
} else { } else {
// 修改数据 // 修改数据
patientTask.setServiceStatus(signPatientRecord.getServiceStatus()); patientTask.setServiceStatus(serviceStatus);
patientTask.setRouteCheckStatus(signPatientRecord.getRouteCheckStatus()); patientTask.setRouteCheckStatus(routeCheckStatus);
patientTask.setTaskNum(patientTask.getTaskNum().add(patientTaskStatistics.getTaskNum())); patientTask.setTaskNum(patientTask.getTaskNum().add(patientTaskStatistics.getTaskNum()));
patientTask.setTaskExecuteNum(patientTask.getTaskExecuteNum().add(patientTaskStatistics.getTaskExecuteNum())); patientTask.setTaskExecuteNum(patientTask.getTaskExecuteNum().add(patientTaskStatistics.getTaskExecuteNum()));
patientTask.setTaskFinishNum(patientTask.getTaskFinishNum().add(patientTaskStatistics.getTaskFinishNum())); patientTask.setTaskFinishNum(patientTask.getTaskFinishNum().add(patientTaskStatistics.getTaskFinishNum()));
// 查询最新的任务 // 查询最新的任务
PatientNextTaskVo patientNextTaskVo = patientTaskStatisticsMapper.getPatientNextTask(signPatientRecord.getPatientId()); PatientNextTaskVo patientNextTaskVo = patientTaskStatisticsMapper.getPatientNextTask(patientTaskStatistics.getPatientId());
if (ObjectUtils.isNotEmpty(patientNextTaskVo)) { if (ObjectUtils.isNotEmpty(patientNextTaskVo)) {
patientTask.setNextTaskName(patientNextTaskVo.getTaskName()); patientTask.setNextTaskName(patientNextTaskVo.getTaskName());
patientTask.setNextTaskTime(patientNextTaskVo.getExecuteDateTime()); patientTask.setNextTaskTime(patientNextTaskVo.getExecuteDateTime());
} }
flag = patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTask); flag = patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTask);
} }
}
return flag; return flag;
} }
/** /**
* @description 修改任务总数执行数完成数
* @param patientId 签约记录主键 * @param patientId 签约记录主键
* @param type 字段种类TASK_NUM任务总数TASK_EXECUTE_NUM: 任务执行数TASK_FINISH_NUM任务完成数 * @param type 字段种类TASK_NUM任务总数TASK_EXECUTE_NUM: 任务执行数TASK_FINISH_NUM任务完成数
* @param count 数量 * @param count 数量
* @return 结果 * @return 结果
* @description 修改任务总数执行数完成数
* @Author haown * @Author haown
* @Date 2024-08-09 17:43 * @Date 2024-08-09 17:43
*/ */
@ -154,7 +167,9 @@ public class PatientTaskStatisticsServiceImpl implements IPatientTaskStatisticsS
public int updateNum(Long patientId, String type, Integer count) { public int updateNum(Long patientId, String type, Integer count) {
PatientTaskStatistics patientTaskStatistics = patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientId); PatientTaskStatistics patientTaskStatistics = patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientId);
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId); PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId);
if (ObjectUtils.isNotEmpty(patientInfo) && StringUtils.equals(SignRecordServiceStatusConstants.SERVICE_CENTER, patientInfo.getServiceStatus())) { // if (ObjectUtils.isNotEmpty(patientInfo) && StringUtils.equals(SignRecordServiceStatusConstants.SERVICE_CENTER, patientInfo.getServiceStatus()))
// 针对 导入用户未签约的情况不再判断签约服务状态SignRecordServiceStatusConstants.SERVICE_CENTER
if (ObjectUtils.isNotEmpty(patientInfo)) {
PatientTaskStatistics patientTaskStatisticsView = patientTaskStatisticsMapper.selectNum(patientId); PatientTaskStatistics patientTaskStatisticsView = patientTaskStatisticsMapper.selectNum(patientId);
switch (type) { switch (type) {
case TaskStatisticsTypeConstants.TASK_NUM: case TaskStatisticsTypeConstants.TASK_NUM:
@ -188,7 +203,8 @@ public class PatientTaskStatisticsServiceImpl implements IPatientTaskStatisticsS
return patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTaskStatistics); return patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTaskStatistics);
} }
@Override public int updateNumByManageRouteNodeId(Long manageRouteNodeId, String type, Integer count) { @Override
public int updateNumByManageRouteNodeId(Long manageRouteNodeId, String type, Integer count) {
SignPatientManageRouteNode signPatientManageRouteNode = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeById(manageRouteNodeId); SignPatientManageRouteNode signPatientManageRouteNode = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeById(manageRouteNodeId);
if (ObjectUtils.isNotEmpty(signPatientManageRouteNode)) { if (ObjectUtils.isNotEmpty(signPatientManageRouteNode)) {
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(signPatientManageRouteNode.getManageRouteId()); SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(signPatientManageRouteNode.getManageRouteId());
@ -200,8 +216,8 @@ public class PatientTaskStatisticsServiceImpl implements IPatientTaskStatisticsS
} }
/** /**
* @description 修改患者统计表任务数量下次任务
* @param patientIdList 患者主键列表 * @param patientIdList 患者主键列表
* @description 修改患者统计表任务数量下次任务
* @Author haown * @Author haown
* @Date 2024-8-14 11:37 * @Date 2024-8-14 11:37
*/ */

View File

@ -10,6 +10,7 @@
<result property="robotId" column="robot_id"/> <result property="robotId" column="robot_id"/>
<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="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"/>
@ -29,11 +30,19 @@
from script_info_task_info from script_info_task_info
</sql> </sql>
<select id="getByNodeId" resultType="java.lang.String"> <select id="getByNodeId" resultType="java.lang.String" parameterType="ScriptInfoTaskInfo">
select task_id select task_id
from script_info_task_info from script_info_task_info
where sign_patient_manage_route_node_id = #{signPatientManageRouteNodeId} where 1=1
<if test="signPatientManageRouteNodeId!=null">
AND sign_patient_manage_route_node_id = #{signPatientManageRouteNodeId}
</if>
<if test="signPatientManageRouteId!=null">
AND sign_patient_manage_route_id = #{signPatientManageRouteId}
</if>
<if test="aiobTaskType !=null">
and aiob_task_type = #{aiobTaskType} and aiob_task_type = #{aiobTaskType}
</if>
</select> </select>
<select id="selectList" resultType="com.xinelu.manage.domain.scriptinfotaskinfo.ScriptInfoTaskInfo"> <select id="selectList" resultType="com.xinelu.manage.domain.scriptinfotaskinfo.ScriptInfoTaskInfo">
@ -63,6 +72,8 @@
</if> </if>
<if test="signPatientManageRouteNodeId != null">sign_patient_manage_route_node_id, <if test="signPatientManageRouteNodeId != null">sign_patient_manage_route_node_id,
</if> </if>
<if test="signPatientManageRouteId != null">sign_patient_manage_route_id,
</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,
@ -81,6 +92,8 @@
</if> </if>
<if test="signPatientManageRouteNodeId != null">#{signPatientManageRouteNodeId}, <if test="signPatientManageRouteNodeId != null">#{signPatientManageRouteNodeId},
</if> </if>
<if test="signPatientManageRouteId != null">#{signPatientManageRouteId},
</if>
<if test="executeTime != null">#{executeTime}, <if test="executeTime != null">#{executeTime},
</if> </if>
<if test="aiobTaskType != null">#{aiobTaskType}, <if test="aiobTaskType != null">#{aiobTaskType},

View File

@ -87,7 +87,7 @@
</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_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 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 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">
@ -137,17 +137,17 @@
</foreach> </foreach>
</if> </if>
-- 如果是单个执行类型,应考虑默认为空时,按单个任务处理 -- 如果是单个执行类型,应考虑默认为空时,按单个任务处理
<if test="taskExcuteType != null and taskExcuteType = 'ACTUAL_TIME_TASK'"> <if test="taskExcuteType != null and taskExcuteType == 'ACTUAL_TIME_TASK'">
and (task_excute_type = #{taskExcuteType} or task_excute_type is null or task_excute_type='') and (task_excute_type = #{taskExcuteType} or task_excute_type is null or task_excute_type='')
</if> </if>
-- 批量任务处理时,直接按条件查询 -- 批量任务处理时,直接按条件查询
<if test="taskExcuteType != null and taskExcuteType = 'BATCH_TASK'"> <if test="taskExcuteType != null and taskExcuteType == 'BATCH_TASK'">
and task_excute_type = #{taskExcuteType} and task_excute_type = #{taskExcuteType}
</if> </if>
<if test="dialStatus !=null and dialStatus = 'NODIALED'"> <if test="dialStatus !=null and dialStatus == 'NODIALED'">
and (dial_status is null or dial_status = 'NODIALED') and (dial_status is null or dial_status = 'NODIALED')
</if> </if>
<if test="dialStatus !=null and dialStatus = 'DIALED'"> <if test="dialStatus !=null and dialStatus == 'DIALED'">
and dial_status = 'DIALED' and dial_status = 'DIALED'
</if> </if>
</where> </where>
@ -819,6 +819,15 @@
where manage_route_id = #{manageRouteId} where manage_route_id = #{manageRouteId}
</update> </update>
<update id="updateDialStatusByManageRouteId" parameterType="SignPatientManageRouteNode">
update sign_patient_manage_route_node set dial_status = #{dialStatus}
where manage_route_id = #{manageRouteId}
</update>
<update id="updateDialStatusByNodeId" parameterType="SignPatientManageRouteNode">
update sign_patient_manage_route_node set dial_status = #{dialStatus}
where id = #{id}
</update>
<select id="selectPatientTaskList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto" resultType="com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo"> <select id="selectPatientTaskList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto" resultType="com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo">
select patient.id as patientId, patient.patient_name, select patient.id as patientId, patient.patient_name,
patient.patient_phone, patient.patient_phone,
@ -998,6 +1007,7 @@
</foreach> </foreach>
</update> </update>
<select id="selectNodeCountByCreateTime" resultType="java.lang.Integer"> <select id="selectNodeCountByCreateTime" resultType="java.lang.Integer">
select count(1) select count(1)
from sign_patient_manage_route_node from sign_patient_manage_route_node

View File

@ -91,16 +91,21 @@ public class UploadRobotPublishTask {
//只获取 任务执行类型为 批量执行的 //只获取 任务执行类型为 批量执行的
signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo()); signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
//查询未拨打的 //查询未拨打的
signPatientManageRouteNodeDto.setDialStaus(DialStatusEnum.NODIALED.getInfo()); signPatientManageRouteNodeDto.setDialStatus(DialStatusEnum.NODIALED.getInfo());
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto); List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto);
List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>(); List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>();
nodeList.forEach(node -> { nodeList.forEach(node -> {
LocalDateTime executeTime;
if (Objects.nonNull(node.getNodePlanTime()) && org.apache.commons.lang3.StringUtils.isNotBlank(node.getNodePlanTime().toString())) {
executeTime = node.getNodePlanTime();
} else {
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId()); SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId()); SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId());
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId()); PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
LocalDateTime 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.getScriptInfoId() != null && (executeTime.toLocalDate().isBefore(LocalDate.now()) || executeTime.toLocalDate().isEqual(LocalDate.now()))) {
executeNodeList.add(node); executeNodeList.add(node);
} }
@ -118,20 +123,28 @@ public class UploadRobotPublishTask {
executeNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getScriptInfoId)); executeNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getScriptInfoId));
//开始遍历生成任务 //开始遍历生成任务
routeNodeGroupListByScriptInfoId.keySet().forEach(scriptInfoId -> { routeNodeGroupListByScriptInfoId.keySet().forEach(scriptInfoId -> {
// 分组下的任务节点配置属性 应该是 是相同的所以取第0项节点 来使用 // 分组下的任务节点配置属性 应该是 是相同的所以取第0项节点 来使用
SignPatientManageRouteNode nodeTemp = routeNodeGroupListByScriptInfoId.get(scriptInfoId).get(0); SignPatientManageRouteNode nodeTemp = 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(nodeTemp.getId()).concat("_")
.concat(Long.toString(nodeTemp.getManageRouteId()).concat("_").concat(String.valueOf(nodeTemp.getScriptInfoId()))), // .concat(Long.toString(nodeTemp.getManageRouteId())).concat("_")
AiobTaskTypeContant.BATCHTASK); // .concat(String.valueOf(nodeTemp.getScriptInfoId()))
// , AiobTaskTypeContant.BATCHTASK);
ScriptInfoTaskInfo scriptInfoTaskInfoQuery = new ScriptInfoTaskInfo();
scriptInfoTaskInfoQuery.setSignPatientManageRouteId(nodeTemp.getManageRouteId());
scriptInfoTaskInfoQuery.setScriptInfoId(nodeTemp.getScriptInfoId());
scriptInfoTaskInfoQuery.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
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(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + scriptInfo.getScriptName() + "(" + nodeTemp.getId() + ")"); //临时重复测试用
createTaskDto.setTaskName(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + scriptInfo.getScriptName() + "(" + nodeTemp.getManageRouteId() + ")");
// createTaskDto.setTaskName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + scriptInfo.getScriptName() + "(" + nodeTemp.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")));
@ -151,7 +164,9 @@ public class UploadRobotPublishTask {
scriptInfoTaskInfo.setTaskId(taskId); scriptInfoTaskInfo.setTaskId(taskId);
scriptInfoTaskInfo.setRobotId(scriptInfo.getRobotPublishId()); scriptInfoTaskInfo.setRobotId(scriptInfo.getRobotPublishId());
scriptInfoTaskInfo.setCreateTime(LocalDateTime.now()); scriptInfoTaskInfo.setCreateTime(LocalDateTime.now());
scriptInfoTaskInfo.setSignPatientManageRouteNodeId(nodeTemp.getId()); // scriptInfoTaskInfo.setSignPatientManageRouteNodeId(nodeTemp.getId());
scriptInfoTaskInfo.setSignPatientManageRouteId(nodeTemp.getManageRouteId());
scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.BATCHTASK); scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
//进入拔打记录表用于后续重拨处理等判断) //进入拔打记录表用于后续重拨处理等判断)
scriptInfoTaskInfoMapper.insertScriptInfoTaskInfo(scriptInfoTaskInfo); scriptInfoTaskInfoMapper.insertScriptInfoTaskInfo(scriptInfoTaskInfo);
@ -188,6 +203,13 @@ public class UploadRobotPublishTask {
importTaskDto.setSecretType(2); importTaskDto.setSecretType(2);
importTaskDto.setCustomerInfoList(customerInfoList); importTaskDto.setCustomerInfoList(customerInfoList);
List<ImportTaskVo> importTaskList = aiobService.importTask(importTaskDto); List<ImportTaskVo> importTaskList = aiobService.importTask(importTaskDto);
//设置拨打状态
SignPatientManageRouteNode signPatientManageRouteNode_DialStatus = new SignPatientManageRouteNode();
signPatientManageRouteNode_DialStatus.setManageRouteId(routeId);
signPatientManageRouteNode_DialStatus.setDialStatus(DialStatusEnum.DIALED.getInfo());
signPatientManageRouteNodeMapper.updateDialStatusByManageRouteId(signPatientManageRouteNode_DialStatus);
String finalTaskId = taskId; String finalTaskId = taskId;
importTaskList.forEach(importTaskVo -> { importTaskList.forEach(importTaskVo -> {
SignPatientManageRouteNode signPatientManageRouteNode = new SignPatientManageRouteNode(); SignPatientManageRouteNode signPatientManageRouteNode = new SignPatientManageRouteNode();
@ -225,7 +247,7 @@ public class UploadRobotPublishTask {
//只获取 任务执行类型为 单个执行的 //只获取 任务执行类型为 单个执行的
signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.ACTUAL_TIME_TASK.getInfo()); signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.ACTUAL_TIME_TASK.getInfo());
//查询未拨打的 //查询未拨打的
signPatientManageRouteNodeDto.setDialStaus(DialStatusEnum.NODIALED.getInfo()); signPatientManageRouteNodeDto.setDialStatus(DialStatusEnum.NODIALED.getInfo());
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto); List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto);
List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>(); List<SignPatientManageRouteNode> executeNodeList = new ArrayList<>();
@ -294,7 +316,17 @@ public class UploadRobotPublishTask {
actualTimeTaskDto.setCallBackUrl(callBackUrl); actualTimeTaskDto.setCallBackUrl(callBackUrl);
actualTimeTaskDto.setExtJson(node.getId() + ""); actualTimeTaskDto.setExtJson(node.getId() + "");
aiobService.createActualTimeTask(actualTimeTaskDto); aiobService.createActualTimeTask(actualTimeTaskDto);
log.info("创建任务完成......"); log.info("创建任务完成......");
//设置拨打状态
SignPatientManageRouteNode signPatientManageRouteNode_DialStatus = new SignPatientManageRouteNode();
signPatientManageRouteNode_DialStatus.setId(node.getId());
signPatientManageRouteNode_DialStatus.setDialStatus(DialStatusEnum.DIALED.getInfo());
signPatientManageRouteNodeMapper.updateDialStatusByNodeId(signPatientManageRouteNode_DialStatus);
} }
} }