/// 定时任务模型。 /// /// 对应后端 /sys/schedule/* 接口的定时任务实体。 /// status 取值:0=正常 1=暂停。 class Schedule { const Schedule({ required this.jobId, required this.beanName, required this.methodName, required this.params, required this.cronExpression, required this.status, required this.remark, required this.createTime, }); /// 任务 ID。 final String jobId; /// Spring Bean 名称。 final String beanName; /// 方法名称。 final String methodName; /// 方法参数。 final String params; /// Cron 表达式。 final String cronExpression; /// 状态(0=正常 1=暂停)。 final int status; /// 备注。 final String remark; /// 创建时间。 final DateTime? createTime; factory Schedule.fromJson(Map json) { return Schedule( jobId: (json['jobId'] ?? json['id'])?.toString() ?? '', beanName: json['beanName']?.toString() ?? '', methodName: json['methodName']?.toString() ?? '', params: json['params']?.toString() ?? '', cronExpression: json['cronExpression']?.toString() ?? '', status: int.tryParse(json['status']?.toString() ?? '0') ?? 0, remark: json['remark']?.toString() ?? '', createTime: _parseDateTime(json['createTime']), ); } /// 兼容 `yyyy-MM-dd HH:mm:ss` 与 ISO 8601 两种时间格式。 static DateTime? _parseDateTime(dynamic value) { if (value == null) return null; final text = value.toString().trim(); if (text.isEmpty) return null; return DateTime.tryParse(text) ?? DateTime.tryParse(text.replaceFirst(' ', 'T')); } Map toJson() { return { 'jobId': jobId, 'beanName': beanName, 'methodName': methodName, 'params': params, 'cronExpression': cronExpression, 'status': status, 'remark': remark, 'createTime': createTime?.toIso8601String(), }; } }