StableVersion4.3/HL_FristAidPlatform_DataBase/Service/T_Service_FirstAid_Personne...

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