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