using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Common; using System.Transactions; using Microsoft.Practices.EnterpriseLibrary.Data; using System.Data; using IL.Common; using System.Xml; //using MediII.Adapter.Model.UE; namespace MediII.Adapter.BizComponent.MFN { /// /// 公用科室 /// zengfan 2012-09-04 /// /// public class MFN_Z2B_GY_KESHI : MFNBase { //数据库连接 //HealthCareContainer HealthCareContainer = new HealthCareContainer(); private Database ctx = null; public MFN_Z2B_GY_KESHI(Database dbCtx) { ctx = dbCtx; } /// /// 消息处理,入库 /// /// 转化过的强类型消息 /// /// public override int Process(string message,string msgType) { string strMsgType; using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { string sqlSel = "select count(*) from dbo.dic_department where id=@id"; OperateXmlUtil helper = new OperateXmlUtil(); string pkid = helper.XpathRead(message, "//*[@root='2.16.156.10011.1.26']", "extension"); DbCommand cmd = ctx.DBGetSqlStringCommand(sqlSel); ctx.AddInParameter(cmd, "id", System.Data.DbType.String, pkid); int counts = Convert.ToInt32(ctx.ExecuteScalar(cmd)); if (counts == 0) { string sql = @"insert into dbo.dic_department(id, name, status, search_code) VALUES(@id, @name, @status, @search_code)"; OperateXmlUtil xmlHelper = new OperateXmlUtil(); DbCommand command = ctx.GetSqlStringCommand(sql.ToString()); Resolving(message, ctx, command); ctx.ExecuteNonQuery(command); } else { string sql = "update dbo.dic_department set name=@name,search_code=@search_code where id=@id"; OperateXmlUtil xmlHelper = new OperateXmlUtil(); DbCommand command = ctx.GetSqlStringCommand(sql.ToString()); Resolving(message, ctx, command); ctx.ExecuteNonQuery(command); } scope.Complete(); } return 1; } /// /// 科室删除 /// /// 传入资料 /// 连线 /// 交易 public void Division_SyncDel(string pkid) { //string sql4 = "update HealthCare.dbo.Division set IsIss=1 where DivNo=@DivNo"; string sql4 = "delete from HealthCare.dbo.Division where DivNo=@DivNo"; DbCommand command4 = ctx.GetSqlStringCommand(sql4.ToString()); ctx.AddInParameter(command4, "DivNo", System.Data.DbType.AnsiString, pkid); ctx.ExecuteNonQuery(command4); } public void Resolving(string Content, Database ctx, DbCommand command) { string value = string.Empty; OperateXmlUtil xmlHelper = new OperateXmlUtil(); value = xmlHelper.XpathRead(Content, "//*[@root='2.16.156.10011.1.26']", "extension"); ctx.AddInParameter(command, "id", System.Data.DbType.String, value); var valueNode = xmlHelper.XpathRead(Content, "//*[name()='assignedPrincipalOrganization']").Item(0); foreach (XmlNode xe in valueNode.ChildNodes) { if (xe.Name == "name") { value = xe.LastChild.LastChild.Attributes["value"].Value; ctx.AddInParameter(command, "name", System.Data.DbType.String, value); value = xe.LastChild.LastChild.Attributes["code"].Value; ctx.AddInParameter(command, "search_code", System.Data.DbType.String, value); ctx.AddInParameter(command, "status", System.Data.DbType.String, "1"); break; } } } } }