You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
9.7 KiB
210 lines
9.7 KiB
using LiveCharts; |
|
using SchedulingSystemClient.EntityClass; |
|
using System; |
|
using System.Linq; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
|
|
namespace SchedulingSystemClient |
|
{ |
|
/// <summary> |
|
/// TJTBWindow.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class TJTBWindow : UserControl |
|
{ |
|
public TJTBWindow() |
|
{ |
|
InitializeComponent(); |
|
} |
|
SurgerySchedulingEntities myModel = new SurgerySchedulingEntities(); |
|
private void UserControl_Loaded(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
DateTime kssj = DateTime.Now.Date; |
|
DateTime jssj = DateTime.Now.AddDays(7).Date.AddSeconds(-1); |
|
DateTime szkssj = DateTime.Now.AddDays(-7).Date.AddSeconds(-1); |
|
DateTime szjssj = DateTime.Now.Date.AddSeconds(-1); |
|
//var listpbb = (from tbpbb in myModel.Bus_SSPBB |
|
// join tbssscb in myModel.SYS_SSSCB on tbpbb.SSSID equals tbssscb.ID |
|
// join tbqjdb in myModel.SYS_SSQKLXB on tbpbb.qk equals tbqjdb.ID |
|
// join tbsslxb in myModel.SYS_SSQKLXB on tbpbb.SSLX equals tbsslxb.ID |
|
// select new Cus_TJTB |
|
// { |
|
// KSSJ = tbpbb.KSSJ, |
|
// SSSC = tbssscb.SSSC, |
|
// SSQJSC = tbqjdb.QJSJ, |
|
// SSLX = tbsslxb.SSLX, |
|
// }).ToList(); |
|
var listpbb = (from tbpbb in myModel.Bus_SSPBB |
|
join tbssscb in myModel.SYS_SSSCB on tbpbb.SSSID equals tbssscb.ID |
|
join tbssxxb in myModel.SYS_SSXXB on tbpbb.SSID equals tbssxxb.ID |
|
join tbssdj in myModel.SYS_SSDJB on tbssxxb.SSDJID equals tbssdj.ID |
|
join tbqklx in myModel.SYS_SSQKLXB on tbssxxb.SSQKLXID equals tbqklx.ID |
|
join tbqjsc in myModel.SYS_SSSCB on tbqklx.QJSCID equals tbqjsc.ID |
|
select new Cus_TJTB |
|
{ |
|
KSSJ = tbpbb.SSKSSJ, |
|
SSSC = tbssscb.SSSC, |
|
SSQJSC = tbqjsc.SSSC, |
|
SSLX = tbssdj.SSDJ, |
|
}).ToList(); |
|
|
|
string[] str = new string[7]; |
|
ChartValues<int> ssts = new ChartValues<int> { }; |
|
ChartValues<decimal> sssc = new ChartValues<decimal> { }; |
|
ChartValues<decimal> sspjsc = new ChartValues<decimal> { }; |
|
ChartValues<decimal> ssqjsc = new ChartValues<decimal> { }; |
|
for (int i = 0; i < 7; i++) |
|
{ |
|
DateTime ikssk = DateTime.Now.AddDays(i).Date; |
|
DateTime ijssj = DateTime.Now.AddDays(i + 1).Date.AddSeconds(-1); |
|
str[i] = DateTime.Now.AddDays(i).ToString("MM月dd日"); |
|
var list = listpbb.Where(a => a.KSSJ >= ikssk && a.KSSJ <= ijssj).ToList(); |
|
if (list.Count() > 0) |
|
{ |
|
ssts.Add(list.Count()); |
|
sssc.Add(Convert.ToDecimal( list.Sum(a => a.SSSC))); |
|
sspjsc.Add(Convert.ToDecimal(Math.Round((double)list.Sum(a => a.SSSC) / list.Count,2))); |
|
ssqjsc.Add((decimal)list.Sum(a => a.SSQJSC)); |
|
} |
|
else |
|
{ |
|
ssts.Add(0); |
|
sssc.Add(0); |
|
sspjsc.Add(0); |
|
ssqjsc.Add(0); |
|
} |
|
} |
|
var listbz = listpbb.Where(a => a.KSSJ >= kssj && a.KSSJ <= jssj).ToList(); |
|
var listsz = listpbb.Where(a => a.KSSJ >= szkssj && a.KSSJ <= szjssj).ToList(); |
|
var groupby = listbz.GroupBy(a => a.SSLX).ToList(); |
|
PieSeriesA.Values = new ChartValues<decimal> { }; |
|
PieSeriesB.Values = new ChartValues<decimal> { }; |
|
PieSeriesC.Values = new ChartValues<decimal> { }; |
|
PieSeriesD.Values = new ChartValues<decimal> { }; |
|
for (int i = 0; i < groupby.Count; i++) |
|
{ |
|
if (groupby[i].Key == "一级手术") |
|
{ |
|
PieSeriesA.Values = new ChartValues<decimal> { listbz.Where(a => a.SSLX == groupby[i].Key).ToList().Count() }; |
|
PieSeriesA.LabelPoint = chartPoint => string.Format("{0} ({1:P0})", chartPoint.Y, chartPoint.Participation); |
|
} |
|
if (groupby[i].Key == "二级手术") |
|
{ |
|
PieSeriesB.Values = new ChartValues<decimal> { listbz.Where(a => a.SSLX == groupby[i].Key).ToList().Count() }; |
|
PieSeriesB.LabelPoint = chartPoint => string.Format("{0} ({1:P0})", chartPoint.Y, chartPoint.Participation); |
|
} |
|
if (groupby[i].Key == "三级手术") |
|
{ |
|
PieSeriesC.Values = new ChartValues<decimal> { listbz.Where(a => a.SSLX == groupby[i].Key).ToList().Count() }; |
|
PieSeriesC.LabelPoint = chartPoint => string.Format("{0} ({1:P0})", chartPoint.Y, chartPoint.Participation); |
|
} |
|
if (groupby[i].Key == "四级手术") |
|
{ |
|
PieSeriesD.Values = new ChartValues<decimal> { listbz.Where(a => a.SSLX == groupby[i].Key).ToList().Count() }; |
|
PieSeriesD.LabelPoint = chartPoint => string.Format("{0} ({1:P0})", chartPoint.Y, chartPoint.Participation); |
|
} |
|
} |
|
sstsX.Labels = str; |
|
sstsY.LabelFormatter = value => value.ToString("N0"); //P0表示只保留整数,P表示保留小数点后两位; |
|
sstsLineSeries.Values = ssts; |
|
ssscX.Labels = str; |
|
ssscY.LabelFormatter = value => value.ToString("N"); //P0表示只保留整数,P表示保留小数点后两位; |
|
ssscLineSeries.Values = sssc; |
|
ssqjscX.Labels = str; |
|
ssqjscY.LabelFormatter = value => value.ToString("N"); //P0表示只保留整数,P表示保留小数点后两位; |
|
ssqjscLineSeries.Values = ssqjsc; |
|
int bzssts = listbz.Count; |
|
int szssts = listsz.Count; |
|
decimal bzsssc = Convert.ToDecimal(listbz.Sum(a => a.SSSC)); |
|
decimal szsssc = Convert.ToDecimal(listsz.Sum(a => a.SSSC)); |
|
decimal bzsspjsc = 0; |
|
decimal szsspjsc = 0; |
|
decimal bzsssqjsc = 0; |
|
decimal szsssqjsc = 0; |
|
decimal sstszzb = 0; |
|
decimal sssczzb = 0; |
|
decimal sspjsczz = 0; |
|
decimal sspjsczzb = 0; |
|
decimal ssqjsczzb = 0; |
|
if (bzssts != 0) |
|
{ |
|
bzsspjsc = Math.Round(bzsssc / bzssts, 2); |
|
} |
|
if (szssts != 0) |
|
{ |
|
szsspjsc = Math.Round(szsssc / szssts, 2); |
|
} |
|
bzsssqjsc = (decimal)listbz.Sum(a => a.SSQJSC); |
|
szsssqjsc = (decimal)listsz.Sum(a => a.SSQJSC); |
|
if (szssts != 0) |
|
{ |
|
sstszzb = Math.Round((decimal)(bzssts - szssts) / szssts * 100, 2); |
|
} |
|
else |
|
{ |
|
sstszzb = 100; |
|
} |
|
if (szsssc != 0) |
|
{ |
|
sssczzb = Math.Round((decimal)(bzsssc - szsssc) / szsssc * 100, 2); |
|
} |
|
else |
|
{ |
|
sssczzb = 100; |
|
} |
|
if (szsssqjsc != 0) |
|
{ |
|
ssqjsczzb = Math.Round((decimal)(bzsssqjsc - szsssqjsc) / szsssqjsc * 100, 2); |
|
} |
|
else |
|
{ |
|
ssqjsczzb = 100; |
|
} |
|
if (szsspjsc != 0) |
|
{ |
|
sspjsczzb = Math.Round((decimal)(bzsspjsc - szsspjsc) / szsspjsc * 100, 2); |
|
} |
|
else |
|
{ |
|
sspjsczzb = 100; |
|
} |
|
sstslabela.Content = bzssts + " 台"; |
|
sstslabelb.Content = "上周手术台数为" + szssts + "台,同比增长" + sstszzb + "%"; |
|
sssclabela.Content = bzsssc + " 小时"; |
|
sssclabelb.Content = "上周手术时长为" + szsssc + "小时,同比增长" + sssczzb + "%"; |
|
sspjsclabela.Content = bzsspjsc + " 小时"; |
|
sspjsclabelb.Content = "上周手术平均时长为" + szsspjsc + "小时,同比增长" + sspjsczzb + "%"; |
|
sssqjscLabela.Content = bzsssqjsc + "小时"; |
|
sssqjscLabelb.Content = "上周手术清洁时长为" + szsssqjsc + "小时,同比增长" + ssqjsczzb + " % "; |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageBox.Show(ex.ToString()); |
|
} |
|
|
|
} |
|
private void btn_xz_Click(object sender, RoutedEventArgs e) |
|
{ |
|
|
|
} |
|
|
|
private void btn_sx_Click(object sender, RoutedEventArgs e) |
|
{ |
|
|
|
} |
|
|
|
private void btn_gb_Click(object sender, RoutedEventArgs e) |
|
{ |
|
|
|
} |
|
|
|
//private string[] _xTimeLabels; |
|
//public string[] XTimeLabels |
|
//{ |
|
// get { return _xTimeLabels; } |
|
// set { this.SetProperty(ref _xTimeLabels, value); } |
|
//} |
|
} |
|
}
|
|
|