PatientInsuInfo.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Newtonsoft.Json.Linq;
  11. using PTMedicalInsurance.Helper;
  12. using PTMedicalInsurance.Variables;
  13. using PTMedicalInsurance.Business;
  14. using PTMedicalInsurance.Common;
  15. using PTMedicalInsurance.Forms.Setters.PatientInsuInfos;
  16. namespace PTMedicalInsurance.Forms
  17. {
  18. public partial class PatientInsuInfo : Form
  19. {
  20. public DataTable dtInsuInfo;
  21. public DataTable dtIDInfo;
  22. public JObject joSelectedInsuInfo;
  23. public int insuInfoIndex = 0;
  24. public int idInfoIndex = 0;
  25. InvokeHelper invoker = new InvokeHelper();
  26. private MIIrisServices mIS = new MIIrisServices();
  27. private DataTable dtFundPayType;
  28. private Form mainForm;
  29. //1.声明自适应类实例
  30. AutoResizeForm asc = new AutoResizeForm();
  31. public PatientInsuInfo()
  32. {
  33. InitializeComponent();
  34. this.StartPosition = FormStartPosition.CenterParent;
  35. asc.controllInitializeSize(this);
  36. asc.controlAutoSize(this);
  37. }
  38. public PatientInsuInfo(JObject jo, Form frm)
  39. {
  40. InitializeComponent();
  41. InitForm(jo, frm);
  42. }
  43. private void InitForm(JObject jo)
  44. {
  45. dtInsuInfo = (DataTable)jo["insuinfo"].ToObject(typeof(DataTable));
  46. dtIDInfo = (DataTable)jo["idetinfo"].ToObject(typeof(DataTable));
  47. JObject joBaseInfo = JObject.FromObject(jo["baseinfo"]);
  48. this.tbName.Text = joBaseInfo["psn_name"].ToString();
  49. this.tbPsnNO.Text = joBaseInfo["psn_no"].ToString();
  50. this.tbGend.Text = joBaseInfo["gend"].ToString();
  51. this.tbBirthDay.Text = joBaseInfo["brdy"].ToString();
  52. this.tbNaty.Text = joBaseInfo["naty"].ToString();
  53. this.tbCertType.Text = joBaseInfo["psn_cert_type"].ToString();
  54. this.tbCertNO.Text = joBaseInfo["certno"].ToString();
  55. this.tbAge.Text = joBaseInfo["age"].ToString();
  56. string expContent = joBaseInfo["exp_content"].ToString(); //字段扩展 只有居民返回
  57. //JObject joInsuInfo = JObject.FromObject(jo["insuinfo"]);
  58. //Global.pat.insuType= joInsuInfo["insutypeNo"].ToString();
  59. setDgvIDInfo();
  60. setDgvInsuInfo();
  61. setDgvTreatement(dgvTreatment);
  62. dgvInsuInfo.DataSource = dtInsuInfo;
  63. dgvIDInfo.DataSource = dtIDInfo;
  64. //获取通用目录
  65. string sTYML = mIS.GetCommonInterface_Dr(Global.inf.interfaceDr.ToString(), "");
  66. if (sTYML == "")
  67. Global.inf.interfaceDr_TY = Global.inf.interfaceDr;
  68. else
  69. Global.inf.interfaceDr_TY = int.Parse(sTYML);
  70. string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr_TY.ToString() + "'";
  71. string sqlStr = "SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.InsuCode = 'fund_pay_type'" + sqlCondition;
  72. dtFundPayType = GetDBLKComboxTable(sqlStr);
  73. }
  74. private void InitForm(JObject jo, Form frm)
  75. {
  76. InitForm(jo);
  77. mainForm = frm;
  78. CheckForIllegalCrossThreadCalls = false;
  79. // 禁用关闭按钮
  80. this.FormBorderStyle = FormBorderStyle.None;
  81. // 隐藏标题栏
  82. this.ControlBox = false;
  83. // 其他可能需要的配置
  84. if (mainForm != this)
  85. {
  86. this.TopLevel = false;
  87. this.Dock = DockStyle.Fill; // 根据需要设置 Dock 属性
  88. }
  89. else
  90. {
  91. this.WindowState = FormWindowState.Maximized;
  92. }
  93. //
  94. //grdSetter.setHisRegInfo(dgvHisRegInfo);
  95. //grdSetter.setCenterApplyInfo(dgvCenterApplyInfo);
  96. }
  97. public PatientInsuInfo(JObject jo)
  98. {
  99. InitializeComponent();
  100. dtInsuInfo = (DataTable)jo["insuinfo"].ToObject(typeof(DataTable));
  101. dtIDInfo = (DataTable)jo["idetinfo"].ToObject(typeof(DataTable));
  102. JObject joBaseInfo = JObject.FromObject(jo["baseinfo"]);
  103. this.tbName.Text = joBaseInfo["psn_name"].ToString();
  104. this.tbPsnNO.Text = joBaseInfo["psn_no"].ToString();
  105. this.tbGend.Text = joBaseInfo["gend"].ToString();
  106. this.tbBirthDay.Text = joBaseInfo["brdy"].ToString();
  107. this.tbNaty.Text = joBaseInfo["naty"].ToString();
  108. this.tbCertType.Text = joBaseInfo["psn_cert_type"].ToString();
  109. this.tbCertNO.Text = joBaseInfo["certno"]+"";
  110. this.tbAge.Text = joBaseInfo["age"] + "";
  111. //JObject joInsuInfo = JObject.FromObject(jo["insuinfo"]);
  112. //Global.pat.insuType= joInsuInfo["insutypeNo"].ToString();
  113. GridViewSetter grdSetter = new GridViewSetter();
  114. grdSetter.setDgvIDInfo(dgvIDInfo);
  115. grdSetter.setDgvInsuInfo(dgvInsuInfo);
  116. grdSetter.setDgvAccumutual(dgvAccumulativeInfo);
  117. grdSetter.setDgvPaymentDetail(dgvPaymentDetail);
  118. grdSetter.setDgvTreatement(dgvTreatment);
  119. //grdSetter.setDgvTurnToOtherHosp(dgvTurnToOtherHospInfo);
  120. dgvInsuInfo.DataSource = dtInsuInfo;
  121. dgvIDInfo.DataSource = dtIDInfo;
  122. JObject joRtn = QueryPaymentDetail();
  123. if (JsonHelper.parseCenterRtnValue(joRtn, out string errorMsg) == 0)
  124. {
  125. //处理字典数据-缴费档次 【clctstd_crtf_rule_codg】
  126. JArray jaTradearray = JArray.Parse(JsonHelper.getDestValue(joRtn, "output"));
  127. for (int i = 0; i < JArray.Parse(JsonHelper.getDestValue(joRtn, "output")).Count; i++)
  128. {
  129. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A31001")
  130. jaTradearray[i]["clctstd_crtf_rule_codg"] = "一档医疗在职";
  131. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A31002")
  132. jaTradearray[i]["clctstd_crtf_rule_codg"] = "二档医疗在职";
  133. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A31003")
  134. jaTradearray[i]["clctstd_crtf_rule_codg"] = "三档医疗";
  135. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A31004")
  136. jaTradearray[i]["clctstd_crtf_rule_codg"] = "少儿二档";
  137. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A31007")
  138. jaTradearray[i]["clctstd_crtf_rule_codg"] = "特殊保健";
  139. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A32001")
  140. jaTradearray[i]["clctstd_crtf_rule_codg"] = "在职公务员";
  141. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A32002")
  142. jaTradearray[i]["clctstd_crtf_rule_codg"] = "在职驻深公务员";
  143. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A39301")
  144. jaTradearray[i]["clctstd_crtf_rule_codg"] = "家属统筹医疗";
  145. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A51001")
  146. jaTradearray[i]["clctstd_crtf_rule_codg"] = "生育在职";
  147. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A52001")
  148. jaTradearray[i]["clctstd_crtf_rule_codg"] = "生育医疗一档";
  149. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "A52002")
  150. jaTradearray[i]["clctstd_crtf_rule_codg"] = "生育医疗二档";
  151. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "C31001")
  152. jaTradearray[i]["clctstd_crtf_rule_codg"] = "一档医疗退休";
  153. if (jaTradearray[i]["clctstd_crtf_rule_codg"].ToString() == "C31002")
  154. jaTradearray[i]["clctstd_crtf_rule_codg"] = "二档医疗退休";
  155. }
  156. dgvPaymentDetail.DataSource = (DataTable)jaTradearray.ToObject(typeof(DataTable));
  157. }
  158. //dgvPaymentDetail.DataSource = (DataTable)joRtn["output"].ToObject(typeof(DataTable));
  159. }
  160. private void AddDGVColumn(DataGridView dgv, string headerText, string dataPropertyName, int width = 120)
  161. {
  162. DataGridViewColumn newColumn = new DataGridViewTextBoxColumn();
  163. newColumn.HeaderText = headerText;
  164. newColumn.Width = width;
  165. newColumn.DataPropertyName = dataPropertyName;
  166. newColumn.Name = dataPropertyName;
  167. dgv.Columns.Add(newColumn);
  168. }
  169. private DataTable GetDBLKComboxTable(string sqlStr)
  170. {
  171. InvokeHelper invoker = new InvokeHelper();
  172. dynamic joInparm = new JObject();
  173. dynamic joTmp = new JObject();
  174. joTmp.sqlStr = sqlStr;
  175. JArray jaParams = new JArray();
  176. jaParams.Add(joTmp);
  177. joInparm.Add("params", JArray.FromObject(jaParams));
  178. joInparm.code = "09010014";
  179. string inParam = joInparm.ToString();
  180. JObject joRtn = invoker.invokeInsuService(inParam, "获取下拉框消息");
  181. //dynamic jsonRtn = JsonConvert.DeserializeObject(strRtn);
  182. DataTable dt = (DataTable)joRtn["result"].ToObject(typeof(DataTable));
  183. //dt.Columns[0].ColumnName = "编码";
  184. //dt.Columns[1].ColumnName = "名称";
  185. //dt.Columns[2].ColumnName = "拼音查找码";
  186. return dt;
  187. }
  188. public void setDgvTreatement(DataGridView dgv)
  189. {
  190. dgv.AutoGenerateColumns = false;
  191. dgv.Columns.Clear();
  192. AddDGVColumn(dgv, "人员编号", "psn_no", 300);
  193. AddDGVColumn(dgv, "待遇检查类型", "trt_chk_type", 140);
  194. AddDGVColumn(dgv, "基金支付类型", "fund_pay_type", 300);
  195. AddDGVColumn(dgv, "基金款项待遇享受标志", "trt_enjymnt_flag", 140);
  196. AddDGVColumn(dgv, "开始日期", "begndate", 200);
  197. AddDGVColumn(dgv, "结束日期", "enddate", 200);
  198. AddDGVColumn(dgv, "待遇检查结果", "trt_chk_rslt", 140);
  199. AddDGVColumn(dgv, "字段扩展", "exp_content", 140);
  200. dgv.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  201. dgv.ColumnHeadersHeight = 30;
  202. }
  203. private void setDgvInsuInfo()
  204. {
  205. AddDGVColumn(dgvInsuInfo, "余额", "balc", 80);
  206. AddDGVColumn(dgvInsuInfo, "险种类型", "insutype", 200);
  207. AddDGVColumn(dgvInsuInfo, "人员类别", "psn_type");
  208. AddDGVColumn(dgvInsuInfo, "人员参保状态", "psn_insu_stas");
  209. AddDGVColumn(dgvInsuInfo, "个人参保日期", "psn_insu_date", 170);
  210. AddDGVColumn(dgvInsuInfo, "暂停参保日期", "paus_insu_date");
  211. AddDGVColumn(dgvInsuInfo, "公务员标志", "cvlserv_flag", 95);
  212. AddDGVColumn(dgvInsuInfo, "参保区划", "insuplc_admdvs", 85);
  213. AddDGVColumn(dgvInsuInfo, "单位名称", "emp_name", 300);
  214. AddDGVColumn(dgvInsuInfo, "险种类型编码", "insutypeNo");
  215. AddDGVColumn(dgvInsuInfo, "人员类别名称", "psn_type_name");
  216. dgvInsuInfo.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  217. dgvInsuInfo.ColumnHeadersHeight = 40; //341124199210252617
  218. }
  219. private void setDgvIDInfo()
  220. {
  221. AddDGVColumn(dgvIDInfo, "人员身份类别", "psn_idet_type", 140);
  222. AddDGVColumn(dgvIDInfo, "人员类别等级", "psn_type_lv", 140);
  223. AddDGVColumn(dgvIDInfo, "备注", "memo", 150);
  224. AddDGVColumn(dgvIDInfo, "开始时间", "begntime", 200);
  225. AddDGVColumn(dgvIDInfo, "结束时间", "endtime", 200);
  226. dgvIDInfo.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  227. dgvIDInfo.ColumnHeadersHeight = 40;
  228. }
  229. private void uiButton1_Click(object sender, EventArgs e)
  230. {
  231. insuInfoIndex = dgvInsuInfo.CurrentRow.Index;
  232. if (dtIDInfo.Rows.Count != 0 )
  233. idInfoIndex = dgvIDInfo.CurrentRow.Index;
  234. joSelectedInsuInfo = new JObject();
  235. for (int i = 0; i < dtInsuInfo.Columns.Count; i++)
  236. {
  237. string key = dtInsuInfo.Columns[i].ColumnName;
  238. string value = dgvInsuInfo.CurrentRow.Cells[key].Value.ToString();
  239. joSelectedInsuInfo.Add(key, value);
  240. }
  241. DialogResult = DialogResult.OK;
  242. }
  243. private void uiButton2_Click(object sender, EventArgs e)
  244. {
  245. DialogResult = DialogResult.Cancel;
  246. }
  247. private JObject QueryPaymentDetail()
  248. {
  249. var joData = new { data = new { psn_no = this.tbPsnNO.Text } };
  250. return invoker.invokeCenterService(TradeEnum.QueryPaymentDetail,JObject.FromObject(joData));
  251. }
  252. private void btnRYDY2001_Click(object sender, EventArgs e)
  253. {
  254. string sInput = "", errorMsg = "";
  255. int iHis = dgvInsuInfo.CurrentRow.Index;
  256. if (dgvInsuInfo.CurrentRow == null)
  257. {
  258. MessageBox.Show("请选择参保信息再查询!");
  259. return;
  260. }
  261. string insutype = dgvInsuInfo.Rows[iHis].Cells["insutypeNo"].Value.ToString();
  262. string beginDate = DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd HH:mm:ss");
  263. JObject joData = new JObject();
  264. joData.Add("psn_no", this.tbPsnNO.Text);
  265. joData.Add("insutype", insutype);
  266. joData.Add("fixmedins_code", Global.inf.hospitalNO);
  267. joData.Add("med_type", "11");
  268. joData.Add("begntime", beginDate);
  269. joData.Add("endtime", "");
  270. joData.Add("dise_codg", "");
  271. joData.Add("dise_name", "");
  272. joData.Add("oprn_oprt_code", "");
  273. joData.Add("oprn_oprt_name", "");
  274. joData.Add("matn_type", "");
  275. joData.Add("birctrl_type", "");
  276. JObject joInput = new JObject();
  277. joInput.Add("data", joData);
  278. JObject joRtn = invoker.invokeCenterService(TradeEnum.BenefitCheck, joInput);
  279. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  280. {
  281. MessageBox.Show("人员待遇享受检查失败:" + errorMsg);
  282. }
  283. else
  284. {
  285. string treatInfo = JsonHelper.getDestValue(joRtn, "output.trtinfo");
  286. if (!string.IsNullOrEmpty(treatInfo))
  287. {
  288. JArray jarray = JArray.Parse(treatInfo);
  289. StringBuilder sb = new StringBuilder();
  290. foreach (JObject obj in jarray)
  291. {
  292. string flag = JsonHelper.getDestValue(obj, "trt_enjymnt_flag");
  293. if ("0".Equals(flag))
  294. {
  295. string fundType = JsonHelper.getDestValue(obj, "fund_pay_type");
  296. string msg = JsonHelper.getDestValue(obj, "trt_chk_rslt");
  297. sb.Append("基金类型:【" + fundType + "】" + msg);
  298. }
  299. }
  300. if (sb.Length > 0)
  301. {
  302. MessageBox.Show("人员待遇享受检查结果:" + sb.ToString());
  303. return;
  304. }
  305. }
  306. MessageBox.Show("人员待遇享受检查结果:【正常】!");
  307. }
  308. }
  309. private void dgvInsuInfo_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
  310. {
  311. uiButton1_Click(sender,e);
  312. }
  313. private JObject QueryAccumutualInfo()
  314. {
  315. var joData = new { data = new { psn_no = this.tbPsnNO.Text , year = tbYear_PaymentDetail.Text} };
  316. return invoker.invokeCenterService(TradeEnum.QueryAccumutualInfoLocal, JObject.FromObject(joData));
  317. }
  318. private void btAccumulate_Click(object sender, EventArgs e)
  319. {
  320. JObject joRtn = QueryAccumutualInfo();
  321. string err;
  322. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  323. {
  324. MessageBox.Show(err);
  325. return;
  326. }
  327. dgvAccumulativeInfo.DataSource = (DataTable)joRtn["output"]["result"]["mutualAidSetlInfoDTOS"].ToObject(typeof(DataTable));
  328. }
  329. private JObject QueryTurnToOtherHospInfo()
  330. {
  331. var joData = new { data = new { psn_no = this.tbPsnNO.Text, refl_fil_type = tools.getDestPosStrBySpliter(cbTurnType.Text,1,".") , begntime = tbBeginDate.Text,endtime = tbEndDate.Text} };
  332. return invoker.invokeCenterService(TradeEnum.QueryTransferInfo, JObject.FromObject(joData));
  333. }
  334. private void btTurnToOtherHosp_Click(object sender, EventArgs e)
  335. {
  336. JObject joRtn = QueryTurnToOtherHospInfo();
  337. string err;
  338. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  339. {
  340. MessageBox.Show(err);
  341. return;
  342. }
  343. dgvTurnToOtherHospInfo.DataSource = (DataTable)joRtn["output"]["result"].ToObject(typeof(DataTable));
  344. }
  345. private JObject QueryTreamentInfo()
  346. {
  347. int i = dgvInsuInfo.SelectedIndex;
  348. string insutype = dgvInsuInfo.Rows[i].Cells["insutypeNo"].Value.ToString() ;
  349. var joData = new { data = new { psn_no = this.tbPsnNO.Text, insutype =insutype, med_type = tools.getDestPosStrBySpliter(cbxMedicalType.Text, 1, "."), begntime = tbBeginDate_treatment.Text, endtime = tbEndDate_treatment.Text, fixmedins_code = Global.inf.hospitalNO} };
  350. return invoker.invokeCenterService(TradeEnum.BenefitCheck, JObject.FromObject(joData));
  351. }
  352. private void btTreatment_Click(object sender, EventArgs e)
  353. {
  354. JObject joRtn = QueryTreamentInfo();
  355. string err;
  356. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  357. {
  358. MessageBox.Show(err);
  359. return;
  360. }
  361. dgvTreatment.DataSource = (DataTable)joRtn["output"]["result"]["mutualAidSetlInfoDTOS"].ToObject(typeof(DataTable));
  362. MessageBox.Show("接口【2001-人员享受待遇查询】因为各地市待遇享受条件不一致,最终查询结果以【90100-缴费查询接口】查询缴费情况为准!");
  363. }
  364. }
  365. }