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.
1348 lines
76 KiB
1348 lines
76 KiB
using SchedulingSystem; |
|
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.Navigation; |
|
using System.Windows.Shapes; |
|
|
|
namespace SchedulingSystemClient |
|
{ |
|
/// <summary> |
|
/// SQJLWindow.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class SQJLWindow : UserControl |
|
{ |
|
public SQJLWindow(SYS_YHB yh) |
|
{ |
|
InitializeComponent(); |
|
user = yh; |
|
} |
|
SYS_YHB user = new SYS_YHB(); |
|
SurgerySchedulingEntities myModel = new SurgerySchedulingEntities(); |
|
Cus_SSSQB selectedRow = new Cus_SSSQB(); |
|
private void sqjldata_SelectionChanged(object sender, SelectionChangedEventArgs e) |
|
{ |
|
selectedRow = sqjldata.SelectedItem as Cus_SSSQB; |
|
} |
|
|
|
private void UserControl_Loaded(object sender, RoutedEventArgs e) |
|
{ |
|
List<ComboBoxBinding> listsqks = new List<ComboBoxBinding>(); |
|
listsqks = (from tbsss in myModel.SYS_KSB |
|
select new ComboBoxBinding |
|
{ |
|
ID = tbsss.ID, |
|
Name = tbsss.KSMC |
|
}).ToList(); |
|
listsqks.Add(new ComboBoxBinding() { ID = 0, Name = "全部" }); |
|
sqks.ItemsSource = listsqks.OrderBy(a => a.ID); |
|
sqks.SelectedValuePath = "ID"; |
|
sqks.DisplayMemberPath = "Name"; |
|
sqks.SelectedValue = 0; |
|
|
|
List<ComboBoxBinding> listssdj = new List<ComboBoxBinding>(); |
|
listssdj = (from tbsss in myModel.SYS_SSDJB |
|
select new ComboBoxBinding |
|
{ |
|
ID = tbsss.ID, |
|
Name = tbsss.SSDJ |
|
}).ToList(); |
|
listssdj.Add(new ComboBoxBinding() { ID = 0, Name = "全部" }); |
|
ssdj.ItemsSource = listssdj.OrderBy(a => a.ID); |
|
ssdj.SelectedValuePath = "ID"; |
|
ssdj.DisplayMemberPath = "Name"; |
|
ssdj.SelectedValue = 0; |
|
|
|
kssj.Text = DateTime.Now.AddDays(-6).ToString(); |
|
jssj.Text = DateTime.Now.ToString(); |
|
SelectPBXX(); |
|
} |
|
List<Cus_SSSQB> listpbsq = new List<Cus_SSSQB>(); |
|
/// <summary> |
|
/// 查询排班信息 |
|
/// </summary> |
|
private void SelectPBXX() |
|
{ |
|
listpbsq = (from tbsssqb in myModel.Bus_SSSQB |
|
join tbssxxb in myModel.SYS_SSXXB on tbsssqb.SSID equals tbssxxb.ID |
|
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 |
|
join tbksb in myModel.SYS_KSB on tbsssqb.KSID equals tbksb.ID |
|
join tbysb in myModel.SYS_SSYSB on tbsssqb.ZDYSID equals tbysb.ID |
|
join tbzt in myModel.SYS_SQZTB on tbsssqb.ZT equals tbzt.ID |
|
select new Cus_SSSQB |
|
{ |
|
ID = tbsssqb.ID, |
|
HZXM = tbsssqb.HZXM, |
|
KSBM = tbksb.KSBM, |
|
KSID = tbsssqb.KSID, |
|
KSMC = tbksb.KSMC, |
|
QJSJID = tbsssqb.ID, |
|
QKLX = tbqklxb.QKLX, |
|
QKLXID = tbsssqb.ID, |
|
// QZ = tbsssqb.QZ, |
|
SFJZ = tbsssqb.SFJZ, |
|
SQDH = tbsssqb.SQDH, |
|
SQSJ = tbsssqb.SQSJ, |
|
SQZD = tbsssqb.SQZD, |
|
SSBM = tbssxxb.SSBM, |
|
SSDJ = tbssdjb.SSDJ, |
|
SSDJID = tbssxxb.SSDJID, |
|
SSID = tbsssqb.SSID, |
|
SSMC = tbssxxb.SSMC, |
|
//SSZSC = tbsssqb.SSZSC, |
|
strSFJZ = tbsssqb.SFJZ==true?"是":"否", |
|
ZDYSID = tbsssqb.ZDYSID, |
|
ZDYSMB = tbysb.YSBM, |
|
ZDYSXM = tbysb.YSXM, |
|
ZLKH = tbsssqb.ZLKH, |
|
ZYH = tbsssqb.ZYH, |
|
SSDJQZ = tbssdjb.QZ, |
|
QKLXQZ = tbqklxb.QZ, |
|
QJSC = tbqjscb.SSSC, |
|
SSSC = tbssscb.SSSC, |
|
SQZT = tbzt.Name, |
|
ZT = tbzt.ID, |
|
}).ToList(); |
|
|
|
string strtj = tj.Text; |
|
if (strtj != string.Empty) |
|
{ |
|
listpbsq = listpbsq.Where(a => a.SSMC.Contains(strtj) || a.HZXM.Contains(strtj) || a.ZDYSXM.Contains(strtj)).ToList(); |
|
} |
|
int ksid = Convert.ToInt32(sqks.SelectedValue); |
|
int djid = Convert.ToInt32(ssdj.SelectedValue); |
|
if (ksid != 0) |
|
{ |
|
listpbsq = listpbsq.Where(a => Convert.ToInt32(a.KSID) == ksid).ToList(); |
|
} |
|
if (djid != 0) |
|
{ |
|
listpbsq = listpbsq.Where(a => a.SSDJID == djid).ToList(); |
|
} |
|
DateTime? sskssj = Convert.ToDateTime(kssj.SelectedDate).Date; |
|
DateTime? ssjssj = Convert.ToDateTime(jssj.SelectedDate).Date.AddDays(1).AddSeconds(-1); |
|
listpbsq = listpbsq.Where(a => a.SQSJ > sskssj && a.SQSJ < ssjssj).ToList(); |
|
sqjldata.ItemsSource = listpbsq; |
|
} |
|
private void btn_xz_Click(object sender, RoutedEventArgs e) |
|
{ |
|
|
|
} |
|
private void btn_xg_Click(object sender, RoutedEventArgs e) |
|
{ |
|
if (selectedRow ==null) |
|
{ |
|
MessageBox.Show("请选择需要修改的内容"); |
|
return; |
|
} |
|
XGSQJLWindow window = new XGSQJLWindow(selectedRow, user); |
|
window.ShowDialog(); |
|
SelectPBXX(); |
|
} |
|
|
|
/// <summary> |
|
/// 取消 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void btn_qx_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if (selectedRow.ID != 0) |
|
{ |
|
MessageBoxResult dr = MessageBox.Show("确定要取消吗?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question); |
|
if (dr == MessageBoxResult.OK) |
|
{ |
|
if (selectedRow.ZT == 2) |
|
{ |
|
MessageBox.Show("该申请已取消"); |
|
return; |
|
} |
|
|
|
Bus_SSSQB sssq = new Bus_SSSQB(); |
|
sssq.HZXM = selectedRow.HZXM; |
|
sssq.ID = selectedRow.ID; |
|
sssq.KSID = selectedRow.KSID; |
|
sssq.SFJZ = selectedRow.SFJZ; |
|
sssq.SQDH = selectedRow.SQDH; |
|
sssq.SQSJ = selectedRow.SQSJ; |
|
sssq.SQZD = selectedRow.SQZD; |
|
sssq.SSID = selectedRow.SSID; |
|
sssq.ZDYSID = selectedRow.ZDYSID; |
|
sssq.ZLKH = selectedRow.ZLKH; |
|
sssq.ZT = 2; |
|
sssq.ZYH = selectedRow.ZYH; |
|
string sqdh = sssq.SQDH; |
|
myModel.Entry(sssq).State = System.Data.Entity.EntityState.Modified; |
|
myModel.SaveChanges(); |
|
var listsspb = (from tbsspbb in myModel.Bus_SSPBB |
|
where tbsspbb.SQDH == sssq.SQDH |
|
select new { tbsspbb }).ToList(); |
|
if (listsspb.Count > 0) |
|
{ |
|
Bus_SSPBB sspbb = new Bus_SSPBB(); |
|
sspbb = listsspb[0].tbsspbb; |
|
sspbb.PBZT = 2; |
|
myModel.Entry(sspbb).State = System.Data.Entity.EntityState.Modified; |
|
//操作日志 |
|
Bus_PBRZB pbrz = new Bus_PBRZB(); |
|
pbrz.CZLX = 3; |
|
pbrz.CZRYID = user.ID; |
|
pbrz.SQDH = sqdh; |
|
pbrz.CZSJ = DateTime.Now; |
|
myModel.Bus_PBRZB.Add(pbrz); |
|
myModel.SaveChanges(); |
|
|
|
} |
|
MessageBox.Show("已取消"); |
|
} |
|
} |
|
else |
|
{ |
|
MessageBox.Show("请选择"); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
|
|
MessageBox.Show(ex.ToString()); |
|
} |
|
|
|
} |
|
/// <summary> |
|
/// 刷新 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void btn_sx_Click(object sender, RoutedEventArgs e) |
|
{ |
|
SelectPBXX(); |
|
} |
|
/// <summary> |
|
/// 解锁 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
//private void btn_js_Click(object sender, RoutedEventArgs e) |
|
//{ |
|
// if (selectedRow.ID != 0) |
|
// { |
|
// if (IsSDPB!=true) |
|
// { |
|
// MessageBox.Show("权限不足"); |
|
// return; |
|
// } |
|
// if (selectedRow.PBZT == 2) |
|
// { |
|
// MessageBoxResult dr = MessageBox.Show("确定要解锁排班吗?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question); |
|
// if (dr == MessageBoxResult.OK) |
|
// { |
|
// var pbb = (from tbpbb in myModel.Bus_SSPBB |
|
// where tbpbb.ID == selectedRow.ID |
|
// select new |
|
// { |
|
// tbpbb, |
|
// }).Single(); |
|
// Bus_SSPBB buspbb = new Bus_SSPBB(); |
|
// buspbb = pbb.tbpbb; |
|
// buspbb.PBZT = 1; |
|
// try |
|
// { |
|
|
|
// Bus_PBRZB pbrz = new Bus_PBRZB(); |
|
// pbrz.CZLX = 5; |
|
// pbrz.CZRYID = user.ID; |
|
// pbrz.PBZT = 1; |
|
// pbrz.SSID = pbb.tbpbb.ID; |
|
// //pbrz.ZCSJ = DateTime.Now; |
|
// myModel.Bus_PBRZB.Add(pbrz); |
|
// myModel.SaveChanges(); |
|
|
|
// myModel.Entry(buspbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// MessageBox.Show("解锁成功"); |
|
// //UpdateZT(); |
|
// //SmartScheduling(); |
|
// SelectPBXX(); |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// MessageBox.Show("解锁失败" + ex.ToString()); |
|
// } |
|
// } |
|
// else |
|
// { |
|
// MessageBox.Show("不是锁定状态!"); |
|
// return; |
|
// } |
|
// } |
|
// else |
|
// { |
|
// MessageBox.Show("请选择排班"); |
|
// } |
|
// } |
|
//} |
|
|
|
#region 排班方法 |
|
///// <summary> |
|
///// 修改排班状态 |
|
///// </summary> |
|
//private void UpdateZT() |
|
//{ |
|
// //1、查出最后修改时间 |
|
// int zhxgsj = Convert.ToInt32((from tbqtcs in myModel.Bus_SJCSB |
|
// select new |
|
// { |
|
// tbqtcs |
|
// }).Single().tbqtcs.ZHXGSJ.Replace("天内", "")); |
|
// //2、获取锁定时间 |
|
// DateTime sdsj = DateTime.Now.AddDays(zhxgsj).Date.AddSeconds(-1); |
|
|
|
// //3、查出状态不是已完成和已取消并且开始时间小于锁定时间的手术排班 |
|
// var listpbb = (from tbpbb in myModel.Bus_SSPBB |
|
// where tbpbb.PBZT != 3 && tbpbb.PBZT != 4 && tbpbb.KSSJ < sdsj |
|
// select new |
|
// { |
|
// tbpbb |
|
// }).ToList(); |
|
// try |
|
// { |
|
// for (int i = 0; i < listpbb.Count; i++) |
|
// { |
|
// Bus_SSPBB pbb = new Bus_SSPBB(); |
|
// pbb = listpbb[i].tbpbb; |
|
// //4、获取手术完成时间 |
|
// DateTime sswcsj = Convert.ToDateTime(pbb.KSSJ).AddHours(Convert.ToDouble(pbb.SSZSC)); |
|
// //5、如果手术完成时间小于当前时间修改状态为已完成 |
|
// if (sswcsj < DateTime.Now) |
|
// { |
|
// pbb.PBZT = 4; |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// } |
|
// //6、如果手术完成时间大于当前时间修改状态为已锁定 |
|
// else |
|
// { |
|
// if (listpbb[i].tbpbb.PBZT != 5) |
|
// { |
|
// pbb.PBZT = 2; |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// } |
|
|
|
// } |
|
// } |
|
// myModel.SaveChanges(); |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// MessageBox.Show(ex.ToString()); |
|
// } |
|
//} |
|
//double amsc = 0; |
|
//double pmsc = 0; |
|
//string mtkssj = string.Empty; |
|
//string mtpbjssj = string.Empty; |
|
//string sssxxsj = string.Empty; |
|
///// <summary> |
|
///// 智能排班(修改开始时间) |
|
///// </summary> |
|
//private void SmartScheduling() |
|
//{ |
|
// //查询其他参数表 |
|
// var qtcs = (from tbqtcs in myModel.Bus_SJCSB |
|
// select new |
|
// { |
|
// tbqtcs |
|
// }).Single(); |
|
// //获取每天排班时间长 |
|
// int mtsssc = Convert.ToInt32(qtcs.tbqtcs.MTPBSC.Replace("小时", "")); |
|
// //获取锁定时间 |
|
// DateTime sdsj = DateTime.Now.AddDays(Convert.ToDouble(qtcs.tbqtcs.ZHXGSJ.Replace("天内", ""))).Date.AddSeconds(-1); |
|
// var qjdb = (from tbqjd in myModel.SYS_SSQKLXB select new { tbqjd }).ToList(); |
|
// //获取每天排班开始时间 |
|
// mtkssj = qtcs.tbqtcs.PBKSSJ; |
|
// //获取每天排班时长 |
|
// double mtpbsc = Convert.ToDouble(qtcs.tbqtcs.MTPBSC.Replace("小时", "")); |
|
// //获取手术室休息时间 |
|
// sssxxsj = qtcs.tbqtcs.STRXXSJ; |
|
// //获取手术室休息时长 |
|
// double sssxxsc = Convert.ToDouble(qtcs.tbqtcs.XXSC); |
|
// string pmkssj = string.Empty; |
|
// bool sfxx = sssxxsj == "不休息"; |
|
// //判断手术室是否有休息时间 |
|
// if (!sfxx) |
|
// { |
|
// //8、如果手术室需要休息获取休息前后两端时间的时长 |
|
// DateTime kspbjs = Convert.ToDateTime(DateTime.Now.Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// DateTime ksxxsj = Convert.ToDateTime(DateTime.Now.Date.ToString("yyyy-MM-dd") + " " + sssxxsj); |
|
// DateTime xwkssj = ksxxsj.AddHours(sssxxsc); |
|
// pmkssj = xwkssj.ToString("HH:mm:ss"); |
|
// TimeSpan ts = ksxxsj - kspbjs; |
|
// amsc = ts.TotalHours; |
|
// pmsc = mtpbsc - amsc; |
|
// } |
|
// //每天排班结束时间 |
|
// mtpbjssj = Convert.ToDateTime(DateTime.Now.Date.ToString("yyyy-MM-dd") + " " + mtkssj).AddHours(mtpbsc + sssxxsc).ToString("HH:mm:ss"); |
|
// DateTime dt = DateTime.Now.Date; |
|
// //1、查询出开始时间为空(未进行排班)和开始时间大于锁定时间的手术排班 |
|
// List<Cus_SJKPBB> listpbjl = (from tbpbb in myModel.Bus_SSPBB |
|
// where tbpbb.KSSJ == null || tbpbb.KSSJ > sdsj |
|
// select new Cus_SJKPBB |
|
// { |
|
// ID = tbpbb.ID, |
|
// HZXM = tbpbb.HZXM, |
|
// KSID = tbpbb.KSID, |
|
// KSSJ = tbpbb.KSSJ, |
|
// PBZT = tbpbb.PBZT, |
|
// QZ = tbpbb.QZ, |
|
// SQR = tbpbb.SQR, |
|
// SQSJ = tbpbb.SQSJ, |
|
// KSRQ = tbpbb.KSRQ, |
|
// SSLX = tbpbb.SSLX, |
|
// SSMC = tbpbb.SSMC, |
|
// SSQJD = tbpbb.SSQJD, |
|
// SSSC = tbpbb.SSSC, |
|
// SSSID = tbpbb.SSSID, |
|
// SSSQJSC = tbpbb.SSSQJSC, |
|
// SSZSC = tbpbb.SSZSC, |
|
// XGR = tbpbb.XGR, |
|
// XGSJ = tbpbb.XGSJ, |
|
// YSID = tbpbb.YSID, |
|
// ZLKH = tbpbb.ZLKH, |
|
// ZYH = tbpbb.ZYH |
|
// }).ToList(); |
|
|
|
// //2、将排班按照手术室分组获取手术室列表 |
|
// var listsss = listpbjl.GroupBy(a => a.SSSID).ToList(); |
|
// try |
|
// { |
|
// //3、使用for循环为每个手术室进行排班 |
|
// for (int j = 0; j < listsss.Count; j++) |
|
// { |
|
// int sssid = Convert.ToInt32(listsss[j].Key); |
|
// //4、获取每个手术室的排班并按权重进行排序 |
|
// List<Cus_SJKPBB> listssspb = listpbjl.Where(a => a.PBZT == 1 && a.SSSID == sssid).ToList(); |
|
// //5、获取排班开始时间 |
|
// DateTime pbkssj = Convert.ToDateTime(DateTime.Now.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// double pbsc = mtpbsc; |
|
// double am = amsc; |
|
// double pm = pmsc; |
|
// List<Cus_SJKPBB> ypb = new List<Cus_SJKPBB>(); |
|
// List<Cus_SJKPBB> listpb = new List<Cus_SJKPBB>(); |
|
// //手术室需要休息 |
|
// if (!sfxx) |
|
// { |
|
// //执行排班方法 |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //myModel.SaveChanges(); |
|
// //MessageBox.Show("排班成功"); |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
|
|
// MessageBox.Show(ex.ToString()); |
|
// } |
|
//} |
|
//private void DiGuiPaiBan(DateTime pbkssj, string sssxxsj, List<Cus_SJKPBB> listpb, List<Cus_SJKPBB> listssspb, double am, double pm, List<Cus_SJKPBB> ypb, string pmkssj) |
|
//{ |
|
// DateTime rq = pbkssj.Date; |
|
// //实例化排班列表 |
|
// listpb = new List<Cus_SJKPBB>(); |
|
// Bus_SSPBB pbb = new Bus_SSPBB(); |
|
// DateTime xxsj = Convert.ToDateTime(pbkssj.Date.ToString("yyyy-MM-dd") + " " + sssxxsj); |
|
// //1、判断开始时间是否大于休息时间 |
|
// if (pbkssj < xxsj) |
|
// { |
|
// if (pbkssj.ToString("HH:mm:ss") == mtkssj) |
|
// { |
|
// var sdpbb = (from tbsdpbb in myModel.Bus_SDPBB |
|
// where tbsdpbb.SSRQ == rq && tbsdpbb.SSJSSJ <= xxsj |
|
// select new { tbsdpbb }).OrderBy(a => a.tbsdpbb.SSSJ).ToList(); |
|
// if (sdpbb.Count > 0) |
|
// { |
|
// for (int i = 0; i < sdpbb.Count; i++) |
|
// { |
|
// DateTime ikssj = sdpbb[i].tbsdpbb.SSSJ; |
|
// DateTime ijssj = sdpbb[i].tbsdpbb.SSJSSJ; |
|
// decimal isszsc = sdpbb[i].tbsdpbb.SSZSC; |
|
// if (i == 0) |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(ikssj.Ticks - pbkssj.Ticks); |
|
// am = amhoursSpan.Hours; |
|
// } |
|
// else |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(sdpbb[i + 1].tbsdpbb.SSSJ.Ticks - sdpbb[i].tbsdpbb.SSJSSJ.Ticks); |
|
// am = amhoursSpan.Hours; |
|
// } |
|
// //排班时间为上午 |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(am)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
|
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// am = am - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// } |
|
// if (i == sdpbb.Count - 1) |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(xxsj.Ticks - ijssj.Ticks); |
|
// am = amhoursSpan.Hours; |
|
// //排班时间为上午 |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(am)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbkssj = ijssj; |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// am = am - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// //判断已排班数量是否等于该手术室排班数量 |
|
// if (ypb.Count != listssspb.Count) |
|
// { |
|
// //判断排班时间是否小于六天后 |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// } |
|
// //else |
|
// //{ |
|
// // //判断下午时长是否等于每天下午时长 |
|
// // if (pm == pmsc) |
|
// // { |
|
// // //排班时间改为休息之后的时间 |
|
// // pbkssj = Convert.ToDateTime(pbkssj.Date.ToString("yyyy-MM-dd") + " " + pmkssj); |
|
// // } |
|
// // else |
|
// // { |
|
// // //查询出未排班并且手术总时长小于或等于下午时长的手术按权重排序 |
|
// // listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// // //如果列表有数据直接排班 |
|
// // if (listpb.Count > 0) |
|
// // { |
|
// // pbb.HZXM = listpb[0].HZXM; |
|
// // pbb.ID = listpb[0].ID; |
|
// // pbb.KSID = listpb[0].KSID; |
|
// // pbb.KSRQ = listpb[0].KSRQ; |
|
// // pbb.PBZT = listpb[0].PBZT; |
|
// // pbb.QZ = listpb[0].QZ; |
|
// // pbb.SQR = listpb[0].SQR; |
|
// // pbb.SQSJ = listpb[0].SQSJ; |
|
// // pbb.SSLX = listpb[0].SSLX; |
|
// // pbb.SSMC = listpb[0].SSMC; |
|
// // pbb.SSQJD = listpb[0].SSQJD; |
|
// // pbb.SSSC = listpb[0].SSSC; |
|
// // pbb.SSSID = listpb[0].SSSID; |
|
// // pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// // pbb.SSZSC = listpb[0].SSZSC; |
|
// // pbb.XGR = listpb[0].XGR; |
|
// // pbb.XGSJ = listpb[0].XGSJ; |
|
// // pbb.YSID = listpb[0].YSID; |
|
// // pbb.ZLKH = listpb[0].ZLKH; |
|
// // pbb.ZYH = listpb[0].ZYH; |
|
// // pbb.KSSJ = pbkssj; |
|
// // //修改手术开始时间 |
|
// // myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// // myModel.SaveChanges(); |
|
// // myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// // //排班时间+手术总时长 |
|
// // pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// // //下午剩余时间-手术总时长 |
|
// // pm = pm - (double)pbb.SSZSC; |
|
// // //已排班列表添加当前手术 |
|
// // ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// // //判断排班时间是否大于六天后 |
|
// // if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// // { |
|
// // //重新执行排班方法 |
|
// // DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// // } |
|
// // } |
|
// // else |
|
// // { |
|
// // //判断下午剩余时长是否等于每天下午时长 |
|
// // if (pm != pmsc) |
|
// // { |
|
// // //排班时间改为第二天的排班开始时间 |
|
// // pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// // if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// // { |
|
// // am = amsc; |
|
// // pm = pmsc; |
|
// // DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// // } |
|
// // } |
|
// // //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// // //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// // //继续对其他手术室进行排班 |
|
// // } |
|
// // } |
|
// //} |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //排班时间为上午 |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(am)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// am = am - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// //判断已排班数量是否等于该手术室排班数量 |
|
// if (ypb.Count != listssspb.Count) |
|
// { |
|
// //判断排班时间是否小于六天后 |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //判断下午时长是否等于每天下午时长 |
|
// if (pm == pmsc) |
|
// { |
|
// //排班时间改为休息之后的时间 |
|
// pbkssj = Convert.ToDateTime(pbkssj.Date.ToString("yyyy-MM-dd") + " " + pmkssj); |
|
// } |
|
// //查询出未排班并且手术总时长小于或等于下午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //下午剩余时间-手术总时长 |
|
// pm = pm - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// //判断排班时间是否大于六天后 |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// //重新执行排班方法 |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //判断下午剩余时长是否等于每天下午时长 |
|
// if (pm != pmsc) |
|
// { |
|
// //排班时间改为第二天的排班开始时间 |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //排班时间为上午 |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(am)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// am = am - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// //判断已排班数量是否等于该手术室排班数量 |
|
// if (ypb.Count != listssspb.Count) |
|
// { |
|
// //判断排班时间是否小于六天后 |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //判断下午时长是否等于每天下午时长 |
|
// if (pm == pmsc) |
|
// { |
|
// DateTime xwkssj = Convert.ToDateTime(pbkssj.Date.ToString("yyyy-MM-dd") + " " + pmkssj); |
|
// //排班时间改为休息之后的时间 |
|
// pbkssj = xwkssj; |
|
|
|
// var sdpbb = (from tbsdpbb in myModel.Bus_SDPBB |
|
// where tbsdpbb.SSRQ == rq && tbsdpbb.SSSJ >= xwkssj |
|
// select new { tbsdpbb }).OrderBy(a => a.tbsdpbb.SSSJ).ToList(); |
|
// if (sdpbb.Count > 0) |
|
// { |
|
// for (int i = 0; i < sdpbb.Count; i++) |
|
// { |
|
// DateTime ikssj = sdpbb[i].tbsdpbb.SSSJ; |
|
// DateTime ijssj = sdpbb[i].tbsdpbb.SSJSSJ; |
|
// decimal isszsc = sdpbb[i].tbsdpbb.SSZSC; |
|
// if (i == 0) |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(ikssj.Ticks - pbkssj.Ticks); |
|
// pm = amhoursSpan.Hours; |
|
// } |
|
// else |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(sdpbb[i + 1].tbsdpbb.SSSJ.Ticks - sdpbb[i].tbsdpbb.SSJSSJ.Ticks); |
|
// pm = amhoursSpan.Hours; |
|
// } |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// pm = pm - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// } |
|
// if (i == sdpbb.Count - 1) |
|
// { |
|
// DateTime pbjssj = Convert.ToDateTime(pbkssj.ToString("yyyy-MM-dd") + " " + mtpbjssj); |
|
// TimeSpan amhoursSpan = new TimeSpan(pbjssj.Ticks - ijssj.Ticks); |
|
// pm = amhoursSpan.Hours; |
|
// //排班时间为上午 |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbkssj = ijssj; |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// am = am - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// } |
|
// else |
|
// { |
|
// //判断下午剩余时长是否等于每天下午时长 |
|
// if (pm != pmsc) |
|
// { |
|
// //排班时间改为第二天的排班开始时间 |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //查询出未排班并且手术总时长小于或等于下午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// pm = pm - (double)pbb.SSZSC; |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// else |
|
// { |
|
// if (pm != pmsc) |
|
// { |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //查询出未排班并且手术总时长小于或等于下午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //下午剩余时间-手术总时长 |
|
// pm = pm - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// //判断排班时间是否大于六天后 |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// //重新执行排班方法 |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //判断下午剩余时长是否等于每天下午时长 |
|
// if (pm != pmsc) |
|
// { |
|
// //排班时间改为第二天的排班开始时间 |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
|
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //判断下午剩余时长是否等于每天下午时长 |
|
// if (pm == pmsc) |
|
// { |
|
// DateTime xwkssj = Convert.ToDateTime(pbkssj.Date.ToString("yyyy-MM-dd") + " " + pmkssj); |
|
// //排班时间改为休息之后的时间 |
|
// pbkssj = xwkssj; |
|
|
|
// var sdpbb = (from tbsdpbb in myModel.Bus_SDPBB |
|
// where tbsdpbb.SSRQ == rq && tbsdpbb.SSSJ >= xwkssj |
|
// select new { tbsdpbb }).OrderBy(a => a.tbsdpbb.SSSJ).ToList(); |
|
// if (sdpbb.Count > 0) |
|
// { |
|
// for (int i = 0; i < sdpbb.Count; i++) |
|
// { |
|
// DateTime ikssj = sdpbb[i].tbsdpbb.SSSJ; |
|
// DateTime ijssj = sdpbb[i].tbsdpbb.SSJSSJ; |
|
// decimal isszsc = sdpbb[i].tbsdpbb.SSZSC; |
|
// if (i == 0) |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(ikssj.Ticks - pbkssj.Ticks); |
|
// pm = amhoursSpan.Hours; |
|
// } |
|
// else |
|
// { |
|
// TimeSpan amhoursSpan = new TimeSpan(sdpbb[i + 1].tbsdpbb.SSSJ.Ticks - sdpbb[i].tbsdpbb.SSJSSJ.Ticks); |
|
// pm = amhoursSpan.Hours; |
|
// } |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// pm = pm - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// } |
|
// if (i == sdpbb.Count - 1) |
|
// { |
|
// DateTime pbjssj = Convert.ToDateTime(pbkssj.ToString("yyyy-MM-dd") + " " + mtpbjssj); |
|
// TimeSpan amhoursSpan = new TimeSpan(pbjssj.Ticks - ijssj.Ticks); |
|
// pm = amhoursSpan.Hours; |
|
// //排班时间为上午 |
|
// //查询出未排班并且手术总时长小于或等于上午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果有列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = ijssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// //修改手术开始时间 |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// //排班时间+手术总时长 |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// //上午剩余时间-手术总时长 |
|
// am = am - (double)pbb.SSZSC; |
|
// //已排班列表添加当前手术 |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// } |
|
// else |
|
// { |
|
// //判断下午剩余时长是否等于每天下午时长 |
|
// if (pm != pmsc) |
|
// { |
|
// //排班时间改为第二天的排班开始时间 |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //查询出未排班并且手术总时长小于或等于下午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// pm = pm - (double)pbb.SSZSC; |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// else |
|
// { |
|
// if (pm != pmsc) |
|
// { |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
// } |
|
// else |
|
// { |
|
// //查询出未排班并且手术总时长小于或等于下午时长的手术按权重排序 |
|
// listpb = listssspb.Except(ypb).Where(a => a.SSZSC <= Convert.ToDecimal(pm)).OrderByDescending(a => a.QZ).ToList(); |
|
// //如果列表有数据直接排班 |
|
// if (listpb.Count > 0) |
|
// { |
|
// pbb.HZXM = listpb[0].HZXM; |
|
// pbb.ID = listpb[0].ID; |
|
// pbb.KSID = listpb[0].KSID; |
|
// //pbb.KSRQ = listpb[0].KSRQ; |
|
// pbb.PBZT = listpb[0].PBZT; |
|
// pbb.QZ = listpb[0].QZ; |
|
// pbb.SQR = listpb[0].SQR; |
|
// pbb.SQSJ = listpb[0].SQSJ; |
|
// pbb.SSLX = listpb[0].SSLX; |
|
// pbb.SSMC = listpb[0].SSMC; |
|
// pbb.SSQJD = listpb[0].SSQJD; |
|
// pbb.SSSC = listpb[0].SSSC; |
|
// pbb.SSSID = listpb[0].SSSID; |
|
// pbb.SSSQJSC = listpb[0].SSSQJSC; |
|
// pbb.SSZSC = listpb[0].SSZSC; |
|
// pbb.XGR = listpb[0].XGR; |
|
// pbb.XGSJ = listpb[0].XGSJ; |
|
// pbb.YSID = listpb[0].YSID; |
|
// pbb.ZLKH = listpb[0].ZLKH; |
|
// pbb.ZYH = listpb[0].ZYH; |
|
// pbb.KSSJ = pbkssj; |
|
// pbb.KSRQ = pbkssj.Date; |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Modified; |
|
// myModel.SaveChanges(); |
|
// myModel.Entry(pbb).State = System.Data.Entity.EntityState.Detached; |
|
// pbkssj = pbkssj.AddHours((double)pbb.SSZSC); |
|
// pm = pm - (double)pbb.SSZSC; |
|
// ypb.Add(listssspb.Where(a => a.ID == pbb.ID).Single()); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// else |
|
// { |
|
// if (pm != pmsc) |
|
// { |
|
// pbkssj = Convert.ToDateTime(pbkssj.AddDays(1).Date.ToString("yyyy-MM-dd") + " " + mtkssj); |
|
// if (pbkssj <= DateTime.Now.AddDays(6).Date.AddSeconds(-1)) |
|
// { |
|
// am = amsc; |
|
// pm = pmsc; |
|
// DiGuiPaiBan(pbkssj, sssxxsj, listpb, listssspb, am, pm, ypb, pmkssj); |
|
// } |
|
// } |
|
// //如果上午下午都没有数据证明该手术室没有手术不需要排班 |
|
// //或者有的手术总时长比上午时长和下午时长都大不能自动排班 |
|
// //继续对其他手术室进行排班 |
|
// } |
|
// } |
|
|
|
// } |
|
//} |
|
#endregion |
|
|
|
|
|
} |
|
}
|
|
|