using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows.Media; using Correlator.Model; using Correlator.Util; using Newtonsoft.Json; namespace Correlator.DataService { internal class ApplicationDataServiceImpl : IApplicationDataService { /// <summary> /// 管材 /// </summary> private readonly string[] _materials = { "球铁", "铸铁", "钢", "铜", "铅", "水泥", "聚氯乙烯", "高密度聚乙烯", "中密度聚乙烯", "玻璃钢", "混凝土", "粘土", "低密度聚乙烯" }; public List<string> GetPipeMaterials() { return _materials.ToList(); } public ObservableCollection<MaterialVelocity> GetVelocityCollection(string materialName) { var velocityCollection = new ObservableCollection<MaterialVelocity>(); using (var manager = new DataBaseManager()) { var velocities = manager .Table<MaterialVelocity>() .Where(x => x.MaterialName == materialName) .OrderBy(x => x.LowDiameter) .ToList(); foreach (var model in velocities) { velocityCollection.Add(model); } } return velocityCollection; } public void DeleteVelocity(MaterialVelocity velocity) { using (var manager = new DataBaseManager()) { manager.Delete(velocity); } } public void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed) { using (var manager = new DataBaseManager()) { var velocity = new MaterialVelocity { MaterialName = materialName, LowDiameter = Convert.ToInt32(minDiameter), HighDiameter = Convert.ToInt32(maxDiameter), Velocity = Convert.ToInt32(soundSpeed) }; manager.Insert(velocity); } } public void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed) { using (var manager = new DataBaseManager()) { velocity.LowDiameter = Convert.ToInt32(minDiameter); velocity.HighDiameter = Convert.ToInt32(maxDiameter); velocity.Velocity = Convert.ToInt32(soundSpeed); "ApplicationDataServiceImpl".WriteLog("正在修改的管材是:" + JsonConvert.SerializeObject(velocity)); manager.Update(velocity); } } public int GetSoundVelocity(string material, int pipeDiameter) { using (var manager = new DataBaseManager()) { //多条件查询 var materialVelocities = manager .Table<MaterialVelocity>() .Where(mv => mv.MaterialName == material && mv.LowDiameter <= pipeDiameter && mv.HighDiameter >= pipeDiameter ); if (materialVelocities.Any()) { return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault(); } return 0; } } public AudioVisualizer GetAudioVisualizer(int waveDataSize) { return new AudioVisualizer(waveDataSize); } public Color[] GetAllHsvColors() { var result = new Color[256 * 6]; for (var i = 0; i <= 255; i++) { result[i] = Color.FromArgb(255, 255, (byte)i, 0); } for (var i = 0; i <= 255; i++) { result[256 + i] = Color.FromArgb(255, (byte)(255 - i), 255, 0); } for (var i = 0; i <= 255; i++) { result[512 + i] = Color.FromArgb(255, 0, 255, (byte)i); } for (var i = 0; i <= 255; i++) { result[768 + i] = Color.FromArgb(255, 0, (byte)(255 - i), 255); } for (var i = 0; i <= 255; i++) { result[1024 + i] = Color.FromArgb(255, (byte)i, 0, 255); } for (var i = 0; i <= 255; i++) { result[1280 + i] = Color.FromArgb(255, 255, 0, (byte)(255 - i)); } return result; } public ObservableCollection<SampleRateModel> GetSampleRate() { var sampleRateCollection = new ObservableCollection<SampleRateModel>(); using (var manager = new DataBaseManager()) { var result = manager .Table<SampleRateModel>() .ToList(); foreach (var model in result) { sampleRateCollection.Add(model); } } return sampleRateCollection; } public int GetSampleRateByWorkMode(int mode) { using (var manager = new DataBaseManager()) { var result = manager.Table<SampleRateModel>(); if (!result.Any()) { return 7500; } var sampleRateModel = result.First(x => x.WorkMode == mode); return sampleRateModel.SampleRate; } } public void UpdateSampleRate(int mode, int sampleRate) { using (var manager = new DataBaseManager()) { var result = manager .Table<SampleRateModel>() .First(x => x.WorkMode == mode); var rateModel = result ?? new SampleRateModel(); rateModel.WorkMode = mode; rateModel.SampleRate = sampleRate; rateModel.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); manager.Update(rateModel); } } } }