| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
-
- using Newtonsoft.Json.Linq;
- using PTMedicalInsurance.Common;
- using PTMedicalInsurance.Helper;
- using PTMedicalInsurance.Variables;
- using PTMedicalInsurance.Forms;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace PTMedicalInsurance.Business.Core.SelfServiceMachine.Process.ReadCard
- {
- class ReadCardProcess:AbstractProcess
- {
- public override CallResult Process(JObject input)
- {
- outParam = "";
- outParam = "";
- string password = "";
- string errorMsg = "";
- JObject joRtn = new JObject();
- JObject joCardInfo = new JObject();
- JObject joInput = new JObject();
- InvokeHelper invoker = new InvokeHelper();
- try
- {
- Global.writeLog($"Global.ssmp.cardType:{Global.ssmp.cardType}");
- Global.pat.certType = "01";
- //电子凭证
- if (Global.ssmp.cardType == "02")
- {
- JObject jodata = new JObject
- {
- { "operatorId", Global.user.ID },
- { "operatorName", Global.user.name },
- { "officeId", Global.user.officeID },
- { "officeName", Global.user.officeName },
- { "orgId", Global.inf.hospitalNO },
- { "businessType", "01101" },
- { "deviceType", "" }
- };
- JObject joInData = new JObject();
- joInData.Add("orgId", Global.inf.hospitalNO);
- joInData.Add("transType", "ec.query");
- joInData.Add("data", jodata);
- CardReader cr = new CardReader();
- string outData = "";
- string InData = joInData.ToString();
- string a = cr.NationEcTrans(Global.inf.ecURL, InData, out outData);
- if (a == "0000")
- {
- JObject joOut = JObject.Parse(outData);
- if (JsonHelper.getDestValue(joOut, "code") != "0")
- {
- outParam = JsonHelper.getDestValue(joOut, "message");
- return Error(outParam);
- }
- else
- {
- Global.pat.mdtrtcertType = "01";
- Global.pat.mdtrtcertNO = JsonHelper.getDestValue(joOut, "data.ecToken");
- Global.pat.name = JsonHelper.getDestValue(joOut, "data.userName");
- Global.pat.certType = JsonHelper.getDestValue(joOut, "data.idType");
- Global.pat.certNO = JsonHelper.getDestValue(joOut, "data.idNo");
- Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joOut, "data.insuOrg");
- }
- }
- else
- {
- outParam = outData;
- return Error(outParam);
- }
- }
- //身份证
- if (Global.ssmp.cardType == "04")
- {
- Global.pat.mdtrtcertType = "02";
- Global.pat.card.SN = "";
- //Global.pat.card.password = HaErBinEncrypt.EncryptBySM3HASH(cc.tbPassword.Text);
- Global.pat.certType = "01";
- Global.pat.card.NO = Global.pat.IDNO;
- Global.pat.certNO = Global.pat.IDNO;
- Global.pat.card.level = "03";
- Global.pat.name = "";
- }
- //社保卡
- if (Global.ssmp.cardType == "03")
- {
- CardReader_HLJ cr = new CardReader_HLJ();
- Global.pat.mdtrtcertType = "03";
- Global.pat.card.type = "03";
- string cardReaderRtn = cr.readCardBas(3, Global.inf.hospitalNO);
- if (tools.getDestPosStrBySpliter(cardReaderRtn, 1, ",") != "0")
- {
- outParam = "读社保卡卡信息失败!" + tools.getDestPosStrBySpliter(cardReaderRtn, 2, ",");
- return Error("读社保卡");
- }
- else
- {
- string cardInfo = tools.getDestPosStrBySpliter(cardReaderRtn, 2, ",");
- Global.pat.insuplc_admdvs = tools.getDestPosStrBySpliter(cardInfo, 1);
- Global.pat.certType = "01";
- Global.pat.certNO = tools.getDestPosStrBySpliter(cardInfo, 2);
- Global.pat.mdtrtcertNO = tools.getDestPosStrBySpliter(cardInfo, 3);
- Global.pat.card.NO = tools.getDestPosStrBySpliter(cardInfo, 3);
- Global.pat.card.SN = tools.getDestPosStrBySpliter(cardInfo, 4);
- Global.pat.name = tools.getDestPosStrBySpliter(cardInfo, 5);
-
- try
- {
- PasswordKeyboardForm pkf = new PasswordKeyboardForm();
- if (pkf.ShowDialog() == DialogResult.OK)
- {
- password = HaErBinEncrypt.EncryptBySM3HASH(pkf.PassWord);
- }
- else
- {
- return Error("您已取消输入社保卡密码!");
- }
- }
- catch (Exception ex)
- {
- outParam = "卡密加密异常!" + ex.Message;
- return Error("卡密加密");
- }
- Global.pat.card.password = password;
- Global.pat.card.level = "03";
- }
- }
- //人脸识别
- if (Global.ssmp.cardType == "05")
- {
-
- }
- //鉴权
- if (Global.ssmp.cardType != "02")
- {
- if (cBus.Authenticate(out errorMsg) != 0)
- {
- outParam = "鉴权失败:" + errorMsg;
- return Error("鉴权");
- }
- else
- {
- Global.pat.insuplc_admdvs = JsonHelper.getDestValue(JObject.Parse(errorMsg), "output.baseinfo.insuinfo[0].insuplc_admdvs");
- Global.pat.mdtrtcertNO = JsonHelper.getDestValue(JObject.Parse(errorMsg), "output.baseinfo.mdtrt_cert_no");
- Global.pat.name = JsonHelper.getDestValue(JObject.Parse(errorMsg), "output.baseinfo.psn_name");
- }
- }
- #region 【调用1101获取人员信息】
- if (trade1101(out outParam) != 0)
- {
- return Error();
- }
- else
- {
- //读社保卡时,哈尔滨省医保,哈尔滨市医保居民需要验密
- joRtn = JObject.Parse(outParam);
- JArray jaInsuInfo = JArray.FromObject(joRtn["output"]["insuinfo"]);
- if (Global.ssmp.cardType == "03")
- {
- if ((jaInsuInfo[0]["insutype"].ToString() == "390") || (jaInsuInfo[0]["insuplc_admdvs"].ToString().Substring(0, 4) == "2399"))
- {
- CardReader_HLJ cr = new CardReader_HLJ();
- string verifyPINRtn = cr.VerifyPIN(3, password, Global.inf.hospitalNO);
- Global.writeLog(verifyPINRtn);
- if (tools.getDestPosStrBySpliter(verifyPINRtn, 1, ",") != "0")
- {
- outParam = "验密失败!" + tools.getDestPosStrBySpliter(verifyPINRtn, 2, ",");
- return Error("验密");
- }
- }
- }
-
- return Success(outParam);
- }
- #endregion
-
- return Exception(-1, "读卡", outParam);
- }
- catch (Exception ex)
- {
- return Error("异常:" + ex.Message);
- }
- }
- /// <summary>
- /// 通过证件号获取基本信息(无卡)
- /// </summary>
- /// <param name="cardNo"></param>
- /// <param name="outParam"></param>
- /// <returns></returns>
- public int trade1101(out string outParam)
- {
- #region【1101获取身份信息】
- //JObject joData = new JObject();
- //joData.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
- //joData.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
- //joData.Add("card_sn", Global.pat.card.SN);
- //joData.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- //joData.Add("psn_cert_type", Global.pat.certType);
- //joData.Add("certno", Global.pat.certNO); //证件号码
- //joData.Add("psn_name", Global.pat.name);
- //JObject joInput = new JObject();
- //joInput.Add("data", joData);
-
- //JObject joRtn = invoker.invokeCenterService(TradeEnum.PatientInfo.GetCode(), JsonHelper.setCenterInpar("1101", joInput));
- //if (JsonHelper.parseCenterRtnValue(joRtn, out outParam) != 0)
- //{
- // outParam = "读卡失败:" + outParam;
- // return -1;
- //}
- //else
- //{
- // outParam = joRtn.ToString();
- // return 0;
- //}
- //调用1101
- JObject joData = new JObject();
- joData.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
- joData.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
- joData.Add("card_sn", Global.pat.card.SN);
- joData.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- joData.Add("psn_cert_type", Global.pat.certType);
- joData.Add("certno", Global.pat.certNO);
- joData.Add("psn_name", Global.pat.name);
- JObject joInput = new JObject();
- joInput.Add("data", joData);
- InvokeHelper invoker = new InvokeHelper();
- JObject joRtn = invoker.invokeCenterService("1101", joInput);
- if (JsonHelper.parseCenterRtnValue(joRtn, out outParam) != 0)
- {
- outParam = "读卡失败:" + outParam;
- return -1;
- }
- else
- {
- outParam = joRtn.ToString();
- return 0;
- }
- #endregion
- }
- }
- }
|