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