StableVersion4.3/HL_FristAidPlatform_DataBase/TranService/CallAndDispatchTranService.cs

116 lines
5.5 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 CallAndDispatchTranService : BaseDB, ICallAndDispatchTranService
{
public SqlSugarClient db = GetClient();
/// <summary>
/// 保存并打印派车单
/// </summary>
/// <param name="patient"></param>
/// <param name="call"></param>
/// <param name="perList"></param>
/// <param name="recordList"></param>
/// <param name="dringCensus"></param>
/// <param name="accidentCensus"></param>
/// <param name="wristStrap"></param>
/// <param name="ambulance"></param>
/// <returns></returns>
public bool SaveDispatchListTran(T_Service_FirstAid_Call call, List<T_Service_FirstAid_Personnel> perList,
T_Service_FirstAid_DrivingCensus dringCensus, List<T_Service_FirstAid_DrivingRecord> recordList, T_Base_WristStrap wristStrap, List<T_Base_Ambulance> ambulance)
{
try
{
db.Ado.BeginTran();
//院前表新增
call.TaskState = -1;
db.Insertable(call).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
//人员状态修改
db.Updateable(perList).SetColumns(t => t.CurrentState == 2).ExecuteCommand();
//查询当天是否存在统计数据,有则更新统计数,无则新增 dbo.T_Service_FirstAid_DrivingCensus
var data = db.Queryable<T_Service_FirstAid_DrivingCensus>()
.Where(t => t.HospitalGuid == call.CallHospitalGuid && t.DrivingTime == DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00.000").First();
if (SqlFunc.IsNullOrEmpty(data))//当天没有数据
{
//出车统计新增
db.Insertable(dringCensus).IgnoreColumns(it => new { it.ID }).ExecuteCommand();
}
else
{
//出车统计修改
data.PatientSum = dringCensus.PatientSum + data.PatientSum;
data.PersonnelSum = dringCensus.PersonnelSum + data.PatientSum;
data.DrivingSum = data.DrivingSum + 1;
db.Updateable(data).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
}
//出车记录新增
db.Insertable(recordList).IgnoreColumns(it => new { it.ID }).ExecuteCommand();
//标签卡修改
if (wristStrap.ID > 0)
{
db.Updateable(wristStrap).SetColumns(t => t.Status == 1).Where(t => t.ID == wristStrap.ID).ExecuteCommand();
}
//车辆修改
db.Updateable(ambulance).SetColumns(t => t.State == 2).ExecuteCommand();
if (!string.IsNullOrEmpty(call.AccidentGUID))
{
string d = DateTime.Now.ToString("yyyy-MM-dd");
// 重大事故统计
var accident = db.Queryable<T_Service_FirstAid_AccidentCensus>().Where(it => it.AccidentTime == d && it.AccidentGUID == call.AccidentGUID && it.HospitalGuid == call.CallHospitalGuid).First();
T_Service_FirstAid_AccidentCensus accidentCensus = new T_Service_FirstAid_AccidentCensus();
if (SqlFunc.IsNullOrEmpty(accident))//当天没有数据
{
accidentCensus.GUID = Guid.NewGuid().ToString();
accidentCensus.AccidentGUID = call.AccidentGUID;
accidentCensus.AccidentCensus = 1;
accidentCensus.CreateUser = call.CreateUser;
accidentCensus.DeleteFlag = 0;
accidentCensus.PatientNumber = call.PatientNumber;
accidentCensus.AccidentTime = DateTime.Now.ToString("yyy-MM-dd");
accidentCensus.CreateTime = DateTime.Now;
accidentCensus.HospitalGuid = call.HospitalGuid;
//新增
db.Insertable(accidentCensus).IgnoreColumns(it => new { it.ID }).ExecuteCommand();
}
else
{
//修改
accident.AccidentCensus = accident.AccidentCensus + 1;
accident.PatientNumber = accident.PatientNumber + call.PatientNumber;
db.Updateable(accident).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
}
}
//T_Service_FirstAid_WorkLoadCensus work = new T_Service_FirstAid_WorkLoadCensus();
// work.GUID = Guid.NewGuid().ToString();
// work.CalllGUID = call.GUID;
// //work.FrequencyMark = 0.5m;
// //work.CensusMark = work.CensusMark + work.FrequencyMark;
// db.Insertable(work).IgnoreColumns(it => new { it.ID }).ExecuteCommand();
db.Ado.CommitTran();
return true;
}
catch (Exception ex)
{
db.Ado.RollbackTran();
Help.WriteErrorLog("院前:接警(SaveDispatchListTran)", ex.ToString());
return false;
}
}
}
}