using HL_FristAidPlatform_Help; using HL_FristAidPlatform_IDataBase; using HL_FristAidPlatform_Models; using SqlSugar; using System; using System.Collections.Generic; namespace HL_FristAidPlatform_DataBase { /// /// 院前急救人员信息表 /// public class T_Service_FirstAid_PersonnelDB : BaseDB, IT_Service_FirstAid_Personnel { public SqlSugarClient db = GetClient(); /// /// 增加一条数据 /// public T_Service_FirstAid_Personnel Add(T_Service_FirstAid_Personnel model) { T_Service_FirstAid_Personnel personnel = db.Insertable(model).IgnoreColumns(it => new { it.ID }).ExecuteReturnEntity(); return model; } /// /// 更新一条数据 /// public int Update(T_Service_FirstAid_Personnel model) { return db.Updateable(model).UpdateColumns(it => new { it.Name, it.CurrentState, it.Role, it.Gender }).Where(it => it.GUID == model.GUID).ExecuteCommand(); } /// /// 删除一条数据 /// public int Delete(string GUID) { return db.Deleteable().Where(it => it.GUID == GUID).ExecuteCommand(); } /// /// 获得数据列表 /// public TableModel GetPageList(string hospitalGuid, string name, int gender, int currentState, int role, int pageIndex, int pageSize) { var expression = PredicateBuilder.True().And(x => x.HospitalGuid == hospitalGuid); ; PageModel p = new PageModel() { PageIndex = pageIndex, PageSize = pageSize }; if (!string.IsNullOrEmpty(name)) { expression = expression.And(x => x.Name.Contains(name)); } if (role != -1) { expression = expression.And(x => x.Role == role); } if (gender != -1) { expression = expression.And(x => x.Gender == gender); } if (currentState != -1) { expression = expression.And(x => x.CurrentState == currentState); } int total = 0; List data = db.Queryable().Where(expression).ToPageList(pageIndex, pageSize, ref total); TableModel t = new TableModel(); t.Code = 0; t.PageCount = data.Count; t.TotalNumber = total; t.Data = data; t.Msg = "成功"; return t; } /// /// 更新状态 /// public int UpdateCurrentState(T_Service_FirstAid_Personnel model) { return db.Updateable(model).UpdateColumns(it => new { it.CurrentState }).Where(it => it.GUID == model.GUID).ExecuteCommand(); } /// /// 获取空闲状态人员 /// /// public TableModel GetPersonnel() { List data = db.Queryable().Where(it => it.CurrentState == 0).ToList(); TableModel t = new TableModel(); t.Code = 0; t.PageCount = data.Count; t.TotalNumber = data.Count; t.Data = data; t.Msg = "成功"; return t; } /// /// 根据主键批量修改数据:人员状态 /// public int UpdateState(List list) { return db.Updateable(list).SetColumns(t => t.CurrentState == 2).ExecuteCommand(); } /// /// 批量分配(车辆绑定人员) /// /// /// /// public int VehiclePersonnelPlan(List list, string guid) { //修改原本已经 var oneClass = db.Queryable().Where(a => a.VehicleGUID == guid).ToList(); if (oneClass.Count > 0) { db.Updateable(oneClass).SetColumns(t => t.VehicleGUID == "").ExecuteCommand(); } return db.Updateable(list).SetColumns(t => t.VehicleGUID == guid).ExecuteCommand(); } /// /// 根据车辆GUID查询绑定人员 /// /// /// public TableModel GetPersonnelOfVehicle(string guid) { List data = db.Queryable().Where(it =>it.VehicleGUID== guid).ToList(); TableModel t = new TableModel(); t.Code = 0; t.PageCount = data.Count; t.TotalNumber = data.Count; t.Data = data; t.Msg = "成功"; return t; } /// /// 保存派车单:多表操作 事务 /// /// 人员表 /// 出车统计 /// 出车记录 public bool SaveDispatchListTran(List perList, T_Service_FirstAid_DrivingCensus dringCensus, List recordList) { bool result = false; try { db.Ado.BeginTran(); //1.批量修改用户状态 db.Updateable(perList).SetColumns(t => t.CurrentState == 2).ExecuteCommand(); //2.查询当天是否存在统计数据,有则更新统计数,无则新增 var data = db.Queryable().First(it => it.DrivingTime == DateTime.Now.ToString("yyyy-MM-dd")); if (SqlFunc.IsNullOrEmpty(data))//当天没有数据 { db.Insertable(dringCensus).IgnoreColumns(it => new { it.ID }).ExecuteCommand(); } else { dringCensus.PatientSum = dringCensus.PatientSum + data.PatientSum; dringCensus.PatientSum = dringCensus.PatientSum + data.PatientSum; dringCensus.DrivingSum = data.DrivingSum + 1; db.Updateable(dringCensus).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); } //3.批量新增人员出车记录 db.Insertable(recordList).IgnoreColumns(it => new { it.ID }).ExecuteCommand(); db.Ado.CommitTran(); return result = true; } catch (Exception ex) { db.Ado.RollbackTran(); return result; throw; } } /// /// 获取空闲且未绑定车辆人员 /// /// public TableModel GetOwnerlessPersonnel(string hospitalGuid) { var oneClass = db.Queryable().Where(it => it.HospitalGuid == hospitalGuid && it.CurrentState == 0 && it.VehicleGUID == null).Select(x => new OwnerlessPersonnelModel() { Name = x.Name /*+ ":" +Convert.ToString(x.Role == 1 ? "医生" : (x.Role == 2 ? "护士" : "司机"))*/, GUID = x.GUID }).ToList(); TableModel t = new TableModel(); t.Code = 0; t.PageCount = oneClass.Count; t.TotalNumber = oneClass.Count; t.Data = oneClass; t.Msg = "成功"; return t; } /// /// 根据车辆GUID查询绑定的人员 /// /// /// public List GetPerofAmbulance(string ambulanceGUID) { var oneClass = db.Queryable().Where(i => i.VehicleGUID == ambulanceGUID).ToList(); return oneClass; } /// /// 根据患者GUID获取患者院前时间信息 /// /// /// public FristAxisModel GetFristAxisByPatientGuid(string patientGuid) { FristAxisModel model = new FristAxisModel(); model = db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID, JoinType.Inner, b.TaskGUID == c.GUID)).Where((a, b, c) => a.GUID == patientGuid).Select((a, b, c) => new FristAxisModel() { CallTime=Convert.ToDateTime(c.CallTime).ToString("yyyy-MM-dd HH:mm:ss"), DrivingTime = Convert.ToDateTime(c.DrivingTime).ToString("yyyy-MM-dd HH:mm:ss"), ArrivalTime = Convert.ToDateTime(c.ArrivalTime).ToString("yyyy-MM-dd HH:mm:ss"), Attack_Time = Convert.ToDateTime(b.Attack_Time).ToString("yyyy-MM-dd HH:mm:ss"), ArriveHospitalTime = Convert.ToDateTime(c.ArriveHospitalTime).ToString("yyyy-MM-dd HH:mm:ss"), }).First(); return model; } } }