using AmrControl.ADS; using AmrControl.DB.Models; using AmrControl.Dto; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; namespace AmrControl.DB { public class MyDbHandler { /// /// 连接字符,用于动态创建MyDbContext使用 /// private readonly string connStr; public MyDbHandler(string connString) { //mysql用这一句 //connStr = connString; //sqlite用这一句 connStr = "Filename=" + Path.Combine(AppDomain.CurrentDomain.BaseDirectory, connString); } /// /// 获取今日的出库单 /// /// public List getIssueNodeDto() { List dots = new List(); using (var context = new MyDbContext(this.connStr)) { var notes = context.issuenotes.ToList(); foreach (var item in notes) { IssueNoteDto dto = new IssueNoteDto(); dto.ID = item.issueNoteID; dto.MesTaskID = item.mesTaskID; dto.StationID = item.stationID; dto.RawBoms = JsonConvert.DeserializeObject>(item.jsonRawBoms); dots.Add(dto); } } return dots; } /// /// 获得车的清单 /// /// public List getJGRs() { List jgrs = new List(); using (var context = new MyDbContext(this.connStr)) { var dbJgrs = context.jgrs.Where(x=>x.enable == true).ToList(); foreach (var item in dbJgrs) { JGR_Tc_Model jgr = new JGR_Tc_Model(); jgr.jgrID = item.jgrID; jgr.jgrSN = item.jgrSN; jgr.jgrType = item.jgrType; jgr.rcAddr = item.rcAddr ; jgr.rcFreqCode = item.rcFreqCode; jgr.currLocation_X = (short)item.positionX; jgr.currLocation_Y = (short)item.positionY; jgr.displayX = item.displayX; jgr.displayY = item.displayY; jgr.isOnline = 0; //初始化的时候,是否在线为0 jgr.isCharging = 0; //初始化的时候,没在充电为0 jgr.isHealthy = 0; //初始化的时候,默认没有异常0 jgrs.Add(jgr); } } return jgrs; } public bool saveJGRs(List models) { List jgrs = new List(); using (var context = new MyDbContext(this.connStr)) { var dbJgrs = context.jgrs.Where(x => x.enable == true).ToList(); foreach (var item in models) { var dbModel = dbJgrs.Where(x => x.jgrSN == item.jgrSN).FirstOrDefault(); if(dbModel != null) { dbModel.jgrID = item.jgrID; dbModel.jgrType = item.jgrType; dbModel.displayX = item.displayX; dbModel.displayY = item.displayY; dbModel.rcAddr = item.rcAddr; dbModel.rcFreqCode = item.rcFreqCode; dbModel.positionX = item.currLocation_X; dbModel.positionY = item.currLocation_Y; } } context.SaveChanges(); return true; } } /// /// 充电桩 /// /// public List getChargers() { List charger = new List(); using (var context = new MyDbContext(this.connStr)) { var chargers = context.chargers.Where(x => x.enable == true).ToList(); foreach (var item in chargers) { ChargingStationDataModel newItem = new ChargingStationDataModel(); newItem.csID = item.chargerID; newItem.csSN = item.chargerSN; newItem.csType = item.chargerType; newItem.rcAddr = item.rcAddr; newItem.rcFreqCode = item.rcFreqCode; newItem.positionX = item.positionX; newItem.positionY = item.positionY; newItem.displayX = item.displayX; newItem.displayY = item.displayY; charger.Add(newItem); } } return charger; } public List getSatations() { List stations = new List(); using (var context = new MyDbContext(this.connStr)) { var chargers = context.stations.Where(x => x.enable == true).ToList(); foreach (var item in chargers) { StationDataModel newItem = new StationDataModel(); newItem.stationID = item.stationID; newItem.stationType = (StationType)item.stationType; newItem.displayName = item.displayName; newItem.positionX = item.positionX; newItem.positionY = item.positionY; newItem.displayX = item.displayX; newItem.displayY = item.displayY; stations.Add(newItem); } } return stations; } public void InitSqlite() { try { using (var context = new MyDbContext(this.connStr)) { context.Database.Migrate(); context.Database.EnsureCreated(); } } catch(Exception e) { Console.WriteLine("初始化sqlite数据库出现异常:" + e.Message); } } public StationDataModel? getStationByNo(String stationNo) { using (var context = new MyDbContext(this.connStr)) { var item = context.stations.Where(x => x.stationID == stationNo).FirstOrDefault(); if (item != null) { StationDataModel newItem = new() { stationID = item.stationID, stationType = (StationType)item.stationType, displayName = item.displayName, positionX = item.positionX, positionY = item.positionY, displayX = item.displayX, displayY = item.displayY }; return newItem; } return null; } } } }