PatientInsuInfo.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  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. dgvInsuInfo.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  216. dgvInsuInfo.ColumnHeadersHeight = 40; //341124199210252617
  217. }
  218. private void setDgvIDInfo()
  219. {
  220. AddDGVColumn(dgvIDInfo, "人员身份类别", "psn_idet_type", 140);
  221. AddDGVColumn(dgvIDInfo, "人员类别等级", "psn_type_lv", 140);
  222. AddDGVColumn(dgvIDInfo, "备注", "memo", 150);
  223. AddDGVColumn(dgvIDInfo, "开始时间", "begntime", 200);
  224. AddDGVColumn(dgvIDInfo, "结束时间", "endtime", 200);
  225. dgvIDInfo.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  226. dgvIDInfo.ColumnHeadersHeight = 40;
  227. }
  228. private void uiButton1_Click(object sender, EventArgs e)
  229. {
  230. insuInfoIndex = dgvInsuInfo.CurrentRow.Index;
  231. if (dtIDInfo.Rows.Count != 0 )
  232. idInfoIndex = dgvIDInfo.CurrentRow.Index;
  233. joSelectedInsuInfo = new JObject();
  234. for (int i = 0; i < dtInsuInfo.Columns.Count; i++)
  235. {
  236. string key = dtInsuInfo.Columns[i].ColumnName;
  237. string value = dgvInsuInfo.CurrentRow.Cells[key].Value.ToString();
  238. joSelectedInsuInfo.Add(key, value);
  239. }
  240. DialogResult = DialogResult.OK;
  241. }
  242. private void uiButton2_Click(object sender, EventArgs e)
  243. {
  244. DialogResult = DialogResult.Cancel;
  245. }
  246. private JObject QueryPaymentDetail()
  247. {
  248. var joData = new { data = new { psn_no = this.tbPsnNO.Text } };
  249. return invoker.invokeCenterService(TradeEnum.QueryPaymentDetail,JObject.FromObject(joData));
  250. }
  251. private void btnRYDY2001_Click(object sender, EventArgs e)
  252. {
  253. string sInput = "", errorMsg = "";
  254. int iHis = dgvInsuInfo.CurrentRow.Index;
  255. if (dgvInsuInfo.CurrentRow == null)
  256. {
  257. MessageBox.Show("请选择参保信息再查询!");
  258. return;
  259. }
  260. string insutype = dgvInsuInfo.Rows[iHis].Cells["insutypeNo"].Value.ToString();
  261. string beginDate = DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd HH:mm:ss");
  262. JObject joData = new JObject();
  263. joData.Add("psn_no", this.tbPsnNO.Text);
  264. joData.Add("insutype", insutype);
  265. joData.Add("fixmedins_code", Global.inf.hospitalNO);
  266. joData.Add("med_type", "11");
  267. joData.Add("begntime", beginDate);
  268. joData.Add("endtime", "");
  269. joData.Add("dise_codg", "");
  270. joData.Add("dise_name", "");
  271. joData.Add("oprn_oprt_code", "");
  272. joData.Add("oprn_oprt_name", "");
  273. joData.Add("matn_type", "");
  274. joData.Add("birctrl_type", "");
  275. JObject joInput = new JObject();
  276. joInput.Add("data", joData);
  277. JObject joRtn = invoker.invokeCenterService(TradeEnum.BenefitCheck, joInput);
  278. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  279. {
  280. MessageBox.Show("人员待遇享受检查失败:" + errorMsg);
  281. }
  282. else
  283. {
  284. string treatInfo = JsonHelper.getDestValue(joRtn, "output.trtinfo");
  285. if (!string.IsNullOrEmpty(treatInfo))
  286. {
  287. JArray jarray = JArray.Parse(treatInfo);
  288. StringBuilder sb = new StringBuilder();
  289. foreach (JObject obj in jarray)
  290. {
  291. string flag = JsonHelper.getDestValue(obj, "trt_enjymnt_flag");
  292. if ("0".Equals(flag))
  293. {
  294. string fundType = JsonHelper.getDestValue(obj, "fund_pay_type");
  295. string msg = JsonHelper.getDestValue(obj, "trt_chk_rslt");
  296. sb.Append("基金类型:【" + fundType + "】" + msg);
  297. }
  298. }
  299. if (sb.Length > 0)
  300. {
  301. MessageBox.Show("人员待遇享受检查结果:" + sb.ToString());
  302. return;
  303. }
  304. }
  305. MessageBox.Show("人员待遇享受检查结果:【正常】!");
  306. }
  307. }
  308. private void dgvInsuInfo_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
  309. {
  310. uiButton1_Click(sender,e);
  311. }
  312. private JObject QueryAccumutualInfo()
  313. {
  314. var joData = new { data = new { psn_no = this.tbPsnNO.Text , year = tbYear_PaymentDetail.Text} };
  315. return invoker.invokeCenterService(TradeEnum.QueryAccumutualInfoLocal, JObject.FromObject(joData));
  316. }
  317. private void btAccumulate_Click(object sender, EventArgs e)
  318. {
  319. JObject joRtn = QueryAccumutualInfo();
  320. string err;
  321. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  322. {
  323. MessageBox.Show(err);
  324. return;
  325. }
  326. dgvAccumulativeInfo.DataSource = (DataTable)joRtn["output"]["result"]["mutualAidSetlInfoDTOS"].ToObject(typeof(DataTable));
  327. }
  328. private JObject QueryTurnToOtherHospInfo()
  329. {
  330. var joData = new { data = new { psn_no = this.tbPsnNO.Text, refl_fil_type = tools.getDestPosStrBySpliter(cbTurnType.Text,1,".") , begntime = tbBeginDate.Text,endtime = tbEndDate.Text} };
  331. return invoker.invokeCenterService(TradeEnum.QueryTransferInfo, JObject.FromObject(joData));
  332. }
  333. private void btTurnToOtherHosp_Click(object sender, EventArgs e)
  334. {
  335. JObject joRtn = QueryTurnToOtherHospInfo();
  336. string err;
  337. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  338. {
  339. MessageBox.Show(err);
  340. return;
  341. }
  342. dgvTurnToOtherHospInfo.DataSource = (DataTable)joRtn["output"]["result"].ToObject(typeof(DataTable));
  343. }
  344. private JObject QueryTreamentInfo()
  345. {
  346. int i = dgvInsuInfo.SelectedIndex;
  347. string insutype = dgvInsuInfo.Rows[i].Cells["insutypeNo"].Value.ToString() ;
  348. 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} };
  349. return invoker.invokeCenterService(TradeEnum.BenefitCheck, JObject.FromObject(joData));
  350. }
  351. private void btTreatment_Click(object sender, EventArgs e)
  352. {
  353. JObject joRtn = QueryTreamentInfo();
  354. string err;
  355. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  356. {
  357. MessageBox.Show(err);
  358. return;
  359. }
  360. dgvTreatment.DataSource = (DataTable)joRtn["output"]["result"]["mutualAidSetlInfoDTOS"].ToObject(typeof(DataTable));
  361. MessageBox.Show("接口【2001-人员享受待遇查询】因为各地市待遇享受条件不一致,最终查询结果以【90100-缴费查询接口】查询缴费情况为准!");
  362. }
  363. }
  364. }