服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2025-01-09 c40ce123424183b2fce3bf9dfb24d859f3eacb52
新增获取物料条码信息的功能

在 `Jobs.U9C_ME_GetMaterialSn.cs` 文件中,添加了多个 `using` 语句并新增了 `U9C_ME_GetMaterialSn` 类,该类实现了 `ITJob` 接口,用于从 U9C 获取物料条码信息,包含日志记录、任务调度和异常处理逻辑。

在 `U9C_MES.cs` 文件中,新增了 `GetMaterialBarCode` 方法,用于同步物料条码信息,包含数据检查和异常处理逻辑。

在 `InterfaceServiceNew.cs` 文件中,移除了对特定作业名称的注释检查逻辑,简化了作业类型的获取和实例化过程。

在 `IU9C_MES.cs` 文件中,新增了 `GetMaterialBarCode` 方法的声明,用于获取物料条码信息。
已修改3个文件
已添加1个文件
112 ■■■■■ 文件已修改
Tiger.Business.MES/Task/Jobs.U9C_ME_GetMaterialSn.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/iERP/U9C_MES.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/Services/Base/InterfaceServiceNew.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness.MES/iERP/IU9C_MES.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Task/Jobs.U9C_ME_GetMaterialSn.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
using Rhea.Common;
using FluentScheduler;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Tiger.IBusiness;
using Tiger.Model;
using Tiger.Model.Minsun;
namespace Tiger.Business.MES
{
    /// <summary>
    /// ä»ŽU9C获取物料条码信息
    /// </summary>
    public class U9C_ME_GetMaterialSn : TigerJobBase, ITJob
    {
        public string Id { get; set; } = Guid.NewGuid().ToString("N");
        public string Tag { get; set; }
        public string Name { get; set; }
        public U9C_ME_GetMaterialSn()
        {
            Id = Guid.NewGuid().ToString("N");
            Tag = "U9C_ME_GetMaterialSn Interface Job";
            GetJob(typeof(U9C_ME_GetMaterialSn).Name);
            Name = Job.JobName;
        }
        public void Execute()
        {
            #region å›ºå®šå†™æ³•
            Logger.Scheduler.Info($"/**\r\n *进入计划调度(名称: {Name} )....\r\n */\r\n"); //固定写法
            Schedule = JobManager.GetSchedule(Name); //固定写法
            StartTime = DateTime.Now; //固定写法
            #endregion
            try
            {
                string msg = "";
                string status = "Successed";
                GetJob(typeof(U9C_ME_GetMaterialSn).Name);
                TskJobInput tskJobInput = CheckIFCanGo();
                if (tskJobInput.result)
                {
                    var result = DI.Resolve<IU9C_MES>().GetMaterialBarCode(tskJobInput.input);
                    if (!result.IsSuccessed)
                    {
                        msg = $"获取物料条码信息异常:{result.Message}";
                        Logger.Scheduler.Error(msg);
                        status = "Failed";
                    }
                    else
                    {
                        msg = $"从U9C获取物料条码信息成功:{result.Message}";
                        //固定写法
                        Trig.LastRunTime = Args.ByInterval == "Y" ? tskJobInput.input.endTime.ToDateTime().AddHours(Args.Interval) : tskJobInput.input.endTime.ToDateTime();
                        Trig.NextRunTime = Schedule.NextRun;
                    }
                }
                SaveFluentSchedulerLog(status, $"{msg}");
                Logger.Scheduler.Info($"计划调度(名称:{Name})完成,返回信息:{msg}\r\n");
            }
            catch (System.Exception ex)
            {
                Logger.Scheduler.Fatal(ex, "获取物料条码信息异常");
                SaveFluentSchedulerLog("Failed", ex.Message);
            }
            Logger.Scheduler.Info($"/* è®¡åˆ’调度(名称:{Name})结束 */\r\n"); //固定写法
        }
    }
}
Tiger.Business.MES/iERP/U9C_MES.cs
@@ -17,6 +17,7 @@
using Apache.NMS.ActiveMQ.Commands;
using System.Security.Cryptography;
using System.Diagnostics;
using Tiger.Model.MES.Yada;
namespace Tiger.Business.MES
{
@@ -688,5 +689,28 @@
            }
            return action;
        }
        /// <summary>
        /// åŒæ­¥ç‰©æ–™æ¡ç ä¿¡æ¯
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public ApiAction GetMaterialBarCode(U9C_MES_Input input)
        {
            var action = new ApiAction();
            Logger.Scheduler.Info($"物料条码信息开始同步。。。数据检查进行中。。。");
            Logger.Scheduler.Info($"{input.triggerDetail}");
            DbClient db = Biz.DataSource["YadaU9C"].Client;
            try
            {
                var list = db.Queryable<mes_MaterialBarCode>().Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList();
            }
            catch (Exception ex)
            {
                action.CatchExceptionWithLog(ex, Biz.L(ex.Message));
            }
            return action;
        }
    }
}
Tiger.Business/Services/Base/InterfaceServiceNew.cs
@@ -418,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)
Tiger.IBusiness.MES/iERP/IU9C_MES.cs
@@ -16,6 +16,7 @@
        public ApiAction GetSupplier(U9C_MES_Input input);
        public Task<ApiAction> GetBasWo(GetWoInput input);
        public ApiAction GetCustBarCode(U9C_MES_Input input);
        public ApiAction GetMaterialBarCode(U9C_MES_Input input);
        public ApiAction GetU9CBasWo(U9C_MES_Input input);
    }
}