| | |
| | | |
| | | public void Execute() |
| | | { |
| | | Logger.Scheduler.Info($"进入计划调度(名称:{Name})...\r\n"); |
| | | #region 固定写法 |
| | | Logger.Scheduler.Info($"/**\r\n *进入计划调度(名称: {Name} )....\r\n */\r\n"); //固定写法 |
| | | Schedule = JobManager.GetSchedule(Name); //固定写法 |
| | | StartTime = DateTime.Now; //固定写法 |
| | | #endregion |
| | | try |
| | | { |
| | | Schedule = JobManager.GetSchedule(Name); |
| | | StartTime = DateTime.Now; |
| | | string msg = ""; |
| | | string status = "Successed"; |
| | | GetJob(typeof(U9C_ME_GetCustSn).Name); |
| | |
| | | else |
| | | { |
| | | msg = $"从U9C获取客户条码信息成功:{result.Message}"; |
| | | Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); |
| | | //固定写法 |
| | | Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime(); |
| | | Trig.NextRunTime = Schedule.NextRun; |
| | | } |
| | | } |
| | | SaveFluentSchedulerLog(status, $"{msg}"); |
| | |
| | | Logger.Scheduler.Fatal(ex, "获取客户条码信息异常"); |
| | | SaveFluentSchedulerLog("Failed", ex.Message); |
| | | } |
| | | Logger.Scheduler.Info($"/* 计划调度(名称:{Name})结束 */\r\n"); //固定写法 |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | public void Execute() |
| | | { |
| | | Logger.Scheduler.Info($"进入计划调度(名称:{Name})...\r\n"); |
| | | #region 固定写法 |
| | | Logger.Scheduler.Info($"/**\r\n *进入计划调度(名称: {Name} )....\r\n */\r\n"); //固定写法 |
| | | Schedule = JobManager.GetSchedule(Name); //固定写法 |
| | | StartTime = DateTime.Now; //固定写法 |
| | | #endregion |
| | | try |
| | | { |
| | | Schedule = JobManager.GetSchedule(Name); |
| | | StartTime = DateTime.Now; |
| | | string msg = ""; |
| | | string status = "Successed"; |
| | | GetJob(typeof(U9C_MES_GetCustomer).Name); |
| | |
| | | else |
| | | { |
| | | msg = $"从U9C获取客户信息成功:{result.Message}"; |
| | | Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); |
| | | //固定写法 |
| | | Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime(); |
| | | Trig.NextRunTime = Schedule.NextRun; |
| | | } |
| | | } |
| | | SaveFluentSchedulerLog(status, $"{msg}"); |
| | |
| | | Logger.Scheduler.Fatal(ex, "获取客户信息异常"); |
| | | SaveFluentSchedulerLog("Failed", ex.Message); |
| | | } |
| | | Logger.Scheduler.Info($"/* 计划调度(名称:{Name})结束 */\r\n"); //固定写法 |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | public void Execute() |
| | | { |
| | | Logger.Scheduler.Info($"进入计划调度(名称:{Name})...\r\n"); |
| | | #region 固定写法 |
| | | Logger.Scheduler.Info($"/**\r\n *进入计划调度(名称: {Name} )....\r\n */\r\n"); //固定写法 |
| | | Schedule = JobManager.GetSchedule(Name); //固定写法 |
| | | StartTime = DateTime.Now; //固定写法 |
| | | #endregion |
| | | try |
| | | { |
| | | Schedule = JobManager.GetSchedule(Name); |
| | | StartTime = DateTime.Now; |
| | | string msg = ""; |
| | | string status = "Successed"; |
| | | GetJob(typeof(U9C_MES_GetItem).Name); |
| | |
| | | else |
| | | { |
| | | msg = $"从U9C获取物料信息成功:{result.Message}"; |
| | | Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); |
| | | //固定写法 |
| | | Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime(); |
| | | Trig.NextRunTime = Schedule.NextRun; |
| | | } |
| | | } |
| | | SaveFluentSchedulerLog(status, $"{msg}"); |
| | |
| | | Logger.Scheduler.Fatal(ex, "获取物料信息异常"); |
| | | SaveFluentSchedulerLog("Failed", ex.Message); |
| | | } |
| | | Logger.Scheduler.Info($"/* 计划调度(名称:{Name})结束 */\r\n"); //固定写法 |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | public void Execute() |
| | | { |
| | | Logger.Scheduler.Info($"进入计划调度(名称:{Name})...\r\n"); |
| | | #region 固定写法 |
| | | Logger.Scheduler.Info($"/**\r\n *进入计划调度(名称: {Name} )....\r\n */\r\n"); //固定写法 |
| | | Schedule = JobManager.GetSchedule(Name); //固定写法 |
| | | StartTime = DateTime.Now; //固定写法 |
| | | #endregion |
| | | try |
| | | { |
| | | Schedule = JobManager.GetSchedule(Name); |
| | | StartTime = DateTime.Now; |
| | | string msg = ""; |
| | | string status = "Successed"; |
| | | GetJob(typeof(U9C_ME_GetSupplier).Name); |
| | |
| | | else |
| | | { |
| | | msg = $"从U9C获取供应商信息成功:{result.Message}"; |
| | | Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); |
| | | //固定写法 |
| | | Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime(); |
| | | Trig.NextRunTime = Schedule.NextRun; |
| | | } |
| | | } |
| | | SaveFluentSchedulerLog(status, $"{msg}"); |
| | |
| | | Logger.Scheduler.Fatal(ex, "获取供应商信息异常"); |
| | | SaveFluentSchedulerLog("Failed", ex.Message); |
| | | } |
| | | Logger.Scheduler.Info($"/* 计划调度(名称:{Name})结束 */\r\n"); //固定写法 |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | public void Execute() |
| | | { |
| | | Logger.Scheduler.Info($"进入计划调度(名称:{Name})...\r\n"); |
| | | #region 固定写法 |
| | | Logger.Scheduler.Info($"/**\r\n *进入计划调度(名称: {Name} )....\r\n */\r\n"); //固定写法 |
| | | Schedule = JobManager.GetSchedule(Name); //固定写法 |
| | | StartTime = DateTime.Now; //固定写法 |
| | | #endregion |
| | | try |
| | | { |
| | | Schedule = JobManager.GetSchedule(Name); |
| | | StartTime = DateTime.Now; |
| | | string msg = ""; |
| | | string status = "Successed"; |
| | | GetJob(typeof(fU9C_MES_GetWo).Name); |
| | |
| | | else |
| | | { |
| | | msg = $"从U9C获取工单信息成功:{result.Message}"; |
| | | Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); |
| | | //固定写法 |
| | | Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime(); |
| | | Trig.NextRunTime = Schedule.NextRun; |
| | | } |
| | | } |
| | | SaveFluentSchedulerLog(status, $"{msg}"); |
| | |
| | | Logger.Scheduler.Fatal(ex, "获取工单信息异常"); |
| | | SaveFluentSchedulerLog("Failed", ex.Message); |
| | | } |
| | | Logger.Scheduler.Info($"/* 计划调度(名称:{Name})结束 */\r\n"); //固定写法 |
| | | } |
| | | }//endClass |
| | | |
| | |
| | | } |
| | | } |
| | | Logger.Scheduler.Info($"物料信息存入实体中,总数:[{items.Count}]"); |
| | | db = Biz.Db; |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | if (items.Any()) |
| | |
| | | Logger.Scheduler.Error(action.Message); |
| | | } |
| | | Logger.Scheduler.Info($"物料信息存入数据库,总数:[{items.Count}]"); |
| | | action.Message = $"物料信息存入数据库,总数:[{items.Count}]"; |
| | | return action; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | Logger.Scheduler.Info($"客户信息存入实体中,总数:[{items.Count}]"); |
| | | db = Biz.Db; |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | if (items.Any()) |
| | |
| | | Logger.Scheduler.Error(action.Message); |
| | | } |
| | | Logger.Scheduler.Info($"客户信息存入数据库,总数:[{items.Count}]"); |
| | | action.Message = $"客户信息存入数据库,总数:[{items.Count}]"; |
| | | return action; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | Logger.Scheduler.Info($"供应商信息存入实体中,总数:[{items.Count}]"); |
| | | db = Biz.Db; |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | if (items.Any()) |
| | |
| | | Logger.Scheduler.Error(action.Message); |
| | | } |
| | | Logger.Scheduler.Info($"供应商信息存入数据库,总数:[{items.Count}]"); |
| | | action.Message = $"供应商信息存入数据库,总数:[{items.Count}]"; |
| | | return action; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | Logger.Scheduler.Info($"客户条码信息存入实体中,总数:[{items.Count}]"); |
| | | db = Biz.Db; |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | if (items.Any()) |
| | |
| | | Logger.Scheduler.Error(action.Message); |
| | | } |
| | | Logger.Scheduler.Info($"客户条码信息存入数据库,总数:[{items.Count}]"); |
| | | action.Message = $"客户条码信息存入数据库,总数:[{items.Count}]"; |
| | | return action; |
| | | } |
| | | |
| | |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | ApiAction IInterfaceService.ImmediateRun<TJob>(TJob newEntity, string jobname) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 立即运行 |
| | | /// </summary> |
| | | /// <param name="jobname"></param> |
| | | public ApiAction ImmediateRun<TJob>(TJob newEntity, string jobname) where TJob : class, ITJob |
| | | { |
| | | ApiAction apiAction = new(); |
| | | try |
| | | { |
| | | if (JobManager.AllSchedules.Any(q => q.Name == jobname)) |
| | | { |
| | | JobManager.RemoveJob(jobname); |
| | | string guid = Guid.NewGuid().ToString("N"); |
| | | TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobname).First(); |
| | | var trigger = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == job.ID).First(); |
| | | TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args); |
| | | args.runType = RunType.ToRunNow; |
| | | JobManager.AddJob<TJob>((s) => GenerateSchedule(args, s.WithName(jobname))); |
| | | trigger.Status = TSK_TRIG.Statuss.Running.GetValue(); |
| | | trigger.Args = JsonConvert.SerializeObject(args); |
| | | |
| | | var db = Biz.Db; |
| | | //保存到数据库 |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | db.Updateable(trigger, "system_ImmediateRun_job").UpdateColumns(q => new { q.Status, q.Args, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); |
| | | }); |
| | | if (!dbTran.IsSuccess) |
| | | { |
| | | Logger.Scheduler.Fatal(dbTran.ErrorException, $"立即运行工作任务时保存状态到数据库异常"); |
| | | } |
| | | apiAction.LocaleMsg = new($"立即运行工作任务成功"); |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | apiAction.CatchExceptionWithLog(ex); |
| | | } |
| | | return apiAction; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 停止服务 |
| | | /// </summary> |
| | | public void Stop() |
| | |
| | | /// </summary> |
| | | public class TigerJobBase |
| | | { |
| | | public static Schedule Schedule; |
| | | public static TSK_JOB Job = new TSK_JOB(); |
| | | public static TSK_TRIG Trig = new TSK_TRIG(); |
| | | public static TrigArgs Args = new TrigArgs(); |
| | | public Schedule Schedule; |
| | | public TSK_JOB Job = new TSK_JOB(); |
| | | public TSK_TRIG Trig = new TSK_TRIG(); |
| | | public TrigArgs Args = new TrigArgs(); |
| | | /// <summary> |
| | | /// 开始时间 |
| | | /// </summary> |
| | |
| | | /// <param name="JobName"></param> |
| | | /// <param name="remark"></param> |
| | | /// <returns></returns> |
| | | public static ApiAction SaveFluentSchedulerLog(string status, string remark) |
| | | public ApiAction SaveFluentSchedulerLog(string status, string remark) |
| | | { |
| | | ApiAction action = new ApiAction(); |
| | | if (Trig != null) |
| | |
| | | /// <summary> |
| | | /// 获取任务 |
| | | /// </summary> |
| | | public static void GetJob(string jobType) |
| | | public void GetJob(string jobType) |
| | | { |
| | | Job = Biz.Db.Queryable<TSK_JOB>().Where(q => q.JobType == jobType).IncludesAllFirstLayer().First(); |
| | | Args = JsonConvert.DeserializeObject<TrigArgs>(Job.Triggers[0].Args); |
| | |
| | | /// 判断时间,返回是否可以继续工作任务 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static TskJobInput CheckIFCanGo() |
| | | public TskJobInput CheckIFCanGo() |
| | | { |
| | | TskJobInput tskJobInput = new TskJobInput(); |
| | | var dateTime = DateTime.Now; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 立即运行任务 |
| | | /// </summary> |
| | | /// <param name="action"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [Route("api/[controller]/[action]")] |
| | | public async Task<IActionResult> ImmediateRun(ApiAction action) |
| | | { |
| | | ApiAction response = new(); |
| | | try |
| | | { |
| | | response = response.GetResponse(DI.Resolve<IBizContext>().GetInterfaceService()?.ImmediateRun(action.NewDataEntity(), action.Data?.ToString()) ?? new ApiAction($"任务未启用", false)); |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | response = response.GetResponse().CatchExceptionWithLog(ex); |
| | | } |
| | | return Ok(response); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除作业 |
| | | /// </summary> |
| | | /// <param name="action"></param> |
| | |
| | | public void SetSchedulerFactory(Sundial.ISchedulerFactory schedulerFactory); |
| | | public ApiAction AddJob<TJob>(TJob newEntity, TskJobParam jobParam) where TJob : class, Sundial.IJob; |
| | | public ApiAction AddTskJob<TJob>(TJob newEntity, FluentJobParam jobParam) where TJob : class, ITJob; |
| | | public ApiAction ImmediateRun<TJob>(TJob newEntity, string jobname) where TJob : class, ITJob; |
| | | public ApiAction AddJob<TJob>(string jobname, params Sundial.TriggerBuilder[] triggerBuilders) where TJob : class, Sundial.IJob; |
| | | public ApiAction UpdateJob(TSK_JOB job); |
| | | public void StartAllJob(); |