From 611662d96891df6af8bb03f830ffcc57ab6a2a50 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期二, 07 五月 2024 15:42:56 +0800 Subject: [PATCH] 增加MQTT --- Tiger.Api/Controllers/Test/TestController.R.cs | 48 Tiger.Model.Net/Tiger.Model.Net.csproj | 17 Tiger.Api/Program.cs | 196 ++-- Tiger.IBusiness/Core/ApiConfig.cs | 1 Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs | 109 ++ Tiger.Model.Net/Entitys/MES/SMT_FEEDER_TYPE.cs | 77 ++ Tiger.Model.Net/Entitys/MES/SMT_TOOL_HIS.cs | 97 ++ Tiger.Api/ApiWebHostService.cs | 19 Tiger.Model.Net/packages.config | 2 Tiger.Api/Tiger.Api.csproj | 17 Tiger.Api/Startup.cs | 12 Tiger.Api/Views/Shared/_Layout.cshtml | 49 + Tiger.Api/Views/_ViewImports.cshtml | 2 Tiger.Api/Views/Shared/Error.cshtml | 25 Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs | 129 +++ Tiger.Api/Views/Shared/_Layout.cshtml.css | 48 + Tiger.Api/appsettings.json | 16 Tiger.Model.Net/Entitys/MES/SMT_SOLDER.cs | 161 ++++ Tiger.Business/Tiger.Business.csproj | 4 Tiger.Api/Controllers/HomeController.cs | 25 Tiger.Api/Views/Home/Privacy.cshtml | 6 Tiger.IBusiness/Tiger.IBusiness.csproj | 4 Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs | 125 +++ Tiger.Api/Views/Home/Index.cshtml | 8 Tiger.Api/Views/Shared/_ValidationScriptsPartial.cshtml | 2 /dev/null | 27 Tiger.Api/注册Windows服务.txt | 2 Tiger.Model.Net/Entitys/MES/SMT_MAINTAIN.cs | 81 ++ Tiger.Model.Net/Entitys/MES/SMT_MT_DTL.cs | 161 ++++ Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs | 125 +++ Tiger.Model.Net/Entitys/MES/SMT_TOOL.cs | 137 +++ Tiger.IBusiness/Core/MQTTHelper.cs | 76 + Tiger.Api/Views/_ViewStart.cshtml | 3 Tiger.Model.Net/Entitys/MES/SMT_MT_PROJECT.cs | 161 ++++ Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs | 125 +++ Tiger.Model.Net/Entitys/MES/SMT_SOLDER_HIS.cs | 89 ++ 36 files changed, 2,033 insertions(+), 153 deletions(-) diff --git a/Tiger.Api/ApiWebHostService.cs b/Tiger.Api/ApiWebHostService.cs index 3bead49..be53ff7 100644 --- a/Tiger.Api/ApiWebHostService.cs +++ b/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) diff --git a/Tiger.Api/Controllers/HomeController.cs b/Tiger.Api/Controllers/HomeController.cs new file mode 100644 index 0000000..855312d --- /dev/null +++ b/Tiger.Api/Controllers/HomeController.cs @@ -0,0 +1,25 @@ +锘縰sing 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(); + } + } +} diff --git a/Tiger.Api/Controllers/Test/TestController.R.cs b/Tiger.Api/Controllers/Test/TestController.R.cs index c50639e..a9920e7 100644 --- a/Tiger.Api/Controllers/Test/TestController.R.cs +++ b/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)); } } diff --git a/Tiger.Api/Program.cs b/Tiger.Api/Program.cs index 57dbf7b..2a9a5cc 100644 --- a/Tiger.Api/Program.cs +++ b/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) + "\\"; + //闈濽I绾跨▼鏈崟鑾峰紓甯稿鐞嗕簨浠� + 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; + //鍒濆鍖朆usiness鐨凙utoFacContainer + //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; - //鍒濆鍖朆usiness鐨凙utoFacContainer - //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 { - //闈濽I绾跨▼鏈崟鑾峰紓甯稿鐞嗕簨浠� - 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) { diff --git a/Tiger.Api/Startup.cs b/Tiger.Api/Startup.cs index c6e8237..edee32c 100644 --- a/Tiger.Api/Startup.cs +++ b/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); //娴嬭瘯浠g爜 @@ -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); } + //鍒濆鍖朆usiness鐨凙utoFacContainer DI.Resolve<IBiz>().SetContainer(AutoFacContainer.Instance); //寮�鍚疉pi鐩戞帶鎬荤嚎 @@ -151,6 +155,8 @@ DI.Resolve<IServicesBus>().StartServices(app.ApplicationServices.GetService<ISchedulerFactory>()); //寮�鍚疍B缂撳瓨鑷姩鏇存柊 DI.Resolve<IDbCacheBus>().StartAutoUpdate(); + //寮�鍚疢QTT鏈嶅姟 + MQTTHelper.Start(); } /// <summary> diff --git a/Tiger.Api/Tiger.Api.csproj b/Tiger.Api/Tiger.Api.csproj index 715d944..fe209a2 100644 --- a/Tiger.Api/Tiger.Api.csproj +++ b/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> diff --git a/Tiger.Api/Views/Home/Index.cshtml b/Tiger.Api/Views/Home/Index.cshtml new file mode 100644 index 0000000..d2d19bd --- /dev/null +++ b/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> diff --git a/Tiger.Api/Views/Home/Privacy.cshtml b/Tiger.Api/Views/Home/Privacy.cshtml new file mode 100644 index 0000000..af4fb19 --- /dev/null +++ b/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> diff --git a/Tiger.Api/Views/Shared/Error.cshtml b/Tiger.Api/Views/Shared/Error.cshtml new file mode 100644 index 0000000..5b42430 --- /dev/null +++ b/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> diff --git a/Tiger.Api/Views/Shared/_Layout.cshtml b/Tiger.Api/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000..f061ebe --- /dev/null +++ b/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"> + © 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> diff --git a/Tiger.Api/Views/Shared/_Layout.cshtml.css b/Tiger.Api/Views/Shared/_Layout.cshtml.css new file mode 100644 index 0000000..a72cbea --- /dev/null +++ b/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; +} diff --git a/Tiger.Api/Views/Shared/_ValidationScriptsPartial.cshtml b/Tiger.Api/Views/Shared/_ValidationScriptsPartial.cshtml new file mode 100644 index 0000000..5a16d80 --- /dev/null +++ b/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> diff --git a/Tiger.Api/Views/_ViewImports.cshtml b/Tiger.Api/Views/_ViewImports.cshtml new file mode 100644 index 0000000..28cf78d --- /dev/null +++ b/Tiger.Api/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +锘緻using Tiger.Api +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/Tiger.Api/Views/_ViewStart.cshtml b/Tiger.Api/Views/_ViewStart.cshtml new file mode 100644 index 0000000..a5f1004 --- /dev/null +++ b/Tiger.Api/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +锘緻{ + Layout = "_Layout"; +} diff --git a/Tiger.Api/WebHostServiceExtensions.cs b/Tiger.Api/WebHostServiceExtensions.cs deleted file mode 100644 index e18b657..0000000 --- a/Tiger.Api/WebHostServiceExtensions.cs +++ /dev/null @@ -1,27 +0,0 @@ -锘縰sing Rhea.Common; -using Microsoft.AspNetCore.Hosting; -using System; -using System.Collections.Generic; -using System.Linq; -using System.ServiceProcess; -using System.Threading.Tasks; -using Tiger.IBusiness; - -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"); - } - } - } -} diff --git a/Tiger.Api/appsettings.json b/Tiger.Api/appsettings.json index 662ecc3..67697c4 100644 --- a/Tiger.Api/appsettings.json +++ b/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 } \ No newline at end of file diff --git "a/Tiger.Api/\346\263\250\345\206\214Windows\346\234\215\345\212\241.txt" "b/Tiger.Api/\346\263\250\345\206\214Windows\346\234\215\345\212\241.txt" index 2c828a2..3254ac1 100644 --- "a/Tiger.Api/\346\263\250\345\206\214Windows\346\234\215\345\212\241.txt" +++ "b/Tiger.Api/\346\263\250\345\206\214Windows\346\234\215\345\212\241.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鏈嶅姟 diff --git a/Tiger.Business/Tiger.Business.csproj b/Tiger.Business/Tiger.Business.csproj index dc5de90..17883e5 100644 --- a/Tiger.Business/Tiger.Business.csproj +++ b/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> diff --git a/Tiger.IBusiness/Core/ApiConfig.cs b/Tiger.IBusiness/Core/ApiConfig.cs index 1565a66..a586213 100644 --- a/Tiger.IBusiness/Core/ApiConfig.cs +++ b/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) { diff --git a/Tiger.IBusiness/Core/MQTTHelper.cs b/Tiger.IBusiness/Core/MQTTHelper.cs index 9f55f53..2e045a6 100644 --- a/Tiger.IBusiness/Core/MQTTHelper.cs +++ b/Tiger.IBusiness/Core/MQTTHelper.cs @@ -1,4 +1,5 @@ -锘縰sing MQTTnet; +锘縰sing 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) { diff --git a/Tiger.IBusiness/Tiger.IBusiness.csproj b/Tiger.IBusiness/Tiger.IBusiness.csproj index 3534281..a6edf75 100644 --- a/Tiger.IBusiness/Tiger.IBusiness.csproj +++ b/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> diff --git a/Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs b/Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs new file mode 100644 index 0000000..60162eb --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_FEEDER_TYPE.cs b/Tiger.Model.Net/Entitys/MES/SMT_FEEDER_TYPE.cs new file mode 100644 index 0000000..14993b8 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs b/Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs new file mode 100644 index 0000000..8ff024d --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs b/Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs new file mode 100644 index 0000000..ad98864 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_MAINTAIN.cs b/Tiger.Model.Net/Entitys/MES/SMT_MAINTAIN.cs new file mode 100644 index 0000000..8bfd42e --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_MT_DTL.cs b/Tiger.Model.Net/Entitys/MES/SMT_MT_DTL.cs new file mode 100644 index 0000000..0547f10 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_MT_PROJECT.cs b/Tiger.Model.Net/Entitys/MES/SMT_MT_PROJECT.cs new file mode 100644 index 0000000..044b710 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs b/Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs new file mode 100644 index 0000000..2837d5c --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_SOLDER.cs b/Tiger.Model.Net/Entitys/MES/SMT_SOLDER.cs new file mode 100644 index 0000000..530c7af --- /dev/null +++ b/Tiger.Model.Net/Entitys/MES/SMT_SOLDER.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_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 虚拟属性 + /*例子 + [SugarColumn(IsIgnore = true)] + public string FieldName { get; set; } + */ + #endregion + + #region 外键属性 + /*例子 + //一对一外键导航 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_SOLDER类里面的外键ID字段 + public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null + //一对多外键导航 + [Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_SOLDERId))]//ClassA表中的SMT_SOLDERId + public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null + //多对多外键导航 + [Navigate(typeof(MappingClass), nameof(MappingClass.SMT_SOLDERId), 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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_SOLDER_HIS.cs b/Tiger.Model.Net/Entitys/MES/SMT_SOLDER_HIS.cs new file mode 100644 index 0000000..ad6397a --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_TOOL.cs b/Tiger.Model.Net/Entitys/MES/SMT_TOOL.cs new file mode 100644 index 0000000..38d4a15 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_TOOL_HIS.cs b/Tiger.Model.Net/Entitys/MES/SMT_TOOL_HIS.cs new file mode 100644 index 0000000..9153e31 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs b/Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs new file mode 100644 index 0000000..90282c4 --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/Tiger.Model.Net/Tiger.Model.Net.csproj b/Tiger.Model.Net/Tiger.Model.Net.csproj index 30596eb..487906d 100644 --- a/Tiger.Model.Net/Tiger.Model.Net.csproj +++ b/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" /> @@ -95,6 +95,19 @@ <Compile Include="Entitys\MES\MES_SHIFT_PERIOD.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" /> diff --git a/Tiger.Model.Net/packages.config b/Tiger.Model.Net/packages.config index f58dfbf..b3ede61 100644 --- a/Tiger.Model.Net/packages.config +++ b/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> \ No newline at end of file -- Gitblit v1.9.3