服务端的TigerApi 框架,基于.NET6 2024 版本
Cloud Zhang
2024-05-08 e9bb18343eff6305b0a734784dbe0dc0e589ab05
合并
已删除1个文件
已修改14个文件
已添加23个文件
2330 ■■■■ 文件已修改
Tiger.Api/ApiWebHostService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Controllers/HomeController.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Controllers/Test/TestController.R.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Program.cs 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Startup.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Tiger.Api.csproj 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/Home/Index.cshtml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/Home/Privacy.cshtml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/Shared/Error.cshtml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/Shared/_Layout.cshtml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/Shared/_Layout.cshtml.css 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/Shared/_ValidationScriptsPartial.cshtml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/_ViewImports.cshtml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Views/_ViewStart.cshtml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/WebHostServiceExtensions.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/appsettings.json 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/注册Windows服务.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/MES/SMT/Biz.SmtTool.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/Tiger.Business.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/Core/ApiConfig.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/Core/MQTTHelper.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/MES/SMT/ISmtTool.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/Tiger.IBusiness.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_FEEDER_TYPE.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_MAINTAIN.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_MT_DTL.cs 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_MT_PROJECT.cs 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_SOLDER.cs 248 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_SOLDER_HIS.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_TOOL.cs 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_TOOL_HIS.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Tiger.Model.Net.csproj 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/packages.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/ApiWebHostService.cs
@@ -6,9 +6,26 @@
using System.Threading.Tasks;
using Rhea.Common;
using Tiger.IBusiness;
using System.ServiceProcess;
namespace Tiger.Api
{
    public static class WebHostServiceExtensions
    {
        public static void RunAsApiService(this IWebHost host)
        {
            try
            {
                var webHostService = new ApiWebHostService(host);
                ServiceBase.Run(webHostService);
            }
            catch (System.Exception ex)
            {
                Logger.Console.Fatal(ex, "Windows Services Exception");
            }
        }
    }
    internal class ApiWebHostService : WebHostService
    {
        public ApiWebHostService(IWebHost host) : base(host)
@@ -39,7 +56,7 @@
                DI.Resolve<IServicesBus>().StopServices();
                //关闭DB缓存自动更新
                DI.Resolve<IDbCacheBus>().StopAutoUpdate();
                MQTTHelper.MQTTConn?.Close();
                //MQTTHelper.MQTTConn?.Close();
                base.OnStopping();
            }
            catch (System.Exception ex)
Tiger.Api/Controllers/HomeController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
namespace Tiger.Api.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
        public IActionResult Privacy()
        {
            return View();
        }
        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View();
        }
    }
}
Tiger.Api/Controllers/Test/TestController.R.cs
@@ -18,6 +18,7 @@
using Tiger.Model.Sharetronic.Shelf;
using Newtonsoft.Json.Linq;
using Tiger.Api.iBiz;
using System.Net;
namespace Tiger.Api.Controllers.Test
{
@@ -294,7 +295,15 @@
            Logger.Default.Info($"{begin:mmssfff} completed");
            return Ok($"{begin:mmssfff} completed");
        }
    }
    /// <summary>
    /// MQTT测试控制器
    /// </summary>
    [ApiController]
    [Route("api/[controller]/[action]")]
    public partial class _MqttTestController : ControllerBase
    {
        [HttpGet]
        public async Task<IActionResult> DoSomething1(int duration)
        {
@@ -308,24 +317,24 @@
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<IActionResult> SendMQTTAsync([FromBody] ApiAction action)
        {
            string msg = "";
            await Task.Run(() =>
            {
                msg = action.ID;
                MQTTHelper.Send("TestSendMQTT001", new MQTTMessage()
                {
                    Type = "TestSendMQTT001",
                    Content = "TestSendMQTT001,测试消息!",
                    Data = "",
                    DataType = typeof(String).Name,
                    IsSuccessed = true,
                });
            });
            return Ok(MQTTHelper.Send(action.GetResponse(msg)));
        }
        //[HttpPost]
        //public async Task<IActionResult> SendMQTTAsync([FromBody] ApiAction action)
        //{
        //    string msg = "";
        //    await Task.Run(() =>
        //    {
        //        msg = action.ID;
        //        MQTTHelper.Send("TestSendMQTT001", new MQTTMessage()
        //        {
        //            Type = "TestSendMQTT001",
        //            Content = "TestSendMQTT001,测试消息!",
        //            Data = "",
        //            DataType = typeof(String).Name,
        //            IsSuccessed = true,
        //        });
        //    });
        //    return Ok(MQTTHelper.Send(action.GetResponse(msg)));
        //}
        /// <summary>
        /// DeleteMQTTTopicAsync
@@ -338,8 +347,9 @@
            string msg = "";
            await Task.Run(() =>
            {
                msg = MQTTHelper.DeleteTopic(action.ID) ? "删除Topic成功" : "删除Topic失败";
                //msg = MQTTHelper.DeleteTopic(action.ID) ? "删除Topic成功" : "删除Topic失败";
            });
            return Ok(action.GetResponse(msg));
        }
    }
Tiger.Api/Program.cs
@@ -18,73 +18,94 @@
using Tiger.IBusiness;
bool isService = Debugger.IsAttached ? false : Directory.GetCurrentDirectory().ToLower() == @"c:\windows\system32";
var pathToContentRoot = AppDomain.CurrentDomain.BaseDirectory;
if (isService)
try
{
    var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
    pathToContentRoot = Path.GetDirectoryName(pathToExe) + "\\";
    //非UI线程未捕获异常处理事件
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    //Task çº¿ç¨‹å†…未捕获异常处理事件
    TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
    bool isService = Debugger.IsAttached ? false : Directory.GetCurrentDirectory().ToLower() == @"c:\windows\system32";
    var pathToContentRoot = AppDomain.CurrentDomain.BaseDirectory;
    if (isService)
    {
        var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
        pathToContentRoot = Path.GetDirectoryName(pathToExe) + "\\";
    }
    var IsRunAsAdmin = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
    //var config = (new ConfigurationBuilder().SetBasePath(pathToContentRoot).AddJsonFile("appsettings.json")).Build();
    var prod = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute)).First() as AssemblyProductAttribute).Product;
    var vers = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute)).First() as AssemblyFileVersionAttribute).Version;
    var desc = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute)).First() as AssemblyDescriptionAttribute).Description;
    Logger.Default.Info($"{prod}(Version {vers}) {desc}");
    ConsoleExt.WriteLine("");
    ConsoleExt.WriteLine($"                         {prod}(Version {vers}) Base on .Net 6", ConsoleColor.Green);
    ConsoleExt.WriteLine("");
    ConsoleExt.Write($" ====== > ===== > ==== >---->--->-->-> >  ", ConsoleColor.DarkCyan);
    ConsoleExt.Write($"Link Start{(IsRunAsAdmin ? $" As Admin" : "")}", ConsoleColor.Cyan);
    ConsoleExt.WriteLine($"  < <-<--<---<----< ==== < ===== < ====== ", ConsoleColor.DarkCyan);
    Logger.Console.Info($"Begin to load {prod}");
    var options = new WebApplicationOptions
    {
        Args = args,
        ContentRootPath = pathToContentRoot
    };
    var builder = WebApplication.CreateBuilder(options);
    builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
    builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
    {
        //AutoFac é…ç½®æ–‡ä»¶æ³¨å…¥
        AutoFacContainer.Init(builder);
        builder.RegisterBuildCallback(scope =>
        {
            AutoFacContainer.Instance = (IContainer)scope;
            //初始化Business的AutoFacContainer
            //DI.Resolve<IBiz>().SetContainer(AutoFacContainer.Instance = (IContainer)scope);
        });
        //builder.RegisterType<TestService>().As<ITest>();
    });
    Logger.Console.Info($"AutoFac container inject successful");
    var startup = new Startup(builder.Configuration);
    startup.ConfigureServices(builder.Services);
    var config = (new ConfigurationBuilder().SetBasePath(pathToContentRoot).AddJsonFile("appsettings.json")).Build();
    var urls = config.AsEnumerable().Where(q => q.Key.StartsWith("StartUpSetting:UseUrls") && q.Value != null).Select(q => q.Value).ToArray();
    builder.WebHost.UseUrls(urls);
    builder.WebHost.UseKestrel(opt =>
    {
        opt.Limits.MinRequestBodyDataRate = null;
    });
    if (isService)
    {
        builder.Host.UseWindowsService();
        Logger.Default.Info("Run Api as Windows Services");
    }
    Logger.Console.Info($"Configure WebApplication successful");
    var app = builder.Build();
    Logger.Console.Info($"Build {prod} successful");
    // Fetch all the dependencies from the DI container 
    // var hostLifetime = app.Services.GetRequiredService<IHostApplicationLifetime>();
    // As pointed out by DavidFowler, IHostApplicationLifetime is exposed directly on ApplicationBuilder
    // Call Configure(), passing in the dependencies
    startup.Configure(app, app.Environment);
    Logger.Console.Info($"Run {prod} Successful");
    app.Run();
    Logger.Console.Info($"{prod} Host is shut down");
}
var options = new WebApplicationOptions
catch (System.Exception ex)
{
    Args = args,
    ContentRootPath = pathToContentRoot
};
var builder = WebApplication.CreateBuilder(options);
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
{
    //AutoFac é…ç½®æ–‡ä»¶æ³¨å…¥
    AutoFacContainer.Init(builder);
    builder.RegisterBuildCallback(scope =>
    {
        AutoFacContainer.Instance = (IContainer)scope;
        //初始化Business的AutoFacContainer
        //DI.Resolve<IBiz>().SetContainer(AutoFacContainer.Instance = (IContainer)scope);
    });
    //builder.RegisterType<TestService>().As<ITest>();
});
var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);
Main(args);
var config = (new ConfigurationBuilder().SetBasePath(pathToContentRoot).AddJsonFile("appsettings.json")).Build();
var urls = config.AsEnumerable().Where(q => q.Key.StartsWith("StartUpSetting:UseUrls") && q.Value != null).Select(q => q.Value).ToArray();
var prod = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute)).First() as AssemblyProductAttribute).Product;
builder.WebHost.UseUrls(urls);
builder.WebHost.UseKestrel(opt =>
{
    opt.Limits.MinRequestBodyDataRate = null;
});
if (isService)
{
    builder.Host.UseWindowsService();
    Logger.Console.Fatal(ex, "Run {prod} Host Exception");
}
var app = builder.Build();
// Fetch all the dependencies from the DI container 
// var hostLifetime = app.Services.GetRequiredService<IHostApplicationLifetime>();
// As pointed out by DavidFowler, IHostApplicationLifetime is exposed directly on ApplicationBuilder
// Call Configure(), passing in the dependencies
startup.Configure(app, app.Environment);
Logger.Console.Info($"Run {prod} Host");
app.Run();
Logger.Console.Info($"{prod} Host is shut down");
void Main(string[] args)
finally
{
    //非UI线程未捕获异常处理事件
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    //Task çº¿ç¨‹å†…未捕获异常处理事件
    TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
    CreateWindowsServicesBuilder(args);
    Logger.Console.Info($"Api Host finally shut down");
}
@@ -120,21 +141,22 @@
    Logger.Default.Fatal(e.Exception, $"捕获线程内未处理异常");
    e.SetObserved();//设置该异常已察觉(这样处理后就不会引起程序崩溃)
}
void CreateWindowsServicesBuilder(string[] args)
{
    try
    {
        //bool isService = Debugger.IsAttached ? false : Directory.GetCurrentDirectory().ToLower() == @"c:\windows\system32";
        bool isService = Debugger.IsAttached ? false : Directory.GetCurrentDirectory().ToLower() == @"c:\windows\system32";
        //var pathToContentRoot = AppDomain.CurrentDomain.BaseDirectory;
        //if (isService)
        //{
        //    var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
        //    pathToContentRoot = Path.GetDirectoryName(pathToExe) + "\\";
        //}
        var pathToContentRoot = AppDomain.CurrentDomain.BaseDirectory;
        if (isService)
        {
            var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
            pathToContentRoot = Path.GetDirectoryName(pathToExe) + "\\";
        }
        var IsRunAsAdmin = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
        //var config = (new ConfigurationBuilder().SetBasePath(pathToContentRoot).AddJsonFile("appsettings.json")).Build();
        var config = (new ConfigurationBuilder().SetBasePath(pathToContentRoot).AddJsonFile("appsettings.json")).Build();
        var prod = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute)).First() as AssemblyProductAttribute).Product;
        var vers = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute)).First() as AssemblyFileVersionAttribute).Version;
        var desc = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute)).First() as AssemblyDescriptionAttribute).Description;
@@ -147,24 +169,24 @@
        ConsoleExt.WriteLine($"  < <-<--<---<----< ==== < ===== < ====== ", ConsoleColor.DarkCyan);
        Logger.Console.Info($"Run {prod} Host");
        //var urls = string.IsNullOrEmpty(config["StartUpSetting:UseUrls"]) ? "http://*:3810" : config["StartUpSetting:UseUrls"];
        //var urls = config.AsEnumerable().Where(q => q.Key.StartsWith("StartUpSetting:UseUrls") && q.Value != null).Select(q => q.Value).ToArray();
        //var host = WebHost.CreateDefaultBuilder(args)
        //    .UseContentRoot(pathToContentRoot)
        //    .UseUrls(urls)
        //    .UseStartup<Startup>()
        //    .Build();
        var urls = config.AsEnumerable().Where(q => q.Key.StartsWith("StartUpSetting:UseUrls") && q.Value != null).Select(q => q.Value).ToArray();
        var host = WebHost.CreateDefaultBuilder(args)
            .UseContentRoot(pathToContentRoot)
            .UseUrls(urls)
            .UseStartup<Startup>()
            .Build();
        //if (isService)
        //{
        //    host.RunAsApiService();
        //    //host.RunAsService();
        //}
        //else
        //{
        //    Logger.Console.Info($"Run {prod} Host");
        //    host.Run();
        //    Logger.Console.Info($"{prod} Host is shut down");
        //}
        if (isService)
        {
            host.RunAsApiService();
            //host.RunAsService();
        }
        else
        {
            Logger.Console.Info($"Run {prod} Host");
            host.Run();
            Logger.Console.Info($"{prod} Host is shut down");
        }
    }
    catch (System.Exception ex)
    {
Tiger.Api/Startup.cs
@@ -15,6 +15,7 @@
using System.Linq;
using System.Reflection;
using Tiger.IBusiness;
using Tiger.IBusiness.Utility;
namespace Tiger.Api
{
@@ -26,6 +27,7 @@
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            //初始化 ApiConfig
            ApiConfig.InitConfig(configuration);
            //测试代码
@@ -53,7 +55,7 @@
        {
            //services.RegisterAssembly("Tiger.Service");
            //services.AddTransient(typeof(IBaseService<>), typeof(BaseService<>));
            services.AddControllers().AddNewtonsoftJson(opt =>
            services.AddControllersWithViews().AddNewtonsoftJson(opt =>
            {
                opt.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
                opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
@@ -115,12 +117,13 @@
            app.UseCors(anyAllowSpecificOrigins);//支持跨域:允许特定来源的主机访问
            //app.UseHttpsRedirection();
            app.UseStaticFiles();
            //app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers().RequireCors(anyAllowSpecificOrigins);
                //endpoints.MapControllers();
                endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}").RequireCors(anyAllowSpecificOrigins);
                //endpoints.MapControllers().RequireCors(anyAllowSpecificOrigins);
            });
            ConsoleExt.Write($"Api Run as{((ApiConfig.IsDevVersion || ApiConfig.IsTestVersion) ? ((ApiConfig.IsDevVersion ? " Dev" : "") + (ApiConfig.IsTestVersion ? " Test" : "")) : " Release")} Edition", ConsoleColor.Cyan);
@@ -143,6 +146,7 @@
                    (BizConfig.Configuration[$"Databases:Main:ConnectionString"].Split(';').Any(q => q.Contains("port")) ? "," : "") +
                    BizConfig.Configuration[$"Databases:Main:ConnectionString"].Split(';').Where(q => q.Contains("Data Source") || q.Contains("DataSource") || q.Contains("database")).FirstOrDefault(), ConsoleColor.Cyan);
            }
            //初始化Business的AutoFacContainer
            DI.Resolve<IBiz>().SetContainer(AutoFacContainer.Instance);
            //开启Api监控总线
@@ -151,6 +155,8 @@
            DI.Resolve<IServicesBus>().StartServices(app.ApplicationServices.GetService<ISchedulerFactory>());
            //开启DB缓存自动更新
            DI.Resolve<IDbCacheBus>().StartAutoUpdate();
            //开启MQTT服务
            MQTTHelper.Start();
        }
        /// <summary>
Tiger.Api/Tiger.Api.csproj
@@ -53,6 +53,14 @@
  <ItemGroup>
    <Compile Remove="wwwroot\**" />
    <Content Remove="wwwroot\**" />
    <EmbeddedResource Remove="wwwroot\**" />
    <None Remove="wwwroot\**" />
  </ItemGroup>
  <ItemGroup>
    <Compile Remove="iBiz\Logger.cs" />
  </ItemGroup>
@@ -81,6 +89,15 @@
    <Folder Include="Controllers\QMS\" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Views\Home\Index.cshtml" />
    <None Include="Views\Home\Privacy.cshtml" />
    <None Include="Views\Shared\Error.cshtml" />
    <None Include="Views\Shared\_Layout.cshtml" />
    <None Include="Views\Shared\_ValidationScriptsPartial.cshtml" />
    <None Include="Views\_ViewImports.cshtml" />
    <None Include="Views\_ViewStart.cshtml" />
  </ItemGroup>
  <ItemGroup>
    <Content Update="appsettings.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
Tiger.Api/Views/Home/Index.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
@{
    ViewData["Title"] = "Home Page";
}
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
Tiger.Api/Views/Home/Privacy.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
@{
    ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>
Tiger.Api/Views/Shared/Error.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
@* @model ErrorViewModel *@
@{
    ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@* @if (Model.ShowRequestId)
{
    <p>
        <strong>Request ID:</strong> <code>@Model.RequestId</code>
    </p>
} *@
<h3>Development Mode</h3>
<p>
    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
    It can result in displaying sensitive information from exceptions to end users.
    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
    and restarting the app.
</p>
Tiger.Api/Views/Shared/_Layout.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - WebApplication2</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
    <link rel="stylesheet" href="~/WebApplication2.styles.css" asp-append-version="true" />
</head>
<body>
    <header>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container-fluid">
                <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">WebApplication2</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                    <ul class="navbar-nav flex-grow-1">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </header>
    <div class="container">
        <main role="main" class="pb-3">
            @RenderBody()
        </main>
    </div>
    <footer class="border-top footer text-muted">
        <div class="container">
            &copy; 2024 - WebApplication2 - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
        </div>
    </footer>
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
    @await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Tiger.Api/Views/Shared/_Layout.cshtml.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
a.navbar-brand {
  white-space: normal;
  text-align: center;
  word-break: break-all;
}
a {
  color: #0077cc;
}
.btn-primary {
  color: #fff;
  background-color: #1b6ec2;
  border-color: #1861ac;
}
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
  color: #fff;
  background-color: #1b6ec2;
  border-color: #1861ac;
}
.border-top {
  border-top: 1px solid #e5e5e5;
}
.border-bottom {
  border-bottom: 1px solid #e5e5e5;
}
.box-shadow {
  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
}
button.accept-policy {
  font-size: 1rem;
  line-height: inherit;
}
.footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  white-space: nowrap;
  line-height: 60px;
}
Tiger.Api/Views/Shared/_ValidationScriptsPartial.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
Tiger.Api/Views/_ViewImports.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
@using Tiger.Api
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Tiger.Api/Views/_ViewStart.cshtml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
@{
    Layout = "_Layout";
}
Tiger.Api/WebHostServiceExtensions.cs
ÎļþÒÑɾ³ý
Tiger.Api/appsettings.json
@@ -41,5 +41,21 @@
    "Vue4": "http://127.0.0.1:5173",
    "Vue5": "http://localhost:5173"
  },
  "MQTT": {
    "Enable": true,
    "Address": "47.115.28.255",
    "Port": 1883,
    "Username": "api",
    "Password": "emqx@123",
    "ApiPort": 18083,
    "ApiKey": "ee26b0dd4af7e749",
    "ApiSecretKey": "XHOUC9BQSoa0j0jRINQEkQanIR1nzDQUY8GnYtaktEQJ",
    "WillMsgTopic": "",
    "WillMsgQos": 0,
    "WillMsgRetain": true,
    "WillMsgPayload": "Api Offline",
    "WillMsgDelay": 5,
    "WillMsgExpiry": 300
  },
  "RunInterface": false
}
Tiger.Api/×¢²áWindows·þÎñ.txt
@@ -5,7 +5,7 @@
sc create TigerApi_PDA binPath= "D:\WMS\Api\Api_PDA\TigerApiHost.exe" start= auto displayname= "Tiger Api Host - PDA"
sc create TigerApi_Test binPath= "D:\WMS\Api\Api_Test\TigerApiHost.exe" start= auto displayname= "Tiger Api Host - Test"
sc create TigerApi_KB binPath= "D:\WMS\Api\Api_KB\TigerApiHost.exe" start= auto displayname= "Tiger Api Host - Kanban"
sc create TigerApi binPath= "D:\Projects\TigerClouds\TigerApi\Api\Tiger.Api\bin\Debug\net5.0\TigerApiHost.exe" start= auto displayname= "Tiger Api Host"
sc create TigerApi binPath= "D:\Projects\TigerCloudsGit\TigerClouds-Tech\Server\TigerApi6_2024\Tiger.Api\bin\Debug\net6.0\TigerApiHost.exe" start= auto displayname= "Tiger Api Host"
启动Windows服务
net start TigerApi
停止Windows服务
Tiger.Business/MES/SMT/Biz.SmtTool.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
using Tiger.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Rhea.Common;
using System.Net;
using System.Linq;
using Newtonsoft.Json;
using Tiger.IBusiness;
using static Tiger.Business.Biz;
using Microsoft.AspNetCore.Http;
namespace Tiger.Business
{
    public partial class Biz
    {
        /// <summary>
        /// å·¥å…·ç®¡ç†
        /// </summary>
        public partial class SmtTool : ISmtTool
        {
            /// <summary>
            /// èŽ·å–æœªä¸Šæ–™åˆ—è¡¨
            /// </summary>
            /// <param name="itemCode"></param>
            /// <param name="lineCode"></param>
            /// <param name="pcbSurface"></param>
            /// <param name="moCode"></param>
            /// <param name="machineCode"></param>
            /// <returns></returns>
            /// <exception cref="NotImplementedException"></exception>
            public Task<ApiAction<SMT_PROD_TABLE>> GetNotLoadingMaterial(string itemCode, string lineCode, string pcbSurface, string moCode, string machineCode = null)
            {
                throw new NotImplementedException();
            }
        }
    }
}
Tiger.Business/Tiger.Business.csproj
@@ -101,12 +101,12 @@
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="MailKit" Version="4.4.0" />
    <PackageReference Include="MailKit" Version="4.5.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
    <PackageReference Include="NLog" Version="5.2.8" />
    <PackageReference Include="NLog.Database" Version="5.2.8" />
    <PackageReference Include="Rhea.Common" Version="6.1.5.1351" />
    <PackageReference Include="Rhea.Common" Version="6.1.7.1356" />
  </ItemGroup>
  <ItemGroup>
Tiger.IBusiness/Core/ApiConfig.cs
@@ -179,7 +179,6 @@
    {
        public static IConfiguration Configuration => RheaConfig.Configuration;
        public static string DB_ModelAssembly => RheaConfig.DB_ModelAssembly;
        public static string MQTTService_IPAddress => RheaConfig.MQTTService_IPAddress;
        public static string DefaultLanguage => Configuration["DefaultLanguage"] ?? "en";
        public static void InitConfig(IConfiguration _configuration, Dictionary<string, Dictionary<string, string>> language)
        {
Tiger.IBusiness/Core/MQTTHelper.cs
@@ -1,4 +1,5 @@
using MQTTnet;
using Microsoft.Extensions.Configuration;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;
using MQTTnet.Server;
@@ -15,6 +16,53 @@
namespace Tiger.IBusiness.Utility
{
    /// <summary>
    /// MQTTHelper
    /// </summary>
    public static class MQTTHelper
    {
        #region Variables
        private static IConfiguration Setting = ApiConfig.Configuration;
        #endregion
        #region Propertys
        #endregion
        #region Functions
        public static void Start()
        {
            try
            {
                if (Setting["MQTT:Enable"].ToBoolean() == true)
                {
                    ConsoleExt.WriteLine("Start MQTT Service..........", ConsoleColor.Yellow);
                    Logger.Default.Info("Start MQTT Service");
                }
            }
            catch (System.Exception ex)
            {
                Logger.Default.Fatal(ex, "Start MQTT Service Exception");
            }
        }
        public static void Stop()
        {
            try
            {
                Logger.Console.Info("Stop MQTT Service");
            }
            catch (System.Exception ex)
            {
                Logger.Console.Fatal(ex, "Stop MQTT Service Exception");
            }
        }
        #endregion
    }
    /// <summary>
    /// EMQX å¸®åŠ©ç±»
    /// </summary>
@@ -35,20 +83,34 @@
            Password = password;
        }
        #region Variables
        private List<string> TopicList = new();
        #endregion
        #region Propertys
        public string Id { get; set; } = Guid.NewGuid().ToString("N");
        public string Tag { get; set; } = "ClientMonitor";
        public string Name { get; set; } = "ClientMonitor";
        public bool IsRunning { get; set; }
        public IMqttClient Client { get; set; } = new MqttFactory().CreateMqttClient();//MQTT客户端
        public string Address { get; set; }
        public int Port { get; set; } = 1883;
        public string ClientId { get; set; } = $"{Environment.MachineName}-Client-{Guid.NewGuid():N}";
        public string ClientId { get; set; } = $"{Environment.MachineName}-ApiClient-{Guid.NewGuid():N}";
        public string Username { get; set; }
        public string Password { get; set; }
        public int ApiPort { get; set; } = 18083;
        public string ApiKey { get; set; }
        public string ApiSecretKey { get; set; }
        public string ApiCredentials => Convert.ToBase64String(Encoding.ASCII.GetBytes($"{ApiKey}:{ApiSecretKey}"));
        /// <summary>
        /// MQTT客户端
        /// </summary>
        public IMqttClient Client = new MqttFactory().CreateMqttClient();
        private List<string> TopicList = new();
        //遗嘱消息
        public string WillMsgTopic { get; set; }
        public MqttQualityOfServiceLevel WillMsgQos { get; set; }
        public bool WillMsgRetain { get; set; }
        public string WillMsgPayload { get; set; }
        public int? WillMsgDelay { get; set; }
        public int? WillMsgExpiry { get; set; }
        #endregion
        public Result<IMqttClient> Connect(string clientId = null)
        {
Tiger.IBusiness/MES/SMT/ISmtTool.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using Rhea.Common;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tiger.Model;
namespace Tiger.IBusiness
{
    public interface ISmtTool
    {
        public Task<ApiAction<SMT_PROD_TABLE>> GetNotLoadingMaterial(string itemCode, string lineCode, string pcbSurface, string moCode, string? machineCode = null);
    }
}
Tiger.IBusiness/Tiger.IBusiness.csproj
@@ -14,12 +14,12 @@
    <PackageReference Include="Autofac" Version="8.0.0" />
    <PackageReference Include="Autofac.Configuration" Version="6.0.0" />
    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
    <PackageReference Include="MailKit" Version="4.4.0" />
    <PackageReference Include="MailKit" Version="4.5.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
    <PackageReference Include="MQTTnet" Version="4.3.3.952" />
    <PackageReference Include="NLog" Version="5.2.8" />
    <PackageReference Include="NLog.Database" Version="5.2.8" />
    <PackageReference Include="Rhea.Common" Version="6.1.5.1351" />
    <PackageReference Include="Rhea.Common" Version="6.1.7.1356" />
    <PackageReference Include="Sundial" Version="2.45.0" />
  </ItemGroup>
Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT飞达信息
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_FEEDER")]
    public class SMT_FEEDER : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT飞达信息
        /// </summary>
        public SMT_FEEDER() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// é£žè¾¾ç¼–码
        /// </summary>
        public string FEEDER_CODE { get; set; }
        /// <summary>
        /// é£žè¾¾åç§°
        /// </summary>
        public string FEEDER_NAME { get; set; }
        /// <summary>
        /// é£žè¾¾ç±»åž‹
        /// </summary>
        public string FEEDER_TYPE { get; set; }
        /// <summary>
        /// æœ€å¤§ä½¿ç”¨æ¬¡æ•°
        /// </summary>
        public int MAX_COUNT { get; set; }
        /// <summary>
        /// é¢„警使用次数
        /// </summary>
        public int ALERT_COUNT { get; set; }
        /// <summary>
        /// å·²ä½¿ç”¨æ¬¡æ•°
        /// </summary>
        public int USED_COUNT { get; set; }
        /// <summary>
        /// æ˜¯å¦ä½¿ç”¨ä¸­(Y/N)
        /// </summary>
        public string IS_USE { get; set; }
        /// <summary>
        /// æ˜¯å¦æ‰“印(Y/N)
        /// </summary>
        public string IS_PRINT { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string WORK_ORDER { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// è´´ç‰‡æœºç¼–码
        /// </summary>
        public string SMT_CODE { get; set; }
        /// <summary>
        /// ç«™ä½å·
        /// </summary>
        public string SLOT_NO { get; set; }
        /// <summary>
        /// åŠ å·¥é¢
        /// </summary>
        public string PCB_SURFACE { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_FEEDER类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_FEEDERId))]//ClassA表中的SMT_FEEDERId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_FEEDERId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_FEEDER_TYPE.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT飞达类型
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_FEEDER_TYPE")]
    public class SMT_FEEDER_TYPE : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT飞达类型
        /// </summary>
        public SMT_FEEDER_TYPE() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// é£žè¾¾ç±»åž‹ç¼–码
        /// </summary>
        public string TYPE_CODE { get; set; }
        /// <summary>
        /// é£žè¾¾ç±»åž‹åç§°
        /// </summary>
        public string TYPE_NAME { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_FEEDER_TYPE类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_FEEDER_TYPEId))]//ClassA表中的SMT_FEEDER_TYPEId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_FEEDER_TYPEId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT实时上料信息
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_LOADING")]
    public class SMT_LOADING : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT实时上料信息
        /// </summary>
        public SMT_LOADING() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string WORK_ORDER { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string PROD_CODE { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// è´´ç‰‡æœºç¼–码
        /// </summary>
        public string SMT_CODE { get; set; }
        /// <summary>
        /// ç«™ä½å·
        /// </summary>
        public string SLOT_NO { get; set; }
        /// <summary>
        /// é£žè¾¾ç±»åž‹
        /// </summary>
        public string FEEDER_TYPE { get; set; }
        /// <summary>
        /// é£žè¾¾ç¼–码
        /// </summary>
        public string FEEDER_CODE { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// é”¡è†UPN编码
        /// </summary>
        public string SOLDER_UPN { get; set; }
        /// <summary>
        /// åŠ å·¥é¢
        /// </summary>
        public string PCB_SURFACE { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_LOADING类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_LOADINGId))]//ClassA表中的SMT_LOADINGId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_LOADINGId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT上料历史记录
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_LOAD_HIS")]
    public class SMT_LOAD_HIS : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT上料历史记录
        /// </summary>
        public SMT_LOAD_HIS() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// æ“ä½œç±»åž‹(0Loading上料|1ChangeMaterial换料|2Unloading卸料|3ChangeFeeder换飞达|4UseStencil使用钢网|5UseSqueegee使用刮刀|6UseSolder使用锡膏|7UseAdhesive使用胶水)
        /// </summary>
        public string OPERATION { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string WORK_ORDER { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string PROD_CODE { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// è´´ç‰‡æœºç¼–码
        /// </summary>
        public string SMT_CODE { get; set; }
        /// <summary>
        /// ç«™ä½å·
        /// </summary>
        public string SLOT_NO { get; set; }
        /// <summary>
        /// é£žè¾¾ç±»åž‹
        /// </summary>
        public string FEEDER_TYPE { get; set; }
        /// <summary>
        /// é£žè¾¾ç¼–码
        /// </summary>
        public string FEEDER_CODE { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// åŠ å·¥é¢
        /// </summary>
        public string PCB_SURFACE { get; set; }
        /// <summary>
        /// é’¢ç½‘编码
        /// </summary>
        public string STENCIL { get; set; }
        /// <summary>
        /// åˆ®åˆ€ç¼–码
        /// </summary>
        public string SQUEEGEE { get; set; }
        /// <summary>
        /// é”¡è†UPN编码
        /// </summary>
        public string SOLDER_UPN { get; set; }
        /// <summary>
        /// èƒ¶æ°´UPN编码
        /// </summary>
        public string ADHESIVE_UPN { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_LOAD_HIS类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_LOAD_HISId))]//ClassA表中的SMT_LOAD_HISId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_LOAD_HISId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_MAINTAIN.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT工具保养记录
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_MAINTAIN")]
    public class SMT_MAINTAIN : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT工具保养记录
        /// </summary>
        public SMT_MAINTAIN() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// å·¥å…·ç¼–码
        /// </summary>
        public string TOOL_CODE { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹ç›®ç¼–码
        /// </summary>
        public string PROJ_CODE { get; set; }
        /// <summary>
        /// ç±»åž‹(0Normal正常|1Squeegee刮刀)
        /// </summary>
        public int RESULT { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_MAINTAIN类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_MAINTAINId))]//ClassA表中的SMT_MAINTAINId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_MAINTAINId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_MT_DTL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,161 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT工具保养记录明细
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_MT_DTL")]
    public class SMT_MT_DTL : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT工具保养记录明细
        /// </summary>
        public SMT_MT_DTL() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// ä¿å…»è®°å½•ID
        /// </summary>
        public string MT_ID { get; set; }
        /// <summary>
        /// å·¥å…·ç¼–码
        /// </summary>
        public string TOOL_CODE { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹ç›®ç¼–码
        /// </summary>
        public string PROJ_CODE { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值1
        /// </summary>
        public string VALUE01 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值2
        /// </summary>
        public string VALUE02 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值3
        /// </summary>
        public string VALUE03 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值4
        /// </summary>
        public string VALUE04 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值5
        /// </summary>
        public string VALUE05 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值6
        /// </summary>
        public string VALUE06 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值7
        /// </summary>
        public string VALUE07 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值8
        /// </summary>
        public string VALUE08 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值9
        /// </summary>
        public string VALUE09 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值10
        /// </summary>
        public string VALUE10 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值11
        /// </summary>
        public string VALUE11 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值12
        /// </summary>
        public string VALUE12 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值13
        /// </summary>
        public string VALUE13 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值14
        /// </summary>
        public string VALUE14 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值15
        /// </summary>
        public string VALUE15 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值16
        /// </summary>
        public string VALUE16 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值17
        /// </summary>
        public string VALUE17 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值18
        /// </summary>
        public string VALUE18 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值19
        /// </summary>
        public string VALUE19 { get; set; }
        /// <summary>
        /// ä¿å…»è®°å½•值20
        /// </summary>
        public string VALUE20 { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_MT_DTL类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_MT_DTLId))]//ClassA表中的SMT_MT_DTLId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_MT_DTLId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_MT_PROJECT.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,161 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT工具保养项目
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_MT_PROJECT")]
    public class SMT_MT_PROJECT : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT工具保养项目
        /// </summary>
        public SMT_MT_PROJECT() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// ä¿å…»é¡¹ç›®ç¼–码
        /// </summary>
        public string PROJ_CODE { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹ç›®åç§°
        /// </summary>
        public string PROJ_NAME { get; set; }
        /// <summary>
        /// ç±»åž‹(0SMTStencil钢网|1Squeegee刮刀)
        /// </summary>
        public int TOOL_TYPE { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹1
        /// </summary>
        public string ITEM01 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹2
        /// </summary>
        public string ITEM02 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹3
        /// </summary>
        public string ITEM03 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹4
        /// </summary>
        public string ITEM04 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹5
        /// </summary>
        public string ITEM05 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹6
        /// </summary>
        public string ITEM06 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹7
        /// </summary>
        public string ITEM07 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹8
        /// </summary>
        public string ITEM08 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹9
        /// </summary>
        public string ITEM09 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹10
        /// </summary>
        public string ITEM10 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹11
        /// </summary>
        public string ITEM11 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹12
        /// </summary>
        public string ITEM12 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹13
        /// </summary>
        public string ITEM13 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹14
        /// </summary>
        public string ITEM14 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹15
        /// </summary>
        public string ITEM15 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹16
        /// </summary>
        public string ITEM16 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹17
        /// </summary>
        public string ITEM17 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹18
        /// </summary>
        public string ITEM18 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹19
        /// </summary>
        public string ITEM19 { get; set; }
        /// <summary>
        /// ä¿å…»é¡¹20
        /// </summary>
        public string ITEM20 { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_MT_PROJECT类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_MT_PROJECTId))]//ClassA表中的SMT_MT_PROJECTId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_MT_PROJECTId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT产品料站表
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_PROD_TABLE")]
    public class SMT_PROD_TABLE : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT产品料站表
        /// </summary>
        public SMT_PROD_TABLE() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string PROD_CODE { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// æ›¿ä»£æ–™
        /// </summary>
        public string SUBITEM_CODE { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UNIT { get; set; }
        /// <summary>
        /// å•位用量
        /// </summary>
        public int UNIT_QTY { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// è´´ç‰‡æœºç¼–码
        /// </summary>
        public string SMT_CODE { get; set; }
        /// <summary>
        /// é’¢ç½‘编码
        /// </summary>
        public string SMT_STENCIL { get; set; }
        /// <summary>
        /// ç«™ä½å·
        /// </summary>
        public string SLOT_NO { get; set; }
        /// <summary>
        /// è´´ç‰‡ä½ç½®
        /// </summary>
        public string LOCATION { get; set; }
        /// <summary>
        /// é£žè¾¾ç¼–码
        /// </summary>
        public string FEEDER_CODE { get; set; }
        /// <summary>
        /// é£žè¾¾ç±»åž‹
        /// </summary>
        public string FEEDER_TYPE { get; set; }
        /// <summary>
        /// åŠ å·¥é¢
        /// </summary>
        public string PCB_SURFACE { get; set; }
        /// <summary>
        /// ä¸Šæ–™é¡ºåº
        /// </summary>
        public int LOAD_SEQ { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_PROD_TABLE类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_PROD_TABLEId))]//ClassA表中的SMT_PROD_TABLEId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_PROD_TABLEId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_SOLDER.cs
@@ -6,129 +6,129 @@
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT锡膏胶水信息
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_SOLDER")]
    public class SMT_SOLDER : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT锡膏胶水信息
        /// </summary>
        public SMT_SOLDER() { }
        #endregion
    /// <summary>
    /// å®žä½“:SMT锡膏胶水信息
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_SOLDER")]
    public class SMT_SOLDER : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT锡膏胶水信息
        /// </summary>
        public SMT_SOLDER() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// UPN编码
        /// </summary>
        public string UPN { get; set; }
        /// <summary>
        /// CPN编码
        /// </summary>
        public string CPN { get; set; }
        /// <summary>
        /// ç±»åž‹(0SolderPaste锡膏|1Adhesive胶水)
        /// </summary>
        public string TYPE { get; set; }
        /// <summary>
        /// çŠ¶æ€(0Register登记|1InStore入库|2Rewarm回温|3Sended领用|4Online上线|5Stir搅拌|6Offline下线|7UseUp用毕)
        /// </summary>
        public int STATUS { get; set; }
        /// <summary>
        /// æœ‰æ•ˆæ—¥æœŸ
        /// </summary>
        public DateTime EXP_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// æ˜¯å¦å‡ºæŸœ(Y/N)
        /// </summary>
        public string IS_OUT { get; set; }
        /// <summary>
        /// å‡ºæŸœæ—¥æœŸ
        /// </summary>
        public DateTime OUT_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// å‡ºæŸœæ“ä½œå‘˜
        /// </summary>
        public string OUT_USER { get; set; }
        /// <summary>
        /// æ˜¯å¦å‘出(Y/N)
        /// </summary>
        public string IS_SEND { get; set; }
        /// <summary>
        /// å‘出日期
        /// </summary>
        public DateTime SEND_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// å‘出操作员
        /// </summary>
        public string SEND_USER { get; set; }
        /// <summary>
        /// æ˜¯å¦æ‰“å¼€(Y/N)
        /// </summary>
        public string IS_OPEN { get; set; }
        /// <summary>
        /// æ‰“开日期
        /// </summary>
        public DateTime OPEN_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// æ‰“开操作员
        /// </summary>
        public string OPEN_USER { get; set; }
        /// <summary>
        /// é¦–次使用日期
        /// </summary>
        public DateTime FIRST_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// é¦–次使用操作员
        /// </summary>
        public string FIRST_USER { get; set; }
        /// <summary>
        /// æ…拌次数
        /// </summary>
        public int STIR_SEQ { get; set; }
        /// <summary>
        /// æ…拌日期
        /// </summary>
        public DateTime STIR_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// æ…拌操作员
        /// </summary>
        public string STIR_USER { get; set; }
        /// <summary>
        /// å›žå†»æ¬¡æ•°
        /// </summary>
        public int REFREEZE_SEQ { get; set; }
        /// <summary>
        /// å›žå†»æ—¥æœŸ
        /// </summary>
        public DateTime REFREEZE_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// å›žå†»æ“ä½œå‘˜
        /// </summary>
        public string REFREEZE_USER { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// UPN编码
        /// </summary>
        public string UPN { get; set; }
        /// <summary>
        /// CPN编码
        /// </summary>
        public string CPN { get; set; }
        /// <summary>
        /// ç±»åž‹(0SolderPaste锡膏|1Adhesive胶水)
        /// </summary>
        public string TYPE { get; set; }
        /// <summary>
        /// çŠ¶æ€(0Register登记|1InStore入库|2Rewarm回温|3Sended领用|4Online上线|5Stir搅拌|6Offline下线|7UseUp用毕)
        /// </summary>
        public int STATUS { get; set; }
        /// <summary>
        /// æœ‰æ•ˆæ—¥æœŸ
        /// </summary>
        public DateTime EXP_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// æ˜¯å¦å‡ºæŸœ(Y/N)
        /// </summary>
        public string IS_OUT { get; set; }
        /// <summary>
        /// å‡ºæŸœæ—¥æœŸ
        /// </summary>
        public DateTime OUT_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// å‡ºæŸœæ“ä½œå‘˜
        /// </summary>
        public string OUT_USER { get; set; }
        /// <summary>
        /// æ˜¯å¦å‘出(Y/N)
        /// </summary>
        public string IS_SEND { get; set; }
        /// <summary>
        /// å‘出日期
        /// </summary>
        public DateTime SEND_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// å‘出操作员
        /// </summary>
        public string SEND_USER { get; set; }
        /// <summary>
        /// æ˜¯å¦æ‰“å¼€(Y/N)
        /// </summary>
        public string IS_OPEN { get; set; }
        /// <summary>
        /// æ‰“开日期
        /// </summary>
        public DateTime OPEN_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// æ‰“开操作员
        /// </summary>
        public string OPEN_USER { get; set; }
        /// <summary>
        /// é¦–次使用日期
        /// </summary>
        public DateTime FIRST_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// é¦–次使用操作员
        /// </summary>
        public string FIRST_USER { get; set; }
        /// <summary>
        /// æ…拌次数
        /// </summary>
        public int STIR_SEQ { get; set; }
        /// <summary>
        /// æ…拌日期
        /// </summary>
        public DateTime STIR_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// æ…拌操作员
        /// </summary>
        public string STIR_USER { get; set; }
        /// <summary>
        /// å›žå†»æ¬¡æ•°
        /// </summary>
        public int REFREEZE_SEQ { get; set; }
        /// <summary>
        /// å›žå†»æ—¥æœŸ
        /// </summary>
        public DateTime REFREEZE_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// å›žå†»æ“ä½œå‘˜
        /// </summary>
        public string REFREEZE_USER { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #endregion
        #region å¤–键属性
        /*例子
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_SOLDER类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
@@ -139,10 +139,10 @@
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_SOLDERId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
@@ -151,11 +151,11 @@
            Enum1,
        }
        */
        #endregion
        #endregion
        #region å…¬å…±æ–¹æ³•
        #region å…¬å…±æ–¹æ³•
        #endregion
        #endregion
    }//endClass
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_SOLDER_HIS.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT锡膏胶水历史
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_SOLDER_HIS")]
    public class SMT_SOLDER_HIS : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT锡膏胶水历史
        /// </summary>
        public SMT_SOLDER_HIS() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// UPN编码
        /// </summary>
        public string UPN { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// é’¢ç½‘编码
        /// </summary>
        public string SMT_STENCIL { get; set; }
        /// <summary>
        /// çŠ¶æ€(0Register登记|1InStore入库|2Rewarm回温|3Sended领用|4Online上线|5Stir搅拌|6Offline下线|7UseUp用毕)
        /// </summary>
        public int STATUS { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string WORK_ORDER { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_SOLDER_HIS类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_SOLDER_HISId))]//ClassA表中的SMT_SOLDER_HISId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_SOLDER_HISId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_TOOL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT工具信息
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_TOOL")]
    public class SMT_TOOL : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT工具信息
        /// </summary>
        public SMT_TOOL() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// å·¥å…·ç¼–码
        /// </summary>
        public string TOOL_CODE { get; set; }
        /// <summary>
        /// å·¥å…·åž‹å·
        /// </summary>
        public string TOOL_MODEL { get; set; }
        /// <summary>
        /// å·¥å…·è§„æ ¼
        /// </summary>
        public string TOOL_SPEC { get; set; }
        /// <summary>
        /// ç±»åž‹(0SMTStencil钢网|1Squeegee刮刀)
        /// </summary>
        public int TYPE { get; set; }
        /// <summary>
        /// çŠ¶æ€(0InStore已入库|1Sended已领用|2Online已上线|3Offline已下线|4Maintain保养中|5Scrapped已报废)
        /// </summary>
        public int STATUS { get; set; }
        /// <summary>
        /// åˆ¶é€ å•†
        /// </summary>
        public string MANUFACTURER { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string PROD_CODE { get; set; }
        /// <summary>
        /// ä½¿ç”¨æ¬¡æ•°ä¸Šé™
        /// </summary>
        public int USE_LIMIT { get; set; }
        /// <summary>
        /// ä¿å…»é¢„警次数
        /// </summary>
        public int MT_ALARM_NO { get; set; }
        /// <summary>
        /// æŠ¥åºŸé¢„警次数
        /// </summary>
        public int SCRAP_ALARM_NO { get; set; }
        /// <summary>
        /// æ€»æ•°
        /// </summary>
        public int TOTAL { get; set; }
        /// <summary>
        /// ä½¿ç”¨æ¬¡æ•°
        /// </summary>
        public int USE_COUNT { get; set; }
        /// <summary>
        /// ä»“库编码
        /// </summary>
        public string WH_CODE { get; set; }
        /// <summary>
        /// å‚¨åŒºç¼–码
        /// </summary>
        public string REGION_CODE { get; set; }
        /// <summary>
        /// è´§æž¶/料车编码
        /// </summary>
        public string SHELF_CODE { get; set; }
        /// <summary>
        /// å‚¨ä½ç¼–码
        /// </summary>
        public string LOCATION_CODE { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_TOOL类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_TOOLId))]//ClassA表中的SMT_TOOLId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_TOOLId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_TOOL_HIS.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT工具使用历史
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_TOOL_HIS")]
    public class SMT_TOOL_HIS : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT工具使用历史
        /// </summary>
        public SMT_TOOL_HIS() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// å·¥å…·ç¼–码
        /// </summary>
        public string TOOL_CODE { get; set; }
        /// <summary>
        /// çŠ¶æ€(0InStore已入库|1Sended已领用|2Online已上线|3Offline已下线|4Maintain保养中|5Scrapped已报废)
        /// </summary>
        public int STATUS { get; set; }
        /// <summary>
        /// ä»“库编码
        /// </summary>
        public string WH_CODE { get; set; }
        /// <summary>
        /// å‚¨åŒºç¼–码
        /// </summary>
        public string REGION_CODE { get; set; }
        /// <summary>
        /// è´§æž¶/料车编码
        /// </summary>
        public string SHELF_CODE { get; set; }
        /// <summary>
        /// å‚¨ä½ç¼–码
        /// </summary>
        public string LOCATION_CODE { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_TOOL_HIS类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_TOOL_HISId))]//ClassA表中的SMT_TOOL_HISId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_TOOL_HISId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
namespace Tiger.Model
{
    /// <summary>
    /// å®žä½“:SMT工单料站表
    /// </summary>
    [Description("Primary:ID")]
    [Serializable]
    [SugarTable("SMT_WO_TABLE")]
    public class SMT_WO_TABLE : DbEntityWithAuth
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:SMT工单料站表
        /// </summary>
        public SMT_WO_TABLE() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        /// å…³è”工单号
        /// </summary>
        public string WORK_ORDER { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string PROD_CODE { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// æ›¿ä»£æ–™
        /// </summary>
        public string SUBITEM_CODE { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UNIT { get; set; }
        /// <summary>
        /// å•位用量
        /// </summary>
        public int UNIT_QTY { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string LINE_CODE { get; set; }
        /// <summary>
        /// è´´ç‰‡æœºç¼–码
        /// </summary>
        public string SMT_CODE { get; set; }
        /// <summary>
        /// é’¢ç½‘编码
        /// </summary>
        public string SMT_STENCIL { get; set; }
        /// <summary>
        /// ç«™ä½å·
        /// </summary>
        public string SLOT_NO { get; set; }
        /// <summary>
        /// è´´ç‰‡ä½ç½®
        /// </summary>
        public string LOCATION { get; set; }
        /// <summary>
        /// é£žè¾¾ç¼–码
        /// </summary>
        public string FEEDER_CODE { get; set; }
        /// <summary>
        /// é£žè¾¾ç±»åž‹
        /// </summary>
        public string FEEDER_TYPE { get; set; }
        /// <summary>
        /// åŠ å·¥é¢
        /// </summary>
        public string PCB_SURFACE { get; set; }
        /// <summary>
        /// ä¸Šæ–™é¡ºåº
        /// </summary>
        public int LOAD_SEQ { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string REMARK { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region å¤–键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_WO_TABLE类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_WO_TABLEId))]//ClassA表中的SMT_WO_TABLEId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_WO_TABLEId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Tiger.Model.Net.csproj
@@ -54,8 +54,8 @@
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="SqlSugar, Version=5.1.4.94, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SqlSugar.5.1.4.95\lib\SqlSugar.dll</HintPath>
    <Reference Include="SqlSugar, Version=5.1.4.149, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SqlSugar.5.1.4.149\lib\SqlSugar.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.ComponentModel.DataAnnotations" />
@@ -96,6 +96,19 @@
    <Compile Include="Entitys\MES\SMT_SOLDER.cs" />
    <Compile Include="Entitys\MES\node.cs" />
    <Compile Include="Entitys\MES\R_Wip_Tracking_T.cs" />
    <Compile Include="Entitys\MES\SMT_FEEDER.cs" />
    <Compile Include="Entitys\MES\SMT_FEEDER_TYPE.cs" />
    <Compile Include="Entitys\MES\SMT_LOADING.cs" />
    <Compile Include="Entitys\MES\SMT_LOAD_HIS.cs" />
    <Compile Include="Entitys\MES\SMT_MAINTAIN.cs" />
    <Compile Include="Entitys\MES\SMT_MT_DTL.cs" />
    <Compile Include="Entitys\MES\SMT_MT_PROJECT.cs" />
    <Compile Include="Entitys\MES\SMT_PROD_TABLE.cs" />
    <Compile Include="Entitys\MES\SMT_SOLDER.cs" />
    <Compile Include="Entitys\MES\SMT_SOLDER_HIS.cs" />
    <Compile Include="Entitys\MES\SMT_TOOL.cs" />
    <Compile Include="Entitys\MES\SMT_TOOL_HIS.cs" />
    <Compile Include="Entitys\MES\SMT_WO_TABLE.cs" />
    <Compile Include="Entitys\SYS\LOG_CS_LOGIN.cs" />
    <Compile Include="Entitys\SYS\LOG_PDA_LOGIN.cs" />
    <Compile Include="Entitys\SYS\SYS_CS_LOGIN.cs" />
Tiger.Model.Net/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net452" />
  <package id="SqlSugar" version="5.1.4.95" targetFramework="net48" />
  <package id="SqlSugar" version="5.1.4.149" targetFramework="net48" />
</packages>