From c40ce123424183b2fce3bf9dfb24d859f3eacb52 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 09 一月 2025 17:00:03 +0800 Subject: [PATCH] 新增获取物料条码信息的功能 --- Tiger.Business/Services/Base/InterfaceServiceNew.cs | 79 +++++++++++++++++++++++++++++++-------- 1 files changed, 63 insertions(+), 16 deletions(-) diff --git a/Tiger.Business/Services/Base/InterfaceServiceNew.cs b/Tiger.Business/Services/Base/InterfaceServiceNew.cs index 93e4aea..527f07a 100644 --- a/Tiger.Business/Services/Base/InterfaceServiceNew.cs +++ b/Tiger.Business/Services/Base/InterfaceServiceNew.cs @@ -6,6 +6,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Security.Cryptography; using System.Text; using System.Threading; @@ -324,14 +325,22 @@ { JobManager.AddJob<TJob>((s) => GenerateSchedule(jobParam.Args, s.WithName(jobParam.JobName))); string guid = Guid.NewGuid().ToString("N"); - TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobParam.JobName).First() ?? new() + if (Biz.Db.Queryable<TSK_JOB>().Any(x => + (x.JobName != jobParam.JobName && x.JobType == jobParam.DataType) || + (x.JobName == jobParam.JobName && x.JobType != jobParam.DataType))) + { + apiAction.IsSuccessed = false; + apiAction.LocaleMsg = new($"鐩稿悓鐨勭被鍚嶄笉鑳芥湁涓嶅悓鐨勪换鍔″悕鎴栬�呯浉鍚岀殑浠诲姟鍚嶄笉鑳芥湁涓嶅悓鐨勭被鍚�"); + return apiAction; + } + TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobParam.JobName && x.JobType == jobParam.DataType).First() ?? new() { ID = guid, - Remark = jobParam.Remark, - JobType = jobParam.JobName, - AssemblyName = jobParam.AssemblyName, - JobName = jobParam.JobName, }; + job.Remark = jobParam.Remark; + job.JobType = jobParam.DataType; + job.AssemblyName = jobParam.AssemblyName; + job.JobName = jobParam.JobName; var trigger = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == job.ID).First() ?? new TSK_TRIG() { JobId = guid, @@ -345,7 +354,7 @@ var dbTran = db.UseTran(() => { var y = db.Storageable(job) - .WhereColumns(t => new { t.JobName, t.GHOST_ROW }) + .WhereColumns(t => new { t.JobName,t.JobType, t.GHOST_ROW }) .ToStorage(); y.AsInsertable.ExecuteCommand(); y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand(); @@ -409,15 +418,12 @@ var jobs = Biz.Db.Queryable<TSK_JOB>().IncludesAllFirstLayer().ToList(); foreach (var job in jobs) { - if (job.JobName == "fU9C_MES_GetWo" || job.JobName == "fTest") - { - Type type = Type.GetType($"{job.AssemblyName}.{job.JobType},{job.AssemblyName}", throwOnError: true); - dynamic _type = Activator.CreateInstance(type); - TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args); - Schedule schedule = Schedule(_type, job.JobName, registry); - //鐢熸垚璁″垝 - GenerateSchedule(args, schedule); - } + Type type = Type.GetType($"{job.AssemblyName}.{job.JobType},{job.AssemblyName}", throwOnError: true); + dynamic _type = Activator.CreateInstance(type); + TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args); + Schedule schedule = Schedule(_type, job.JobName, registry); + //鐢熸垚璁″垝 + GenerateSchedule(args, schedule); } } catch (System.Exception ex) @@ -437,7 +443,7 @@ /// <returns></returns> private Schedule Schedule<TJob>(TJob entity, string JobName, Registry registry) where TJob : class, ITJob { - return registry.Schedule<TJob>().WithName(typeof(TJob).Name); + return registry.Schedule<TJob>().WithName(JobName); } /// <summary> @@ -532,6 +538,47 @@ } /// <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).IncludesAllFirstLayer().First(); + var trigger = job.Triggers[0]; + 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() -- Gitblit v1.9.3