using SchedulingSystem.EntityClass; using SchedulingSystemClient.EntityClass; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace SchedulingSystemClient.InsertWindow { /// /// XZRJSSWindow.xaml 的交互逻辑 /// public partial class XZRJSSWindow : Window { SurgerySchedulingEntities myModel = new SurgerySchedulingEntities(); public XZRJSSWindow(SYS_YHB yh) { InitializeComponent(); user = yh; } SYS_YHB user = new SYS_YHB(); private void Window_Loaded(object sender, RoutedEventArgs e) { List listks = new List(); List listys = new List(); List listssmc = new List(); listks = (from tbsss in myModel.SYS_KSB select new ComboBoxBinding { ID = tbsss.ID, Name = tbsss.KSMC, }).ToList(); listys = (from tbsss in myModel.SYS_SSYSB select new ComboBoxBinding { ID = tbsss.ID, Name = tbsss.YSXM, }).ToList(); listssmc = (from tbsss in myModel.SYS_SSXXB where tbsss.CJSS == true select new ComboBoxBinding { ID = tbsss.ID, Name = tbsss.SSMC, }).ToList(); List shi = new List(); for (int i = 0; i < 24; i++) { if (i < 10) { shi.Add("0" + i); } else { shi.Add(i.ToString()); } } List fen = new List(); for (int i = 0; i < 60; i++) { if (i < 10) { fen.Add("0" + i); } else { fen.Add(i.ToString()); } } List miao = new List(); for (int i = 0; i < 60; i++) { if (i < 10) { miao.Add("0" + i); } else { miao.Add(i.ToString()); } } KS.ItemsSource = listks; KS.SelectedValuePath = "ID"; KS.DisplayMemberPath = "Name"; YS.ItemsSource = listys; YS.SelectedValuePath = "ID"; YS.DisplayMemberPath = "Name"; SSMC.ItemsSource = listssmc; SSMC.SelectedValuePath = "ID"; SSMC.DisplayMemberPath = "Name"; } private void btn_bc_Click(object sender, RoutedEventArgs e) { try { DateTime kssj = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date; // DateTime jssj = DateTime.Now.Date.AddSeconds(-1); if (KS.SelectedIndex < 0) { MessageBox.Show("请选择科室"); return; } int ksid = Convert.ToInt32(KS.SelectedValue); var listsss = (from tbsssb in myModel.SYS_SSSBDB join tbsss in myModel.SYS_SSSB on tbsssb.SSSID equals tbsss.ID where tbsssb.KSID == ksid && tbsssb.SFKY == true && tbsss.SFRJ == true select new { tbsssb }).ToList(); if (listsss.Count <= 0) { MessageBox.Show("该科室没有可用的手术室!"); return; } if (YS.SelectedIndex < 0) { MessageBox.Show("请选择医生"); return; } if (SSMC.SelectedIndex < 0) { MessageBox.Show("请选择手术"); return; } if (HZXM.Text == null || HZXM.Text == string.Empty) { MessageBox.Show("请填写患者姓名"); return; } if (ZYH.Text == null || ZYH.Text == string.Empty) { MessageBox.Show("请填写住院号"); return; } if (ZLKH.Text == null || ZLKH.Text == string.Empty) { MessageBox.Show("请填写诊疗卡号"); return; } DateTime sj = DateTime.Now; string yue = sj.Month > 10 ? sj.Month.ToString() : "0" + sj.Month; string day = sj.Day > 10 ? sj.Day.ToString() : "0" + sj.Day; string shi = sj.Hour > 10 ? sj.Hour.ToString() : "0" + sj.Hour; string fen = sj.Minute > 10 ? sj.Minute.ToString() : "0" + sj.Minute; string miao = sj.Second > 10 ? sj.Second.ToString() : "0" + sj.Second; Bus_RJSSB rjss = new Bus_RJSSB(); rjss.SQDH = "SQD" + sj.Year + yue + day + shi + fen + miao + sj.Millisecond; rjss.HZXM = HZXM.Text; rjss.KSID = Convert.ToInt32(KS.SelectedValue); rjss.SFJZ = SSMC.SelectedIndex == 0 ? true : false; rjss.SQSJ = DateTime.Now; rjss.SQZD = SQZD.Text; rjss.SSID = Convert.ToInt32(SSMC.SelectedValue); rjss.ZDYS = Convert.ToInt32(YS.SelectedValue); rjss.ZLKH = ZLKH.Text; rjss.ZYH = ZYH.Text; rjss.PBZT = 1; rjss.SSRQ = DateTime.Now.Date; //分配手术室 var sss = (from tbsssb in myModel.SYS_SSSBDB join tbsss in myModel.SYS_SSSB on tbsssb.SSSID equals tbsss.ID where tbsssb.KSID == rjss.KSID && tbsssb.SFKY == true && tbsss.SFRJ ==true select new { tbsssb }).ToList(); List ssssc = new List(); for (int s = 0; s < listsss.Count; s++) { Cus_SSSSC sc = new Cus_SSSSC(); int sssid = Convert.ToInt32(listsss[s].tbsssb.SSSID); var listsssc = (from tbrjss in myModel.Bus_RJSSB where tbrjss.SSSID == sssid select new { tbrjss }).ToList(); decimal sssc = Convert.ToDecimal(listsssc.Sum(a => a.tbrjss.SSZSC)); sc.SSSID = sssid; sc.SSSC = sssc; ssssc.Add(sc); } ssssc = ssssc.OrderBy(a => a.SSSC).ToList(); rjss.SSSID = ssssc[0].SSSID; ////分配麻醉医生 //List listmzyssc = new List(); //var listrjssmz = ((from tbsspb in myModel.Bus_RJSSB // join tbmzys1 in myModel.SYS_MZYSB on tbsspb.MZYS1 equals tbmzys1.ID // join tbsssb in myModel.SYS_SSSB on tbsspb.SSSID equals tbsssb.ID // where tbsspb.SSKSSJ >= kssj && tbsspb.PBZT != 3 && tbsspb.SSSID == rjss.SSSID // select new Cus_MZYSSC // { // MZYSID = tbsspb.MZYS1, // MZYS = tbmzys1.YSMC, // SSSID = tbsspb.SSSID, // SSS = tbsssb.SSSMC, // SSSC = tbsspb.SSSC, // }).Concat(from tbsspb in myModel.Bus_RJSSB // join tbmzys2 in myModel.SYS_MZYSB on tbsspb.MZYS2 equals tbmzys2.ID // join tbsssb in myModel.SYS_SSSB on tbsspb.SSSID equals tbsssb.ID // where tbsspb.SSKSSJ >= kssj && tbsspb.PBZT != 3 && tbsspb.SSSID == rjss.SSSID // select new Cus_MZYSSC // { // MZYSID = tbsspb.MZYS2, // MZYS = tbmzys2.YSMC, // SSSID = tbsspb.SSSID, // SSS = tbsssb.SSSMC, // SSSC = tbsspb.SSSC, // })).ToList(); //var listmzys = (from tbmzysb in myModel.SYS_MZYSB // where tbmzysb.SSSID == rjss.SSSID // select new // { tbmzysb }).ToList(); //for (int i = 0; i < listmzys.Count; i++) //{ // int mzysid = Convert.ToInt32(listmzys[i].tbmzysb.ID); // var listys = listrjssmz.Where(a => a.MZYSID == mzysid).ToList(); // Cus_MZYSSC mzys = new Cus_MZYSSC(); // mzys.MZYSID = mzysid; // mzys.SSSC = listys.Sum(a => a.SSSC); // listmzyssc.Add(mzys); //} //listmzyssc = listmzyssc.OrderBy(a => a.SSSC).ToList(); //rjss.MZYS1 = listmzyssc[0].MZYSID; ////分配护士 //List listhssc = new List(); //var listrjsshs = ((from tbsspb in myModel.Bus_RJSSB // join tbxhhs1 in myModel.SYS_HSB on tbsspb.XHHS1 equals tbxhhs1.ID // join tbsssb in myModel.SYS_SSSB on tbsspb.SSSID equals tbsssb.ID // where tbsspb.SSKSSJ >= kssj && tbsspb.PBZT != 3 && tbsspb.SSSID == rjss.SSSID // select new Cus_MZYSSC // { // MZYSID = tbsspb.XHHS1, // MZYS = tbxhhs1.HSMC, // SSSID = tbsspb.SSSID, // SSS = tbsssb.SSSMC, // SSSC = tbsspb.SSSC, // }).Concat(from tbsspb in myModel.Bus_RJSSB // join tbxhhs2 in myModel.SYS_MZYSB on tbsspb.XHHS2 equals tbxhhs2.ID // join tbsssb in myModel.SYS_SSSB on tbsspb.SSSID equals tbsssb.ID // where tbsspb.SSKSSJ >= kssj && tbsspb.PBZT != 3 && tbsspb.SSSID == rjss.SSSID // select new Cus_MZYSSC // { // MZYSID = tbsspb.XHHS2, // MZYS = tbxhhs2.YSMC, // SSSID = tbsspb.SSSID, // SSS = tbsssb.SSSMC, // SSSC = tbsspb.SSSC, // }).Concat(from tbsspb in myModel.Bus_RJSSB // join tbxshs1 in myModel.SYS_MZYSB on tbsspb.XSHS1 equals tbxshs1.ID // join tbsssb in myModel.SYS_SSSB on tbsspb.SSSID equals tbsssb.ID // where tbsspb.SSKSSJ >= kssj && tbsspb.PBZT != 3 && tbsspb.SSSID == rjss.SSSID // select new Cus_MZYSSC // { // MZYSID = tbsspb.XSHS1, // MZYS = tbxshs1.YSMC, // SSSID = tbsspb.SSSID, // SSS = tbsssb.SSSMC, // SSSC = tbsspb.SSSC, // }).Concat(from tbsspb in myModel.Bus_RJSSB // join tbxshs2 in myModel.SYS_MZYSB on tbsspb.XSHS1 equals tbxshs2.ID // join tbsssb in myModel.SYS_SSSB on tbsspb.SSSID equals tbsssb.ID // where tbsspb.SSKSSJ >= kssj && tbsspb.PBZT != 3 && tbsspb.SSSID == rjss.SSSID // select new Cus_MZYSSC // { // MZYSID = tbsspb.XSHS2, // MZYS = tbxshs2.YSMC, // SSSID = tbsspb.SSSID, // SSS = tbsssb.SSSMC, // SSSC = tbsspb.SSSC, // })).ToList(); //var listxhhs = (from tbmzysb in myModel.SYS_HSB // where tbmzysb.SSSID == rjss.SSSID // select new // { tbmzysb }).ToList(); //for (int i = 0; i < listxhhs.Count; i++) //{ // int mzysid = Convert.ToInt32(listxhhs[i].tbmzysb.ID); // var listys = listrjsshs.Where(a => a.MZYSID == mzysid).ToList(); // Cus_MZYSSC mzys = new Cus_MZYSSC(); // mzys.MZYSID = mzysid; // mzys.SSSC = listys.Sum(a => a.SSSC); // listrjsshs.Add(mzys); //} //listrjsshs = listrjsshs.OrderBy(a => a.SSSC).ToList(); //rjss.XSHS1 = listrjsshs[0].MZYSID; //rjss.XHHS1 = listrjsshs[1].MZYSID; var listrjss = (from tbrjss in myModel.Bus_RJSSB where tbrjss.SSSID == rjss.SSSID && tbrjss.SSRQ == rjss.SSRQ && tbrjss.PBZT !=3 select new { tbrjss }).ToList(); listrjss = listrjss.OrderBy(a => a.tbrjss.SSJSSJ).ToList(); if (listrjss.Count>0) { rjss.SSKSSJ = listrjss[0].tbrjss.SSJSSJ; } else { rjss.SSKSSJ = Convert.ToDateTime( DateTime.Now.AddHours(2).ToString("yyyy/MM/dd HH:00:00")); } int ssid = Convert.ToInt32(rjss.SSID); Cus_SSSQB ssxxb = (from tbssxxb in myModel.SYS_SSXXB join tbssdjb in myModel.SYS_SSDJB on tbssxxb.SSDJID equals tbssdjb.ID join tbqklxb in myModel.SYS_SSQKLXB on tbssxxb.SSQKLXID equals tbqklxb.ID join tbssscb in myModel.SYS_SSSCB on tbssxxb.SSSCID equals tbssscb.ID join tbqjscb in myModel.SYS_SSSCB on tbqklxb.QJSCID equals tbqjscb.ID where tbssxxb.ID == ssid select new Cus_SSSQB { SSDJQZ = tbssdjb.QZ, QKLXQZ = tbqklxb.QZ, QJSC = tbqjscb.SSSC, SSSC = tbssscb.SSSC, SSLX = tbssxxb.SSLX, }).Single(); rjss.SSSC = ssxxb.SSSC; rjss.QJSC = ssxxb.QJSC; rjss.SSZSC = rjss.SSSC + rjss.QJSC; rjss.SSJSSJ = Convert.ToDateTime(rjss.SSKSSJ).AddHours((double)rjss.SSZSC); //int sssid = Convert.ToInt32(listsspb.tbsspbb.SSSID); //int ssxxid = Convert.ToInt32(listsspb.tbsspbb.SSID); int sslxid = Convert.ToInt32(ssxxb.SSLX); //int mzyszc = Convert.ToInt32(ssxxb.tbssxxb.MZYSZCID); //int hszcid = Convert.ToInt32(ssxxb.tbssxxb.HSZCID); //decimal sssc = Convert.ToInt32(listsspb.tbsspbb.SSZSC); DateTime ssrq = Convert.ToDateTime(rjss.SSRQ); DateTime sskssj = Convert.ToDateTime(rjss.SSKSSJ); DateTime ssjssj = Convert.ToDateTime(rjss.SSJSSJ); //分配麻醉医生 List listmzyssc = new List(); List listhssc = new List(); //查询出所有麻醉医生 var listmzys = (from tbmzysb in myModel.SYS_MZYSB select new { tbmzysb }).ToList(); //查询出本月的麻醉医生排班 var listdypb = (from tbmzyspb in myModel.Bus_MZYSPBB where tbmzyspb.SSKSSJ >= kssj select new { tbmzyspb }).ToList(); //查询出手术当天以排班的麻醉医生 var listdtpb = listdypb.Where(a => a.tbmzyspb.SSRQ == ssrq).ToList(); //移除当前时间有排班的麻醉医生 for (int i = 0; i < listdtpb.Count; i++) { DateTime pbkssj = Convert.ToDateTime(listdtpb[i].tbmzyspb.SSKSSJ); DateTime pbjssj = Convert.ToDateTime(listdtpb[i].tbmzyspb.SSKSSJ); if (pbjssj < sskssj || pbkssj > ssjssj) { int id = Convert.ToInt32(listdtpb[i].tbmzyspb.MZYSID); listmzys.RemoveAll(a => a.tbmzysb.ID == id); } } var listsclx = listmzys.Where(a => a.tbmzysb.SCSS1 == sslxid || a.tbmzysb.SCSS2 == sslxid || a.tbmzysb.SCSS3 == sslxid).ToList(); if (listsclx.Count > 0) { for (int i = 0; i < listsclx.Count; i++) { Cus_MZYSSC mzsc = new Cus_MZYSSC(); int ysid = listsclx[i].tbmzysb.ID; mzsc.MZYSID = ysid; mzsc.SSSC = listdypb.Where(a => a.tbmzyspb.MZYSID == ysid).Sum(a => a.tbmzyspb.SSSC); listmzyssc.Add(mzsc); } listmzyssc.OrderBy(a => a.SSSC); rjss.MZYS1 = listmzyssc[0].MZYSID; } else { //没有擅长类型的麻醉医生 for (int i = 0; i < listmzys.Count; i++) { Cus_MZYSSC mzsc = new Cus_MZYSSC(); int ysid = listmzys[i].tbmzysb.ID; mzsc.MZYSID = ysid; mzsc.SSSC = listdypb.Where(a => a.tbmzyspb.MZYSID == ysid).Sum(a => a.tbmzyspb.SSSC); listmzyssc.Add(mzsc); } listmzyssc.OrderBy(a => a.SSSC); rjss.MZYS1 = listmzyssc[0].MZYSID; } //分配护士 //查询手术室所有护士 var lisths = (from tbhsb in myModel.SYS_HSB where tbhsb.SSSID == rjss.SSSID select new { tbhsb }).ToList(); //查询出本月的护士排班 var lisstbyhspb = (from tbhspbb in myModel.Bus_HSPBB where tbhspbb.SSKSSJ >= kssj select new { tbhspbb }).ToList(); for (int i = 0; i < lisths.Count; i++) { Cus_MZYSSC hssc = new Cus_MZYSSC(); int ysid = lisths[i].tbhsb.ID; hssc.MZYSID = ysid; hssc.SSSC = lisstbyhspb.Where(a => a.tbhspbb.HSID == ysid).Sum(a => a.tbhspbb.SSSC); listhssc.Add(hssc); } listhssc.OrderBy(a => a.SSSC); rjss.XSHS1 = listhssc[0].MZYSID; rjss.XHHS1 = listhssc[1].MZYSID; myModel.Bus_RJSSB.Add(rjss); myModel.SaveChanges(); MessageBox.Show("申请成功"); this.Close(); } catch (Exception ex) { MessageBox.Show("申请失败" + ex.ToString()); } } private void btn_qx_Click(object sender, RoutedEventArgs e) { this.Close(); } private void PBFS_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { } } }