ReadCardProcess.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. 
  2. using AnHuiMI.Common;
  3. using Newtonsoft.Json.Linq;
  4. using PTMedicalInsurance.Common;
  5. using PTMedicalInsurance.Helper;
  6. using PTMedicalInsurance.Variables;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. namespace PTMedicalInsurance.Business.Core.SelfServiceMachine.Process.ReadCard
  14. {
  15. class ReadCardProcess:AbstractProcess
  16. {
  17. public override CallResult Process(JObject input)
  18. {
  19. outParam = "";
  20. string sOutPar;
  21. JObject joRtn = new JObject();
  22. JObject joCardInfo = new JObject();
  23. JObject joInput = new JObject();
  24. InvokeHelper invoker = new InvokeHelper();
  25. try
  26. {
  27. Global.writeLog($"Global.ssmp.cardType:{Global.ssmp.cardType}");
  28. Global.pat.certType = "01";
  29. //电子凭证
  30. if (Global.ssmp.cardType == "02")
  31. {
  32. Global.pat.mdtrtcertType = "01";
  33. outParam = ECTokenReader.ECQuery("1");
  34. }
  35. //身份证
  36. if (Global.ssmp.cardType == "04")
  37. {
  38. if (Global.pat.card.SearchAdmKey != "")
  39. Global.pat.insuplc_admdvs = Global.pat.card.SearchAdmCode;
  40. Global.pat.mdtrtcertType = "02";
  41. Global.pat.mdtrtcertNO = Global.pat.IDNO;
  42. Global.pat.certType = "01";
  43. Global.pat.certNO = Global.pat.IDNO;
  44. //Global.pat.name = cc.PatName;
  45. Global.pat.card.SN = "";
  46. }
  47. //社保卡
  48. if (Global.ssmp.cardType == "03")
  49. {
  50. //CardReader_HLJ cr = new CardReader_HLJ();
  51. //Global.pat.mdtrtcertType = "03";
  52. ////Global.pat.card.type = (cc.cbCardType.SelectedIndex + 1).ToString();
  53. ////Global.pat.card.level = "0" + (cc.cbCardLevel.SelectedIndex + 1).ToString();
  54. //Global.pat.certType = "01";
  55. CardReader_AH CardRead = new CardReader_AH();
  56. if (CardRead.ReadCardBas(0, Global.inf.hospitalNO, out sOutPar) != 0)
  57. {
  58. outParam = "社保卡读卡异常ReadCardBas:" + sOutPar;
  59. return Exception("读卡异常:" + sOutPar);
  60. }
  61. //【社保卡读卡成功返回】
  62. //发卡地区行政区划代码(卡识别码前 6 位)、社会保障号码、卡号、卡识别码、姓名、卡复位信息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号
  63. Global.pat.insuplc_admdvs = tools.getDestPosStrBySpliter(sOutPar, 1); //参保地
  64. if ((Global.inf.interfaceDr == 12) && (Global.pat.insuplc_admdvs == "340001"))
  65. {
  66. Global.pat.insuplc_admdvs = "349900";
  67. }
  68. if ((Global.inf.interfaceDr == 15) && (Global.pat.insuplc_admdvs == "340001"))
  69. {
  70. Global.pat.insuplc_admdvs = "349900";
  71. }
  72. Global.pat.card.NO = tools.getDestPosStrBySpliter(sOutPar, 2); //社会保障号码
  73. Global.pat.certNO = tools.getDestPosStrBySpliter(sOutPar, 3); //卡号
  74. Global.pat.card.SN = tools.getDestPosStrBySpliter(sOutPar, 4); //卡识别码
  75. Global.pat.name = tools.getDestPosStrBySpliter(sOutPar, 5); //姓名
  76. Global.pat.certType = "90";
  77. Global.pat.mdtrtcertType = "03";
  78. Global.pat.mdtrtcertNO = Global.pat.certNO;
  79. Global.pat.certNO = Global.pat.card.NO;
  80. Global.pat.mdtrtcertType = "03";
  81. Global.pat.card.type = "01";
  82. Global.pat.card.level = "01";
  83. Global.pat.certType = "01";
  84. }
  85. //人脸识别
  86. if (Global.ssmp.cardType == "05")
  87. {
  88. Global.pat.mdtrtcertType = "01";
  89. Global.pat.card.transType = "cn.nhsa.ec.auth";
  90. }
  91. if (Global.pat.OtherProv != 0)
  92. {
  93. Global.pat.insuplc_admdvs = Global.pat.card.SearchAdmCode;
  94. //MessageBox.Show(Global.pat.card.SearchAdmCode + Global.pat.card.SearchAdmName);
  95. }
  96. #region 【调用1101获取人员信息)】
  97. if (trade1101(out outParam) != 0)
  98. {
  99. return Error();
  100. }
  101. else
  102. {
  103. return Success(outParam);
  104. }
  105. #endregion
  106. return Exception(-1, "读卡", outParam);
  107. }
  108. catch (Exception ex)
  109. {
  110. return Error("异常:" + ex.Message);
  111. }
  112. }
  113. /// <summary>
  114. /// 通过证件号获取基本信息(无卡)
  115. /// </summary>
  116. /// <param name="cardNo"></param>
  117. /// <param name="outParam"></param>
  118. /// <returns></returns>
  119. public int trade1101(out string outParam)
  120. {
  121. #region【1101获取身份信息】
  122. JObject joData = new JObject();
  123. joData.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  124. joData.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  125. joData.Add("card_sn", Global.pat.card.SN);
  126. joData.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  127. joData.Add("psn_cert_type", Global.pat.certType);
  128. joData.Add("certno", Global.pat.certNO); //证件号码
  129. joData.Add("psn_name", Global.pat.name);
  130. JObject joInput = new JObject();
  131. joInput.Add("data", joData);
  132. //InvokeHelper invoker = new InvokeHelper();
  133. JObject joRtn = invoker.invokeCenterService(TradeEnum.PatientInfo.GetCode(), JsonHelper.setCenterInpar("1101", joInput));
  134. if (JsonHelper.parseCenterRtnValue(joRtn, out outParam) != 0)
  135. {
  136. outParam = "读卡失败:" + outParam;
  137. return -1;
  138. }
  139. else
  140. {
  141. //joRtn.Add("cardinfo",joCardInfo);
  142. outParam = joRtn.ToString();
  143. Global.pat.insuplc_admdvs = JsonHelper.getDestValue(JObject.Parse(outParam), "output.insuinfo.insuplc_admdvs"); //参保地
  144. Global.pat.certNO = JsonHelper.getDestValue(JObject.Parse(outParam), "output.baseinfo.certno"); //证件号码
  145. Global.pat.psn_no = JsonHelper.getDestValue(JObject.Parse(outParam), "output.baseinfo.psn_no"); //人员编号
  146. outParam = outParam.Replace(@"\", "").Replace("\"{", "{").Replace("}\"", "}");
  147. return 0;
  148. }
  149. #endregion
  150. }
  151. }
  152. }