任务执行类型:增加批量和单个执行 两种分类;

任务执行日期,增加字段PlanTime
This commit is contained in:
zhuangyuanke 2024-12-03 09:06:36 +08:00
parent eb277f29d6
commit efde030176
6 changed files with 91 additions and 5 deletions

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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 = "管理路径节点时间,时间单位为:天")

View File

@ -74,4 +74,14 @@ public class SignPatientManageRouteNodeDto {
*/
@ApiModelProperty(value = "专病路径节点id列表")
private List<Long> routeNodeIds;
/**
* 任务执行类型批量还是单个执行'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'
*/
@ApiModelProperty(value = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType;
}

View File

@ -135,6 +135,12 @@
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>
</where>
</select>
@ -1040,4 +1046,4 @@
</if>
</where>
</select>
</mapper>
</mapper>

View File

@ -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<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(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);
}