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"> © 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>