StableVersion4.3/HL_FristAidPlatform_PreHosp.../Form_CurrentAllTaskInfo.cs

438 lines
18 KiB
C#
Raw Permalink Normal View History

2024-03-11 09:47:34 +08:00
using DevExpress.Utils;
using DevExpress.Utils.Layout;
using DevExpress.XtraEditors;
using HL_FristAidPlatform_PreHospitalEmergency.Properties;
using HL_FristAidPlatform_Public;
using Microsoft.AspNetCore.SignalR.Client;
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_CurrentAllTaskInfo : XtraForm
{
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_CurrentAllTaskInfo()
{
InitializeComponent();
SignalRConnection();
width = panel1.Width;
}
private void Form_CurrentAllTaskInfo_Load(object sender, EventArgs e)
{
tab = new TablePanel();
QueryDate();
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 QueryDate()
{
panel1.Controls.Clear();
dt = DBHelpClass.Get(string.Format("api/service/T_Service_FirstAid_AlarmTaskInfo/GetTaskInfoList?guid={0}&hospitalGuid={1}&plateNumber={2}&taskState={3}&transport={4}", Information.Hospital.GUID, "", "", -1, -1));
string url = string.Format("/api/service/T_Service_FirstAid_AlarmTaskInfo/GetTaskStatistics?guid={0}", Information.Hospital.GUID);
DataTable dt1 = DBHelpClass.Get(url);
if (dt1 != null)
{
if (dt1.Rows.Count > 0)
{
for (int i = 0; i < dt1.Rows.Count; i++)
{
lbl_AllCount.Text = dt1.Rows[0]["AllCount"].ToString();
}
}
}
TaskAllData(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("AllTaskList"))
{
QueryDate();
}
}));
});
}
public void TaskAllData(DataTable dt)
{
if (dt != null && dt.Rows.Count > 0)
{
CreateTabPanel(width, dt.Rows.Count, dt);
}
}
/// <summary>
///
/// </summary>
/// <param name="width">容器宽度</param>
/// <param name="total">数据条数</param>
/// <param name="dt">数据</param>
public void CreateTabPanel(int width, int total, DataTable dt)
{
//panel1.Controls.Clear();
columnCount = width / cardWidth; //列数
rowCount = total / columnCount;//行数
if ((total % columnCount) > 0) rowCount++;
tab.Columns.Clear();
for (int i = 0; i < columnCount; i++)
{
tab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 50));
}
tab.Rows.Clear();
for (int i = 0; i < rowCount; i++)
{
tab.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Relative, 20));
}
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();
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, 1, 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, 2);
from.Owner = this;
from.Show();
}
else
{
XtraMessageBox.Show("不是正确的Guid格式");
}
}
private void Form_CurrentAllTaskInfo_FormClosed(object sender, FormClosedEventArgs e)
{
//Form_CurrentTaskInfo info;
//info = (Form_CurrentTaskInfo)this.Owner;
//info.QueryTaskInfo(Information.Hospital.GUID);
//info.GetTotalDrvingCensus(Information.Hospital.GUID);
//info.QueryHosptialAmbulanceInfo(Information.Hospital.GUID);
}
}
}