StableVersion4.3/HL_FristAidPlatform_DataBase/Base/T_Base_AmbulanceDB.cs

518 lines
24 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// 急救车信息
/// </summary>
public class T_Base_AmbulanceDB : BaseDB, IT_Base_Ambulance
{
public SqlSugarClient db = GetClient();
/// <summary>
/// 增加一条数据
/// </summary>
public bool Add(T_Base_Ambulance model)
{
return db.Insertable(model).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand() == 1;
}
/// <summary>
/// 更新一条数据
/// </summary>
public int Update(T_Base_Ambulance model)
{
//更新时指定列不更新
return db.Updateable(model).IgnoreColumns(it => new { it.CreationDate, it.Creator, it.CreatorID }).ExecuteCommand();
}
/// <summary>
/// 更新一条数据
/// </summary>
public int UpdateState(T_Base_Ambulance model)
{
//更新时指定列不更新
return db.Updateable(model).UpdateColumns(it => new { it.State }).ExecuteCommand();
}
/// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(long ID)
{
return db.Deleteable<T_Base_Ambulance>().In(ID).ExecuteCommand() == 1 ? true : false;
}
/// <summary>
/// 根据分页获得数据列表
/// </summary>
/// <param name="pageIndex">起始页</param>
/// <param name="pageSize">每页大小</param>
/// <param name="hospitalGuid">所属医院编号(GUID)</param>
/// <param name="state">状态 -1查询所有</param>
/// <param name="keyWord">查询关键词</param>
/// <returns></returns>
public TableModel<T_Base_AmbulanceModel> GetPageList(int pageIndex, int pageSize, string hospitalGuid, int state, string keyWord)
{
int TotalNumber = 0;
TableModel<T_Base_AmbulanceModel> t = new TableModel<T_Base_AmbulanceModel>();
var listMode = db.Queryable<T_Base_Ambulance, T_Base_Hospital, T_Base_VideoEquipment>((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;
}
/// <summary>
/// 获得数据列表
/// </summary>
/// <param name="hospitalGuid">所属医院编号(GUID)</param>
/// <param name="state">状态 -1查询所有</param>
/// <param name="keyWord">查询关键词</param>
/// <returns></returns>
public TableModel<T_Base_AmbulanceModel> GetList(string hospitalGuid, int state, string keyWord)
{
TableModel<T_Base_AmbulanceModel> t = new TableModel<T_Base_AmbulanceModel>();
var listMode = db.Queryable<T_Base_Ambulance, T_Base_Hospital, T_Base_VideoEquipment>((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;
}
/// <summary>
/// 获得前几行数据
/// </summary>
public T_Base_Ambulance Get(string guid)
{
return db.Queryable<T_Base_Ambulance>().First(it => it.GUID == guid);//查询单条
}
/// <summary>
/// 根据车牌号获取车辆
/// </summary>
/// <param name="plateNumber"></param>
/// <returns></returns>
public TableModel<T_Base_Ambulance> GetPlateNumber(string plateNumber)
{
List<T_Base_Ambulance> data = db.Queryable<T_Base_Ambulance>().Where(iterator => iterator.PlateNumber == plateNumber).ToList();
TableModel<T_Base_Ambulance> menu = new TableModel<T_Base_Ambulance>();
menu.Code = 0;
menu.TotalNumber = data.Count;
menu.Data = data;
menu.Msg = "成功";
return menu;
//return db.Queryable<T_Base_Ambulance>().Where(Ambulance => Ambulance.PlateNumber == plateNumber);
}
/// <summary>
/// 根据急救车编号获得视频设备信息
/// 实时视频界面专用
/// </summary>
/// <param name="guid">急救车编号</param>
/// <param name="serverType">服务器类型1注册服务器2流媒体服务器3报警服务器4解码服务器 同时获取多个,分割.如1,2,3,4</param>
/// <returns></returns>
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;
}
/// <summary>
/// 根据状态获取急救车列表
/// </summary>
/// <param name="state">急救车状态1、空闲2、出车中3、维修中4、已报废</param>
/// <param name="hospitalGuid">所属医院编号(GUID)</param>
/// <returns></returns>
public TableModel<T_Base_AmbulanceModel> GetListForState(int state, string hospitalGuid)
{
TableModel<T_Base_AmbulanceModel> t = new TableModel<T_Base_AmbulanceModel>();
var listMode = db.Queryable<T_Base_Ambulance, T_Base_Hospital>((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;
}
/// <summary>
/// 根据急救车编号(GUID)获取GPS信息
/// </summary>
/// <param name="guid">急救车编号(GUID)</param>
/// <returns></returns>
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;
}
/// <summary>
/// 根据心电设备号获取车牌号信息
/// </summary>
/// <param name="ECGCode">心电设备号</param>
/// <returns></returns>
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;
}
/// <summary>
/// 院前急救调度获取医院全部车辆信息
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 获取车辆绑定的值班人员
/// </summary>
/// <param name="hospitalGuid"></param>
/// <param name="plateNumber"></param>
/// <param name="state"></param>
/// <returns></returns>
public TableModel<AmbulanceModel> GetAmbulanceList(string hospitalGuid, string plateNumber, int state)
{
TableModel<AmbulanceModel> t = new TableModel<AmbulanceModel>();
List<AmbulanceModel> list = new List<AmbulanceModel>();
var oneClasee = db.Queryable<T_Base_Ambulance>()
.Where(a => a.HospitalGuid == hospitalGuid)
.WhereIF(!SqlFunc.IsNullOrEmpty(plateNumber), a => a.PlateNumber.Contains(plateNumber))
.WhereIF(state > -1, a => a.State == state).ToList();
List<T_SYS_User> user = new List<T_SYS_User>();
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<T_SYS_User>().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;
}
/// <summary>
/// 主站及分站目前车辆状态信息列表
/// </summary>
/// <param name="hospitalGuid"></param>
/// <returns></returns>
public string GetCurrentAmbulanceInfo(string hospitalGuid)
{
#region
//var oneClass = db.Queryable<T_Base_Hospital, T_Service_FirstAid_AlarmInfo>((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<T_Base_Ambulance> list = new List<T_Base_Ambulance>();
//oneClass.ForEach(i => db.Queryable<T_Base_Ambulance>().Where(j => j.HospitalGuid == i.GUID).ToList().ForEach(k => list.Add(k)));
//List<CurrentAmbulanceModel> MoldeList = new List<CurrentAmbulanceModel>();
//oneClass.ForEach(i =>
//{
// List<T_Base_Ambulance> list = db.Queryable<T_Base_Ambulance>().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;
}
}
}