using LiveCharts; using SchedulingSystemClient.EntityClass; using System; using System.Linq; using System.Windows; using System.Windows.Controls; namespace SchedulingSystemClient { /// /// TJTBWindow.xaml 的交互逻辑 /// 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 ssts = new ChartValues { }; ChartValues sssc = new ChartValues { }; ChartValues sspjsc = new ChartValues { }; ChartValues ssqjsc = new ChartValues { }; 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 { }; PieSeriesB.Values = new ChartValues { }; PieSeriesC.Values = new ChartValues { }; PieSeriesD.Values = new ChartValues { }; for (int i = 0; i < groupby.Count; i++) { if (groupby[i].Key == "一级手术") { PieSeriesA.Values = new ChartValues { 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 { 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 { 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 { 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); } //} } }