using HL_FristAidPlatform_Help;
using HL_FristAidPlatform_IDataBase;
using HL_FristAidPlatform_Models;
using Newtonsoft.Json;
using SqlSugar;
using System.Collections.Generic;
using System.Data;
namespace HL_FristAidPlatform_DataBase
{
///
/// 急救车信息
///
public class T_Base_AmbulanceDB : BaseDB, IT_Base_Ambulance
{
public SqlSugarClient db = GetClient();
///
/// 增加一条数据
///
public bool Add(T_Base_Ambulance model)
{
return db.Insertable(model).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand() == 1;
}
///
/// 更新一条数据
///
public int Update(T_Base_Ambulance model)
{
//更新时指定列不更新
return db.Updateable(model).IgnoreColumns(it => new { it.CreationDate, it.Creator, it.CreatorID }).ExecuteCommand();
}
///
/// 更新一条数据
///
public int UpdateState(T_Base_Ambulance model)
{
//更新时指定列不更新
return db.Updateable(model).UpdateColumns(it => new { it.State }).ExecuteCommand();
}
///
/// 删除一条数据
///
public bool Delete(long ID)
{
return db.Deleteable().In(ID).ExecuteCommand() == 1 ? true : false;
}
///
/// 根据分页获得数据列表
///
/// 起始页
/// 每页大小
/// 所属医院编号(GUID)
/// 状态 -1查询所有
/// 查询关键词
///
public TableModel GetPageList(int pageIndex, int pageSize, string hospitalGuid, int state, string keyWord)
{
int TotalNumber = 0;
TableModel t = new TableModel();
var listMode = db.Queryable((Ambulance, Hospital, VideoEquipment) => new object[] {
JoinType.Left,Ambulance.HospitalGuid==Hospital.GUID,
JoinType.Left,Ambulance.VideoEquipmentGuid==VideoEquipment.GUID,
})
.Where((Ambulance, Hospital, VideoEquipment) => Ambulance.DeleteFlag == 0 && VideoEquipment.DeleteFlag == 0)
.WhereIF(!string.IsNullOrEmpty(hospitalGuid), (Ambulance, Hospital, VideoEquipment) => Ambulance.HospitalGuid == hospitalGuid)
.WhereIF(state >= 0, (Ambulance, Hospital, VideoEquipment) => Ambulance.State == state)
.WhereIF(!string.IsNullOrEmpty(keyWord), (Ambulance, Hospital, VideoEquipment) => Ambulance.ECGCode.Contains(keyWord) || Ambulance.PlateNumber.Contains(keyWord))
.Select((Ambulance, Hospital, VideoEquipment) => new T_Base_AmbulanceModel
{
ID = Ambulance.ID,
GUID = Ambulance.GUID.ToString(),
HospitalGuid = Ambulance.HospitalGuid,
VideoEquipmentGuid = Ambulance.VideoEquipmentGuid,
ECGCode = Ambulance.ECGCode,
PlateNumber = Ambulance.PlateNumber,
State = Ambulance.State,
DeleteFlag = Ambulance.DeleteFlag,
CreationDate = Ambulance.CreationDate,
CreatorID = Ambulance.CreatorID,
Creator = Ambulance.Creator,
HospitalName = Hospital.Name,
EquipmentName = VideoEquipment.EquipmentName,
StateCase = Ambulance.State.ToString(),
DeleteFlagCase = Ambulance.DeleteFlag.ToString(),
}).OrderBy((Ambulance) => Ambulance.ID).ToPageList(pageIndex, pageSize, ref TotalNumber);
t.Code = 0;
t.PageCount = listMode.Count;
t.TotalNumber = TotalNumber;
t.Data = listMode;
t.Msg = "成功";
return t;
}
///
/// 获得数据列表
///
/// 所属医院编号(GUID)
/// 状态 -1查询所有
/// 查询关键词
///
public TableModel GetList(string hospitalGuid, int state, string keyWord)
{
TableModel t = new TableModel();
var listMode = db.Queryable((Ambulance, Hospital, VideoEquipment) => new object[] {
JoinType.Left,Ambulance.HospitalGuid==Hospital.GUID,
JoinType.Left,Ambulance.VideoEquipmentGuid==VideoEquipment.GUID,
})
.Where((Ambulance, Hospital, VideoEquipment) => Ambulance.DeleteFlag == 0 && VideoEquipment.DeleteFlag == 0)
.WhereIF(!string.IsNullOrEmpty(hospitalGuid), (Ambulance, Hospital, VideoEquipment) => Ambulance.HospitalGuid == hospitalGuid)
.WhereIF(state >= 0, (Ambulance, Hospital, VideoEquipment) => Ambulance.State == state)
.WhereIF(!string.IsNullOrEmpty(keyWord), (Ambulance, Hospital, VideoEquipment) => Ambulance.ECGCode.Contains(keyWord) || Ambulance.PlateNumber.Contains(keyWord))
.Select((Ambulance, Hospital, VideoEquipment) => new T_Base_AmbulanceModel
{
ID = Ambulance.ID,
GUID = Ambulance.GUID.ToString(),
HospitalGuid = Ambulance.HospitalGuid,
VideoEquipmentGuid = Ambulance.VideoEquipmentGuid,
ECGCode = Ambulance.ECGCode,
PlateNumber = Ambulance.PlateNumber,
State = Ambulance.State,
DeleteFlag = Ambulance.DeleteFlag,
CreationDate = Ambulance.CreationDate,
CreatorID = Ambulance.CreatorID,
Creator = Ambulance.Creator,
HospitalName = Hospital.Name,
EquipmentName = VideoEquipment.EquipmentName,
StateCase = Ambulance.State.ToString(),
DeleteFlagCase = Ambulance.DeleteFlag.ToString(),
ChannelsNumber = VideoEquipment.ChannelsNumber,
}).OrderBy((Ambulance) => Ambulance.ID).ToList();
t.Code = 0;
t.PageCount = listMode.Count;
t.TotalNumber = listMode.Count;
t.Data = listMode;
t.Msg = "成功";
return t;
}
///
/// 获得前几行数据
///
public T_Base_Ambulance Get(string guid)
{
return db.Queryable().First(it => it.GUID == guid);//查询单条
}
///
/// 根据车牌号获取车辆
///
///
///
public TableModel GetPlateNumber(string plateNumber)
{
List data = db.Queryable().Where(iterator => iterator.PlateNumber == plateNumber).ToList();
TableModel menu = new TableModel();
menu.Code = 0;
menu.TotalNumber = data.Count;
menu.Data = data;
menu.Msg = "成功";
return menu;
//return db.Queryable().Where(Ambulance => Ambulance.PlateNumber == plateNumber);
}
///
/// 根据急救车编号获得视频设备信息
/// 实时视频界面专用
///
/// 急救车编号
/// 服务器类型1注册服务器,2流媒体服务器,3报警服务器,4解码服务器 同时获取多个,分割.如:1,2,3,4
///
public string GetServerInfoByGuid(string guid, string serverType)
{
string ReturnStr = string.Empty;
#region SQL
//注册服务器
string RegistrationServerStr = @"SELECT a.GUID,a.PlateNumber,a.ECGCode,c.UserName,c.Password,c.ServerName,c.ServerType,c.ServerIP,c.CommunicationPort,c.QueryPort,b.EquipmentName,b.EquipmentType,b.EquipmentCode,b.ChannelsNumber FROM T_Base_Ambulance a
LEFT JOIN T_Base_VideoEquipment b ON a.VideoEquipmentGuid=b.GUID
LEFT JOIN T_Base_VideoDeviceServer c ON b.RegistrationServerGuid=c.GUID
WHERE a.GUID='{0}' AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0";
//流媒体服务器
string StreamingMediaServerStr = @"SELECT a.GUID,a.PlateNumber,a.ECGCode,c.UserName,c.Password,c.ServerName,c.ServerType,c.ServerIP,c.CommunicationPort,c.QueryPort,b.EquipmentName,b.EquipmentType,b.EquipmentCode,b.ChannelsNumber FROM T_Base_Ambulance a
LEFT JOIN T_Base_VideoEquipment b ON a.VideoEquipmentGuid=b.GUID
LEFT JOIN T_Base_VideoDeviceServer c ON b.StreamingMediaServerGuid=c.GUID
WHERE a.GUID='{0}' AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0";
//报警服务器
string AlarmServerStr = @"SELECT a.GUID,a.PlateNumber,a.ECGCode,c.UserName,c.Password,c.ServerName,c.ServerType,c.ServerIP,c.CommunicationPort,c.QueryPort,b.EquipmentName,b.EquipmentType,b.EquipmentCode,b.ChannelsNumber FROM T_Base_Ambulance a
LEFT JOIN T_Base_VideoEquipment b ON a.VideoEquipmentGuid=b.GUID
LEFT JOIN T_Base_VideoDeviceServer c ON b.AlarmServerGuid=c.GUID
WHERE a.GUID='{0}' AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0";
//解码服务器
string DecodingServerStr = @"SELECT a.GUID,a.PlateNumber,a.ECGCode,c.UserName,c.Password,c.ServerName,c.ServerType,c.ServerIP,c.CommunicationPort,c.QueryPort,b.EquipmentName,b.EquipmentType,b.EquipmentCode,b.ChannelsNumber FROM T_Base_Ambulance a
LEFT JOIN T_Base_VideoEquipment b ON a.VideoEquipmentGuid=b.GUID
LEFT JOIN T_Base_VideoDeviceServer c ON b.DecodingServerGuid=c.GUID
WHERE a.GUID='{0}' AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0";
#endregion
string SqlStr = string.Empty;
string[] ServerTypeArray = serverType.Split(',');
foreach (string str in ServerTypeArray)
{
if (str == "1")
{
SqlStr += SqlStr == string.Empty ? RegistrationServerStr : " UNION ALL " + RegistrationServerStr;
}
else if (str == "2")
{
SqlStr += SqlStr == string.Empty ? StreamingMediaServerStr : " UNION ALL " + StreamingMediaServerStr;
}
else if (str == "3")
{
SqlStr += SqlStr == string.Empty ? AlarmServerStr : " UNION ALL " + AlarmServerStr;
}
else if (str == "4")
{
SqlStr += SqlStr == string.Empty ? DecodingServerStr : " UNION ALL " + DecodingServerStr;
}
}
SqlStr = string.Format(SqlStr, guid);
DataTable dt = db.Ado.GetDataTable(SqlStr);
if (dt.Rows.Count > 0)
{
foreach (DataRow item in dt.Rows)
{
string row = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":";
row += JsonConvert.SerializeObject(item[i]) + ",";
}
row = row.Remove(row.Length - 1);
ReturnStr += "{" + row + "}" + ",";
}
ReturnStr = ReturnStr.Remove(ReturnStr.Length - 1);
}
ReturnStr = "[" + ReturnStr + "]";
return ReturnStr;
}
///
/// 根据状态获取急救车列表
///
/// 急救车状态1、空闲,2、出车中,3、维修中,4、已报废
/// 所属医院编号(GUID)
///
public TableModel GetListForState(int state, string hospitalGuid)
{
TableModel t = new TableModel();
var listMode = db.Queryable((Ambulance, Hospital) => new object[] {
JoinType.Left,Ambulance.HospitalGuid==Hospital.GUID,
}).Where((Ambulance, Hospital) => Ambulance.DeleteFlag == 0).WhereIF(state > 0, (Ambulance, Hospital) => Ambulance.State == state).WhereIF(!string.IsNullOrEmpty(hospitalGuid), (Ambulance, Hospital) => Ambulance.HospitalGuid == hospitalGuid)
.Select((Ambulance, Hospital) => new T_Base_AmbulanceModel
{
ID = Ambulance.ID,
GUID = Ambulance.GUID.ToString(),
HospitalGuid = Ambulance.HospitalGuid,
VideoEquipmentGuid = Ambulance.VideoEquipmentGuid,
ECGCode = Ambulance.ECGCode,
PlateNumber = Ambulance.PlateNumber,
State = Ambulance.State,
DeleteFlag = Ambulance.DeleteFlag,
CreationDate = Ambulance.CreationDate,
CreatorID = Ambulance.CreatorID,
Creator = Ambulance.Creator,
HospitalName = Hospital.Name,
StateCase = Ambulance.State.ToString(),
DeleteFlagCase = Ambulance.DeleteFlag.ToString(),
}).OrderBy((Ambulance) => Ambulance.ID).ToList();
t.Code = 0;
t.PageCount = listMode.Count;
t.TotalNumber = listMode.Count;
t.Data = listMode;
t.Msg = "成功";
return t;
}
///
/// 根据急救车编号(GUID)获取GPS信息
///
/// 急救车编号(GUID)
///
public string GetGPSInfoByGuid(string guid)
{
string ReturnStr = string.Empty;
string SqlStr = @"SELECT PlateNumber,EquipmentCode
FROM T_Base_Ambulance a
LEFT JOIN T_Base_VideoEquipment b ON a.VideoEquipmentGuid=b.GUID
WHERE a.[GUID]='{0}' AND a.DeleteFlag=0 AND b.DeleteFlag=0";
SqlStr = string.Format(SqlStr, guid);
DataTable dt = db.Ado.GetDataTable(SqlStr);
if (dt.Rows.Count > 0)
{
foreach (DataRow item in dt.Rows)
{
string row = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":";
row += JsonConvert.SerializeObject(item[i]) + ",";
}
row = row.Remove(row.Length - 1);
ReturnStr += "{" + row + "}" + ",";
}
ReturnStr = ReturnStr.Remove(ReturnStr.Length - 1);
}
ReturnStr = "[" + ReturnStr + "]";
return ReturnStr;
}
///
/// 根据心电设备号获取车牌号信息
///
/// 心电设备号
///
public string GetPlageNumberInfoByECGCode(string ECGCode)
{
string ReturnStr = string.Empty;
string SqlStr = @"SELECT [GUID] FROM T_Base_Ambulance WHERE ECGCode='{0}' AND DeleteFlag=0";
SqlStr = string.Format(SqlStr, ECGCode);
DataTable dt = db.Ado.GetDataTable(SqlStr);
if (dt.Rows.Count > 0)
{
foreach (DataRow item in dt.Rows)
{
string row = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":";
row += JsonConvert.SerializeObject(item[i]) + ",";
}
row = row.Remove(row.Length - 1);
ReturnStr += "{" + row + "}" + ",";
}
ReturnStr = ReturnStr.Remove(ReturnStr.Length - 1);
}
ReturnStr = "[" + ReturnStr + "]";
return ReturnStr;
}
///
/// 院前急救调度获取医院全部车辆信息
///
///
public string GetAmbulance()
{
string ReturnStr = string.Empty;
string SqlStr = @"select ECGCode,PlateNumber,Name,State,RegistrationServerGuid,StreamingMediaServerGuid,AlarmServerGuid,DecodingServerGuid,EquipmentName,EquipmentCode from T_Base_Ambulance Ambulance Left JOIN T_Base_Hospital Hospital on Ambulance.HospitalGuid=Hospital.GUID left join T_Base_VideoEquipment VideoEquipment on Ambulance.VideoEquipmentGuid=VideoEquipment.GUID where Ambulance.DeleteFlag=0 and Hospital.DeleteFlag=0 and VideoEquipment.DeleteFlag=0";
SqlStr = string.Format(SqlStr);
DataTable dt = db.Ado.GetDataTable(SqlStr);
if (dt.Rows.Count > 0)
{
foreach (DataRow item in dt.Rows)
{
string row = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":";
row += JsonConvert.SerializeObject(item[i]) + ",";
}
row = row.Remove(row.Length - 1);
ReturnStr += "{" + row + "}" + ",";
}
ReturnStr = ReturnStr.Remove(ReturnStr.Length - 1);
}
ReturnStr = "[" + ReturnStr + "]";
return ReturnStr;
}
///
/// 获取车辆绑定的值班人员
///
///
///
///
///
public TableModel GetAmbulanceList(string hospitalGuid, string plateNumber, int state)
{
TableModel t = new TableModel();
List list = new List();
var oneClasee = db.Queryable()
.Where(a => a.HospitalGuid == hospitalGuid)
.WhereIF(!SqlFunc.IsNullOrEmpty(plateNumber), a => a.PlateNumber.Contains(plateNumber))
.WhereIF(state > -1, a => a.State == state).ToList();
List user = new List();
oneClasee.ForEach(x =>
{
AmbulanceModel model = new AmbulanceModel();
model.GUID = x.GUID;
model.PlateNumber = x.PlateNumber;
model.State = x.State;
model.ECGCode = x.ECGCode;
user = db.Queryable().Where(s => s.VehicleGUID == x.GUID).ToList();
if (user.Count > 0)
{
for (int i = 0; i < user.Count; i++)
{
if (!string.IsNullOrEmpty(model.Personnel))
{
model.Personnel += ",";
}
model.Personnel += user[i].FullName;
}
}
list.Add(model);
});
t.Code = 0;
t.PageCount = list.Count;
t.TotalNumber = list.Count;
t.Data = list;
t.Msg = "成功";
return t;
}
///
/// 主站及分站目前车辆状态信息列表
///
///
///
public string GetCurrentAmbulanceInfo(string hospitalGuid)
{
#region
//var oneClass = db.Queryable((a, b) =>
//new JoinQueryInfos(JoinType.Left, a.GUID == b.CallHospitalGuid))
// .Where((a, b) => a.DeleteFlag == 0 && a.ParentGUID == hospitalGuid && b.DeleteFlag == 0 )
// .Select((a, b) => new
// {
// a.Name,
// a.GUID,
// a.ParentGUID,
// b.DispatchDatetime
// }).ToList();
//List list = new List();
//oneClass.ForEach(i => db.Queryable().Where(j => j.HospitalGuid == i.GUID).ToList().ForEach(k => list.Add(k)));
//List MoldeList = new List();
//oneClass.ForEach(i =>
//{
// List list = db.Queryable().Where(j => j.HospitalGuid == i.GUID).ToList();
// CurrentAmbulanceModel model = new CurrentAmbulanceModel();
// list.ForEach(j =>
// {
// model.Name = i.Name;
// model.Total = model.Total + 1;
// if (j.State == 1)
// {
// model.StandByTotal = model.StandByTotal + 1;
// if (!SqlFunc.IsNullOrEmpty(model.StandByAmbulance))
// {
// model.StandByAmbulance += "|";
// }
// model.StandByAmbulance += model.StandByAmbulance;
// }
// if (j.State == 2)
// {
// model.DrvingTotal = model.DrvingTotal + 1;
// if (!SqlFunc.IsNullOrEmpty(model.DrvingAmbulance))
// {
// model.DrvingAmbulance += "|";
// }
// model.DrvingAmbulance += model.DrvingAmbulance;
// }
// if (j.State == 3)
// {
// model.MaintainTotal = model.MaintainTotal + 1;
// if (!SqlFunc.IsNullOrEmpty(model.MaintainAmbulance))
// {
// model.MaintainAmbulance += "|";
// }
// model.MaintainAmbulance += model.MaintainAmbulance;
// }
// });
// MoldeList.Add(model);
//});
#endregion
#region
string sql = string.Format(@"SELECT T1.GUID,T1.Name,
(SELECT COUNT(*) FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid=T1.GUID) Total,
(SELECT COUNT(*) FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid=T1.GUID AND T2.State=1) StandByTotal,
(SELECT COUNT(*) FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid=T1.GUID AND T2.State=2) DrvingTotal,
(SELECT COUNT(*) FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid=T1.GUID AND T2.State=3) MaintainTotal,
(SELECT PlateNumber + ',' FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid = T1.GUID AND T2.State = 1 FOR XML PATH('') ) StandByAmbulance,
(SELECT PlateNumber + ',' FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid = T1.GUID AND T2.State = 2 FOR XML PATH('') ) DrvingAmbulance,
(SELECT PlateNumber + ',' FROM dbo.T_Base_Ambulance T2 WHERE T2.HospitalGuid = T1.GUID AND T2.State = 3 FOR XML PATH('') ) MaintainAmbulance
FROM dbo.T_Base_Hospital T1
WHERE T1.GUID = '{0}'
OR T1.ParentGUID = '{1}'", hospitalGuid, hospitalGuid);
#endregion
DataTable dt = db.Ado.GetDataTable(sql);
string JsonStr = Help.DataTableToJsonStr(dt);
return JsonStr;
}
}
}