diff --git a/Haoliang.Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/Haoliang.Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/Haoliang.Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfo.cs b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfo.cs new file mode 100644 index 0000000..b3edc0e --- /dev/null +++ b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Haoliang.Core")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c3d17cebb9da179f6753a56af8a0a77a244c32f3")] +[assembly: System.Reflection.AssemblyProductAttribute("Haoliang.Core")] +[assembly: System.Reflection.AssemblyTitleAttribute("Haoliang.Core")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfoInputs.cache b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfoInputs.cache new file mode 100644 index 0000000..65eb7e8 --- /dev/null +++ b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +8be02421dfff2584ed0de880e6906d7bb86a51af3956a22dc9c02300e5c63caa diff --git a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.GeneratedMSBuildEditorConfig.editorconfig b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..ea39118 --- /dev/null +++ b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Haoliang.Core +build_property.ProjectDir = /root/opencode/haoliang/Haoliang.Core/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.AssemblyReference.cache b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.AssemblyReference.cache new file mode 100644 index 0000000..9947f23 Binary files /dev/null and b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.AssemblyReference.cache differ diff --git a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.CoreCompileInputs.cache b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..fe2de5b --- /dev/null +++ b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +1876776563f014d39691597241f38a428d38a23e7f844ce7209f1ff5cef025d2 diff --git a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.FileListAbsolute.txt b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.FileListAbsolute.txt index e69de29..a3cd6a0 100644 --- a/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.FileListAbsolute.txt +++ b/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.FileListAbsolute.txt @@ -0,0 +1,5 @@ +/root/opencode/haoliang/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.AssemblyReference.cache +/root/opencode/haoliang/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.GeneratedMSBuildEditorConfig.editorconfig +/root/opencode/haoliang/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfoInputs.cache +/root/opencode/haoliang/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.AssemblyInfo.cs +/root/opencode/haoliang/Haoliang.Core/obj/Debug/net8.0/Haoliang.Core.csproj.CoreCompileInputs.cache diff --git a/Haoliang.Data/Entities/CNCBusinessDbContext.cs b/Haoliang.Data/Entities/CNCBusinessDbContext.cs index 6123779..f41a091 100644 --- a/Haoliang.Data/Entities/CNCBusinessDbContext.cs +++ b/Haoliang.Data/Entities/CNCBusinessDbContext.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Haoliang.Data.Entities; using Haoliang.Models.System; +using Pomelo.EntityFrameworkCore.MySql.Infrastructure; namespace Haoliang.Data { @@ -59,19 +60,6 @@ namespace Haoliang.Data { base.OnModelCreating(modelBuilder); - // Configure MySQL-specific settings - foreach (var entityType in modelBuilder.Model.GetEntityTypes()) - { - // Set default charset and collation - if (typeof(BaseEntity).IsAssignableFrom(entityType.ClrType)) - { - modelBuilder.Entity(entityType.ClrType) - .ToTable(entityType.GetTableName() ?? "", t => t - .charset("utf8mb4") - .collation("utf8mb4_unicode_ci")); - } - } - // Configure relationships ConfigureDeviceRelationships(modelBuilder); ConfigureUserRelationships(modelBuilder); @@ -92,128 +80,26 @@ namespace Haoliang.Data private void ConfigureDeviceRelationships(ModelBuilder modelBuilder) { - modelBuilder.Entity() - .HasMany(d => d.DeviceStatus) - .WithOne() - .HasForeignKey(ds => ds.DeviceId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(d => d.CollectionResults) - .WithOne() - .HasForeignKey(cr => cr.DeviceId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(d => d.CollectionLogs) - .WithOne() - .HasForeignKey(cl => cl.DeviceId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(d => d.ProductionRecords) - .WithOne() - .HasForeignKey(pr => pr.DeviceId) - .OnDelete(DeleteBehavior.Cascade); } private void ConfigureUserRelationships(ModelBuilder modelBuilder) { - modelBuilder.Entity() - .HasOne(u => u.Role) - .WithMany() - .HasForeignKey(u => u.RoleId) - .OnDelete(DeleteBehavior.Restrict); - - modelBuilder.Entity() - .HasMany(u => u.UserPermissions) - .WithOne(up => up.User) - .HasForeignKey(up => up.UserId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(u => u.UserSessions) - .WithOne(us => us.User) - .HasForeignKey(us => us.UserId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(u => u.PasswordResets) - .WithOne(pr => pr.User) - .HasForeignKey(pr => pr.UserId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(r => r.RolePermissions) - .WithOne(rp => rp.Role) - .HasForeignKey(rp => rp.RoleId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(e => e.DeviceAssignments) - .WithOne(da => da.Employee) - .HasForeignKey(da => da.EmployeeId) - .OnDelete(DeleteBehavior.Cascade); } private void ConfigureAlarmRelationships(ModelBuilder modelBuilder) { - modelBuilder.Entity() - .HasMany(a => a.AlarmNotifications) - .WithOne(an => an.Alarm) - .HasForeignKey(an => an.AlarmId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(ar => ar.Alarms) - .WithOne(a => a.AlarmRule) - .HasForeignKey(a => a.AlarmRuleId) - .OnDelete(DeleteBehavior.Restrict); } private void ConfigureCollectionRelationships(ModelBuilder modelBuilder) { - modelBuilder.Entity() - .HasMany(ct => ct.CollectionResults) - .WithOne(cr => cr.CollectionTask) - .HasForeignKey(cr => cr.TaskId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(cr => cr.CollectionLogs) - .WithOne(cl => cl.CollectionResult) - .HasForeignKey(cl => cl.ResultId) - .OnDelete(DeleteBehavior.Cascade); } private void ConfigureProductionRelationships(ModelBuilder modelBuilder) { - modelBuilder.Entity() - .HasMany(pr => pr.ProgramSummaries) - .WithOne(pps => pps.ProductionRecord) - .HasForeignKey(pps => pps.RecordId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(d => d.ProductionSummaries) - .WithOne(ps => ps.Device) - .HasForeignKey(ps => ps.DeviceId) - .OnDelete(DeleteBehavior.Cascade); } private void ConfigureTemplateRelationships(ModelBuilder modelBuilder) { - modelBuilder.Entity() - .HasMany(t => t.TagMappings) - .WithOne(tm => tm.Template) - .HasForeignKey(tm => tm.TemplateId) - .OnDelete(DeleteBehavior.Cascade); - - modelBuilder.Entity() - .HasMany(t => t.Devices) - .WithOne(d => d.Template) - .HasForeignKey(d => d.TemplateId) - .OnDelete(DeleteBehavior.Restrict); } private void ConfigureIndexes(ModelBuilder modelBuilder) @@ -246,13 +132,7 @@ namespace Haoliang.Data // Alarm indexes modelBuilder.Entity() - .HasIndex(a => a.AlarmStatus); - - modelBuilder.Entity() - .HasIndex(a => a.IsActive); - - modelBuilder.Entity() - .HasIndex(a => a.CreateTime); + .HasIndex(a => a.IsResolved); // Collection indexes modelBuilder.Entity() @@ -278,9 +158,6 @@ namespace Haoliang.Data modelBuilder.Entity() .HasIndex(t => t.BrandName); - modelBuilder.Entity() - .HasIndex(t => t.IsActive); - // System config indexes modelBuilder.Entity() .HasIndex(sc => sc.ConfigKey) @@ -336,31 +213,12 @@ namespace Haoliang.Data .IsRequired() .HasMaxLength(255); - modelBuilder.Entity() - .Property(u => u.FirstName) - .IsRequired() - .HasMaxLength(50); - - modelBuilder.Entity() - .Property(u => u.LastName) - .IsRequired() - .HasMaxLength(50); - // Alarm constraints modelBuilder.Entity() .Property(a => a.AlarmType) .IsRequired() .HasMaxLength(50); - modelBuilder.Entity() - .Property(a => a.Title) - .IsRequired() - .HasMaxLength(255); - - modelBuilder.Entity() - .Property(a => a.AlarmStatus) - .IsRequired(); - // System config constraints modelBuilder.Entity() .Property(sc => sc.ConfigKey) @@ -393,24 +251,12 @@ namespace Haoliang.Data .HasColumnType("text"); modelBuilder.Entity() - .Property(cr => cr.RawData) - .HasColumnType("text"); + .Property(cr => cr.RawJson) + .HasColumnType("json"); modelBuilder.Entity() .Property(cr => cr.ParsedData) .HasColumnType("text"); - - modelBuilder.Entity() - .Property(t => t.TagsJson) - .HasColumnType("json"); - - modelBuilder.Entity() - .Property(t => t.DataProcessingRulesJson) - .HasColumnType("json"); - - modelBuilder.Entity() - .Property(sr => sr.ResultData) - .HasColumnType("json"); } public static void ConfigureDatabaseServices(IServiceCollection services, IConfiguration configuration) @@ -419,14 +265,13 @@ namespace Haoliang.Data services.AddDbContext(options => { - options.UseMySql(connectionString, + options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), mysqlOptions => { mysqlOptions.EnableRetryOnFailure( maxRetryCount: 3, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); - mysqlOptions.EnableSensitiveDataLogging(true); }); // Enable lazy loading for development diff --git a/Haoliang.Data/Entities/CNCDbContext.cs b/Haoliang.Data/Entities/CNCDbContext.cs index f9dec91..2f6a46d 100644 --- a/Haoliang.Data/Entities/CNCDbContext.cs +++ b/Haoliang.Data/Entities/CNCDbContext.cs @@ -16,9 +16,14 @@ public DbSet Devices { get; set; } public DbSet DeviceCurrentStatus { get; set; } = null!; public DbSet CollectionTagData { get; set; } = null!; public DbSet CNCTemplates { get; set; } - public DbSet ProductionRecords { get; set; } + public DbSet TemplateFieldMappings { get; set; } + public DbSet ProductionRecords { get; set; } public DbSet ProgramProductionSummary { get; set; } + public DbSet ProductionSummaries { get; set; } public DbSet Users { get; set; } + public DbSet Roles { get; set; } + public DbSet Employees { get; set; } + public DbSet DeviceAssignments { get; set; } public DbSet Alarms { get; set; } public DbSet AlarmRules { get; set; } public DbSet StatisticRules { get; set; } @@ -106,7 +111,7 @@ public DbSet Devices { get; set; } .HasColumnType("json"); // 生产记录配置 - modelBuilder.Entity() + modelBuilder.Entity() .Property(p => p.NCProgram) .IsRequired() .HasMaxLength(100); @@ -141,9 +146,6 @@ public DbSet Devices { get; set; } .HasColumnType("decimal(5,2)"); // 告警通知配置 - modelBuilder.Entity() - .Property(a => a.LogData) - .HasColumnType("json"); // 权限配置 modelBuilder.Entity() diff --git a/Haoliang.Data/Haoliang.Data.csproj b/Haoliang.Data/Haoliang.Data.csproj index 8bf1899..3f7b0ff 100644 --- a/Haoliang.Data/Haoliang.Data.csproj +++ b/Haoliang.Data/Haoliang.Data.csproj @@ -11,7 +11,10 @@ - + + + + net8.0 diff --git a/Haoliang.Data/Repositories/CollectionRepository.cs b/Haoliang.Data/Repositories/CollectionRepository.cs index 7d5c08b..a53316d 100644 --- a/Haoliang.Data/Repositories/CollectionRepository.cs +++ b/Haoliang.Data/Repositories/CollectionRepository.cs @@ -295,7 +295,7 @@ namespace Haoliang.Data.Repositories public async Task> GetLogsByLevelAsync(LogLevel logLevel) { return await _context.CollectionLogs - .Where(cl => cl.LogLevel == logLevel.ToString()) + .Where(cl => cl.LogLevel == logLevel) .OrderByDescending(cl => cl.LogTime) .ToListAsync(); } @@ -319,7 +319,7 @@ namespace Haoliang.Data.Repositories public async Task> GetErrorLogsAsync() { return await _context.CollectionLogs - .Where(cl => cl.LogLevel == LogLevel.Error.ToString() || cl.LogLevel == LogLevel.Critical.ToString()) + .Where(cl => cl.LogLevel == LogLevel.Error || cl.LogLevel == LogLevel.Critical) .OrderByDescending(cl => cl.LogTime) .ToListAsync(); } @@ -327,7 +327,7 @@ namespace Haoliang.Data.Repositories public async Task CountLogsByLevelAsync(LogLevel logLevel) { return await _context.CollectionLogs - .CountAsync(cl => cl.LogLevel == logLevel.ToString()); + .CountAsync(cl => cl.LogLevel == logLevel); } public async Task DeleteOldLogsAsync(int keepDays = 90) diff --git a/Haoliang.Data/Repositories/LogRepository.cs b/Haoliang.Data/Repositories/LogRepository.cs index ffa721d..328217a 100644 --- a/Haoliang.Data/Repositories/LogRepository.cs +++ b/Haoliang.Data/Repositories/LogRepository.cs @@ -19,7 +19,7 @@ namespace Haoliang.Data.Repositories Task> GetRecentLogsAsync(int count = 100); Task> GetErrorLogsAsync(DateTime? startDate = null, DateTime? endDate = null); Task GetLogStatisticsAsync(DateTime date); - Task LogExistsAsync(string logId); + Task LogExistsAsync(int logId); Task> GetLogsBySourceAsync(string source); } @@ -34,21 +34,21 @@ namespace Haoliang.Data.Repositories public async Task> GetLogsAsync(LogLevel? logLevel = null, DateTime? startDate = null, DateTime? endDate = null, string category = null) { - var query = _context.Logs.AsQueryable(); + var query = _context.LogEntries.AsQueryable(); if (logLevel.HasValue) { - query = query.Where(l => l.LogLevel == logLevel.Value); + query = query.Where(l => l.Level == logLevel.Value); } if (startDate.HasValue) { - query = query.Where(l => l.LogTime >= startDate.Value); + query = query.Where(l => l.Timestamp >= startDate.Value); } if (endDate.HasValue) { - query = query.Where(l => l.LogTime <= endDate.Value); + query = query.Where(l => l.Timestamp <= endDate.Value); } if (!string.IsNullOrEmpty(category)) @@ -57,27 +57,27 @@ namespace Haoliang.Data.Repositories } return await query - .OrderByDescending(l => l.LogTime) + .OrderByDescending(l => l.Timestamp) .ToListAsync(); } public async Task GetLogCountAsync(LogLevel? logLevel = null, DateTime? startDate = null, DateTime? endDate = null) { - var query = _context.Logs.AsQueryable(); + var query = _context.LogEntries.AsQueryable(); if (logLevel.HasValue) { - query = query.Where(l => l.LogLevel == logLevel.Value); + query = query.Where(l => l.Level == logLevel.Value); } if (startDate.HasValue) { - query = query.Where(l => l.LogTime >= startDate.Value); + query = query.Where(l => l.Timestamp >= startDate.Value); } if (endDate.HasValue) { - query = query.Where(l => l.LogTime <= endDate.Value); + query = query.Where(l => l.Timestamp <= endDate.Value); } return await query.CountAsync(); @@ -85,50 +85,50 @@ namespace Haoliang.Data.Repositories public async Task ArchiveLogsAsync(DateTime cutoffDate) { - var logsToArchive = await _context.Logs - .Where(l => l.LogTime < cutoffDate) + var logsToArchive = await _context.LogEntries + .Where(l => l.Timestamp < cutoffDate) .ToListAsync(); if (logsToArchive.Any()) { // In a real implementation, you would move these to an archive table or file // For now, we'll just delete them - _context.Logs.RemoveRange(logsToArchive); + _context.LogEntries.RemoveRange(logsToArchive); await SaveAsync(); } } public async Task ClearLogsAsync() { - _context.Logs.RemoveRange(_context.Logs); + _context.LogEntries.RemoveRange(_context.LogEntries); await SaveAsync(); } public async Task> GetRecentLogsAsync(int count = 100) { - return await _context.Logs - .OrderByDescending(l => l.LogTime) + return await _context.LogEntries + .OrderByDescending(l => l.Timestamp) .Take(count) .ToListAsync(); } public async Task> GetErrorLogsAsync(DateTime? startDate = null, DateTime? endDate = null) { - var query = _context.Logs - .Where(l => l.LogLevel == LogLevel.Error || l.LogLevel == LogLevel.Critical); + var query = _context.LogEntries + .Where(l => l.Level == LogLevel.Error || l.Level == LogLevel.Critical); if (startDate.HasValue) { - query = query.Where(l => l.LogTime >= startDate.Value); + query = query.Where(l => l.Timestamp >= startDate.Value); } if (endDate.HasValue) { - query = query.Where(l => l.LogTime <= endDate.Value); + query = query.Where(l => l.Timestamp <= endDate.Value); } return await query - .OrderByDescending(l => l.LogTime) + .OrderByDescending(l => l.Timestamp) .ToListAsync(); } @@ -137,18 +137,18 @@ namespace Haoliang.Data.Repositories var startOfDay = date.Date; var endOfDay = startOfDay.AddDays(1); - var logs = await _context.Logs - .Where(l => l.LogTime >= startOfDay && l.LogTime <= endOfDay) + var logs = await _context.LogEntries + .Where(l => l.Timestamp >= startOfDay && l.Timestamp <= endOfDay) .ToListAsync(); var stats = new LogStatistics { Date = date, TotalLogs = logs.Count, - ErrorLogs = logs.Count(l => l.LogLevel == LogLevel.Error || l.LogLevel == LogLevel.Critical), - WarningLogs = logs.Count(l => l.LogLevel == LogLevel.Warning), - InfoLogs = logs.Count(l => l.LogLevel == LogLevel.Information), - DebugLogs = logs.Count(l => l.LogLevel == LogLevel.Debug), + ErrorLogs = logs.Count(l => l.Level == LogLevel.Error || l.Level == LogLevel.Critical), + WarningLogs = logs.Count(l => l.Level == LogLevel.Warning), + InfoLogs = logs.Count(l => l.Level == LogLevel.Information), + DebugLogs = logs.Count(l => l.Level == LogLevel.Debug), LogSources = logs.GroupBy(l => l.Source) .ToDictionary(g => g.Key, g => g.Count()) }; @@ -156,17 +156,17 @@ namespace Haoliang.Data.Repositories return stats; } - public async Task LogExistsAsync(string logId) + public async Task LogExistsAsync(int logId) { - return await _context.Logs - .AnyAsync(l => l.LogId == logId); + return await _context.LogEntries + .AnyAsync(l => l.Id == logId); } public async Task> GetLogsBySourceAsync(string source) { - return await _context.Logs + return await _context.LogEntries .Where(l => l.Source == source) - .OrderByDescending(l => l.LogTime) + .OrderByDescending(l => l.Timestamp) .ToListAsync(); } } diff --git a/Haoliang.Data/Repositories/ProductionRepository.cs b/Haoliang.Data/Repositories/ProductionRepository.cs index 82eb086..52403d4 100644 --- a/Haoliang.Data/Repositories/ProductionRepository.cs +++ b/Haoliang.Data/Repositories/ProductionRepository.cs @@ -10,19 +10,19 @@ using Haoliang.Data.Entities; namespace Haoliang.Data.Repositories { - public interface IProductionRepository : IRepository + public interface IProductionRepository : IRepository { - Task> GetByDeviceAndDateAsync(int deviceId, DateTime date); - Task> GetByDeviceAndProgramAsync(int deviceId, string ncProgram); - Task> GetByDateRangeAsync(DateTime startDate, DateTime endDate); - Task GetLatestProductionAsync(int deviceId, string ncProgram); + Task> GetByDeviceAndDateAsync(int deviceId, DateTime date); + Task> GetByDeviceAndProgramAsync(int deviceId, string ncProgram); + Task> GetByDateRangeAsync(DateTime startDate, DateTime endDate); + Task GetLatestProductionAsync(int deviceId, string ncProgram); Task GetTodayProductionAsync(int deviceId); Task GetProductionByDateAsync(int deviceId, DateTime date); Task GetQualityRateAsync(int deviceId, DateTime date); Task HasProductionDataAsync(int deviceId, DateTime date); } - public class ProductionRepository : Repository, IProductionRepository + public class ProductionRepository : Repository, IProductionRepository { private readonly CNCDbContext _context; @@ -31,7 +31,7 @@ namespace Haoliang.Data.Repositories _context = context; } - public async Task> GetByDeviceAndDateAsync(int deviceId, DateTime date) + public async Task> GetByDeviceAndDateAsync(int deviceId, DateTime date) { return await _context.ProductionRecords .Where(pr => pr.DeviceId == deviceId && pr.ProductionDate.Date == date.Date) @@ -40,7 +40,7 @@ namespace Haoliang.Data.Repositories .ToListAsync(); } - public async Task> GetByDeviceAndProgramAsync(int deviceId, string ncProgram) + public async Task> GetByDeviceAndProgramAsync(int deviceId, string ncProgram) { return await _context.ProductionRecords .Where(pr => pr.DeviceId == deviceId && pr.NCProgram == ncProgram) @@ -48,7 +48,7 @@ namespace Haoliang.Data.Repositories .ToListAsync(); } - public async Task> GetByDateRangeAsync(DateTime startDate, DateTime endDate) + public async Task> GetByDateRangeAsync(DateTime startDate, DateTime endDate) { return await _context.ProductionRecords .Where(pr => pr.ProductionDate >= startDate && pr.ProductionDate <= endDate) @@ -58,7 +58,7 @@ namespace Haoliang.Data.Repositories .ToListAsync(); } - public async Task GetLatestProductionAsync(int deviceId, string ncProgram) + public async Task GetLatestProductionAsync(int deviceId, string ncProgram) { return await _context.ProductionRecords .Where(pr => pr.DeviceId == deviceId && pr.NCProgram == ncProgram) @@ -186,7 +186,6 @@ namespace Haoliang.Data.Repositories summary.ValidQuantity = (int)(summary.TotalQuantity * qualityRate / 100); summary.InvalidQuantity = summary.TotalQuantity - summary.ValidQuantity; summary.QualityRate = qualityRate; - summary.UpdatedAt = DateTime.Now; Update(summary); } diff --git a/Haoliang.Data/Repositories/ProductionSummaryRepository.cs b/Haoliang.Data/Repositories/ProductionSummaryRepository.cs index 6611cc0..bcf0aa8 100644 --- a/Haoliang.Data/Repositories/ProductionSummaryRepository.cs +++ b/Haoliang.Data/Repositories/ProductionSummaryRepository.cs @@ -89,7 +89,7 @@ namespace Haoliang.Data.Repositories WeekEnd = weekEnd, TotalDevices = summaries.Select(s => s.DeviceId).Distinct().Count(), TotalQuantity = summaries.Sum(s => s.TotalQuantity), - AverageDailyQuantity = summaries.Any() ? summaries.Average(s => s.TotalQuantity) : 0, + AverageDailyQuantity = summaries.Any() ? (decimal)summaries.Average(s => s.TotalQuantity) : 0, DailySummaries = summaries .GroupBy(s => s.ProductionDate) .Select(g => new DailyProductionSummary @@ -121,7 +121,7 @@ namespace Haoliang.Data.Repositories Month = month, TotalDevices = summaries.Select(s => s.DeviceId).Distinct().Count(), TotalQuantity = summaries.Sum(s => s.TotalQuantity), - AverageDailyQuantity = summaries.Any() ? summaries.Average(s => s.TotalQuantity) : 0, + AverageDailyQuantity = summaries.Any() ? (decimal)summaries.Average(s => s.TotalQuantity) : 0, WeeklySummaries = new List() }; diff --git a/Haoliang.Data/Repositories/ScheduledTaskRepository.cs b/Haoliang.Data/Repositories/ScheduledTaskRepository.cs index 904c4b4..a21a41f 100644 --- a/Haoliang.Data/Repositories/ScheduledTaskRepository.cs +++ b/Haoliang.Data/Repositories/ScheduledTaskRepository.cs @@ -35,7 +35,7 @@ namespace Haoliang.Data.Repositories public async Task> GetActiveTasksAsync() { return await _context.ScheduledTasks - .Where(t => t.IsActive && t.TaskStatus != TaskStatus.Disabled) + .Where(t => t.IsActive && t.TaskStatus != Haoliang.Models.System.TaskStatus.Disabled) .OrderBy(t => t.NextRunTime) .ToListAsync(); } @@ -70,20 +70,20 @@ namespace Haoliang.Data.Repositories return await _context.ScheduledTasks .Where(t => t.IsActive && t.NextRunTime <= now && - t.TaskStatus != TaskStatus.Running) + t.TaskStatus != Haoliang.Models.System.TaskStatus.Running) .OrderBy(t => t.NextRunTime) .ToListAsync(); } public async Task ExecuteTaskAsync(string taskId) { - var task = await GetByIdAsync(taskId); + var task = await _context.ScheduledTasks.Where(t => t.TaskId == taskId).FirstOrDefaultAsync(); if (task == null || !task.IsActive) { return false; } - task.TaskStatus = TaskStatus.Running; + task.TaskStatus = Haoliang.Models.System.TaskStatus.Running; task.LastRunAt = DateTime.Now; await SaveAsync(); @@ -92,7 +92,7 @@ namespace Haoliang.Data.Repositories { TaskId = taskId, ExecutionTime = DateTime.Now, - Status = TaskStatus.Running, + Status = Haoliang.Models.System.TaskStatus.Running, ErrorMessage = null }; @@ -108,7 +108,7 @@ namespace Haoliang.Data.Repositories return await _context.ScheduledTasks .Where(t => t.IsActive && t.NextRunTime <= now && - t.TaskStatus != TaskStatus.Running) + t.TaskStatus != Haoliang.Models.System.TaskStatus.Running) .OrderBy(t => t.NextRunTime) .FirstOrDefaultAsync(); } @@ -126,18 +126,18 @@ namespace Haoliang.Data.Repositories { Date = date, TotalExecutions = executionResults.Count, - SuccessfulExecutions = executionResults.Count(r => r.Status == TaskStatus.Completed), - FailedExecutions = executionResults.Count(r => r.Status == TaskStatus.Failed), - RunningExecutions = executionResults.Count(r => r.Status == TaskStatus.Running), + SuccessfulExecutions = executionResults.Count(r => r.Status == Haoliang.Models.System.TaskStatus.Completed), + FailedExecutions = executionResults.Count(r => r.Status == Haoliang.Models.System.TaskStatus.Failed), + RunningExecutions = executionResults.Count(r => r.Status == Haoliang.Models.System.TaskStatus.Running), ExecutionDetails = executionResults .GroupBy(r => r.TaskId) .ToDictionary(g => g.Key, g => new TaskExecutionDetail { - TaskName = g.FirstOrDefault()?.ScheduledTask?.TaskName ?? "", + TaskName = g.Key ?? "", TotalExecutions = g.Count(), - SuccessfulExecutions = g.Count(r => r.Status == TaskStatus.Completed), - FailedExecutions = g.Count(r => r.Status == TaskStatus.Failed), - AverageExecutionTime = g.Average(r => r.ExecutionDurationMs) + SuccessfulExecutions = g.Count(r => r.Status == Haoliang.Models.System.TaskStatus.Completed), + FailedExecutions = g.Count(r => r.Status == Haoliang.Models.System.TaskStatus.Failed), + AverageExecutionTime = g.Average(r => r.ExecutionDurationMs?.TotalMilliseconds ?? 0) }) }; diff --git a/Haoliang.Data/Repositories/SystemRepository.cs b/Haoliang.Data/Repositories/SystemRepository.cs index 8615687..72f851f 100644 --- a/Haoliang.Data/Repositories/SystemRepository.cs +++ b/Haoliang.Data/Repositories/SystemRepository.cs @@ -97,7 +97,7 @@ namespace Haoliang.Data.Repositories if (alarms.Any()) { var resolvedCount = alarms.Count(a => a.IsResolved); - return (decimal)resolvedCount / alarms.Count * 100; + return (decimal)resolvedCount / alarms.Count() * 100; } return 0; } diff --git a/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.deps.json b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.deps.json new file mode 100644 index 0000000..aea0a5a --- /dev/null +++ b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.deps.json @@ -0,0 +1,864 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "Haoliang.Data/1.0.0": { + "dependencies": { + "Haoliang.Models": "1.0.0", + "Microsoft.EntityFrameworkCore": "8.0.2", + "Microsoft.EntityFrameworkCore.Design": "8.0.2", + "Microsoft.EntityFrameworkCore.Tools": "8.0.2", + "Pomelo.EntityFrameworkCore.MySql": "8.0.2" + }, + "runtime": { + "Haoliang.Data.dll": {} + } + }, + "Humanizer.Core/2.14.1": { + "runtime": { + "lib/net6.0/Humanizer.dll": { + "assemblyVersion": "2.14.0.0", + "fileVersion": "2.14.1.48190" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/6.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": {}, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "4.5.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "4.5.0", + "Microsoft.CodeAnalysis.Common": "4.5.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "4.5.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.CodeAnalysis.Common": "4.5.0", + "System.Composition": "6.0.0", + "System.IO.Pipelines": "6.0.3", + "System.Threading.Channels": "6.0.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.EntityFrameworkCore/8.0.2": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.2", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.2", + "Microsoft.Extensions.Caching.Memory": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "assemblyVersion": "8.0.2.0", + "fileVersion": "8.0.224.6803" + } + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.2": { + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "assemblyVersion": "8.0.2.0", + "fileVersion": "8.0.224.6803" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.2": {}, + "Microsoft.EntityFrameworkCore.Design/8.0.2": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0", + "Microsoft.EntityFrameworkCore.Relational": "8.0.2", + "Microsoft.Extensions.DependencyModel": "8.0.0", + "Mono.TextTemplating": "2.2.1" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "assemblyVersion": "8.0.2.0", + "fileVersion": "8.0.224.6803" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.2": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.2", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "assemblyVersion": "8.0.2.0", + "fileVersion": "8.0.224.6803" + } + } + }, + "Microsoft.EntityFrameworkCore.Tools/8.0.2": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Design": "8.0.2" + } + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.DependencyModel/8.0.0": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Options/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Mono.TextTemplating/2.2.1": { + "dependencies": { + "System.CodeDom": "4.4.0" + }, + "runtime": { + "lib/netstandard2.0/Mono.TextTemplating.dll": { + "assemblyVersion": "2.2.0.0", + "fileVersion": "2.2.1.1" + } + } + }, + "MySqlConnector/2.3.5": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.3.5.0" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.2", + "MySqlConnector": "2.3.5" + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "assemblyVersion": "8.0.2.0", + "fileVersion": "8.0.2.0" + } + } + }, + "System.CodeDom/4.4.0": { + "runtime": { + "lib/netstandard2.0/System.CodeDom.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "4.6.25519.3" + } + } + }, + "System.Collections.Immutable/6.0.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Composition/6.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Convention": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0", + "System.Composition.TypedParts": "6.0.0" + } + }, + "System.Composition.AttributedModel/6.0.0": { + "runtime": { + "lib/net6.0/System.Composition.AttributedModel.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.Convention/6.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "6.0.0" + }, + "runtime": { + "lib/net6.0/System.Composition.Convention.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.Hosting/6.0.0": { + "dependencies": { + "System.Composition.Runtime": "6.0.0" + }, + "runtime": { + "lib/net6.0/System.Composition.Hosting.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.Runtime/6.0.0": { + "runtime": { + "lib/net6.0/System.Composition.Runtime.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.TypedParts/6.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0" + }, + "runtime": { + "lib/net6.0/System.Composition.TypedParts.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.IO.Pipelines/6.0.3": { + "runtime": { + "lib/net6.0/System.IO.Pipelines.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.522.21309" + } + } + }, + "System.Reflection.Metadata/6.0.1": { + "dependencies": { + "System.Collections.Immutable": "6.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": {}, + "System.Text.Encoding.CodePages/6.0.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.0": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "System.Threading.Channels/6.0.0": {}, + "Haoliang.Models/1.0.0": { + "runtime": { + "Haoliang.Models.dll": {} + } + } + } + }, + "libraries": { + "Haoliang.Data/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "path": "humanizer.core/2.14.1", + "hashPath": "humanizer.core.2.14.1.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==", + "path": "microsoft.bcl.asyncinterfaces/6.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==", + "path": "microsoft.codeanalysis.analyzers/3.3.3", + "hashPath": "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "path": "microsoft.codeanalysis.common/4.5.0", + "hashPath": "microsoft.codeanalysis.common.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "hashPath": "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==", + "path": "microsoft.codeanalysis.csharp.workspaces/4.5.0", + "hashPath": "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==", + "path": "microsoft.codeanalysis.workspaces.common/4.5.0", + "hashPath": "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6QlvBx4rdawW3AkkCsGVV+8qRLk34aknV5JD40s1hbVR18vKmT2KDl2DW83nHcPX7f4oebQ3BD1UMNCI/gkE0g==", + "path": "microsoft.entityframeworkcore/8.0.2", + "hashPath": "microsoft.entityframeworkcore.8.0.2.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DjDKp++BTKFZmX+xLTow7grQTY+pImKfhGW68Zf8myiL3zyJ3b8RZbnLsWGNCqKQIF6hJIz/zA/zmERobFwV0A==", + "path": "microsoft.entityframeworkcore.abstractions/8.0.2", + "hashPath": "microsoft.entityframeworkcore.abstractions.8.0.2.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LI7awhc0fiAKvcUemsqxXUWqzAH9ywTSyM1rpC1un4p5SE1bhr5nRLvyRVbKRzKakmnNNY3to8NPDnoySEkxVw==", + "path": "microsoft.entityframeworkcore.analyzers/8.0.2", + "hashPath": "microsoft.entityframeworkcore.analyzers.8.0.2.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Design/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lpSEopadyq4VjgErVbKXznlzmrdR+1zG4jjJlumgnDTz6Ov60qZkBn8uTfPYk0PUZ3wn+GNFOi3ouSTK4JKEIA==", + "path": "microsoft.entityframeworkcore.design/8.0.2", + "hashPath": "microsoft.entityframeworkcore.design.8.0.2.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NoGfcq2OPw0z8XAPf74YFwGlTKjedWdsIEJqq4SvKcPjcu+B+/XDDNrDRxTvILfz4Ug8POSF49s1jz1JvUqTAg==", + "path": "microsoft.entityframeworkcore.relational/8.0.2", + "hashPath": "microsoft.entityframeworkcore.relational.8.0.2.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Tools/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PWy3X3Z1fnWlbU6pQMSnBvMwqERoKsriJ688TMl1xT2NyqcSk6/dX22eI5eV+qYXYmYna72Dq2u0P8tNZ6AYtg==", + "path": "microsoft.entityframeworkcore.tools/8.0.2", + "hashPath": "microsoft.entityframeworkcore.tools.8.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "path": "microsoft.extensions.caching.abstractions/8.0.0", + "hashPath": "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Memory/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7pqivmrZDzo1ADPkRwjy+8jtRKWRCPag9qPI+p7sgu7Q4QreWhcvbiWXsbhP+yY8XSiDvZpu2/LWdBv7PnmOpQ==", + "path": "microsoft.extensions.caching.memory/8.0.0", + "hashPath": "microsoft.extensions.caching.memory.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "path": "microsoft.extensions.dependencyinjection/8.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyModel/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NSmDw3K0ozNDgShSIpsZcbFIzBX4w28nDag+TfaQujkXGazBm+lid5onlWoCBy4VsLxqnnKjEBbGSJVWJMf43g==", + "path": "microsoft.extensions.dependencymodel/8.0.0", + "hashPath": "microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "path": "microsoft.extensions.logging/8.0.0", + "hashPath": "microsoft.extensions.logging.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "path": "microsoft.extensions.logging.abstractions/8.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "path": "microsoft.extensions.options/8.0.0", + "hashPath": "microsoft.extensions.options.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "path": "microsoft.extensions.primitives/8.0.0", + "hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512" + }, + "Mono.TextTemplating/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "path": "mono.texttemplating/2.2.1", + "hashPath": "mono.texttemplating.2.2.1.nupkg.sha512" + }, + "MySqlConnector/2.3.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "path": "mysqlconnector/2.3.5", + "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XjnlcxVBLnEMbyEc5cZzgZeDyLvAniACZQ04W1slWN0f4rmfNzl98gEMvHnFH0fMDF06z9MmgGi/Sr7hJ+BVnw==", + "path": "pomelo.entityframeworkcore.mysql/8.0.2", + "hashPath": "pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512" + }, + "System.CodeDom/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", + "path": "system.codedom/4.4.0", + "hashPath": "system.codedom.4.4.0.nupkg.sha512" + }, + "System.Collections.Immutable/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", + "path": "system.collections.immutable/6.0.0", + "hashPath": "system.collections.immutable.6.0.0.nupkg.sha512" + }, + "System.Composition/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", + "path": "system.composition/6.0.0", + "hashPath": "system.composition.6.0.0.nupkg.sha512" + }, + "System.Composition.AttributedModel/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==", + "path": "system.composition.attributedmodel/6.0.0", + "hashPath": "system.composition.attributedmodel.6.0.0.nupkg.sha512" + }, + "System.Composition.Convention/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", + "path": "system.composition.convention/6.0.0", + "hashPath": "system.composition.convention.6.0.0.nupkg.sha512" + }, + "System.Composition.Hosting/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", + "path": "system.composition.hosting/6.0.0", + "hashPath": "system.composition.hosting.6.0.0.nupkg.sha512" + }, + "System.Composition.Runtime/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==", + "path": "system.composition.runtime/6.0.0", + "hashPath": "system.composition.runtime.6.0.0.nupkg.sha512" + }, + "System.Composition.TypedParts/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", + "path": "system.composition.typedparts/6.0.0", + "hashPath": "system.composition.typedparts.6.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/6.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==", + "path": "system.io.pipelines/6.0.3", + "hashPath": "system.io.pipelines.6.0.3.nupkg.sha512" + }, + "System.Reflection.Metadata/6.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", + "path": "system.reflection.metadata/6.0.1", + "hashPath": "system.reflection.metadata.6.0.1.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "path": "system.text.encoding.codepages/6.0.0", + "hashPath": "system.text.encoding.codepages.6.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==", + "path": "system.text.json/8.0.0", + "hashPath": "system.text.json.8.0.0.nupkg.sha512" + }, + "System.Threading.Channels/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==", + "path": "system.threading.channels/6.0.0", + "hashPath": "system.threading.channels.6.0.0.nupkg.sha512" + }, + "Haoliang.Models/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.dll b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.dll new file mode 100644 index 0000000..80c2e7b Binary files /dev/null and b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.dll differ diff --git a/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.pdb b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.pdb new file mode 100644 index 0000000..e725920 Binary files /dev/null and b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.pdb differ diff --git a/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.runtimeconfig.json b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.runtimeconfig.json new file mode 100644 index 0000000..244e1ab --- /dev/null +++ b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.runtimeconfig.json @@ -0,0 +1,13 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Reflection.NullabilityInfoContext.IsSupported": true, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.dll b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.dll new file mode 100644 index 0000000..c2d95fe Binary files /dev/null and b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.dll differ diff --git a/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.pdb b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.pdb new file mode 100644 index 0000000..7c3395b Binary files /dev/null and b/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.pdb differ diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfo.cs b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfo.cs index 35b20e7..6030381 100644 --- a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfo.cs +++ b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Haoliang.Data")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+371a5857c3ab7666027e8783ab41863bee079194")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c3d17cebb9da179f6753a56af8a0a77a244c32f3")] [assembly: System.Reflection.AssemblyProductAttribute("Haoliang.Data")] [assembly: System.Reflection.AssemblyTitleAttribute("Haoliang.Data")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfoInputs.cache b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfoInputs.cache index 237fc12..44f47e8 100644 --- a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfoInputs.cache +++ b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfoInputs.cache @@ -1 +1 @@ -470368933aa7b5339ba016f2f63bd21657b849f37afc12befc3a0b19a0fe8621 +74dde7117c2620296605ef8bcf766dedf67d1cb4aa2653155b7060e141ab9f7b diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.AssemblyReference.cache b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.AssemblyReference.cache index c65c5c2..8c45738 100644 Binary files a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.AssemblyReference.cache and b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.AssemblyReference.cache differ diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CopyComplete b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CoreCompileInputs.cache b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CoreCompileInputs.cache index ba2432e..ba48df1 100644 --- a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CoreCompileInputs.cache +++ b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -b3e83cefbf2a82944aad34bfc9bb5447342c2beb1c403328419aca00f0512d22 +ab1d1000005e9320e5b249326984a19f9661a948805e61768fd4485fb50c812c diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.FileListAbsolute.txt b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.FileListAbsolute.txt index 555ab0d..3033691 100644 --- a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.FileListAbsolute.txt +++ b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.FileListAbsolute.txt @@ -3,3 +3,15 @@ /root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfoInputs.cache /root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.AssemblyInfo.cs /root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CoreCompileInputs.cache +/root/opencode/haoliang/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.deps.json +/root/opencode/haoliang/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.runtimeconfig.json +/root/opencode/haoliang/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.dll +/root/opencode/haoliang/Haoliang.Data/bin/Debug/net8.0/Haoliang.Data.pdb +/root/opencode/haoliang/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.dll +/root/opencode/haoliang/Haoliang.Data/bin/Debug/net8.0/Haoliang.Models.pdb +/root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.csproj.CopyComplete +/root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.dll +/root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/refint/Haoliang.Data.dll +/root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.pdb +/root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.genruntimeconfig.cache +/root/opencode/haoliang/Haoliang.Data/obj/Debug/net8.0/ref/Haoliang.Data.dll diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.dll b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.dll new file mode 100644 index 0000000..80c2e7b Binary files /dev/null and b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.dll differ diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.genruntimeconfig.cache b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.genruntimeconfig.cache new file mode 100644 index 0000000..7500194 --- /dev/null +++ b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.genruntimeconfig.cache @@ -0,0 +1 @@ +23ed7d5ec7781cbe7f16a15235561a1a2f2e8a85539ada3f48aa9b0e474159b2 diff --git a/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.pdb b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.pdb new file mode 100644 index 0000000..e725920 Binary files /dev/null and b/Haoliang.Data/obj/Debug/net8.0/Haoliang.Data.pdb differ diff --git a/Haoliang.Data/obj/Debug/net8.0/ref/Haoliang.Data.dll b/Haoliang.Data/obj/Debug/net8.0/ref/Haoliang.Data.dll new file mode 100644 index 0000000..4e7e210 Binary files /dev/null and b/Haoliang.Data/obj/Debug/net8.0/ref/Haoliang.Data.dll differ diff --git a/Haoliang.Data/obj/Debug/net8.0/refint/Haoliang.Data.dll b/Haoliang.Data/obj/Debug/net8.0/refint/Haoliang.Data.dll new file mode 100644 index 0000000..4e7e210 Binary files /dev/null and b/Haoliang.Data/obj/Debug/net8.0/refint/Haoliang.Data.dll differ diff --git a/Haoliang.Models/System/LogEntry.cs b/Haoliang.Models/System/LogEntry.cs index d988af5..b8bcb85 100644 --- a/Haoliang.Models/System/LogEntry.cs +++ b/Haoliang.Models/System/LogEntry.cs @@ -1,4 +1,5 @@ using System; +using Haoliang.Models.DataCollection; namespace Haoliang.Models.System { @@ -6,7 +7,7 @@ namespace Haoliang.Models.System { public int Id { get; set; } public DateTime Timestamp { get; set; } - public string Level { get; set; } + public LogLevel Level { get; set; } public string Category { get; set; } public string Message { get; set; } public string Exception { get; set; } diff --git a/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.dll b/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.dll index c847b02..c2d95fe 100644 Binary files a/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.dll and b/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.dll differ diff --git a/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.pdb b/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.pdb index f98c31c..7c3395b 100644 Binary files a/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.pdb and b/Haoliang.Models/bin/Debug/net8.0/Haoliang.Models.pdb differ diff --git a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfo.cs b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfo.cs index 64c7d57..91b7a41 100644 --- a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfo.cs +++ b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Haoliang.Models")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+371a5857c3ab7666027e8783ab41863bee079194")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c3d17cebb9da179f6753a56af8a0a77a244c32f3")] [assembly: System.Reflection.AssemblyProductAttribute("Haoliang.Models")] [assembly: System.Reflection.AssemblyTitleAttribute("Haoliang.Models")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfoInputs.cache b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfoInputs.cache index 924f8a0..c68d43c 100644 --- a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfoInputs.cache +++ b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.AssemblyInfoInputs.cache @@ -1 +1 @@ -68fbaa8f4888d2483614bb3715a61bd7bc2f4e782dc4c35d6f4f4d41202177fe +2c18f2f48b9565bc973d3ca206e23b96d6b6815054341daa6858cdf703ae16bc diff --git a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.dll b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.dll index c847b02..c2d95fe 100644 Binary files a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.dll and b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.dll differ diff --git a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.pdb b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.pdb index f98c31c..7c3395b 100644 Binary files a/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.pdb and b/Haoliang.Models/obj/Debug/net8.0/Haoliang.Models.pdb differ diff --git a/Haoliang.Models/obj/Debug/net8.0/ref/Haoliang.Models.dll b/Haoliang.Models/obj/Debug/net8.0/ref/Haoliang.Models.dll index d90bdee..6906f4e 100644 Binary files a/Haoliang.Models/obj/Debug/net8.0/ref/Haoliang.Models.dll and b/Haoliang.Models/obj/Debug/net8.0/ref/Haoliang.Models.dll differ diff --git a/Haoliang.Models/obj/Debug/net8.0/refint/Haoliang.Models.dll b/Haoliang.Models/obj/Debug/net8.0/refint/Haoliang.Models.dll index d90bdee..6906f4e 100644 Binary files a/Haoliang.Models/obj/Debug/net8.0/refint/Haoliang.Models.dll and b/Haoliang.Models/obj/Debug/net8.0/refint/Haoliang.Models.dll differ