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

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); }
//}
}
}