package tech.powerjob.server.web.response; import tech.powerjob.common.OmsConstant; import tech.powerjob.server.persistence.remote.model.InstanceInfoDO; import lombok.Data; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.BeanUtils; /** * InstanceInfo 对外展示对象 * * @author tjq * @since 2020/4/12 */ @Data public class InstanceInfoVO { /** * 任务ID(JS精度丢失) */ private String jobId; /** * 任务名称 */ private String jobName; /** * 任务实例ID(JS精度丢失) */ private String instanceId; /** * 该任务实例所属的 workflow ID,仅 workflow 任务存在 */ private String wfInstanceId; /** * 执行结果 */ private String result; /** * TaskTracker地址 */ private String taskTrackerAddress; /** * 总共执行的次数(用于重试判断) */ private Long runningTimes; private int status; /* ********** 不一致区域 ********** */ /** * 实际触发时间(需要格式化为人看得懂的时间) */ private String actualTriggerTime; /** * 结束时间(同理,需要格式化) */ private String finishedTime; public static InstanceInfoVO from(InstanceInfoDO instanceInfoDo, String jobName) { InstanceInfoVO instanceInfoVO = new InstanceInfoVO(); BeanUtils.copyProperties(instanceInfoDo, instanceInfoVO); // 额外设置任务名称,提高可读性 instanceInfoVO.setJobName(jobName); // ID 转化为 String(JS精度丢失) instanceInfoVO.setJobId(instanceInfoDo.getJobId().toString()); instanceInfoVO.setInstanceId(instanceInfoDo.getInstanceId().toString()); if (instanceInfoDo.getWfInstanceId() == null) { instanceInfoVO.setWfInstanceId(OmsConstant.NONE); }else { instanceInfoVO.setWfInstanceId(String.valueOf(instanceInfoDo.getWfInstanceId())); } // 格式化时间 if (instanceInfoDo.getActualTriggerTime() == null) { instanceInfoVO.setActualTriggerTime(OmsConstant.NONE); }else { instanceInfoVO.setActualTriggerTime(DateFormatUtils.format(instanceInfoDo.getActualTriggerTime(), OmsConstant.TIME_PATTERN)); } if (instanceInfoDo.getFinishedTime() == null) { instanceInfoVO.setFinishedTime(OmsConstant.NONE); }else { instanceInfoVO.setFinishedTime(DateFormatUtils.format(instanceInfoDo.getFinishedTime(), OmsConstant.TIME_PATTERN)); } return instanceInfoVO; } }