增加路由批量计划时间,任务计划时间,任务执行类型相关处理

This commit is contained in:
zhuangyuanke 2024-12-05 10:48:10 +08:00
parent cc338442dc
commit a04040e9b8
11 changed files with 119 additions and 22 deletions

View File

@ -20,9 +20,15 @@ public enum RouteCheckStatusEnum {
* 不同意
*/
DISAGREE("DISAGREE"),
/**
* 未审核
*/
UNAUDITED("UNAUDITED"),
;
final private String info;
RouteCheckStatusEnum(String info) {
this.info = info;
}

View File

@ -129,11 +129,11 @@ public class SignPatientManageRoute extends BaseEntity {
@Excel(name = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType;
/** 任务计划执行时间格式YYYY-MM-DD HH:mm */
@ApiModelProperty(value = "任务计划执行时间格式YYYY-MM-DD HH:mm")
@JsonFormat(pattern = "YYYY-MM-DD HH:mm")
@Excel(name = "任务计划执行时间格式YYYY-MM-DD HH:mm", width = 30, dateFormat = "YYYY-MM-DD HH:mm")
private LocalDateTime planTime;
/** 任务计划执行时间格式YYYY-MM-dd HH:mm:ss */
@ApiModelProperty(value = "任务计划执行时间格式YYYY-MM-dd HH:mm:ss")
@JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss")
@Excel(name = "任务计划执行时间格式YYYY-MM-dd HH:mm:ss", width = 30, dateFormat = "YYYY-MM-dd HH:mm:ss")
private LocalDateTime routePlanTime;
}

View File

@ -55,11 +55,11 @@ public class SignPatientManageRouteNode extends BaseEntity {
@Excel(name = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType;
/** 任务计划执行时间格式YYYY-MM-DD HH:mm */
@ApiModelProperty(value = "任务计划执行时间格式YYYY-MM-DD HH:mm")
@JsonFormat(pattern = "YYYY-MM-DD HH:mm")
@Excel(name = "任务计划执行时间格式YYYY-MM-DD HH:mm", width = 30, dateFormat = "YYYY-MM-DD HH:mm")
private LocalDateTime planTime;
/** 任务计划执行时间格式YYYY-MM-dd HH:mm */
@ApiModelProperty(value = "任务计划执行时间格式YYYY-MM-dd HH:mm")
@JsonFormat(pattern = "YYYY-MM-dd HH:mm")
@Excel(name = "任务计划执行时间格式YYYY-MM-dd HH:mm:ss", width = 30, dateFormat = "YYYY-MM-dd HH:mm:ss")
private LocalDateTime nodePlanTime;
/** 管理路径节点时间,时间单位为:天 */

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.dto.manualfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
@ -84,4 +85,11 @@ public class ManualFollowUpDTO extends BaseEntity {
*/
@ApiModelProperty(value = "AI自动 或 COMMON手动")
private String phoneDialMethod;
/** 任务执行类型(批量还是单个执行) */
@ApiModelProperty(value = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType;
}

View File

@ -205,6 +205,15 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
if (insertBatchCount < 0) {
return AjaxResult.error("新增签约患者管理任务路径失败!请联系管理员!");
}
//更新 签约记录的 审核状态为 未审核 zyk 20241204
SignPatientRecord signPatientRecord = new SignPatientRecord();
signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.UNAUDITED.getInfo());
signPatientRecord.setId(signPatientManageRoute.getSignPatientRecordId());
int updateRecord = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord);
if (updateRecord < 0) {
return AjaxResult.error("修改签约患者管理任务路径失败!请联系管理员!");
}
return AjaxResult.success();
}
@ -232,6 +241,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
if (updateCount < 0) {
return AjaxResult.error("修改签约患者管理任务路径失败!请联系管理员!");
}
List<SignPatientManageRouteNode> routeNodeList = signPatientManageRoute.getRouteNodeList();
for (SignPatientManageRouteNode signPatientManageRouteNode : routeNodeList) {
signPatientManageRouteNode.setManageRouteId(signPatientManageRoute.getSignPatientManageRouteId());

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.vo.manualfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -157,4 +158,14 @@ public class ManualFollowUpVO {
*/
@ApiModelProperty(value = "生成通话录音唯一标识,可通过该标识,获取录音")
private String ctUUID;
/** 任务执行类型(批量还是单个执行) */
@ApiModelProperty(value = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType;
/** 任务计划执行时间格式YYYY-MM-dd HH:mm */
@ApiModelProperty(value = "任务计划执行时间格式YYYY-MM-dd HH:mm")
@JsonFormat(pattern = "YYYY-MM-dd HH:mm")
private LocalDateTime nodePlanTime;
}

View File

@ -5,6 +5,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.time.LocalTime;
import lombok.Data;
@ -39,6 +41,20 @@ public class SignPatientManageRouteNodeInfoVo {
@Excel(name = "管理路径节点时间,时间单位为:天")
private Integer routeNodeDay;
/** 任务执行类型(批量还是单个执行) */
@ApiModelProperty(value = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
@Excel(name = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType;
/** 任务计划执行时间格式YYYY-MM-dd HH:mm */
@ApiModelProperty(value = "任务计划执行时间格式YYYY-MM-dd HH:mm")
@JsonFormat(pattern = "YYYY-MM-dd HH:mm")
@Excel(name = "任务计划执行时间格式YYYY-MM-dd HH:mm:ss", width = 30, dateFormat = "YYYY-MM-dd HH:mm:ss")
private LocalDateTime nodePlanTime;
/** 任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP */
@ApiModelProperty(value = "任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP")
@Excel(name = "任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP")

View File

@ -24,6 +24,7 @@
<result property="suitRange" column="suit_range"/>
<result property="routeSort" column="route_sort"/>
<result property="routeRemark" column="route_remark"/>
<result property="routePlanTime" column="route_plan_time"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
@ -51,6 +52,7 @@
<result property="suitRange" column="suit_range"/>
<result property="routeSort" column="route_sort"/>
<result property="routeRemark" column="route_remark"/>
<result property="routePlanTime" column="route_plan_time"/>
<collection property="routeNodeList" javaType="java.util.List"
resultMap="SignPatientManageRouteNodeResult"/>
<collection property="triggerConditionList" javaType="java.util.List"
@ -63,6 +65,8 @@
<result property="manageRouteName" column="manage_route_name"/>
<result property="routeNodeName" column="route_node_name"/>
<result property="routeNodeDay" column="route_node_day"/>
<result property="taskExcuteType" column="task_excute_type"/>
<result property="routePlanTime" column="route_plan_time"/>
<result property="taskType" column="task_type"/>
<result property="taskStatus" column="task_status"/>
<result property="taskSubdivision" column="task_subdivision"/>
@ -128,7 +132,7 @@
</resultMap>
<sql id="selectSignPatientManageRouteVo">
select id, sign_patient_record_id, patient_id, patient_name, department_id, department_name, service_package_id, package_name, disease_type_id, disease_type_name, route_id, parent_route_id, route_name, task_create_type, version, route_classify, suit_range, route_sort, route_remark, create_by, create_time, update_by, update_time from sign_patient_manage_route
select id, sign_patient_record_id, patient_id, patient_name, department_id, department_name, service_package_id, package_name, disease_type_id, disease_type_name, route_id, parent_route_id, route_name, task_create_type, version, route_classify, suit_range, route_sort, route_remark, route_plan_time,create_by, create_time, update_by, update_time from sign_patient_manage_route
</sql>
<select id="selectSignPatientManageRouteList" parameterType="com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute" resultMap="SignPatientManageRouteResult">
@ -191,6 +195,9 @@
<if test="routeRemark != null and routeRemark != ''">
and route_remark = #{routeRemark}
</if>
<if test="routePlanTime != null and routePlanTime != ''">
and route_plan_time = #{routePlanTime}
</if>
</where>
</select>
@ -221,11 +228,14 @@
spmr.suit_range,
spmr.route_sort,
spmr.route_remark,
spmr.route_plan_time,
spmrn.id,
spmrn.manage_route_id,
spmrn.manage_route_name,
spmrn.route_node_name,
spmrn.route_node_day,
spmrn.task_excute_type,
spmrn.node_plan_time,
spmrn.task_type,
spmrn.task_status,
spmrn.task_subdivision,
@ -328,6 +338,8 @@
spmrn.route_node_name AS 'routeNodeName',
spmrn.route_node_day,
spmrn.task_node_type,
spmrn.task_excute_type,
spmrn.node_plan_time,
CASE
WHEN spmrn.task_node_type = 'PHONE_OUTBOUND' THEN spmrn.phone_template_name
WHEN spmrn.task_node_type = 'QUESTIONNAIRE_SCALE' THEN spmrn.questionnaire_name
@ -403,6 +415,14 @@
<if test="phoneDialMethod != null">
AND spmrn.phone_dial_method = #{phoneDialMethod}
</if>
-- 如果是单个执行类型,应考虑默认为空时,按单个任务处理
<if test="taskExcuteType != null and taskExcuteType = 'ACTUAL_TIME_TASK'">
and (spmrn.task_excute_type = #{taskExcuteType} or spmrn.task_excute_type is null or spmrn.task_excute_type='')
</if>
-- 批量任务处理时,直接按条件查询
<if test="taskExcuteType != null and taskExcuteType = 'BATCH_TASK'">
and spmrn.task_excute_type = #{taskExcuteType}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
@ -474,6 +494,8 @@
</if>
<if test="routeRemark != null">route_remark,
</if>
<if test="routePlanTime != null">route_plan_time,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
@ -520,6 +542,8 @@
</if>
<if test="routeRemark != null">#{routeRemark},
</if>
<if test="routePlanTime != null">#{route_plan_time},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
@ -588,6 +612,9 @@
<if test="routeRemark != null">route_remark =
#{routeRemark},
</if>
<if test="routePlanTime != null">route_plan_time =
#{routePlanTime},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
@ -625,6 +652,8 @@
spmrn.route_node_day,
spmrn.script_info_id,
spmrn.phone_template_id,
spmrn.phone_template_name,
spmrn.phone_node_content,
spmrn.phone_redial_times,

View File

@ -135,9 +135,11 @@
route_node_id = #{routeNodeId}
</foreach>
</if>
-- 如果是单个执行类型,应考虑默认为空时,按单个任务处理
<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'">
and task_excute_type = #{taskExcuteType}
</if>
@ -235,8 +237,13 @@
</if>
<if test="routeNodeDay != null">route_node_day,
</if>
<if test="taskExcuteType != null">task_excute_type,
</if>
<if test="nodePlanTime != null">node_plan_time,
</if>
<if test="taskType != null">task_type,
</if>
<if test="taskStatus != null">task_status,
</if>
<if test="taskSubdivision != null">task_subdivision,
@ -381,6 +388,10 @@
</if>
<if test="routeNodeDay != null">#{routeNodeDay},
</if>
<if test="taskExcuteType != null">#{taskExcuteType},
</if>
<if test="nodePlanTime != null">#{nodePlanTime},
</if>
<if test="taskType != null">#{taskType},
</if>
<if test="taskStatus != null">#{taskStatus},
@ -518,7 +529,7 @@
</trim>
</insert>
<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_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,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,
@ -527,7 +538,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)
values
<foreach collection="nodeList" item="item" separator=",">
(#{item.manageRouteId},#{item.manageRouteName},#{item.routeNodeId},#{item.routeNodeName},#{item.routeNodeDay},#{item.taskType},#{item.taskStatus},#{item.taskSubdivision},#{item.taskNodeType},#{item.secondClassifyDescribe},
(#{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.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.questionInfoId},#{item.questionnaireName},#{item.questionnaireContent},#{item.questionExpirationDate},#{item.propagandaInfoId},#{item.propagandaTitle},#{item.propagandaContent},#{item.messagePushSign},
@ -556,6 +567,12 @@
<if test="routeNodeDay != null">route_node_day =
#{routeNodeDay},
</if>
<if test="taskExcuteType != null">task_excute_type =
#{taskExcuteType},
</if>
<if test="nodePlanTime != null">node_plan_time =
#{nodePlanTime},
</if>
<if test="taskType != null">task_type =
#{taskType},
</if>

View File

@ -453,7 +453,7 @@
</if>
<choose>
<when test="routeCheckStatus != null and routeCheckStatus == 'UNAUDITED'.toString()">
and (sign.route_check_status is null or sign.portait_check_status is null)
and (sign.route_check_status is null or sign.portait_check_status is null or sign.route_check_status = #{routeCheckStatus} or sign.portait_check_status = #{routeCheckStatus})
</when>
<when test="routeCheckStatus != null and routeCheckStatus == 'AGREE'.toString()">
and sign.route_check_status = #{routeCheckStatus} and sign.portait_check_status = #{routeCheckStatus}

View File

@ -200,8 +200,8 @@ public class UploadRobotPublishTask {
nodeList.forEach(node -> {
LocalDateTime executeTime ;
//如果有计划执行时间则直接获取
if(node.getPlanTime()!=null)
{ executeTime = node.getPlanTime(); }
if(node.getNodePlanTime()!=null)
{ executeTime = node.getNodePlanTime(); }
// 否则 则根据诊后/院后 第几天 计算
else {
SignPatientManageRoute signPatientManageRoute = signPatientManageRouteMapper.selectSignPatientManageRouteById(node.getManageRouteId());