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.

441 lines
22 KiB

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
{
/// <summary>
/// XZRJSSWindow.xaml 的交互逻辑
/// </summary>
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<ComboBoxBinding> listks = new List<ComboBoxBinding>();
List<ComboBoxBinding> listys = new List<ComboBoxBinding>();
List<ComboBoxBinding> listssmc = new List<ComboBoxBinding>();
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<string> shi = new List<string>();
for (int i = 0; i < 24; i++)
{
if (i < 10)
{
shi.Add("0" + i);
}
else
{
shi.Add(i.ToString());
}
}
List<string> fen = new List<string>();
for (int i = 0; i < 60; i++)
{
if (i < 10)
{
fen.Add("0" + i);
}
else
{
fen.Add(i.ToString());
}
}
List<string> miao = new List<string>();
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<Cus_SSSSC> ssssc = new List<Cus_SSSSC>();
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<Cus_MZYSSC> listmzyssc = new List<Cus_MZYSSC>();
//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<Cus_MZYSSC> listhssc = new List<Cus_MZYSSC>();
//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<Cus_MZYSSC> listmzyssc = new List<Cus_MZYSSC>();
List<Cus_MZYSSC> listhssc = new List<Cus_MZYSSC>();
//查询出所有麻醉医生
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)
{
}
}
}