240 lines
9.8 KiB
C#
240 lines
9.8 KiB
C#
using HL_FristAidPlatform_Help;
|
|
using HL_FristAidPlatform_IDataBase;
|
|
using HL_FristAidPlatform_Models;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace HL_FristAidPlatform_DataBase
|
|
{
|
|
/// <summary>
|
|
/// 院前急救人员信息表
|
|
/// </summary>
|
|
public class T_Service_FirstAid_PersonnelDB : BaseDB, IT_Service_FirstAid_Personnel
|
|
{
|
|
public SqlSugarClient db = GetClient();
|
|
|
|
/// <summary>
|
|
/// 增加一条数据
|
|
/// </summary>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新一条数据
|
|
/// </summary>
|
|
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();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除一条数据
|
|
/// </summary>
|
|
public int Delete(string GUID)
|
|
{
|
|
return db.Deleteable<T_Service_FirstAid_Personnel>().Where(it => it.GUID == GUID).ExecuteCommand();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获得数据列表
|
|
/// </summary>
|
|
public TableModel<T_Service_FirstAid_Personnel> GetPageList(string hospitalGuid, string name, int gender, int currentState, int role, int pageIndex, int pageSize)
|
|
{
|
|
var expression = PredicateBuilder.True<T_Service_FirstAid_Personnel>().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<T_Service_FirstAid_Personnel> data = db.Queryable<T_Service_FirstAid_Personnel>().Where(expression).ToPageList(pageIndex, pageSize, ref total);
|
|
TableModel<T_Service_FirstAid_Personnel> t = new TableModel<T_Service_FirstAid_Personnel>();
|
|
t.Code = 0;
|
|
t.PageCount = data.Count;
|
|
t.TotalNumber = total;
|
|
t.Data = data;
|
|
t.Msg = "成功";
|
|
return t;
|
|
}
|
|
/// <summary>
|
|
/// 更新状态
|
|
/// </summary>
|
|
public int UpdateCurrentState(T_Service_FirstAid_Personnel model)
|
|
{
|
|
return db.Updateable(model).UpdateColumns(it => new { it.CurrentState }).Where(it => it.GUID == model.GUID).ExecuteCommand();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取空闲状态人员
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public TableModel<T_Service_FirstAid_Personnel> GetPersonnel()
|
|
{
|
|
List<T_Service_FirstAid_Personnel> data = db.Queryable<T_Service_FirstAid_Personnel>().Where(it => it.CurrentState == 0).ToList();
|
|
TableModel<T_Service_FirstAid_Personnel> t = new TableModel<T_Service_FirstAid_Personnel>();
|
|
t.Code = 0;
|
|
t.PageCount = data.Count;
|
|
t.TotalNumber = data.Count;
|
|
t.Data = data;
|
|
t.Msg = "成功";
|
|
return t;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据主键批量修改数据:人员状态
|
|
/// </summary>
|
|
public int UpdateState(List<T_Service_FirstAid_Personnel> list)
|
|
{
|
|
return db.Updateable(list).SetColumns(t => t.CurrentState == 2).ExecuteCommand();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量分配(车辆绑定人员)
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
/// <param name="guid"></param>
|
|
/// <returns></returns>
|
|
public int VehiclePersonnelPlan(List<T_Service_FirstAid_Personnel> list, string guid)
|
|
{
|
|
//修改原本已经
|
|
var oneClass = db.Queryable<T_Service_FirstAid_Personnel>().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();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据车辆GUID查询绑定人员
|
|
/// </summary>
|
|
/// <param name="guid"></param>
|
|
/// <returns></returns>
|
|
public TableModel<T_Service_FirstAid_Personnel> GetPersonnelOfVehicle(string guid)
|
|
{
|
|
List<T_Service_FirstAid_Personnel> data = db.Queryable<T_Service_FirstAid_Personnel>().Where(it =>it.VehicleGUID== guid).ToList();
|
|
TableModel<T_Service_FirstAid_Personnel> t = new TableModel<T_Service_FirstAid_Personnel>();
|
|
t.Code = 0;
|
|
t.PageCount = data.Count;
|
|
t.TotalNumber = data.Count;
|
|
t.Data = data;
|
|
t.Msg = "成功";
|
|
return t;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 保存派车单:多表操作 事务
|
|
/// </summary>
|
|
/// <param name="perList">人员表</param>
|
|
/// <param name="dringCensus">出车统计</param>
|
|
/// <param name="recordList">出车记录</param>
|
|
public bool SaveDispatchListTran(List<T_Service_FirstAid_Personnel> perList, T_Service_FirstAid_DrivingCensus dringCensus, List<T_Service_FirstAid_DrivingRecord> recordList)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
db.Ado.BeginTran();
|
|
//1.批量修改用户状态
|
|
db.Updateable(perList).SetColumns(t => t.CurrentState == 2).ExecuteCommand();
|
|
//2.查询当天是否存在统计数据,有则更新统计数,无则新增
|
|
var data = db.Queryable<T_Service_FirstAid_DrivingCensus>().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;
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取空闲且未绑定车辆人员
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public TableModel<OwnerlessPersonnelModel> GetOwnerlessPersonnel(string hospitalGuid)
|
|
{
|
|
var oneClass = db.Queryable<T_Service_FirstAid_Personnel>().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<OwnerlessPersonnelModel> t = new TableModel<OwnerlessPersonnelModel>();
|
|
t.Code = 0;
|
|
t.PageCount = oneClass.Count;
|
|
t.TotalNumber = oneClass.Count;
|
|
t.Data = oneClass;
|
|
t.Msg = "成功";
|
|
return t;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据车辆GUID查询绑定的人员
|
|
/// </summary>
|
|
/// <param name="ambulanceGUID"></param>
|
|
/// <returns></returns>
|
|
public List<T_Service_FirstAid_Personnel> GetPerofAmbulance(string ambulanceGUID)
|
|
{
|
|
var oneClass = db.Queryable<T_Service_FirstAid_Personnel>().Where(i => i.VehicleGUID == ambulanceGUID).ToList();
|
|
return oneClass;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据患者GUID获取患者院前时间信息
|
|
/// </summary>
|
|
/// <param name="patientGuid"></param>
|
|
/// <returns></returns>
|
|
public FristAxisModel GetFristAxisByPatientGuid(string patientGuid)
|
|
{
|
|
|
|
FristAxisModel model = new FristAxisModel();
|
|
model = db.Queryable<T_Service_Patient, T_Service_FirstAid_PatientInfo, T_Service_FirstAid_AlarmTaskInfo>((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;
|
|
}
|
|
}
|
|
}
|