feat: 重构项目结构,添加 WPF 应用
- 将核心功能提取到 WCTDataMiner.Core 类库 - 添加 WCTDataMiner.Wpf 桌面应用 - 支持数据解析、导出、统计等功能 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
82
src/WCTDataMiner.Core/Services/DimensionService.cs
Normal file
82
src/WCTDataMiner.Core/Services/DimensionService.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using WCTDataMiner.Core.Data;
|
||||
using WCTDataMiner.Core.Models;
|
||||
|
||||
namespace WCTDataMiner.Core.Services;
|
||||
|
||||
/// <summary>
|
||||
/// 维度表管理服务 - 负责维度表的CRUD操作
|
||||
/// </summary>
|
||||
public class DimensionService
|
||||
{
|
||||
private readonly WctMinerDbContext _context;
|
||||
|
||||
public DimensionService(WctMinerDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或创建TX面板维度
|
||||
/// </summary>
|
||||
public async Task<TxPanel> GetOrCreateTxPanelAsync(string name)
|
||||
{
|
||||
var existing = await _context.TxPanels
|
||||
.FirstOrDefaultAsync(p => p.Name == name);
|
||||
|
||||
if (existing != null) return existing;
|
||||
|
||||
var newPanel = new TxPanel { Name = name };
|
||||
_context.TxPanels.Add(newPanel);
|
||||
await _context.SaveChangesAsync();
|
||||
return newPanel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或创建TX硬件版本维度
|
||||
/// </summary>
|
||||
public async Task<TxHardware> GetOrCreateTxHardwareAsync(string version)
|
||||
{
|
||||
var existing = await _context.TxHardwares
|
||||
.FirstOrDefaultAsync(h => h.Version == version);
|
||||
|
||||
if (existing != null) return existing;
|
||||
|
||||
var newHardware = new TxHardware { Version = version };
|
||||
_context.TxHardwares.Add(newHardware);
|
||||
await _context.SaveChangesAsync();
|
||||
return newHardware;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或创建TX软件版本维度
|
||||
/// </summary>
|
||||
public async Task<TxSoftware> GetOrCreateTxSoftwareAsync(string version)
|
||||
{
|
||||
var existing = await _context.TxSoftwares
|
||||
.FirstOrDefaultAsync(s => s.Version == version);
|
||||
|
||||
if (existing != null) return existing;
|
||||
|
||||
var newSoftware = new TxSoftware { Version = version };
|
||||
_context.TxSoftwares.Add(newSoftware);
|
||||
await _context.SaveChangesAsync();
|
||||
return newSoftware;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或创建RX类型维度
|
||||
/// </summary>
|
||||
public async Task<RxType> GetOrCreateRxTypeAsync(string name)
|
||||
{
|
||||
var existing = await _context.RxTypes
|
||||
.FirstOrDefaultAsync(r => r.Name == name);
|
||||
|
||||
if (existing != null) return existing;
|
||||
|
||||
var newRxType = new RxType { Name = name };
|
||||
_context.RxTypes.Add(newRxType);
|
||||
await _context.SaveChangesAsync();
|
||||
return newRxType;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user