ChooseCard.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlTypes;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using PTMedicalInsurance.Common;
  12. using PTMedicalInsurance.Helper;
  13. using Newtonsoft.Json.Linq;
  14. using PTMedicalInsurance.Forms;
  15. using PTMedicalInsurance.Variables;
  16. using PTMedicalInsurance.CardReaders;
  17. namespace PTMedicalInsurance.Forms
  18. {
  19. public partial class ChooseCard : Form
  20. {
  21. public string cardType;
  22. public string businessType;
  23. public string ID,PatName;
  24. public int sL_CardType;
  25. public string psnCertType;
  26. //设置业务实例
  27. InvokeHelper invoker = new InvokeHelper();
  28. public ChooseCard()
  29. {
  30. InitializeComponent();
  31. this.StartPosition = FormStartPosition.CenterParent;
  32. initCombox();
  33. }
  34. private DataTable GetDBLKComboxTable(string sqlStr)
  35. {
  36. InvokeHelper invoker = new InvokeHelper();
  37. dynamic joInparm = new JObject();
  38. dynamic joTmp = new JObject();
  39. joTmp.sqlStr = sqlStr;
  40. JArray jaParams = new JArray();
  41. jaParams.Add(joTmp);
  42. joInparm.Add("params", JArray.FromObject(jaParams));
  43. joInparm.code = "09010014";
  44. string inParam = joInparm.ToString();
  45. JObject joRtn = invoker.invokeInsuService(inParam, "获取下拉框消息");
  46. //dynamic jsonRtn = JsonConvert.DeserializeObject(strRtn);
  47. DataTable dt = (DataTable)joRtn["result"].ToObject(typeof(DataTable));
  48. //dt.Columns[0].ColumnName = "编码";
  49. //dt.Columns[1].ColumnName = "名称";
  50. //dt.Columns[2].ColumnName = "拼音查找码";
  51. return dt;
  52. }
  53. private void SetDBLKCombox(ref PTControl.DBLookupCombox dblcbx, string sqlStr)
  54. {
  55. dblcbx.sDisplayField = "Code,Name,SearchCode";
  56. dblcbx.sDisplayMember = "名称";
  57. dblcbx.sKeyWords = "Code,SearchCode";
  58. DataTable dt = GetDBLKComboxTable(sqlStr);
  59. dblcbx.DataSource = dt;
  60. if (dt?.Rows.Count > 0)
  61. {
  62. // default to select first one;
  63. }
  64. dblcbx.RowFilterVisible = true;
  65. dblcbx.TextBox.Width = 400;
  66. dblcbx.DataGridView.Width = 400;
  67. dblcbx.DataGridView.Columns[0].Name = "编码";
  68. dblcbx.DataGridView.Columns[1].Name = "名称";
  69. dblcbx.DataGridView.Columns[2].Name = "查找码";
  70. dblcbx.DataGridView.Columns[0].Width = 100;
  71. dblcbx.DataGridView.Columns[1].Width = 200;
  72. }
  73. private void initCombox()
  74. {
  75. string sqlCondition = " and A.Interface_Dr = '" + Global.inf.InsuCurrencyCataLogue.ToString() + "'";
  76. string sqlStr = "";
  77. sqlStr = " SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr "
  78. + " WHERE A.InsuCode = 'psn_cert_type'" + sqlCondition;
  79. SetDBLKCombox(ref dblkcbxPsnCertType, sqlStr);
  80. }
  81. private void btOk_Click(object sender, EventArgs e)
  82. {
  83. cardType = "0" + (rbgCardType.SelectedIndex + 1).ToString();
  84. businessType = "01" + cbBusinessType.Text.Substring(0, 3);
  85. // 身份证
  86. if (rbgCardType.SelectedIndex == 1)
  87. {
  88. ID = tbID.Text;
  89. PatName = tbName.Text;
  90. }
  91. //社保卡
  92. if (rbgCardType.SelectedIndex == 2)
  93. {
  94. if (cbCardType.Text == "")
  95. {
  96. MessageBox.Show("读社保卡时需要选择卡类型!");
  97. return;
  98. }
  99. sL_CardType = int.Parse(cbCardType.Text.Trim().Substring(0, 1)); //卡类型
  100. }
  101. DialogResult = DialogResult.OK;
  102. }
  103. private void ChooseCard_Load(object sender, EventArgs e)
  104. {
  105. rbgCardType.SelectedIndex = 2; //身份证
  106. cbBusinessType.SelectedIndex = 0; //社保卡
  107. }
  108. private void rbgCardType_ValueChanged(object sender, int index, string text)
  109. {
  110. if (rbgCardType.SelectedIndex == 0)
  111. {
  112. // 电子凭证
  113. cbBusinessType.Enabled = true;
  114. lblNo.Text = "电子凭证号";
  115. tbID.Text = "";
  116. tbID.Focus();
  117. }
  118. else
  119. {
  120. lblNo.Text = "身份证号";
  121. cbBusinessType.Enabled = false;
  122. tbID.Text = Global.pat.presetIDNO;
  123. }
  124. if (rbgCardType.SelectedIndex == 2)
  125. {
  126. cbCardType.SelectedIndex = 0;
  127. cbCardLevel.SelectedIndex = 2;
  128. cbCardType.Enabled = true;
  129. tbPassword.Enabled = true;
  130. //tbPassword.Text = "";
  131. }
  132. else
  133. {
  134. cbCardType.Enabled = false;
  135. tbPassword.Enabled = false;
  136. }
  137. if (rbgCardType.SelectedIndex == 1)
  138. {
  139. cbCBD.Text = "泰州市";
  140. Global.pat.card.SearchAdmCode = "321200";
  141. }
  142. else
  143. {
  144. cbCBD.Text = "";
  145. Global.pat.card.SearchAdmCode = "";
  146. }
  147. }
  148. private void btCancle_Click(object sender, EventArgs e)
  149. {
  150. DialogResult = DialogResult.Cancel;
  151. }
  152. /// <summary>
  153. /// 修改密码
  154. /// </summary>
  155. /// <param name="sender"></param>
  156. /// <param name="e"></param>
  157. private void uiButton1_Click(object sender, EventArgs e)
  158. {
  159. string errorMsg="";
  160. JObject joData = new JObject();
  161. joData.Add("", "");
  162. JObject joInput = new JObject();
  163. joInput.Add("data", joData);
  164. InvokeHelper invoker = new InvokeHelper();
  165. JObject joRtn =invoker.invokeCenterService(TradeEnum.ModifyPassword, joInput);
  166. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  167. {
  168. MessageBox.Show("修改卡密码失败:" + errorMsg);
  169. }
  170. else
  171. {
  172. MessageBox.Show("修改卡密码成功!");
  173. }
  174. }
  175. private void SearchAdmdvs()
  176. {
  177. JObject joAdmdvsInfo = new JObject();
  178. SearchAdmdvs Adm = new SearchAdmdvs();
  179. try
  180. {
  181. Global.pat.card.SearchAdmKey = cbCBD.Text;
  182. Adm.StartPosition = FormStartPosition.CenterParent;
  183. if (Adm.ShowDialog() == DialogResult.OK)
  184. {
  185. cbCBD.Text = Global.pat.card.SearchAdmName;
  186. if (!string.IsNullOrEmpty(Global.pat.card.SearchAdmCode))
  187. {
  188. //自动选择异地
  189. if (Utils.isOtherCity(Global.pat.card.SearchAdmCode))
  190. {
  191. //rbgOtherProv.SelectedIndex = 1;
  192. }
  193. }
  194. }
  195. }
  196. catch (Exception ex)
  197. {
  198. MessageBox.Show("异常:" + ex.Message);
  199. return;
  200. }
  201. }
  202. private void dblkcbxPsnCertType_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e)
  203. {
  204. DataGridViewRow row = e.Value as DataGridViewRow;
  205. DataRowView dataRow = row.DataBoundItem as DataRowView;
  206. psnCertType = dataRow["Code"].ToString().Trim();
  207. //insuTypeName = dataRow["Name"].ToString().Trim();
  208. }
  209. private void btInit_Click(object sender, EventArgs e)
  210. {
  211. string outParam = "";
  212. ComputerInfo comp = new ComputerInfo();
  213. comp.ExtractIpAndPort(Global.inf.centerURL, out string IP, out string Port);
  214. //组织读卡器初始化入参
  215. JObject joReadCard = new JObject();
  216. joReadCard.Add("IP", IP); //服务端IP地址
  217. joReadCard.Add("PORT", Port); //服务端端口
  218. joReadCard.Add("TIMEOUT", "120.0"); //超时
  219. joReadCard.Add("LOG_PATH", "D:\\InsuReadlog\\"); //动态库日志目录
  220. joReadCard.Add("EC_URL", Global.inf.ecURL); //电子凭证中台URL
  221. joReadCard.Add("CARD_PASSTYPE", "1"); //社保卡验证密码方式
  222. joReadCard.Add("API_NAME", Global.inf.apiName); //CSB的_api_name
  223. joReadCard.Add("API_VERSION", "1.0.0"); //CSB的_api_version
  224. joReadCard.Add("ACCESS_KEY", Global.inf.AK); //CSB的_api_access_key
  225. joReadCard.Add("SECRETKEY", Global.inf.SK); //CSB的secretKey
  226. joReadCard.Add("ORG_ID", Global.inf.hospitalNO); //定点编号
  227. joReadCard.Add("EXT", ""); //JSON对象字符串
  228. joReadCard.Add("AREA_CODE", Global.inf.areaCode); //定点所属行政区划代码
  229. CardReader reader = CardReader.Instance;
  230. reader.Initialize(Global.inf.cardURL, Global.inf.areaCode);
  231. if (reader.Init(joReadCard.ToString(), out outParam) != 0)
  232. {
  233. outParam = "读社保卡,初始化失败!";
  234. MessageBox.Show(outParam);
  235. }
  236. else
  237. {
  238. MessageBox.Show("初始化成功!");
  239. };
  240. }
  241. private void cbCBD_DoEnter(object sender, EventArgs e)
  242. {
  243. //初始化
  244. Global.pat.card.SearchAdmCode = "";
  245. SearchAdmdvs();
  246. }
  247. }
  248. }