diff --git a/postdischarge-common/src/main/java/com/xinelu/common/enums/TaskExcuteTypeEnum.java b/postdischarge-common/src/main/java/com/xinelu/common/enums/TaskExcuteTypeEnum.java new file mode 100644 index 00000000..838fd262 --- /dev/null +++ b/postdischarge-common/src/main/java/com/xinelu/common/enums/TaskExcuteTypeEnum.java @@ -0,0 +1,33 @@ +package com.xinelu.common.enums; + + +import lombok.Getter; + +/** + * 任务执行类型(批量还是单个执行,'批量任务:BATCH_TASK,单个实时拔打任务:ACTUAL_TIME_TASK') + * + * @author zyk + * @date 2024-12-02 + */ + +@Getter +public enum TaskExcuteTypeEnum { + + /** + * 已执行 + */ + BATCH_TASK("BATCH_TASK"), + /** + * 未执行 + */ + ACTUAL_TIME_TASK("ACTUAL_TIME_TASK"), + ; + final private String info; + + TaskExcuteTypeEnum(String info) { + this.info = info; + } + + + +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java index e89a9dfb..40d2818f 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java @@ -1,5 +1,6 @@ package com.xinelu.manage.domain.signpatientmanageroute; +import com.fasterxml.jackson.annotation.JsonFormat; import com.xinelu.common.annotation.Excel; import com.xinelu.common.core.domain.BaseEntity; import com.xinelu.common.custominterface.Insert; @@ -11,6 +12,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; +import java.time.LocalDateTime; +import java.time.LocalTime; /** * 签约患者管理任务路径对象 sign_patient_manage_route @@ -121,4 +124,16 @@ public class SignPatientManageRoute extends BaseEntity { @Excel(name = "备注信息") private String routeRemark; + /** 任务执行类型(批量还是单个执行) */ + @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", width = 30, dateFormat = "YYYY-MM-DD HH:mm") + private LocalDateTime planTime; + + } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroutenode/SignPatientManageRouteNode.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroutenode/SignPatientManageRouteNode.java index 1e5adaed..1fc7f930 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroutenode/SignPatientManageRouteNode.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroutenode/SignPatientManageRouteNode.java @@ -50,6 +50,18 @@ public class SignPatientManageRouteNode extends BaseEntity { @Excel(name = "管理路径节点名称") private String routeNodeName; + /** 任务执行类型(批量还是单个执行) */ + @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", width = 30, dateFormat = "YYYY-MM-DD HH:mm") + private LocalDateTime planTime; + + /** 管理路径节点时间,时间单位为:天 */ @ApiModelProperty(value = "管理路径节点时间,时间单位为:天") @Excel(name = "管理路径节点时间,时间单位为:天") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/signpatientmanageroutenode/SignPatientManageRouteNodeDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/signpatientmanageroutenode/SignPatientManageRouteNodeDto.java index 38c04299..1ed3d3bb 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/signpatientmanageroutenode/SignPatientManageRouteNodeDto.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/signpatientmanageroutenode/SignPatientManageRouteNodeDto.java @@ -74,4 +74,14 @@ public class SignPatientManageRouteNodeDto { */ @ApiModelProperty(value = "专病路径节点id列表") private List routeNodeIds; + + + /** + * 任务执行类型(批量还是单个执行,'批量任务:BATCH_TASK,单个实时拔打任务:ACTUAL_TIME_TASK') + */ + @ApiModelProperty(value = "任务执行类型(批量还是单个执行,'批量任务:BATCH_TASK,单个实时拔打任务:ACTUAL_TIME_TASK')") + private String taskExcuteType; + + + } diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml index 13ad78cb..8f38a6c0 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml @@ -135,6 +135,12 @@ route_node_id = #{routeNodeId} + + and (task_excute_type = #{taskExcuteType} or task_excute_type is null or task_excute_type='') + + + and task_excute_type = #{taskExcuteType} + @@ -1040,4 +1046,4 @@ - \ No newline at end of file + diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/UploadRobotPublishTask.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/UploadRobotPublishTask.java index 42e92beb..a9bda12a 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/UploadRobotPublishTask.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/UploadRobotPublishTask.java @@ -5,6 +5,7 @@ import com.xinelu.common.constant.AiobTaskTypeContant; import com.xinelu.common.enums.NodeExecuteStatusEnum; import com.xinelu.common.enums.PhoneDialMethodEnum; import com.xinelu.common.enums.PhoneRedialTimesEnum; +import com.xinelu.common.enums.TaskExcuteTypeEnum; import com.xinelu.common.utils.StringUtils; import com.xinelu.manage.domain.patientinfo.PatientInfo; import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord; @@ -192,13 +193,22 @@ public class UploadRobotPublishTask { SignPatientManageRouteNodeDto signPatientManageRouteNodeDto = new SignPatientManageRouteNodeDto(); signPatientManageRouteNodeDto.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo()); signPatientManageRouteNodeDto.setPhoneDialMethod(PhoneDialMethodEnum.AI.getInfo()); + //只获取 任务执行类型为 单个执行的 + signPatientManageRouteNodeDto.setTaskExcuteType(TaskExcuteTypeEnum.ACTUAL_TIME_TASK.getInfo()); List nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto); List 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(node.getPlanTime()!=null) + { executeTime = node.getPlanTime(); } + // 否则 ,则根据诊后/院后 第几天 计算 + 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); }