using DevExpress.Utils;
using DevExpress.Utils.Layout;
using DevExpress.XtraEditors;
using HL_FristAidPlatform_DTO;
using HL_FristAidPlatform_PreHospitalEmergency.Properties;
using HL_FristAidPlatform_Public;
using Microsoft.AspNetCore.SignalR.Client;
using Newtonsoft.Json;
using System;
using System.Configuration;
using System.Data;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HL_FristAidPlatform_PreHospitalEmergency
{
public partial class Form_CurrentTaskInfo : XtraForm
{
///
/// 当前页
///
public int curPage = 1;
///
/// 每页大小
///
public int pageSize = 100;
///
/// 所有记录条数
///
public int totalNumber = 0;
public int cardWidth = 250;
public TablePanel tab;
public DataTable dt;
public int columnCount;
public int rowCount;
public const string guidStr = @"[0-9a-fA-F]";
public const string guid_match = "^(" + guidStr + "{8}(-" + guidStr + "{4}){3}-" + guidStr + "{12})?$";
public int width;
//定义一个连接对象
private HubConnection connection;
public Form_CurrentTaskInfo()
{
InitializeComponent();
SignalRConnection();
width = panel1.Width;
}
private async void Form_CurrentTaskInfo_Load(object sender, EventArgs e)
{
GetTotalDrvingCensus(Information.Hospital.GUID);
QueryTaskInfo(Information.Hospital.GUID);
QueryHosptialAmbulanceInfo(Information.Hospital.GUID);
ReceiveMessage();
}
public async void SignalRConnection()
{
connection = new HubConnectionBuilder()
.WithUrl(ConfigurationManager.AppSettings["WebApiUrl"] + "signalr/chatHub")
.Build();
await connection.StartAsync();
connection.Closed += async (error) =>
{
await Task.Delay(new Random().Next(0, 5) * 1000);
await connection.StartAsync();
};
}
///
/// 今日统计
///
///
public void GetTotalDrvingCensus(string hospitalGuid)
{
var res = DBHelpClass.GetDateOfStr(string.Format("api/service/T_Service_FirstAid_Statistics/GetTodayCensus?hospitalGuid={0}", hospitalGuid));
DrvingCensusDTO dto = JsonConvert.DeserializeObject(res);
if (dto != null)
{
lbl_standByTotal.Text = dto.StandByTotal.ToString();
lbl_sendTotal.Text = dto.SendTotal.ToString();
lbl_todaydrvingTotal.Text = dto.ToDayDrvingTotal.ToString();
lbl_todaycallTotal.Text = dto.ToDayCallTotal.ToString();
lbl_callTotal.Text = dto.CallTotal.ToString();
lbl_drvingTotal.Text = dto.DrvingTotal.ToString();
}
}
public void QueryTaskInfo(string guid)
{
panel1.Controls.Clear();
DataTable dt = DBHelpClass.Get(string.Format("api/service/T_Service_FirstAid_AlarmTaskInfo/GetTaskInfoTop8?guid={0}", Information.Hospital.GUID));
if (dt != null && dt.Rows.Count > 0)
{
CreateTabPanel(width, dt.Rows.Count, dt);
}
else
{
panel1.Visible = true;
}
}
private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
string dateDiff = null;
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
dateDiff = ts.Hours.ToString().Trim() + "小时" + ts.Minutes.ToString().Trim() + "分钟" + ts.Seconds.ToString() + "秒";
return dateDiff;
}
///
/// 当天调度车辆状况
///
///
public void QueryHosptialAmbulanceInfo(string guid)
{
dt = DBHelpClass.GetJsonText(string.Format("api/base/T_Base_Ambulance/GetCurrentAmbulanceInfo?hospitalGuid={0}", Information.Hospital.GUID));
gridControl1.DataSource = dt;//显示分页结果
}
public async void ReceiveMessage()
{
//发送上线信息
await connection.InvokeAsync("OnLine", Information.Hospital.GUID.ToString());
// 从中心调用客户端方法 一种订阅,可以从集线器方法中取消订阅
connection.On