485 lines
19 KiB
C#
485 lines
19 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 当前页
|
|
/// </summary>
|
|
public int curPage = 1;
|
|
/// <summary>
|
|
/// 每页大小
|
|
/// </summary>
|
|
public int pageSize = 100;
|
|
|
|
/// <summary>
|
|
/// 所有记录条数
|
|
/// </summary>
|
|
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();
|
|
};
|
|
}
|
|
/// <summary>
|
|
/// 今日统计
|
|
/// </summary>
|
|
/// <param name="hospitalGuid"></param>
|
|
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<DrvingCensusDTO>(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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 当天调度车辆状况
|
|
/// </summary>
|
|
/// <param name="guid"></param>
|
|
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<object>("ReceiveUpdate", (message) =>
|
|
{
|
|
Invoke(new Action(() =>
|
|
{
|
|
string Content = "";
|
|
Content = message.ToString();
|
|
if (Content.Contains("TaskList"))
|
|
{
|
|
GetTotalDrvingCensus(Information.Hospital.GUID);
|
|
QueryTaskInfo(Information.Hospital.GUID);
|
|
QueryHosptialAmbulanceInfo(Information.Hospital.GUID);
|
|
}
|
|
}));
|
|
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="width">容器宽度</param>
|
|
/// <param name="total">数据条数</param>
|
|
/// <param name="dt">数据</param>
|
|
public void CreateTabPanel(int width, int total, DataTable dt)
|
|
{
|
|
columnCount = width / cardWidth; //列数
|
|
rowCount = total / columnCount;//行数
|
|
if ((total % columnCount) > 0) rowCount++;
|
|
|
|
tab = new TablePanel();
|
|
tab.Columns.Clear();
|
|
for (int i = 0; i < columnCount; i++)
|
|
{
|
|
tab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 410));
|
|
}
|
|
tab.Rows.Clear();
|
|
for (int i = 0; i < rowCount; i++)
|
|
{
|
|
tab.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 222));
|
|
}
|
|
tab.AutoScroll = true;
|
|
tab.Dock = DockStyle.Top;
|
|
tab.AutoSize = true;
|
|
tab.BackColor = System.Drawing.Color.White;
|
|
tab.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
|
|
for (int i = 0; i < rowCount; i++)
|
|
{
|
|
for (int j = 0; j < columnCount; j++)
|
|
{
|
|
if ((i * columnCount + j) < dt.Rows.Count)
|
|
{
|
|
PanelControl panel = new PanelControl();
|
|
panel.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
panel.Dock = DockStyle.Fill;
|
|
panel.Height = 230;
|
|
panel.Padding = new Padding(10, 5, 10, 5);
|
|
CreateCardDate(panel, dt.Rows[i * columnCount + j]["HospitalName"].ToString(), dt.Rows[i * columnCount + j]["WaitingAddress"].ToString(), dt.Rows[i * columnCount + j]["PlateNumber"].ToString(), dt.Rows[i * columnCount + j]["TaskState"].ToString(), dt.Rows[i * columnCount + j]["TaskProgress"].ToString(), dt.Rows[i * columnCount + j]["Abnormal"].ToString(), dt.Rows[i * columnCount + j]["GUID"].ToString());
|
|
tab.Controls.AddRange(new Control[] { panel });
|
|
tab.SetCell(panel, i, j);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
panel1.Controls.Add(tab);
|
|
}
|
|
|
|
|
|
public void CreateCardDate(PanelControl panel, string hosptialname, string address, string platnumber, string statu, string jindu, string yichagn, string guid)
|
|
{
|
|
|
|
#region 卡片顶部
|
|
PanelControl top = new PanelControl();
|
|
top.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
top.Dock = DockStyle.Top;
|
|
top.Height = 40;
|
|
top.Appearance.BackColor = System.Drawing.Color.FromArgb(0, 96, 250);
|
|
top.Appearance.BackColor2 = System.Drawing.Color.FromArgb(0, 143, 255);
|
|
panel.Controls.Add(top);
|
|
#endregion
|
|
|
|
#region 顶部内容
|
|
TablePanel t1 = new TablePanel();
|
|
t1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
t1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
t1.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 50));
|
|
t1.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 20));
|
|
t1.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 50));
|
|
t1.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 15));
|
|
|
|
LabelControl lab1 = new LabelControl();
|
|
//if (hosptialname.Length > 10)
|
|
// hosptialname = hosptialname.Substring(0,9);
|
|
//hosptialname = hosptialname + "...";
|
|
lab1.Text = hosptialname;
|
|
lab1.Dock = DockStyle.Fill;
|
|
lab1.ForeColor = System.Drawing.Color.White;
|
|
lab1.Appearance.Font = new System.Drawing.Font("Tahoma", 11);
|
|
lab1.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab1.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab1.Name = guid;
|
|
lab1.Click += PanelClick;
|
|
|
|
PictureBox picture = new PictureBox();
|
|
picture.BackColor = System.Drawing.Color.Transparent;
|
|
picture.Image = Resources.arrow2;
|
|
picture.SizeMode = PictureBoxSizeMode.Zoom;
|
|
picture.Dock = DockStyle.Fill;
|
|
picture.Name = guid;
|
|
picture.Click += PanelClick;
|
|
|
|
LabelControl lab2 = new LabelControl();
|
|
lab2.Text = address;
|
|
lab2.Dock = DockStyle.Fill;
|
|
lab2.ForeColor = System.Drawing.Color.White;
|
|
lab2.Appearance.Font = new System.Drawing.Font("Tahoma", 11);
|
|
lab2.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab2.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab2.Name = guid;
|
|
lab2.Click += PanelClick;
|
|
t1.Controls.AddRange(new Control[] { lab1, picture, lab2 });
|
|
t1.SetCell(lab1, 0, 0);
|
|
t1.SetCell(picture, 0, 1);
|
|
t1.SetCell(lab2, 0, 2);
|
|
top.Controls.Add(t1);
|
|
#endregion
|
|
|
|
#region 卡片整体内容背景
|
|
PanelControl background = new PanelControl();
|
|
background.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
background.Appearance.BackColor = System.Drawing.Color.FromArgb(114, 188, 255);
|
|
background.Appearance.BackColor2 = System.Drawing.Color.FromArgb(114, 165, 231);
|
|
background.Width = 410;
|
|
background.Height = 222;
|
|
background.Padding = new Padding(20, 61, 20, 20);
|
|
background.Dock = DockStyle.Fill;
|
|
background.Click += PanelClick;
|
|
panel.Controls.Add(background);
|
|
#endregion
|
|
|
|
#region 卡片内容容器
|
|
PanelControl conten = new PanelControl();
|
|
conten.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
conten.Appearance.BackColor = System.Drawing.Color.FromArgb(196, 237, 255);
|
|
conten.Appearance.BackColor2 = System.Drawing.Color.White;
|
|
conten.Name = guid;
|
|
conten.Click += PanelClick;
|
|
conten.Dock = DockStyle.Fill;
|
|
background.Controls.Add(conten);
|
|
#endregion
|
|
|
|
#region 卡片内容数据
|
|
|
|
TablePanel t2 = new TablePanel();
|
|
t2.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
t2.BackColor = System.Drawing.Color.Transparent;
|
|
t2.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|
t2.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 50));
|
|
t2.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 50));
|
|
t2.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 10));
|
|
t2.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 10));
|
|
t2.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 10));
|
|
t2.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 10));
|
|
t2.Name = guid;
|
|
t2.Click += PanelClick;
|
|
|
|
|
|
LabelControl lab3 = new LabelControl();
|
|
lab3.Text = "车辆编号";
|
|
lab3.Dock = DockStyle.Fill;
|
|
lab3.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab3.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab3.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab3.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab3.Name = guid;
|
|
lab3.Click += PanelClick;
|
|
|
|
LabelControl lab4 = new LabelControl();
|
|
lab4.Text = platnumber;
|
|
lab4.Dock = DockStyle.Fill;
|
|
lab4.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab4.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab4.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab4.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab4.Name = guid;
|
|
lab4.Click += PanelClick;
|
|
|
|
LabelControl lab5 = new LabelControl();
|
|
lab5.Text = "急救地址";
|
|
lab5.Dock = DockStyle.Fill;
|
|
lab5.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab5.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab5.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab5.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab5.Name = guid;
|
|
lab5.Click += PanelClick;
|
|
|
|
LabelControl lab6 = new LabelControl();
|
|
lab6.Text = address;
|
|
lab6.Dock = DockStyle.Fill;
|
|
lab6.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab6.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab6.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab6.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab6.Name = guid;
|
|
lab6.Click += PanelClick;
|
|
|
|
LabelControl lab7 = new LabelControl();
|
|
lab7.Text = "任务状态";
|
|
lab7.Dock = DockStyle.Fill;
|
|
lab7.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab7.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab7.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab7.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab7.Name = guid;
|
|
lab7.Click += PanelClick;
|
|
|
|
LabelControl lab8 = new LabelControl();
|
|
//任务状态 0等待任务开始 1 任务开始 2 途中待命 3 站内待命 4 中止任务 5 暂停调用 6 恢复调用 7 任务完成 8 交接完成
|
|
switch (statu)
|
|
{
|
|
case "0":
|
|
lab8.Text = "等待任务开始";
|
|
break;
|
|
case "1":
|
|
lab8.Text = "任务开始";
|
|
break;
|
|
case "2":
|
|
lab8.Text = "途中待命";
|
|
break;
|
|
case "3":
|
|
lab8.Text = "站内待命";
|
|
break;
|
|
case "4":
|
|
lab8.Text = "中止任务";
|
|
break;
|
|
case "5":
|
|
lab8.Text = "暂停调用";
|
|
break;
|
|
case "6":
|
|
lab8.Text = "恢复调用";
|
|
break;
|
|
case "7":
|
|
lab8.Text = "任务完成";
|
|
break;
|
|
}
|
|
|
|
lab8.Dock = DockStyle.Fill;
|
|
lab8.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab8.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab8.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab8.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab8.Name = guid;
|
|
lab8.Click += PanelClick;
|
|
|
|
|
|
LabelControl lab10 = new LabelControl();
|
|
lab10.Text = "任务进度";
|
|
lab10.Dock = DockStyle.Fill;
|
|
lab10.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab10.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab10.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab10.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab10.Name = guid;
|
|
lab10.Click += PanelClick;
|
|
|
|
LabelControl lab11 = new LabelControl();
|
|
// 任务进度 -1 等待接受指令 0确认接收指令 1 出车 2到达现场 3病人上车 4 开始转送 5 转送完成 6 返回医院 7 到达医院
|
|
switch (jindu)
|
|
{
|
|
case "-1":
|
|
lab11.Text = "等待接受指令";
|
|
break;
|
|
case "0":
|
|
lab11.Text = "确认接收指令";
|
|
break;
|
|
case "1":
|
|
lab11.Text = "出车";
|
|
break;
|
|
case "2":
|
|
lab11.Text = "到达现场";
|
|
break;
|
|
case "3":
|
|
lab11.Text = "病人上车";
|
|
break;
|
|
case "4":
|
|
lab11.Text = "开始转送";
|
|
break;
|
|
case "5":
|
|
lab11.Text = "转送完成";
|
|
break;
|
|
case "6":
|
|
lab11.Text = "返回医院";
|
|
break;
|
|
case "7":
|
|
lab11.Text = "到达医院";
|
|
break;
|
|
}
|
|
lab11.Dock = DockStyle.Fill;
|
|
lab11.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);
|
|
lab11.Appearance.Font = new System.Drawing.Font("Tahoma", 9);
|
|
lab11.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
lab11.AutoSizeMode = LabelAutoSizeMode.None;
|
|
lab11.Name = guid;
|
|
lab11.Click += PanelClick;
|
|
|
|
t2.Controls.AddRange(new Control[] { lab3, lab4, lab5, lab6, lab7, lab8, lab10, lab11 });
|
|
t2.SetCell(lab3, 0, 0);
|
|
t2.SetCell(lab4, 0, 1);
|
|
t2.SetCell(lab5, 1, 0);
|
|
t2.SetCell(lab6, 1, 1);
|
|
t2.SetCell(lab7, 2, 0);
|
|
t2.SetCell(lab8, 2, 1);
|
|
t2.SetCell(lab10, 3, 0);
|
|
t2.SetCell(lab11, 3, 1);
|
|
conten.Controls.Add(t2);
|
|
|
|
#endregion
|
|
}
|
|
|
|
|
|
private void PanelClick(object sender, EventArgs e)
|
|
{
|
|
string guid = ((System.Windows.Forms.Control)sender).Name;
|
|
var isMath = Regex.IsMatch(guid, guid_match);
|
|
if (Regex.IsMatch(guid, guid_match))
|
|
{
|
|
Form_TaskDetailInfo from = new Form_TaskDetailInfo(guid, 1);
|
|
from.Owner = this;
|
|
from.Show();
|
|
}
|
|
else
|
|
{
|
|
|
|
XtraMessageBox.Show("不是正确的Guid格式");
|
|
}
|
|
}
|
|
|
|
private void labelControl2_Click(object sender, EventArgs e)
|
|
{
|
|
Form_CurrentAllTaskInfo form = new Form_CurrentAllTaskInfo();
|
|
form.WindowState = FormWindowState.Maximized;
|
|
form.Show();
|
|
}
|
|
}
|
|
}
|