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

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;
/**
* 管理路径Id
*/
private Long signPatientManageRouteId;
/**
* 任务Id
*/

View File

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

View File

@ -85,7 +85,7 @@ public class SignPatientManageRouteNodeDto {
* 拨打状态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;
import com.xinelu.manage.domain.scriptinfotaskinfo.ScriptInfoTaskInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -11,7 +13,9 @@ import java.util.List;
*/
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);

View File

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

View File

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

View File

@ -87,7 +87,7 @@
</resultMap>
<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>
<select id="selectSignPatientManageRouteNodeList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto" resultMap="SignPatientManageRouteNodeResult">
@ -137,17 +137,17 @@
</foreach>
</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='')
</if>
-- 批量任务处理时,直接按条件查询
<if test="taskExcuteType != null and taskExcuteType = 'BATCH_TASK'">
<if test="taskExcuteType != null and taskExcuteType == 'BATCH_TASK'">
and task_excute_type = #{taskExcuteType}
</if>
<if test="dialStatus !=null and dialStatus = 'NODIALED'">
<if test="dialStatus !=null and dialStatus == 'NODIALED'">
and (dial_status is null or dial_status = 'NODIALED')
</if>
<if test="dialStatus !=null and dialStatus = 'DIALED'">
<if test="dialStatus !=null and dialStatus == 'DIALED'">
and dial_status = 'DIALED'
</if>
</where>
@ -819,6 +819,15 @@
where manage_route_id = #{manageRouteId}
</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 patient.id as patientId, patient.patient_name,
patient.patient_phone,
@ -998,6 +1007,7 @@
</foreach>
</update>
<select id="selectNodeCountByCreateTime" resultType="java.lang.Integer">
select count(1)
from sign_patient_manage_route_node

View File

@ -91,16 +91,21 @@ public class UploadRobotPublishTask {
//只获取 任务执行类型为 批量执行的
signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
//查询未拨打的
signPatientManageRouteNodeDto.setDialStaus(DialStatusEnum.NODIALED.getInfo());
signPatientManageRouteNodeDto.setDialStatus(DialStatusEnum.NODIALED.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);
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());
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId());
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
executeTime = signPatientManageRouteNodeService.getExecuteTime(node.getExecuteTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord);
}
if (node.getScriptInfoId() != null && (executeTime.toLocalDate().isBefore(LocalDate.now()) || executeTime.toLocalDate().isEqual(LocalDate.now()))) {
executeNodeList.add(node);
}
@ -118,20 +123,28 @@ public class UploadRobotPublishTask {
executeNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getScriptInfoId));
//开始遍历生成任务
routeNodeGroupListByScriptInfoId.keySet().forEach(scriptInfoId -> {
// 分组下的任务节点配置属性 应该是 是相同的所以取第0项节点 来使用
// 分组下的任务节点配置属性 应该是 是相同的所以取第0项节点 来使用
SignPatientManageRouteNode nodeTemp = routeNodeGroupListByScriptInfoId.get(scriptInfoId).get(0);
//话术
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(scriptInfoId);
//拼接一个taskId格式:NodeId_ScriptInfoId_ManageRouteId
String taskId = scriptInfoTaskInfoMapper.getByNodeId(Long.toString(nodeTemp.getId()).concat("_")
.concat(Long.toString(nodeTemp.getManageRouteId()).concat("_").concat(String.valueOf(nodeTemp.getScriptInfoId()))),
AiobTaskTypeContant.BATCHTASK);
//拼接一个taskId(格式:NodeId_ScriptInfoId_ManageRouteId不用了
// String taskId = scriptInfoTaskInfoMapper.getByNodeId(Long.toString(nodeTemp.getId()).concat("_")
// .concat(Long.toString(nodeTemp.getManageRouteId())).concat("_")
// .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 (ObjectUtils.isNotEmpty(scriptInfo)) {
log.info("创建任务......");
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.setDialStartDate(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.setRobotId(scriptInfo.getRobotPublishId());
scriptInfoTaskInfo.setCreateTime(LocalDateTime.now());
scriptInfoTaskInfo.setSignPatientManageRouteNodeId(nodeTemp.getId());
// scriptInfoTaskInfo.setSignPatientManageRouteNodeId(nodeTemp.getId());
scriptInfoTaskInfo.setSignPatientManageRouteId(nodeTemp.getManageRouteId());
scriptInfoTaskInfo.setAiobTaskType(AiobTaskTypeContant.BATCHTASK);
//进入拔打记录表用于后续重拨处理等判断)
scriptInfoTaskInfoMapper.insertScriptInfoTaskInfo(scriptInfoTaskInfo);
@ -160,7 +175,7 @@ public class UploadRobotPublishTask {
// 客户名单list
List<CustomerInfoDto> customerInfoList = new ArrayList<>();
//遍历最内层任务节点
routeNodeGroupListByScriptInfoId.get(scriptInfoId).forEach(node->{
routeNodeGroupListByScriptInfoId.get(scriptInfoId).forEach(node -> {
CustomerInfoDto customerInfoDto = new CustomerInfoDto();
customerInfoDto.setExtJson(node.getId() + "");
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());
@ -188,6 +203,13 @@ public class UploadRobotPublishTask {
importTaskDto.setSecretType(2);
importTaskDto.setCustomerInfoList(customerInfoList);
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;
importTaskList.forEach(importTaskVo -> {
SignPatientManageRouteNode signPatientManageRouteNode = new SignPatientManageRouteNode();
@ -225,7 +247,7 @@ public class UploadRobotPublishTask {
//只获取 任务执行类型为 单个执行的
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> executeNodeList = new ArrayList<>();
@ -294,7 +316,17 @@ public class UploadRobotPublishTask {
actualTimeTaskDto.setCallBackUrl(callBackUrl);
actualTimeTaskDto.setExtJson(node.getId() + "");
aiobService.createActualTimeTask(actualTimeTaskDto);
log.info("创建任务完成......");
//设置拨打状态
SignPatientManageRouteNode signPatientManageRouteNode_DialStatus = new SignPatientManageRouteNode();
signPatientManageRouteNode_DialStatus.setId(node.getId());
signPatientManageRouteNode_DialStatus.setDialStatus(DialStatusEnum.DIALED.getInfo());
signPatientManageRouteNodeMapper.updateDialStatusByNodeId(signPatientManageRouteNode_DialStatus);
}
}