tijian_jichuang/Code/SOH.BLL.Host/PaiDuiJiaoHaoBLL.cs
2025-02-20 11:54:48 +08:00

2309 lines
97 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SOH.Data;
using SOH.Entities;
using EAS.Services;
using EAS.Data;
using EAS.Data.Linq;
using EAS.Data.ORM;
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using System.Threading;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using SOH.Entities.DTO;
namespace SOH.BLL
{
[ServiceObject("排队叫号")]
[ServiceBind(typeof(IPaiDuiJiaoHao))]
public class PaiDuiJiaoHaoBLL : IPaiDuiJiaoHao
{
static string[] xs = new string[] { "欧阳", "太史", "端木", "上官", "司马", "东方", "独孤", "南宫", "万俟", "闻人", "夏侯", "诸葛", "尉迟", "公羊", "赫连", "澹台", "皇甫", "宗政", "濮阳", "公冶", "太叔", "申屠", "公孙", "慕容", "仲孙", "钟离", "长孙", "宇文", "司徒", "鲜于", "司空", "闾丘", "子车", "亓官", "司寇", "巫马", "公西", "颛孙", "壤驷", "公良", "漆雕", "乐正", "宰父", "谷梁", "拓跋", "夹谷", "轩辕", "令狐", "段干", "百里", "呼延", "东郭", "南门", "羊舌", "微生", "公户", "公玉", "公仪", "梁丘", "公仲", "公上", "公门", "公山", "公坚", "左丘", "公伯", "西门", "公祖", "第五", "公乘", "贯丘", "公皙", "南荣", "东里", "东宫", "仲长", "子书", "子桑", "即墨", "达奚", "褚师", "吴铭", };
class qtdj
{
public int tm
{
get; set;
}
public string xm { get; set; }
public short xb { get; set; }
public short nl { get; set; }
public DateTime tjsj { get; set; }
public List<int> xms { get; set; }
public string txm { get; set; }
/// <summary>
/// 客户类型1 VIP 2普通
/// </summary>
public int khlx { get; set; }
}
public string sendPaiduixinxi2(int tm)
{
try
{
/*
if (prod == null)
{
factory = new ConnectionFactory("tcp://localhost:61616/");
connection = factory.CreateConnection();
connection.ClientId = System.Net.Dns.GetHostName();
session = connection.CreateSession();
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("qtdj"));
}*/
/*
ITextMessage itm = prod.CreateTextMessage();*/
var db = new DbEntities();
string ttm = tm.ToString("0000000000");
var qt = new qtdj();
qt.tm = tm;
if (ttm.StartsWith("1"))
{
var ttgzb = db.t_ttgzbs.First(t => t.tm == tm);
qt.xm = ttgzb.xm;
qt.nl = ttgzb.nl;
qt.xb = ttgzb.xb;
qt.khlx = ttgzb.khlx;
}
else
{
var ttgzb = db.t_grgzbs.First(t => t.tm == tm);
qt.xm = ttgzb.xm;
qt.nl = ttgzb.nl;
qt.xb = ttgzb.xb;
qt.khlx = ttgzb.khlx;
}
qt.txm = qt.xm;
qt.xms = new List<int>();
var xms = db.t_tempdjxms.Where(t => t.tm == tm && t.ztz == 0).ToList();
xms.ForEach(t =>
{
qt.xms.Add(t.zhbm);
});
qt.tjsj = DateTime.Now;
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\log"))
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\log");
}
string pdpath = AppDomain.CurrentDomain.BaseDirectory + "\\log" + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
StreamWriter sw = new StreamWriter(pdpath, true);
sw.WriteLine(DateTime.Now.ToString() + "\t" + Newtonsoft.Json.JsonConvert.SerializeObject(qt));
sw.Close();
//if (Array.IndexOf(xs, qt.xm.Substring(0, 2)) == -1)
//{
// if (qt.xb == 1)
// {
// qt.xm = qt.xm.Substring(0, 1) + "女士(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
// else
// {
// qt.xm = qt.xm.Substring(0, 1) + "先生(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
//}
//else
//{
// for (int i = 0; i < xs.Length; i++)
// {
// if (qt.xm.Substring(0, 2).Equals(xs[i]))
// {
// if (qt.xb == 1)
// {
// qt.xm = xs[i] + "女士(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
// else
// {
// qt.xm = xs[i] + "先生(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
// }
// }
//}
//string sqlyssjSelect = "select * from pd_yssj where qtxtid=" + qt.tm.ToString();
//var sqlyssjSdr1 = db.DataAccessor.QueryDataTable(sqlyssjSelect);
//if (sqlyssjSdr1.Rows.Count > 0)
//{
// string delyssj = "";
// //string del
//}
string sqlyssj = @"INSERT INTO [pd_yssj]
([xm]
,[xb]
,[tjsj]
,[nl]
,[yssj]
,[qtxtid],txm,khlx)
VALUES
(@xm
,@xb
,@tjsj
,@nl
,@yssj
,@qtxtid,@txm,@khlx) select @@IDENTITY
";
SqlParameter[] paras = { new SqlParameter("xm",SqlDbType.VarChar),
new SqlParameter("xb",SqlDbType.SmallInt),
new SqlParameter("tjsj",SqlDbType.DateTime),
new SqlParameter("nl",SqlDbType.Int),
new SqlParameter("yssj",SqlDbType.VarChar),
new SqlParameter("qtxtid",SqlDbType.VarChar),
new SqlParameter("txm",SqlDbType.VarChar),
new SqlParameter("khlx",SqlDbType.VarChar)
};
paras[0].Value = qt.xm;
paras[1].Value = qt.xb;
paras[2].Value = qt.tjsj;
paras[3].Value = qt.nl;
paras[4].Value = System.Web.HttpUtility.UrlDecode(Newtonsoft.Json.JsonConvert.SerializeObject(qt));
paras[5].Value = qt.tm.ToString();
paras[6].Value = qt.txm;
paras[7].Value = qt.khlx;
EAS.Data.Access.ParameterCollection easparas = new EAS.Data.Access.ParameterCollection();
foreach (var para in paras)
{
easparas.Add(para.ParameterName, para.DbType, para.Value);
}
int ysid = int.Parse(db.DataAccessor.QueryScalar(sqlyssj, easparas).ToString());
string sql_pdry = "select ysid from pd_rylb where qtxtid='" + qt.tm + "'";
var dr1 = db.DataAccessor.QueryDataTable(sql_pdry);
int pdryid = 0;
if (dr1.Rows.Count > 0)
{
pdryid = (int)dr1.Rows[0][0];
//dr1.Close();
sqlyssj = "select id from pd_rylb where ysid=" + pdryid;
DataTable dt = db.DataAccessor.QueryDataTable(sqlyssj);
if (dt.Rows.Count > 0)
{
pdryid = (int)dt.Rows[0][0];
}
}
else
{
//dr1.Close();
string sql_pdrylb = @"INSERT INTO [pd_rylb]
([xm]
,[xb]
,[pdsj]
,[nl]
,[ysid]
,[qtxtid],txm,khlx)
VALUES
(@xm
,@xb
,@pdsj
,@nl
,@ysid
,@qtxtid,@txm,@khlx)
select @@IDENTITY
";
SqlParameter[] paras_pdry = { new SqlParameter("xm",SqlDbType.VarChar),
new SqlParameter("xb",SqlDbType.TinyInt),
new SqlParameter("pdsj",SqlDbType.DateTime),
new SqlParameter("nl",SqlDbType.Int),
new SqlParameter("ysid",SqlDbType.Int),
new SqlParameter("qtxtid",SqlDbType.VarChar),
new SqlParameter("txm",SqlDbType.VarChar),
new SqlParameter("khlx",SqlDbType.VarChar)
};
paras_pdry[0].Value = qt.xm;
paras_pdry[1].Value = qt.xb;
paras_pdry[2].Value = DateTime.Now;
paras_pdry[3].Value = qt.nl;
paras_pdry[4].Value = ysid;
paras_pdry[5].Value = qt.tm.ToString();
paras_pdry[6].Value = qt.txm;
paras_pdry[7].Value = qt.khlx;
easparas = new EAS.Data.Access.ParameterCollection();
foreach (var para in paras_pdry)
{
easparas.Add(para.ParameterName, para.DbType, para.Value);
}
pdryid = int.Parse(db.DataAccessor.QueryScalar(sql_pdrylb, easparas).ToString());
}
qt.xms.ForEach(t =>
{
string sql_xm = @"select a.xmid from pd_ksxm a join pd_wlks b
on a.ksid=b.id join pd_qtxtxmdy c
on a.xmid=c.xmid where b.isOpen=1 and c.qtxtxmid=" + t;
var dr = db.DataAccessor.QueryDataTable(sql_xm);
int xmid = 0;
if (dr.Rows.Count > 0)
{
xmid = (int)dr.Rows[0][0];
}
// dr.Close();
if (xmid != 0)
{
string sql_cz = "select count(1) from pd_pdxms where pdid=" + pdryid + " and xmid=" + xmid;
int count = int.Parse(db.DataAccessor.QueryScalar(sql_cz).ToString());
if (count == 0)
{
string sql_pdxm = @"INSERT INTO [pd_pdxms]
([pdid]
,[xmid]
,[zxbz]
)
VALUES
(" + pdryid + @"
," + xmid + @"
,0
)
";
db.DataAccessor.Execute(sql_pdxm);
}
}
});
/*
itm.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(qt));
prod.Send(itm, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);*/
//Thread.Sleep(100);
string wjwks = "select ksid from pd_kspdlb where pdid=" + pdryid + " and zxbz in (0,1)";
DataTable wjdt = db.DataAccessor.QueryDataTable(wjwks);
if (wjdt.Rows.Count > 0)
{
wjwks = "select ksmc from pd_wlks where isOpen=1 and id=" + wjdt.Rows[0][0].ToString();
wjdt = db.DataAccessor.QueryDataTable(wjwks);
if (wjdt.Rows.Count > 0)
{
return wjdt.Rows[0][0].ToString();
}
}
return process(tm.ToString());
}
catch (Exception ex)
{
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\log"))
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\log");
}
string pdpath = AppDomain.CurrentDomain.BaseDirectory + "\\log" + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
StreamWriter sw = new StreamWriter(pdpath, true);
sw.WriteLine("error\t" + DateTime.Now.ToString() + "\t" + ex.Message);
sw.Close();
EAS.Loggers.Logger.Info(ex.Message);
return null;
}
}
public static string sendPaiduixinxi(int tm)
{
try
{
/*
if (prod == null)
{
factory = new ConnectionFactory("tcp://localhost:61616/");
connection = factory.CreateConnection();
connection.ClientId = System.Net.Dns.GetHostName();
session = connection.CreateSession();
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("qtdj"));
}*/
/*
ITextMessage itm = prod.CreateTextMessage();*/
var db = new DbEntities();
string ttm = tm.ToString("0000000000");
var qt = new qtdj();
qt.tm = tm;
if (ttm.StartsWith("1"))
{
var ttgzb = db.t_ttgzbs.First(t => t.tm == tm);
qt.xm = ttgzb.xm;
qt.nl = ttgzb.nl;
qt.xb = ttgzb.xb;
qt.khlx = ttgzb.khlx;
}
else
{
var ttgzb = db.t_grgzbs.First(t => t.tm == tm);
qt.xm = ttgzb.xm;
qt.nl = ttgzb.nl;
qt.xb = ttgzb.xb;
qt.khlx = ttgzb.khlx;
}
qt.txm = qt.xm;
qt.xms = new List<int>();
var xms = db.t_tempdjxms.Where(t => t.tm == tm && t.ztz == 0).ToList();
xms.ForEach(t =>
{
qt.xms.Add(t.zhbm);
});
qt.tjsj = DateTime.Now;
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\log"))
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\log");
}
string pdpath = AppDomain.CurrentDomain.BaseDirectory + "\\log" + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
StreamWriter sw = new StreamWriter(pdpath, true);
sw.WriteLine(DateTime.Now.ToString() + "\t" + Newtonsoft.Json.JsonConvert.SerializeObject(qt));
sw.Close();
//if (Array.IndexOf(xs, qt.xm.Substring(0, 2)) == -1)
//{
// if (qt.xb == 1)
// {
// qt.xm = qt.xm.Substring(0, 1) + "女士(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
// else
// {
// qt.xm = qt.xm.Substring(0, 1) + "先生(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
//}
//else
//{
// for (int i = 0; i < xs.Length; i++)
// {
// if (qt.xm.Substring(0, 2).Equals(xs[i]))
// {
// if (qt.xb == 1)
// {
// qt.xm = xs[i] + "女士(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
// else
// {
// qt.xm = xs[i] + "先生(" + qt.tm.ToString().Substring(qt.tm.ToString().Length - 3, 3) + ")";
// }
// }
// }
//}
//string sqlyssjSelect = "select * from pd_yssj where qtxtid=" + qt.tm.ToString();
//var sqlyssjSdr1 = db.DataAccessor.QueryDataTable(sqlyssjSelect);
//if (sqlyssjSdr1.Rows.Count > 0)
//{
// string delyssj = "";
// //string del
//}
string sqlyssj = @"INSERT INTO [pd_yssj]
([xm]
,[xb]
,[tjsj]
,[nl]
,[yssj]
,[qtxtid],txm,khlx)
VALUES
(@xm
,@xb
,@tjsj
,@nl
,@yssj
,@qtxtid,@txm,@khlx) select @@IDENTITY
";
SqlParameter[] paras = { new SqlParameter("xm",SqlDbType.VarChar),
new SqlParameter("xb",SqlDbType.SmallInt),
new SqlParameter("tjsj",SqlDbType.DateTime),
new SqlParameter("nl",SqlDbType.Int),
new SqlParameter("yssj",SqlDbType.VarChar),
new SqlParameter("qtxtid",SqlDbType.VarChar),
new SqlParameter("txm",SqlDbType.VarChar),
new SqlParameter("khlx",SqlDbType.VarChar)
};
paras[0].Value = qt.xm;
paras[1].Value = qt.xb;
paras[2].Value = qt.tjsj;
paras[3].Value = qt.nl;
paras[4].Value = System.Web.HttpUtility.UrlDecode(Newtonsoft.Json.JsonConvert.SerializeObject(qt));
paras[5].Value = qt.tm.ToString();
paras[6].Value = qt.txm;
paras[7].Value = qt.khlx;
EAS.Data.Access.ParameterCollection easparas = new EAS.Data.Access.ParameterCollection();
foreach (var para in paras)
{
easparas.Add(para.ParameterName, para.DbType, para.Value);
}
int ysid = int.Parse(db.DataAccessor.QueryScalar(sqlyssj, easparas).ToString());
string sql_pdry = "select ysid from pd_rylb where qtxtid='" + qt.tm + "'";
var dr1 = db.DataAccessor.QueryDataTable(sql_pdry);
int pdryid = 0;
if (dr1.Rows.Count > 0)
{
pdryid = (int)dr1.Rows[0][0];
//dr1.Close();
sqlyssj = "select id from pd_rylb where ysid=" + pdryid;
DataTable dt = db.DataAccessor.QueryDataTable(sqlyssj);
if (dt.Rows.Count > 0)
{
pdryid = (int)dt.Rows[0][0];
}
}
else
{
//dr1.Close();
string sql_pdrylb = @"INSERT INTO [pd_rylb]
([xm]
,[xb]
,[pdsj]
,[nl]
,[ysid]
,[qtxtid],txm,khlx)
VALUES
(@xm
,@xb
,@pdsj
,@nl
,@ysid
,@qtxtid,@txm,@khlx)
select @@IDENTITY
";
SqlParameter[] paras_pdry = { new SqlParameter("xm",SqlDbType.VarChar),
new SqlParameter("xb",SqlDbType.TinyInt),
new SqlParameter("pdsj",SqlDbType.DateTime),
new SqlParameter("nl",SqlDbType.Int),
new SqlParameter("ysid",SqlDbType.Int),
new SqlParameter("qtxtid",SqlDbType.VarChar),
new SqlParameter("txm",SqlDbType.VarChar),
new SqlParameter("khlx",SqlDbType.VarChar)
};
paras_pdry[0].Value = qt.xm;
paras_pdry[1].Value = qt.xb;
paras_pdry[2].Value = DateTime.Now;
paras_pdry[3].Value = qt.nl;
paras_pdry[4].Value = ysid;
paras_pdry[5].Value = qt.tm.ToString();
paras_pdry[6].Value = qt.txm;
paras_pdry[7].Value = qt.khlx;
easparas = new EAS.Data.Access.ParameterCollection();
foreach (var para in paras_pdry)
{
easparas.Add(para.ParameterName, para.DbType, para.Value);
}
pdryid = int.Parse(db.DataAccessor.QueryScalar(sql_pdrylb, easparas).ToString());
}
qt.xms.ForEach(t =>
{
string sql_xm = @"select a.xmid from pd_ksxm a join pd_wlks b
on a.ksid=b.id join pd_qtxtxmdy c
on a.xmid=c.xmid where b.isOpen=1 and c.qtxtxmid=" + t;
var dr = db.DataAccessor.QueryDataTable(sql_xm);
int xmid = 0;
if (dr.Rows.Count > 0)
{
xmid = (int)dr.Rows[0][0];
}
// dr.Close();
if (xmid != 0)
{
string sql_cz = "select count(1) from pd_pdxms where pdid=" + pdryid + " and xmid=" + xmid;
int count = int.Parse(db.DataAccessor.QueryScalar(sql_cz).ToString());
if (count == 0)
{
string sql_pdxm = @"INSERT INTO [pd_pdxms]
([pdid]
,[xmid]
,[zxbz]
)
VALUES
(" + pdryid + @"
," + xmid + @"
,0
)
";
db.DataAccessor.Execute(sql_pdxm);
}
}
});
/*
itm.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(qt));
prod.Send(itm, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);*/
//Thread.Sleep(100);
string wjwks = "select ksid from pd_kspdlb where pdid=" + pdryid + " and zxbz in (0,1)";
DataTable wjdt = db.DataAccessor.QueryDataTable(wjwks);
if (wjdt.Rows.Count > 0)
{
wjwks = "select ksmc from pd_wlks where isOpen=1 and id=" + wjdt.Rows[0][0].ToString();
wjdt = db.DataAccessor.QueryDataTable(wjwks);
if (wjdt.Rows.Count > 0)
{
return wjdt.Rows[0][0].ToString();
}
}
return process(tm.ToString());
}
catch (Exception ex)
{
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\log"))
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\log");
}
string pdpath = AppDomain.CurrentDomain.BaseDirectory + "\\log" + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
StreamWriter sw = new StreamWriter(pdpath, true);
sw.WriteLine("error\t" + DateTime.Now.ToString() + "\t" + ex.Message);
sw.Close();
EAS.Loggers.Logger.Info(ex.Message);
return null;
}
}
public OperationResult deletewlks(string ksid)
{
//throw new NotImplementedException();
OperationResult or = new OperationResult();
using (var db = new DbEntities())
{
try
{
int iid = int.Parse(ksid);
db.pd_wlks.Delete(t => t.id == iid);
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
return or;
}
or.State = 1;
or.Message = "删除成功!";
return or;
}
}
public OperationResult deletewlxm(string xmid)
{
//throw new NotImplementedException();
OperationResult or = new OperationResult();
using (var db = new DbEntities())
{
try
{
int iid = int.Parse(xmid);
db.pd_xm.Delete(t => t.id == iid);
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
return or;
}
or.State = 1;
or.Message = "删除成功!";
return or;
}
}
public OperationResult Inserpdksxm(int ksbm, List<int> xmbm)
{
OperationResult or = new OperationResult();
using (var db = new DbEntities())
{
try
{
db.pd_ksxm.Delete(t => t.ksid == ksbm);
for (int i = 0; i < xmbm.Count; i++)
{
pd_ksxm ksxm = new pd_ksxm();
ksxm.ksid = ksbm;
ksxm.xmid = Convert.ToInt32(xmbm[i]);
//al1.Add(mx1);
db.pd_ksxm.Insert(ksxm);
}
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
return or;
}
or.State = 1;
or.Message = "保存成功!";
return or;
}
}
public OperationResult Insertqtxmdy(int pdxmid, List<int> zhbmlist)
{
OperationResult or = new OperationResult();
using (var db = new DbEntities())
{
try
{
db.pd_qtxtxmdy.Delete(t => t.xmid == pdxmid);
for (int i = 0; i < zhbmlist.Count; i++)
{
pd_qtxtxmdy qtxmdy = new pd_qtxtxmdy();
qtxmdy.xmid = pdxmid;
qtxmdy.qtxtxmid = Convert.ToInt32(zhbmlist[i]);
//al1.Add(mx1);
db.pd_qtxtxmdy.Insert(qtxmdy);
}
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
return or;
}
or.State = 1;
or.Message = "保存成功!";
return or;
}
}
public List<pd_wlks> getwlkss()
{
//throw new NotImplementedException();
using (var db = new DbEntities())
{
return db.pd_wlks.ToList();
}
}
public List<pd_rylb> getrylb()
{
//throw new NotImplementedException();
using (var db = new DbEntities())
{
return db.pd_rylb.ToList();
}
}
public List<pd_kspdlb> getkspdlb()
{
//throw new NotImplementedException();
using (var db = new DbEntities())
{
return db.pd_kspdlb.ToList();
}
}
public List<pd_xm> getwlxms()
{
//throw new NotImplementedException();
using (var db = new DbEntities())
{
return db.pd_xm.ToList();
}
}
public List<pd_xm> GetpdksxmBypdks(int ksbm)
{
using (var db = new DbEntities())
{
var data = from k in db.pd_wlks
join kx in db.pd_ksxm
on k.id equals kx.ksid
join x in db.pd_xm
on kx.xmid equals x.id
where k.id == ksbm
select x;
return data.ToList();
}
}
public List<t_zhxm> GetZhxmListBypdxmid(int xmid)
{
using (var db = new DbEntities())
{
var data = from k in db.pd_qtxtxmdy
join z in db.t_zhxms on k.qtxtxmid equals z.zhbm
where k.xmid == xmid
select z;
return data.ToList();
}
}
public OperationResult tjxgtjks(pd_wlks wlks)
{
OperationResult or = new OperationResult();
using (var db = new DbEntities())
{
try
{
//throw new NotImplementedException();
if (wlks.id == 0)
{
var w = db.pd_wlks.FirstOrDefault(t => t.ksmc == wlks.ksmc);
if (w != null)
{
or.State = 2;
or.Message = "物理科室名称不能重复!";
return or;
}
wlks.id = new BLL.BasicBll().GetMax(wlks.DbTableName, 1);
db.pd_wlks.Insert(wlks);
}
else
{
var w = db.pd_wlks.FirstOrDefault(t => t.id != wlks.id && t.ksmc == wlks.ksmc);
if (w != null)
{
or.State = 3;
or.Message = "物理科室名称不能重复!";
return or;
}
db.pd_wlks.Update(wlks);
}
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
return or;
}
or.State = 1;
or.Message = Newtonsoft.Json.JsonConvert.SerializeObject(wlks);
return or;
}
}
public OperationResult tjxgtjxm(pd_xm wlxm)
{
OperationResult or = new OperationResult();
using (var db = new DbEntities())
{
try
{
//throw new NotImplementedException();
if (wlxm.id == 0)
{
var w = db.pd_xm.FirstOrDefault(t => t.xmmc == wlxm.xmmc);
if (w != null)
{
or.State = 2;
or.Message = "排队项目名称不能重复!";
return or;
}
wlxm.id = new BLL.BasicBll().GetMax(wlxm.DbTableName, 1);
db.pd_xm.Insert(wlxm);
}
else
{
var w = db.pd_xm.FirstOrDefault(t => t.id != wlxm.id && t.xmmc == wlxm.xmmc);
if (w != null)
{
or.State = 3;
or.Message = "排队项目名称不能重复!";
return or;
}
db.pd_xm.Update(wlxm);
}
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
return or;
}
or.State = 1;
or.Message = Newtonsoft.Json.JsonConvert.SerializeObject(wlxm);
return or;
}
}
static IConnectionFactory factory = null;
static IConnection connection = null;
static ISession session = null;
private static void connMQ()
{
if (factory == null || connection == null || session == null)
{
factory = new ConnectionFactory("tcp://localhost:61616/");
connection = factory.CreateConnection();
session = connection.CreateSession();
}
}
public void kstj(int tm, string ksid)
{
connMQ();
IMessageProducer prod1;
try
{
prod1 = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
//string tm = cs[0];
var db = new DbEntities();
string ks = ksid;
string sql = "select id from pd_rylb where qtxtid='" + tm + "'";
var dr = db.DataAccessor.QueryDataTable(sql);
if (dr.Rows.Count > 0)
{
string pdid = dr.Rows[0][0].ToString();
//dr.Close();
//2016年3月21日08:09:10 李延璋,解决客人没有按照屏幕排队,会造成排队混乱的问题
string sql_selKspdlb = "select ksid from pd_kspdlb where pd_kspdlb.zxbz in (0,1) and pd_kspdlb.pdid=" + pdid + " and ksid=" + ks;
var drKspdlb = db.DataAccessor.QueryDataTable(sql_selKspdlb);
if (drKspdlb.Rows.Count > 0)
{
//string pdksid = drKspdlb[0].ToString();
// drKspdlb.Close();
//
/*
string sql_upKspdlb1 = "update pd_kspdlb set ksid=" + ks + " where pd_kspdlb.zxbz=1 and pd_kspdlb.pdid=" + pdid;
DbHelperSQL.ExecuteSql(sql_upKspdlb1);
string sql_upKspdlb = "update pd_kspdlb set ksid=" + ks + " where pd_kspdlb.zxbz=0 and pd_kspdlb.pdid=" + pdid;
DbHelperSQL.ExecuteSql(sql_upKspdlb);
string sql_upPdxms2 = "update pd_pdxms set zxbz=0,zxsj='',pdsj='' where pd_pdxms.zxbz=2 and pd_pdxms.pdid=" + pdid;
DbHelperSQL.ExecuteSql(sql_upPdxms2);
string sql_upPdxms = "update pd_pdxms set zxbz=0,zxsj='',pdsj='' where pd_pdxms.zxbz=1 and pd_pdxms.pdid=" + pdid;
DbHelperSQL.ExecuteSql(sql_upPdxms);
string sql_upKspdlb = "update pd_kspdlb set ksid=" + ks + " where pd_kspdlb.zxbz=0 and pd_kspdlb.pdid=" + pdid;
DbHelperSQL.ExecuteSql(sql_upKspdlb);
string sql_upPdxms1 = "update pd_pdxms set zxbz=1,zxsj=GETDATE(),pdsj=GETDATE() from pd_ksxm where pd_ksxm.xmid=pd_pdxms.xmid"+
" and pd_ksxm.ksid="+ks+" and pd_pdxms.pdid="+pdid;
DbHelperSQL.ExecuteSql(sql_upPdxms1);*/
//
}
else
{
sql = "select zxbz from pd_kspdlb where pd_kspdlb.pdid=" + pdid + " and ksid=" + ks;
DataTable zxbztable = db.DataAccessor.QueryDataTable(sql);
if (zxbztable.Rows.Count > 0 && zxbztable.Rows[0][0].ToString() == "2")
{
return;
}
else
{
sql_selKspdlb = "select ksid from pd_kspdlb where pd_kspdlb.zxbz in (0,1) and pd_kspdlb.pdid=" + pdid;//查询当前正在排队的科室
drKspdlb = db.DataAccessor.QueryDataTable(sql_selKspdlb);
if (drKspdlb.Rows.Count > 0)
{
string pdksid = drKspdlb.Rows[0][0].ToString();
//淄博
if (pdksid == "39" || pdksid == "40" || pdksid == "52" || pdksid == "73" || pdksid == "75" || pdksid == "65")
{
return;
}
//德州
/*if (pdksid == "14" || pdksid == "15" || pdksid == "16")
{
return;
}*/
sql = "select count(1) from pd_pdxms,pd_ksxm where pd_pdxms.pdid=" + pdid + " and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks;
if (db.DataAccessor.QueryScalar(sql).ToString() != "0")
{
string delsql = "delete from pd_kspdlb where pdid=" + pdid + " and ksid=" + pdksid;
db.DataAccessor.Execute(delsql);
sql = "update pd_pdxms set zxbz=0,pdsj=null,zxsj=null,wcsj=null from pd_ksxm where pd_pdxms.xmid=pd_ksxm.xmid and pd_ksxm.ksid=" + pdksid + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql);
ITextMessage im1 = prod1.CreateTextMessage();
im1.Properties.SetString("ks", pdksid);
var ksm = new kstjMessage();
string sql_xm1 = "select xm,xb from pd_rylb where id=" + pdid;
string xm1 = "错误";
string xb1 = "错误";
var xmdr1 = db.DataAccessor.QueryDataTable(sql_xm1);
if (xmdr1.Rows.Count > 0)
{
xm1 = xmdr1.Rows[0][0].ToString();
xb1 = xmdr1.Rows[0][1].ToString() == "0" ? "男" : "女";
}
//xmdr1.Close();
ksm.xm = xm1 + "(" + xb1 + ")";
ksm.pdid = int.Parse(pdid);
ksm.pdsj = DateTime.Now;
ksm.zxzt = 2;
im1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(ksm));
prod1.Send(im1);//删除原来科室的排队信息
sql = "insert into pd_kspdlb(pdid,ksid,pdsj,zxbz,yjsysj) values(" + pdid + "," + ks + ",getdate(),0,0)";
db.DataAccessor.Execute(sql);
sql = "update pd_pdxms set zxbz=1,pdsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=0 and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid + " and pd_pdxms.xmid=pd_ksxm.xmid";
db.DataAccessor.Execute(sql);
ksm = new kstjMessage();
//string sql_xm1 = "select xm from pd_rylb where id=" + pdid;
//string xm1 = "错误";
//var xmdr1 = db.DataAccessor.QueryDataTable(sql_xm1);
//if (xmdr1.Rows.Count > 0)
//{
// xm1 = xmdr1.Rows[0][0].ToString();
//}
//xmdr1.Close();
im1.Properties.SetString("ks", ksid);
ksm.xm = xm1 + "(" + xb1 + ")";
ksm.pdid = int.Parse(pdid);
ksm.pdsj = DateTime.Now;
ksm.zxzt = 1;
im1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(ksm));
prod1.Send(im1);//加入新的科室
prod1 = null;
}
else
{
return;
}
}
else
{
//drKspdlb.Close();
sql = "select count(1) from pd_pdxms,pd_ksxm where pd_pdxms.pdid=" + pdid + " and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks;
if (db.DataAccessor.QueryScalar(sql).ToString() != "0")
{
ITextMessage im1 = prod1.CreateTextMessage();
im1.Properties.SetString("ks", ks);
var ksm = new kstjMessage();
string sql_xm1 = "select xm,xb from pd_rylb where id=" + pdid;
string xm1 = "错误";
string xb1 = "错误";
var xmdr1 = db.DataAccessor.QueryDataTable(sql_xm1);
if (xmdr1.Rows.Count > 0)
{
xm1 = xmdr1.Rows[0][0].ToString();
xb1 = xmdr1.Rows[0][1].ToString() == "0" ? "男" : "女";
}
// xmdr1.Close();
ksm.xm = xm1 + "(" + xb1 + ")";
ksm.pdid = int.Parse(pdid);
ksm.pdsj = DateTime.Now;
ksm.zxzt = 0;
im1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(ksm));
prod1.Send(im1);//删除原来科室的排队信息
prod1 = null;
sql = "insert into pd_kspdlb(pdid,ksid,pdsj,zxbz,yjsysj) values(" + pdid + "," + ks + ",getdate(),0,0)";
db.DataAccessor.Execute(sql);
sql = "update pd_pdxms set zxbz=1,pdsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=0 and pd_pdxms.xmid=pd_ksxm.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql);
}
else
{
return;
}
}
}
}
string sql_up = "update pd_pdxms set zxbz=2,zxsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=1 and pd_pdxms.xmid=pd_ksxm.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql_up);
sql_up = "update pd_kspdlb set zxbz=1,zxsj=getdate() where zxbz=0 and ksid=" + ks + " and pdid=" + pdid;
db.DataAccessor.Execute(sql_up);
ITextMessage itm1 = prod1.CreateTextMessage();
itm1.Properties.SetString("ks", ks);
var pdmsg = new kstjMessage();
string sql_xm = "select xm,xb from pd_rylb where id=" + pdid;
string xm = "错误";
string xb = "错误";
var xmdr = db.DataAccessor.QueryDataTable(sql_xm);
if (xmdr.Rows.Count > 0)
{
xm = xmdr.Rows[0][0].ToString();
xb = xmdr.Rows[0][1].ToString() == "0" ? "男" : "女";
}
pdmsg.xm = xm + "(" + xb + ")";
pdmsg.pdid = int.Parse(pdid);
pdmsg.pdsj = DateTime.Now;
pdmsg.zxzt = 1;
itm1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(pdmsg));
prod1.Send(itm1);
prod1 = null;
}
else
{
//dr.Close();
}
//ITextMessage itm = tprod.CreateTextMessage();
//string ttm = tm.ToString("0000000000");
//itm.Text = tm + "," + ksid;
//tprod.Send(itm, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
}
catch (Exception ex)
{
EAS.Loggers.Logger.Info(ex.Message);
}
}
public string wctj(string text, string ksid)
{
connMQ();
//IMessageProducer prod1;
try
{
var tprod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
ITextMessage itm = tprod.CreateTextMessage();
var db = new DbEntities();
string tm = int.Parse(text).ToString();
string ks = ksid;
string sql = "select id from pd_rylb where qtxtid='" + tm + "'";
string bkwc = "";
var dr = db.DataAccessor.QueryDataTable(sql);
if (dr.Rows.Count > 0)
{
string pdid = dr.Rows[0][0].ToString();
//dr.Close();
sql = "select zxbz from pd_kspdlb where pdid=" + pdid + " and ksid=" + ks;
DataTable dt = db.DataAccessor.QueryDataTable(sql);
if (dt.Rows.Count > 0)
{
string zxbz = dt.Rows[0][0].ToString();
if (zxbz == "0")
{
sql = "update pd_pdxms set zxbz=2,zxsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=1 and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql);
sql = "update pd_kspdlb set zxbz=1,zxsj=getdate() where zxbz=0 and ksid=" + ks + " and pdid=" + pdid;
db.DataAccessor.Execute(sql);
}
else if (zxbz == "2")
{
bkwc = "完成";
}
}
else
{
sql = "select count(1) from pd_pdxms,pd_ksxm where pd_pdxms.pdid=" + pdid + " and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks;
if (db.DataAccessor.QueryScalar(sql).ToString() != "0")
{
sql = "insert into pd_kspdlb(pdid,ksid,pdsj,zxbz,yjsysj) values(" + pdid + "," + ks + ",getdate(),0,0)";
db.DataAccessor.Execute(sql);
sql = "update pd_pdxms set zxbz=1,pdsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=0 and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql);
sql = "update pd_pdxms set zxbz=2,zxsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=1 and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql);
sql = "update pd_kspdlb set zxbz=1,zxsj=getdate() where zxbz=0 and ksid=" + ks + " and pdid=" + pdid;
db.DataAccessor.Execute(sql);
}
else
{
bkwc = "完成";
}
}
//string sql_up = "update pd_pdxms set zxbz=3,wcsj=GETDATE() from pd_xm,pd_ksxm where pd_pdxms.zxbz=2 and pd_xm.id=pd_pdxms.xmid and pd_xm.id=pd_ksxm.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
string sql_up = "update pd_pdxms set zxbz=3,wcsj=GETDATE() from pd_ksxm where pd_pdxms.zxbz=2 and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql_up);
sql_up = "update pd_kspdlb set zxbz=2,wcsj=getdate() where zxbz=1 and ksid=" + ks + " and pdid=" + pdid;
db.DataAccessor.Execute(sql_up);
ITextMessage itm1 = tprod.CreateTextMessage();
itm1.Properties.SetString("ks", ks);
var pdmsg = new kstjMessage();
string sql_xm = "select xm,xb from pd_rylb where id=" + pdid;
string xm = "错误";
string xb = "错误";
var xmdr = db.DataAccessor.QueryDataTable(sql_xm);
if (xmdr.Rows.Count > 0)
{
xm = xmdr.Rows[0][0].ToString();
xb = xmdr.Rows[0][1].ToString() == "0" ? "男" : "女";
}
// xmdr.Close();
pdmsg.xm = xm + "(" + xb + ")";
pdmsg.pdid = int.Parse(pdid);
pdmsg.pdsj = DateTime.Now;
pdmsg.zxzt = 2;
itm1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(pdmsg));
tprod.Send(itm1);
tprod = null;
//if (bkwc == "完成")
//{
sql = @"select top 1 b.ksmc from pd_kspdlb a join pd_wlks b on a.ksid=b.id
where (a.zxbz=0 or a.zxbz=1) and b.isOpen=1 and a.pdid=" + pdid;
var dqksdt = db.DataAccessor.QueryDataTable(sql);
if (dqksdt.Rows.Count > 0)
{
return dqksdt.Rows[0][0].ToString();
}
else
{
string ksname = process(tm, ks);
return ksname;
}
//}
}
else
{
return "NO";
}
}
catch (Exception ex)
{
EAS.Loggers.Logger.Info(ex.Message);
return null;
}
}
private static string process(string text, string yksid = "0")
{
//throw new NotImplementedException();
string ksname = null;
using (var db = new DbEntities())
{
// for (int xh = 0; xh < 10; xh++)
//{
string sql_pdryid = "select id,xb,khlx from pd_rylb where qtxtid='" + text + "'";
var ryiddr = db.DataAccessor.QueryDataTable(sql_pdryid);
bool ap = false;
if (ryiddr.Rows.Count > 0)
{
string id = ryiddr.Rows[0][0].ToString();//排队ID
int xb = Convert.ToInt32(ryiddr.Rows[0][1]);//性别
int khlx = (int)ryiddr.Rows[0]["khlx"];//客户类型
#region
string sql = "select top 1 ksid from pd_kspdlb where pdid=" + id + " and zxbz=2 order by wcsj desc";//判断上一个完成的科室
DataTable lastJCDT = db.DataAccessor.QueryDataTable(sql);
if (lastJCDT.Rows.Count > 0) //有上次科室信息
{
string jqid = "0";
sql = "select jq_id from pd_wlks where isOpen=1 and id=" + lastJCDT.Rows[0][0].ToString();
var dtjq = db.DataAccessor.QueryDataTable(sql);
if (dtjq.Rows.Count > 0)
{
jqid = dtjq.Rows[0][0].ToString();
}
sql = @"select distinct jq.* from pd_jianqu jq where id=" + jqid;//查询可用的检区
DataTable jqdt = db.DataAccessor.QueryDataTable(sql);
//这里可能有问题?
sql = @"select distinct jq.* from pd_ksxm ksxm join pd_pdxms pdxm on ksxm.xmid=pdxm.xmid
join pd_wlks ks on ks.id=ksxm.ksid and (ks.khlx=2 or ks.khlx=" + khlx + @") and ks.isOpen=1
join pd_jianqu jq on jq.id=ks.jq_id and (jq.khlx=2 or jq.khlx=" + khlx + @")
where pdxm.pdid=" + id + " and (ks.xb=2 or xb=" + xb + ") and ks.isOpen=1 and zxbz=0 and ks.id<>" + lastJCDT.Rows[0][0].ToString() + " order by jq.pdsx";//查询可用的检区
DataTable jqdt1 = db.DataAccessor.QueryDataTable(sql);
foreach (DataRow dr in jqdt1.Rows)
{
jqdt.Rows.Add(dr.ItemArray);
}
chulijq(db, jqdt, xb, id, ref ksname, ref ap, khlx);
}
else//无上次科室信息,相当于新体检
{
//原处理方式从排队区域开始处理
/*
sql = @"select distinct jq.* from pd_ksxm ksxm join pd_pdxms pdxm on ksxm.xmid=pdxm.xmid
join pd_wlks ks on ks.id=ksxm.ksid and (ks.khlx=2 or ks.khlx=" + khlx + @") and ks.isopen=1
join pd_jianqu jq on jq.id=ks.jq_id and (jq.khlx=2 or jq.khlx=" + khlx + @")
where pdxm.pdid=" + id + " and (ks.xb=2 or xb=" + xb + ") and zxbz=0 order by jq.pdsx";//查询可用的检区
DataTable jqdt = db.DataAccessor.QueryDataTable(sql);
chulijq(db, jqdt, xb, id, ref ksname, ref ap);
*/
//新处理方式:
//1找到当前排队人数最少的科室
//2安排病人到该科室排队
sql = @"select * from (
select ks.*,jq.pdsx jqpx,(select COUNT(1) from pd_kspdlb where ksid=ks.id and zxbz<>2) tj from pd_wlks ks join pd_jianqu jq on ks.jq_id=jq.id and (ks.khlx=2 or ks.khlx=" + khlx + @") and ks.isOpen=1
join pd_ksxm ksxm on ksxm.ksid=ks.id join pd_pdxms pdxm on pdxm.xmid=ksxm.xmid and pdxm.pdid=" + id + @" where (ks.xb=2 or xb=" + xb + @") and ks.isOpen=1 and zxbz=0 ) e
order by e.jqpx,e.pdsx,e.tj";
List<ks_pdsl> pdsls = new List<ks_pdsl>();
DataTable ksdt = db.DataAccessor.QueryDataTable(sql);
foreach (DataRow ksdr in ksdt.Rows)
{
string ksid = ksdr["id"].ToString();
int zsrs = (int)ksdr["zspdrs"];
int zdrs = (int)ksdr["zdpdrs"];
int pdsx = (int)ksdr["pdsx"];
int pdsl = (int)ksdr["tj"];
int jqpx = (int)ksdr["jqpx"];
pdsls.Add(new ks_pdsl
{
ksid = int.Parse(ksid),
pdcount = pdsl,
pdsx = pdsx,
zdrs = zdrs,
jqpx = jqpx,
zsrs = zsrs
});
}
var ks = pdsls.Where(t => t.zsrs > t.pdcount).OrderBy(t => t.jqpx).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)//如果有科室没有满足最少人数,处理最少人数
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
else
{
ks = pdsls.Where(t => t.zdrs > t.pdcount).OrderBy(t => t.pdcount).ThenBy(t => t.jqpx).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
else
{
ks = pdsls.OrderBy(t => t.pdcount).ThenBy(t => t.jqpx).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
}
}
}
if (!ap)
{
/*
sql = @"select distinct jq.* from pd_ksxm ksxm join pd_pdxms pdxm on ksxm.xmid=pdxm.xmid
join pd_wlks ks on ks.id=ksxm.ksid and (ks.khlx=2 or ks.khlx=" + khlx + @") and ks.isopen=1
join pd_jianqu jq on jq.id=ks.jq_id and (jq.khlx=2 or jq.khlx=" + khlx + @")
where pdxm.pdid=" + id + " and (ks.xb=2 or xb=" + xb + ") and zxbz=0 order by jq.pdsx";//查询可用的检区
DataTable jqdt = db.DataAccessor.QueryDataTable(sql);
if (jqdt.Rows.Count > 0)
{
string jqid = jqdt.Rows[0]["id"].ToString();
sql = @"
select distinct ks.*,(select COUNT(1) from pd_kspdlb pdlb where pdlb.zxbz<>2 and pdlb.ksid=ks.id ) pdsl
from pd_ksxm ksxm join pd_pdxms pdxm on ksxm.xmid=pdxm.xmid
join pd_wlks ks on ks.id=ksxm.ksid and ks.isopen=1
where pdxm.pdid=" + id + " and (ks.xb=2 or xb=" + xb + ") and pdxm.zxbz=0 and ks.jq_id=" + jqid + " order by ks.pdsx";
DataTable ksdt = db.DataAccessor.QueryDataTable(sql);
if (ksdt.Rows.Count > 0)
{
sql = @"
select xm.id,xm.qzxm from pd_ksxm ksxm join pd_xm xm on ksxm.xmid=xm.id
join pd_pdxms pdxm on pdxm.xmid=xm.id and pdxm.pdid=" + id + @"
where ksxm.ksid=" + ksdt.Rows[0]["id"] + " and qzxm<>0 and pdxm.zxbz=0";//判断有没有前置项目
DataTable qzxmdt = db.DataAccessor.QueryDataTable(sql);
if (qzxmdt.Rows.Count == 0)//如果没有前置项目
{
ksname = sendpd(id, ksdt.Rows[0]["id"].ToString());
ap = true;
}
else
{
int xmid = (int)qzxmdt.Rows[0][0];
string qzid = qzxmdt.Rows[0][1] == System.DBNull.Value ? null : qzxmdt.Rows[0][1].ToString();
//dr_pdxm.Close();
while (true)
{
if (!string.IsNullOrEmpty(qzid) && qzid != "0")
{
sql = "select id,qzxm from pd_xm where id=" + qzid;
DataTable nqzxmdt = db.DataAccessor.QueryDataTable(sql);
if (nqzxmdt.Rows.Count > 0)
{
xmid = (int)nqzxmdt.Rows[0][0];
qzid = nqzxmdt.Rows[0][1] == System.DBNull.Value ? null : nqzxmdt.Rows[0][1].ToString();
}
// dr_pdxm.Close();
}
else
{
break;
}
}
string sql_xmks = "select ksid from pd_ksxm,pd_wlks where xmid =" + xmid + " and pd_ksxm.ksid=pd_wlks.id and (pd_wlks.xb=2 or pd_wlks.xb=" + xb + ") and pd_wlks.isopen=1";
var qzxmksdt = db.DataAccessor.QueryDataSet(sql_xmks).Tables[0];
if (qzxmksdt.Rows.Count > 0)
{
ksname = sendpd(id, qzxmksdt.Rows[0][0].ToString());
ap = true;
}
}
}
}*/
sql = @"select * from (
select ks.*,jq.pdsx jqpx,(select COUNT(1) from pd_kspdlb where ksid=ks.id and zxbz<>2) tj from pd_wlks ks join pd_jianqu jq on ks.jq_id=jq.id and (ks.khlx=2 or ks.khlx=" + khlx + @") and ks.isopen=1
join pd_ksxm ksxm on ksxm.ksid=ks.id join pd_pdxms pdxm on pdxm.xmid=ksxm.xmid and pdxm.pdid=" + id + @" where (ks.xb=2 or xb=" + xb + @") and zxbz=0 ) e
order by e.tj,e.jqpx,e.pdsx";
List<ks_pdsl> pdsls = new List<ks_pdsl>();
DataTable ksdt = db.DataAccessor.QueryDataTable(sql);
foreach (DataRow ksdr in ksdt.Rows)
{
string ksid = ksdr["id"].ToString();
int zsrs = (int)ksdr["zspdrs"];
int zdrs = (int)ksdr["zdpdrs"];
int pdsx = (int)ksdr["pdsx"];
int pdsl = (int)ksdr["tj"];
int jqpx = (int)ksdr["jqpx"];
pdsls.Add(new ks_pdsl
{
ksid = int.Parse(ksid),
pdcount = pdsl,
pdsx = pdsx,
zdrs = zdrs,
jqpx = jqpx,
zsrs = zsrs
});
}
var ks = pdsls.Where(t => t.zsrs > t.pdcount).OrderBy(t => t.jqpx).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)//如果有科室没有满足最少人数,处理最少人数
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
else
{
ks = pdsls.Where(t => t.zdrs > t.pdcount).OrderBy(t => t.pdcount).ThenBy(t => t.jqpx).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
else
{
ks = pdsls.OrderBy(t => t.pdcount).ThenBy(t => t.jqpx).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
}
}
}
// break;
}
#endregion
#region
/*
//ryiddr.Close();
string sql = @"select pd_xm.id,pd_xm.qzxm from pd_xm,pd_pdxms,pd_ksxm,pd_wlks
where pd_xm.id=pd_pdxms.xmid and pd_xm.id=pd_ksxm.xmid and pd_ksxm.ksid=pd_wlks.id and pd_wlks.isOpen=1
and pd_pdxms.pdid=" + id + " and pd_pdxms.zxbz=0 order by pd_xm.xmqz desc ";
var dr_pdxm = db.DataAccessor.QueryDataTable(sql);
int xmid = 0;
string qzid = null;
bool ap = false;
string kspdsj = @"select SUM(isnull(yjsysj,0)) pdsj,pd_wlks.id ksid from pd_wlks left join pd_kspdlb on pd_kspdlb.ksid=pd_wlks.id and (zxbz=0 or zxbz=1)
where (pd_wlks.isOpen=1) and (pd_wlks.xb=2 or pd_wlks.xb=" + xb + ")" +
" group by pd_wlks.id,pd_wlks.zcpdsj,pd_wlks.zdpdrs" +
" having pd_wlks.zcpdsj>SUM(isnull(yjsysj,0)) and pd_wlks.zdpdrs>COUNT(1)" +
" order by SUM(yjsysj)";
var pdsjdt = db.DataAccessor.QueryDataSet(kspdsj).Tables[0];
for (int i = 0; i < dr_pdxm.Rows.Count; i++)
{
xmid = (int)dr_pdxm.Rows[i][0];
qzid = dr_pdxm.Rows[i][1] == System.DBNull.Value ? null : dr_pdxm.Rows[i][1].ToString();
//dr_pdxm.Close();
while (true)
{
if (!string.IsNullOrEmpty(qzid) && qzid != "0")
{
sql = "select id,qzxm from pd_xm where id=" + qzid;
var dr_pdxm1 = db.DataAccessor.QueryDataTable(sql);
if (dr_pdxm1.Rows.Count > 0)
{
xmid = (int)dr_pdxm1.Rows[0][0];
qzid = dr_pdxm1.Rows[0][1] == System.DBNull.Value ? null : dr_pdxm1.Rows[0][1].ToString();
}
// dr_pdxm.Close();
}
else
{
break;
}
}
string sql_xmks = "select ksid from pd_ksxm where xmid=" + xmid;
var qzxmksdt = db.DataAccessor.QueryDataSet(sql_xmks).Tables[0];
int ksid = 0;
int minsj = 0;
foreach (DataRow qzxmks in qzxmksdt.Rows)
{
DataRow[] drs = pdsjdt.Select("ksid=" + qzxmks[0].ToString());
if (drs.Count() == 0)
{
// sendpd(id, qzxmks[0].ToString());
//ap = true;
continue;
}
else
{
if (ksid == 0)
{
ksid = int.Parse(drs[0]["ksid"].ToString());
minsj = int.Parse(drs[0]["pdsj"].ToString());
}
else
{
if (minsj > int.Parse(drs[0]["pdsj"].ToString()))
{
ksid = int.Parse(drs[0]["ksid"].ToString());
minsj = int.Parse(drs[0]["pdsj"].ToString());
}
}
}
}
if ((!ap) && ksid != 0)
{
ksname = sendpd(id, ksid.ToString());
ap = true;
break;
}
}
if (!ap && dr_pdxm.Rows.Count > 0)
{
xmid = (int)dr_pdxm.Rows[0][0];
qzid = dr_pdxm.Rows[0][1] == System.DBNull.Value ? null : dr_pdxm.Rows[0][1].ToString();
//dr_pdxm.Close();
while (true)
{
if (!string.IsNullOrEmpty(qzid) && qzid != "0")
{
sql = "select id,qzxm from pd_xm where id=" + qzid;
dr_pdxm = db.DataAccessor.QueryDataTable(sql);
if (dr_pdxm.Rows.Count > 0)
{
xmid = (int)dr_pdxm.Rows[0][0];
qzid = dr_pdxm.Rows[0][1] == System.DBNull.Value ? null : dr_pdxm.Rows[0][1].ToString();
}
// dr_pdxm.Close();
}
else
{
break;
}
}
string sql_xmks = "select ksid from pd_ksxm,pd_wlks where xmid =" + xmid + " and pd_ksxm.ksid=pd_wlks.id and (pd_wlks.xb=2 or pd_wlks.xb=" + xb + ")";
var qzxmksdt = db.DataAccessor.QueryDataSet(sql_xmks).Tables[0];
/*
string xmids = "";
for(int i=0;i<dr_pdxm.Rows.Count;i++)
{
xmids += dr_pdxm.Rows[i][0].ToString();
}
string sql_xmks = "select ksid from pd_ksxm,pd_wlks where xmid in(" + xmid+ ") and pd_ksxm.ksid=pd_wlks.id and (pd_wlks.xb=2 or pd_wlks.xb=" + xb + ")";
var qzxmksdt = db.DataAccessor.QueryDataSet(sql_xmks).Tables[0];
var a = qzxmksdt.AsEnumerable();
var b = pdsjdt.AsEnumerable();
// var c = a.Join(b, t => t["ksid"], p => p["ksid"], (t, p)=> new { ksid=t["ksid"].ToString()}).ToList();
if (qzxmksdt.Rows.Count > 0)
{
ksname = sendpd(id, qzxmksdt.Rows[0][0].ToString());
}
}*/
#endregion
// else
//{
//ryiddr.Close();
//Thread.Sleep(100);
//}
//}
}
return ksname;
}
private static void chulijq(DbEntities db, DataTable jqdt, int xb, string id, ref string ksname, ref bool ap, int khlx)
{
string sql = "";
foreach (DataRow jqrow in jqdt.Rows)
{
if (!ap)
{
string jqid = jqrow["id"].ToString();
sql = @"
select distinct ks.*,(select COUNT(1) from pd_kspdlb pdlb where pdlb.zxbz<>2 and pdlb.ksid=ks.id ) pdsl
from pd_ksxm ksxm join pd_pdxms pdxm on ksxm.xmid=pdxm.xmid
join pd_wlks ks on ks.id=ksxm.ksid and ks.isOpen=1 and (ks.khlx=2 or ks.khlx=" + khlx + @")
where pdxm.pdid=" + id + " and (ks.xb=2 or xb=" + xb + ") and ks.isOpen=1 and pdxm.zxbz=0 and ks.jq_id=" + jqid + " order by ks.pdsx";
List<ks_pdsl> pdsls = new List<ks_pdsl>();
DataTable ksdt = db.DataAccessor.QueryDataTable(sql);
foreach (DataRow ksdr in ksdt.Rows)
{
string ksid = ksdr["id"].ToString();
int zsrs = (int)ksdr["zspdrs"];
int zdrs = (int)ksdr["zdpdrs"];
int pdsx = (int)ksdr["pdsx"];
int pdsl = (int)ksdr["pdsl"];
pdsls.Add(new ks_pdsl
{
ksid = int.Parse(ksid),
pdcount = pdsl,
pdsx = pdsx,
zdrs = zdrs,
zsrs = zsrs
});
}
var ks = pdsls.Where(t => t.zsrs > t.pdcount).OrderBy(t => t.pdcount).ThenBy(t => t.pdsx).FirstOrDefault();
if (ks != null)//如果有科室没有满足最少人数,处理最少人数
{
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
else
{
ks = pdsls.Where(t => t.zdrs > t.pdcount).OrderBy(t => t.pdcount).FirstOrDefault();
if (ks == null)
continue;
chuli(db, ks, id, xb, ref ksname, ref ap, khlx);
}
}
else
{
break;
}
}
}
private static void chuli(DbEntities db, ks_pdsl ks, string id, int xb, ref string ksname, ref bool ap, int khlx)
{
string sql = "";
sql = @"
select xm.id,xm.qzxm from pd_ksxm ksxm join pd_xm xm on ksxm.xmid=xm.id
join pd_pdxms pdxm on pdxm.xmid=xm.id and pdxm.pdid=" + id + @"
where ksxm.ksid=" + ks.ksid + " and qzxm<>0 and pdxm.zxbz=0";//判断有没有前置项目
DataTable qzxmdt = db.DataAccessor.QueryDataTable(sql);
if (qzxmdt.Rows.Count == 0)//如果没有前置项目
{
ksname = sendpd(id, ks.ksid.ToString());
ap = true;
}
else
{
int xmid = (int)qzxmdt.Rows[0][0];
string qzid = qzxmdt.Rows[0][1] == System.DBNull.Value ? null : qzxmdt.Rows[0][1].ToString();
//dr_pdxm.Close();
while (true)
{
if (!string.IsNullOrEmpty(qzid) && qzid != "0")
{
sql = "select id,qzxm from pd_xm where id=" + qzid;
DataTable nqzxmdt = db.DataAccessor.QueryDataTable(sql);
if (nqzxmdt.Rows.Count > 0)
{
xmid = (int)nqzxmdt.Rows[0][0];
qzid = nqzxmdt.Rows[0][1] == System.DBNull.Value ? null : nqzxmdt.Rows[0][1].ToString();
}
// dr_pdxm.Close();
}
else
{
break;
}
}
string sql_xmks = "select ksid from pd_ksxm,pd_wlks where xmid =" + xmid + " and pd_wlks.isOpen=1 and pd_ksxm.ksid=pd_wlks.id and (pd_wlks.xb=2 or pd_wlks.xb=" + xb + ") and (pd_wlks.khlx=2 or pd_wlks.khxl=" + khlx + ") order by pd_wlks.pdsx";
var qzxmksdt = db.DataAccessor.QueryDataSet(sql_xmks).Tables[0];
if (qzxmksdt.Rows.Count > 0)
{
ksname = sendpd(id, qzxmksdt.Rows[0][0].ToString());
ap = true;
}
}
}
private static string sendpd(string id, string ksid)
{
//throw new NotImplementedException();
var db = new DbEntities();
// string sql_pdsj = @"select SUM(pd_xm.xmhs) from pd_rylb,pd_pdxms,pd_wlks,pd_ksxm,pd_xm
//where pd_rylb.id=pd_pdxms.pdid and
//pd_pdxms.xmid=pd_xm.id and pd_xm.id=pd_ksxm.xmid
//and pd_ksxm.ksid=pd_wlks.id and pd_wlks.id=" + ksid + " and pd_rylb.id=" + id;
// var ls_sj = db.DataAccessor.QueryScalar(sql_pdsj);
// if (ls_sj == DBNull.Value)
// return "";
// string pdsj = ls_sj.ToString();
string sql_update = @"update pd_pdxms set zxbz=1 ,pdsj=getdate() from pd_rylb,pd_wlks,pd_ksxm,pd_xm
where pd_rylb.id = pd_pdxms.pdid and pd_pdxms.zxbz=0 and
pd_pdxms.xmid = pd_xm.id and pd_xm.id = pd_ksxm.xmid
and pd_ksxm.ksid = pd_wlks.id and pd_wlks.id=" + ksid + " and pd_rylb.id=" + id;
db.DataAccessor.Execute(sql_update);
string sql_insert = @"INSERT INTO [pd_kspdlb]
([pdid]
,[ksid]
,[pdsj]
,[zxbz]
,[yjsysj]
)
VALUES
(@pdid
,@ksid
,@pdsj
,@zxbz
,@yjsysj
)
";
EAS.Data.Access.Parameter[] paras = {new EAS.Data.Access.Parameter ("pdid",SqlDbType.Int),
new EAS.Data.Access.Parameter ("ksid",SqlDbType.Int),
new EAS.Data.Access.Parameter ("pdsj",DbType.DateTime),
new EAS.Data.Access.Parameter ("zxbz",SqlDbType.TinyInt),
new EAS.Data.Access.Parameter ("yjsysj",SqlDbType.Int)
};
paras[0].Value = id;
paras[1].Value = ksid;
paras[2].Value = DateTime.Now;
paras[3].Value = 0;
paras[4].Value = 15;
EAS.Data.Access.ParameterCollection paracoll = new EAS.Data.Access.ParameterCollection();
paracoll.AddRange(paras);
db.DataAccessor.Execute(sql_insert, paracoll);
connMQ();
IMessageProducer prod1;
prod1 = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
ITextMessage itm = prod1.CreateTextMessage();
itm.Properties.SetString("ks", ksid);
var pdmsg = new kstjMessage();
string sql_xm = "select xm,xb from pd_rylb where id=" + id;
string xm = "错误";
string xb = "错误";
var xmdr = db.DataAccessor.QueryDataTable(sql_xm);
if (xmdr.Rows.Count > 0)
{
xm = xmdr.Rows[0][0].ToString();
xb = xmdr.Rows[0][1].ToString() == "0" ? "男" : "女";
}
//xmdr.Close();
pdmsg.xm = xm + "(" + xb + ")";
pdmsg.pdid = int.Parse(id);
pdmsg.pdsj = DateTime.Now;
pdmsg.zxzt = 0;
itm.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(pdmsg));
prod1.Send(itm);
string kssql = "select ksmc from pd_wlks where id=" + ksid;
prod1 = null;
return db.DataAccessor.QueryScalar(kssql).ToString();
}
public void CXFP(string id, string ksid, string xm, DateTime time, string xb)
{
var db = new DbEntities();
connMQ();
IMessageProducer prod1;
prod1 = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
ITextMessage itm = prod1.CreateTextMessage();
itm.Properties.SetString("ks", ksid);
var pdmsg = new kstjMessage();
//string sql_xm = "select xm from pd_rylb where id=" + id;
//string xm = "错误";
//var xmdr = db.DataAccessor.QueryDataTable(sql_xm);
//if (xmdr.Rows.Count > 0)
//{
// xm = xmdr.Rows[0][0].ToString();
//}
//xmdr.Close();
pdmsg.xm = xm + "(" + xb + ")";
pdmsg.pdid = int.Parse(id);
pdmsg.pdsj = time;
pdmsg.zxzt = 0;
itm.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(pdmsg));
prod1.Send(itm);
prod1 = null;
}
public OperationResult addlouceng(Pd_louceng lc)
{
//throw new NotImplementedException();
OperationResult or = new OperationResult();
var db = new DbEntities();
try
{
if (lc.Id == 0)
{
lc.State = 1;
db.Pd_louceng.Insert(lc);
or.State = 1;
or.Message = "添加成功!";
}
else
{
var ylc = db.Pd_louceng.FirstOrDefault(t => t.Id == lc.Id);
if (ylc == null)
{
or.State = 0;
or.Message = "修改失败,没有找到要修改的数据!";
}
else
{
ylc.Lcmc = lc.Lcmc;
ylc.Bz = lc.Bz;
db.Pd_louceng.Update(ylc);
or.State = 1;
or.Message = "修改成功!";
}
}
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
}
return or;
}
public List<Pd_louceng> getLouceng(bool v)
{
var db = new DbEntities();
//throw new NotImplementedException();
var lclist = db.Pd_louceng.Where(t => 1 == 1);
if (!v)
{
lclist = lclist.Where(t => t.State == 1);
}
return lclist.ToList();
}
public OperationResult deleteLouCeng(int lcid)
{
OperationResult or = new OperationResult();
var db = new DbEntities();
//throw new NotImplementedException();
var ylc = db.Pd_louceng.FirstOrDefault(t => t.Id == lcid);
if (ylc == null)
{
or.State = 0;
or.Message = "删除失败,没有找到要删除的数据!";
}
else
{
ylc.State = 0;
db.Pd_louceng.Update(ylc);
or.State = 1;
or.Message = "删除成功!";
}
return or;
}
public List<pd_jianqu> getJianqulist(bool v)
{
//throw new NotImplementedException();
var db = new DbEntities();
var jqlist = db.pd_jianqu.Where(t => 1 == 1);
if (!v)
{
jqlist = jqlist.Where(t => t.state == 1);
}
return jqlist.ToList();
}
public OperationResult addJianQu(pd_jianqu jq)
{
//throw new NotImplementedException();
OperationResult or = new OperationResult();
try
{
var db = new DbEntities();
if (jq.id == 0)
{
jq.state = 1;
db.pd_jianqu.Insert(jq);
or.State = 1;
or.Message = "添加成功!";
}
else
{
var yjq = db.pd_jianqu.FirstOrDefault(t => t.id == jq.id);
if (yjq == null)
{
or.State = 0;
or.Message = "修改失败,没有找到要修改的数据!";
}
else
{
yjq.jqmc = jq.jqmc;
yjq.jqbz = jq.jqbz;
yjq.pdsx = jq.pdsx;
yjq.khlx = jq.khlx;
db.pd_jianqu.Update(yjq);
or.State = 1;
or.Message = "修改成功!";
}
}
}
catch (Exception ex)
{
or.State = 0;
or.Message = ex.Message;
}
return or;
}
public OperationResult delJianQu(int jqid)
{
OperationResult or = new OperationResult();
var db = new DbEntities();
//throw new NotImplementedException();
var ylc = db.pd_jianqu.FirstOrDefault(t => t.id == jqid);
if (ylc == null)
{
or.State = 0;
or.Message = "删除失败,没有找到要删除的数据!";
}
else
{
ylc.state = 0;
db.pd_jianqu.Update(ylc);
or.State = 1;
or.Message = "删除成功!";
}
return or;
}
public void uploadbj(string v1, byte[] v2)
{
//throw new NotImplementedException();
string path = AppDomain.CurrentDomain.BaseDirectory;
path += "bjbj\\";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
path += v1 + ".jpg";
FileStream fs = new FileStream(path, FileMode.Create);
fs.Write(v2, 0, v2.Count());
fs.Close();
}
public byte[] getbj(string v1)
{
string path = AppDomain.CurrentDomain.BaseDirectory;
path += "bjbj\\";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
path += v1 + ".jpg";
if (File.Exists(path))
{
FileStream fs = new FileStream(path, FileMode.Open);
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Count());
fs.Close();
return bs;
}
else
{
return null;
}
}
public void updateKs(img_ks curr_ks)
{
//throw new NotImplementedException();
var db = new DbEntities();
var ks = db.pd_wlks.FirstOrDefault(t => t.id == curr_ks.id);
ks.img_h = curr_ks.img_h;
ks.img_w = curr_ks.img_w;
ks.img_x = curr_ks.img_x;
ks.img_y = curr_ks.img_y;
db.pd_wlks.Update(ks);
}
public int getkspdrs(int id)
{
//throw new NotImplementedException();
string sql = "select count(1) from pd_kspdlb where ksid=" + id + " and zxbz<>2";
var db = new DbEntities();
var dt = db.DataAccessor.QueryDataTable(sql);
return (int)dt.Rows[0][0];
}
public DataSet getkspdlb(int id)
{
var db = new DbEntities();
//throw new NotImplementedException();
string sql = @"select a.txm xm,a.qtxtid tmh,case a.xb when 1 then '女' else '男' end xb,b.pdsj
,DATEDIFF(MI,b.pdsj,getdate()) ddsj,'' jx,a.id,a.nl
from pd_rylb a,pd_kspdlb b
where a.id=b.pdid and b.zxbz<>2 and b.ksid=" + id + " order by b.pdsj";
DataTable dt = db.DataAccessor.QueryDataTable(sql);
foreach (DataRow dr in dt.Rows)
{
sql = @"select c.xmmc from pd_pdxms a,pd_ksxm b ,pd_xm c where a.pdid=" + dr["id"].ToString() + @"
and a.xmid=b.xmid and b.xmid=c.id and b.ksid=" + id;
var xmdt = db.DataAccessor.QueryDataTable(sql);
foreach (DataRow xmdr in xmdt.Rows)
{
dr["jx"] = dr["jx"].ToString() + xmdr["xmmc"].ToString() + ",";
}
dr["jx"] = dr["jx"].ToString().Remove(dr["jx"].ToString().Length - 1);
}
//DataSet ds = new DataSet();
//ds.Tables.Add(dt);
return dt.DataSet;
}
public DataSet getKHPDXX(string text)
{
//throw new NotImplementedException();
string sql = @"select a.txm xm,a.qtxtid tmh,b.jqmc jq,d.ksmc ks,f.xmmc jx
,case e.zxbz when 3 then '完成' when 0 then '未检' else '排队' end zt,case a.xb when 1 then '女' else '男' end xb
,g.xmmc xjxm,f.id xmid,a.xb xbid,a.id pdid
from pd_rylb a join
pd_pdxms e on a.id=e.pdid join
pd_ksxm c on e.xmid=c.xmid join
pd_wlks d on c.ksid=d.id join
pd_jianqu b on b.id=d.jq_id join
pd_xm f on f.id=c.xmid left join
pd_xm g on f.qzxm=g.id
where
(d.xb=2 or d.xb=a.xb) and d.isOpen=1
and a.qtxtid='" + text + "'";
var db = new DbEntities();
return db.DataAccessor.QueryDataSet(sql);
}
public DataSet getKFPKS(string xmid, string xb)
{
// throw new NotImplementedException();
string sql = @"select a.ksmc fp_ks,b.jqmc fp_jq,(select COUNT(1) pdrs from pd_kspdlb where ksid=a.id and zxbz<>2) pdrs ,a.id from pd_wlks a,pd_jianqu b,pd_ksxm c
where a.id=c.ksid and a.jq_id=b.id and a.isOpen=1
and (a.xb=2 or a.xb=" + xb + ") and c.xmid=" + xmid;
return new DbEntities().DataAccessor.QueryDataSet(sql);
}
public void delFQ(string tm, string zhbm)
{
connMQ();
IMessageProducer prod1;
prod1 = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
var db = new DbEntities();
string sql = "select id from pd_rylb where qtxtid='" + tm + "'";
DataTable dt = db.DataAccessor.QueryDataTable(sql);
if (dt.Rows.Count > 0)
{
string pdid = dt.Rows[0][0].ToString();
sql = "select xmid from pd_pdxms where pdid=" + pdid + " and zxbz!=3 and xmid in (select xmid from pd_qtxtxmdy where qtxtxmid=" + zhbm + ")";
DataTable dt1 = db.DataAccessor.QueryDataTable(sql);
if (dt1.Rows.Count > 0)
{
string xmid = dt1.Rows[0][0].ToString();
sql = "delete from pd_pdxms where pdid=" + pdid + " and xmid in (select xmid from pd_qtxtxmdy where qtxtxmid=" + zhbm + ")";
db.DataAccessor.Execute(sql);
sql = "select ksid from pd_kspdlb where pdid=" + pdid + " and zxbz!=2 and ksid in(select ksid from pd_ksxm where xmid=" + xmid + ") ";
DataTable dt2 = db.DataAccessor.QueryDataTable(sql);
if (dt2.Rows.Count > 0)
{
string ksid = dt2.Rows[0][0].ToString();
sql = "select * from pd_ksxm where xmid in (select xmid from pd_pdxms where pdid = " + pdid + ") and ksid = " + ksid;
DataTable dt3 = db.DataAccessor.QueryDataTable(sql);
if (dt3.Rows.Count > 0)
{
prod1 = null;
}
else
{
ITextMessage im1 = prod1.CreateTextMessage();
im1.Properties.SetString("ks", ksid);
var ksm = new kstjMessage();
string sql_xm1 = "select xm,xb from pd_rylb where id=" + pdid;
string xm1 = "错误";
string xb1 = "错误";
var xmdr1 = db.DataAccessor.QueryDataTable(sql_xm1);
if (xmdr1.Rows.Count > 0)
{
xm1 = xmdr1.Rows[0][0].ToString();
xb1 = xmdr1.Rows[0][1].ToString() == "0" ? "男" : "女";
}
//xmdr1.Close();
ksm.xm = xm1 + "(" + xb1 + ")";
ksm.pdid = int.Parse(pdid);
ksm.pdsj = DateTime.Now;
ksm.zxzt = 2;
im1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(ksm));
prod1.Send(im1);//删除原来科室的排队信息
string delsql3 = "delete from pd_kspdlb where pdid=" + pdid + " and ksid=" + ksid;
db.DataAccessor.Execute(delsql3);
}
}
}
}
prod1 = null;
}
public void delPD(string tm)
{
connMQ();
IMessageProducer prod1;
prod1 = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
var db = new DbEntities();
string sql = "select * from pd_kspdlb where pdid in (select id from pd_rylb where qtxtid='" + tm + "')";
DataTable dt = db.DataAccessor.QueryDataTable(sql);
if (dt.Rows.Count > 0)
{
string sql_selKspdlb = "select ksid,pdid from pd_kspdlb where pd_kspdlb.zxbz in (0,1) and pd_kspdlb.pdid in (select id from pd_rylb where qtxtid='" + tm + "')";//查询当前正在排队的科室
DataTable drKspdlb = db.DataAccessor.QueryDataTable(sql_selKspdlb);
if (drKspdlb.Rows.Count > 0)
{
string pdksid = drKspdlb.Rows[0][0].ToString();
string pdid = drKspdlb.Rows[0][1].ToString();
ITextMessage im1 = prod1.CreateTextMessage();
im1.Properties.SetString("ks", pdksid);
var ksm = new kstjMessage();
string sql_xm1 = "select xm,xb from pd_rylb where id=" + pdid;
string xm1 = "错误";
string xb1 = "错误";
var xmdr1 = db.DataAccessor.QueryDataTable(sql_xm1);
if (xmdr1.Rows.Count > 0)
{
xm1 = xmdr1.Rows[0][0].ToString();
xb1 = xmdr1.Rows[0][1].ToString() == "0" ? "男" : "女";
}
//xmdr1.Close();
ksm.xm = xm1 + "(" + xb1 + ")";
ksm.pdid = int.Parse(pdid);
ksm.pdsj = DateTime.Now;
ksm.zxzt = 2;
im1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(ksm));
prod1.Send(im1);//删除原来科室的排队信息
string delsql = "delete from pd_kspdlb where pdid=" + pdid;
db.DataAccessor.Execute(delsql);
string delsql1 = "delete from pd_pdxms where pdid=" + pdid;
db.DataAccessor.Execute(delsql1);
string delsql2 = "delete from pd_rylb where qtxtid=" + tm;
db.DataAccessor.Execute(delsql2);
string delsql3 = "delete from pd_yssj where qtxtid=" + tm;
db.DataAccessor.Execute(delsql3);
prod1 = null;
}
else
{
prod1 = null;
}
}
else
{
prod1 = null;
}
}
public string PDFP_UP_DOWN(string pdid, string pdsj, string ksid)
{
var db = new DbEntities();
//throw new NotImplementedException();
string sql = "update pd_kspdlb set pdsj='" + pdsj + "' where ksid=" + ksid + " and pdid=" + pdid;
int a = db.DataAccessor.Execute(sql);
if (a > 0)
{
return "true";
}
else
{
return "false";
}
}
public string PDFP(string pdid, string ks)
{
connMQ();
IMessageProducer prod1;
prod1 = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("kstj"));
var db = new DbEntities();
//throw new NotImplementedException();
string sql = "select * from pd_kspdlb where zxbz<>2 and pdid=" + pdid;
DataTable dt = db.DataAccessor.QueryDataTable(sql);
if (dt.Rows.Count > 0)
{
string sql_selKspdlb = "select ksid from pd_kspdlb where pd_kspdlb.zxbz in (0,1) and pd_kspdlb.pdid=" + pdid;//查询当前正在排队的科室
DataTable drKspdlb = db.DataAccessor.QueryDataTable(sql_selKspdlb);
if (drKspdlb.Rows.Count > 0)
{
string pdksid = drKspdlb.Rows[0][0].ToString();
//drKspdlb.Close();
sql = "select count(1) from pd_pdxms,pd_ksxm where pd_pdxms.pdid=" + pdid + " and pd_ksxm.xmid=pd_pdxms.xmid and pd_ksxm.ksid=" + ks;
if (db.DataAccessor.QueryScalar(sql).ToString() != "0")
{
string delsql = "delete from pd_kspdlb where pdid=" + pdid + " and ksid=" + pdksid;
db.DataAccessor.Execute(delsql);
//sql = "update pd_pdxms set zxbz=0 from pd_ksxm where pd_pdxms.zxbz=1 and pd_pdxms.xmid=pd_ksxm.xmid and pd_ksxm.ksid=" + pdksid + " and pd_pdxms.pdid=" + pdid;
sql = "update pd_pdxms set zxbz=0,pdsj=null,zxsj=null,wcsj=null from pd_ksxm where pd_pdxms.xmid=pd_ksxm.xmid and pd_ksxm.ksid=" + pdksid + " and pd_pdxms.pdid=" + pdid;
db.DataAccessor.Execute(sql);
ITextMessage im1 = prod1.CreateTextMessage();
im1.Properties.SetString("ks", pdksid);
var ksm = new kstjMessage();
string sql_xm1 = "select xm,xb from pd_rylb where id=" + pdid;
string xm1 = "错误";
string xb1 = "错误";
var xmdr1 = db.DataAccessor.QueryDataTable(sql_xm1);
if (xmdr1.Rows.Count > 0)
{
xm1 = xmdr1.Rows[0][0].ToString();
xb1 = xmdr1.Rows[0][1].ToString() == "0" ? "男" : "女";
}
//xmdr1.Close();
ksm.xm = xm1 + "(" + xb1 + ")";
ksm.pdid = int.Parse(pdid);
ksm.pdsj = DateTime.Now;
ksm.zxzt = 2;
im1.Text = System.Web.HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(ksm));
prod1.Send(im1);//删除原来科室的排队信息
prod1 = null;
return sendpd(pdid, ks);
}
else
{
prod1 = null;
return "";
}
}
else
{
prod1 = null;
return "";
}
}
else
{
string sql_pdryid = "select qtxtid from pd_rylb where id='" + pdid + "'";
var ryiddr = db.DataAccessor.QueryDataTable(sql_pdryid);
prod1 = null;
return process(ryiddr.Rows[0][0].ToString(), "0");
}
}
class kstjMessage
{
public string xm { get; set; }
public string xb { get; set; }
public int pdid { get; set; }
public DateTime pdsj { get; set; }
public byte zxzt { get; set; }
}
}
class ks_pdsl
{
public int ksid { get; set; }
public int pdcount { get; set; }
public int zsrs { get; set; }
public int zdrs { get; set; }
public int pdsx { get; set; }
public int jqpx { get; set; }
}
}