ADT_A01B04_Handler.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Practices.EnterpriseLibrary.Data;
  6. using System.Transactions;
  7. using MediII.Adapter.ReceiveToScanModel;
  8. using IL.Common;
  9. using System.Data.Common;
  10. using System.Data;
  11. using Newtonsoft.Json.Linq;
  12. using Newtonsoft.Json;
  13. namespace MediII.Adapter.BizComponent.ADT
  14. {
  15. public class ADT_A01B04_Handler : ADTHandler
  16. {
  17. public override void Handler(TaskMessage m)
  18. {
  19. //初始化
  20. var rtnMsg = string.Empty;
  21. var msgHead = string.Empty;
  22. var msgBody = string.Empty;
  23. var resultCode = string.Empty;
  24. var result = string.Empty;
  25. string guid = MediII.Common.GUIDHelper.NewGUID();
  26. Restful server = new Restful();
  27. string jbody = "{\"Request\":{\"Head\":{\"LicId\":\"6F9619FF-8B86-D011-B66D-00C04FC966FF\",\"RecAppId\":\"HIS\",\"ContentType\":\"text/json\",\"TranCode\":\"{0}\",\"Timestamp\":\"{5}\",\"OrgId\":\"991797\",\"AppId\":\"WiNEX\",\"Version\":\"1.1\",\"ServiceVersion\":\"1.0\",\"RecOrgId\":\"991797\",\"IPAddress\":\"100.100.100.100\",\"AppType\":\"PC\",\"MessageId\":\"{4}\"},\"Body\":{\"end_date\":\"\",\"size\":1,\"begin_date\":\"\",\"page\":\"{6}\",\"inp_visit_id\":\"\"}}}";
  28. var token = JToken.Parse(jbody);
  29. var jtimestamp = token.SelectToken("Request.Head.Timestamp");
  30. jtimestamp.Replace(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  31. var jTranCode = token.SelectToken("Request.Head.TranCode");
  32. jTranCode.Replace("v_pt_transfer_record");
  33. var jMessageId = token.SelectToken("Request.Head.MessageId");
  34. jMessageId.Replace(guid);
  35. //var jend_date = token.SelectToken("Request.Body.end_date");
  36. //jend_date.Replace(m.Parameter2);
  37. //var jbegin_date = token.SelectToken("Request.Body.begin_date");
  38. //jbegin_date.Replace(m.Parameter1);
  39. var jpage = token.SelectToken("Request.Body.page");
  40. jpage.Replace(m.Parameter3);
  41. var jsize = token.SelectToken("Request.Body.size");
  42. jsize.Replace(m.Reserve3);
  43. //读取配置的url
  44. var url = System.Configuration.ConfigurationManager.AppSettings["Post_url"];
  45. string responseMsg = string.Empty;
  46. LogHelper.LogInfo("send:" + JsonConvert.SerializeObject(token), LogCatagories.AdapterScan);
  47. responseMsg = server.Post(url, JsonConvert.SerializeObject(token));
  48. LogHelper.LogInfo("response:" + responseMsg, LogCatagories.AdapterScan);
  49. if (string.IsNullOrWhiteSpace(responseMsg))
  50. throw new Exception("无返回数据," + responseMsg);
  51. //解析body,
  52. var jRequestBody = JObject.Parse(responseMsg);
  53. var jRequest = jRequestBody["Response"];
  54. var jBody = jRequest["Body"];
  55. var jHead = jRequest["Head"];
  56. var head = JsonConvert.DeserializeObject<ResponseHead>(jHead.ToString());
  57. var jdata = jBody["data"];
  58. if (head.AckCode != "100")
  59. throw new Exception("返回错误:" + head.AckMessage);
  60. if ((string)jdata["total"] != "0")
  61. {
  62. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  63. {
  64. var isql = @"INSERT INTO TaskResponse(TaskID, TaskType, `Status`, Content, ErrNm, ResolvingMsg, ResolvingTime, RemarkContent)
  65. VALUES(@TaskID,@TaskType,1,@Content,0,null,null,@RemarkContent)";
  66. //住院就诊
  67. var cmd = ctx.DBGetSqlStringCommand(isql);
  68. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskID", DbType.AnsiString, m.TaskID);
  69. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, m.TaskType);
  70. MySqlDataAccess.AddInParameter(ctx, cmd, "Content", DbType.AnsiString, responseMsg);
  71. MySqlDataAccess.AddInParameter(ctx, cmd, "RemarkContent", DbType.AnsiString, JsonConvert.SerializeObject(token));
  72. MySqlDataAccess.ExecuteNonQuery(ctx, cmd);
  73. scope.Complete();
  74. }
  75. //SetNextTask(m);
  76. }
  77. }
  78. }
  79. }