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;
}
}
}
}