OutOfAreaPatientClearing.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Entity.Base.Clearing;
  3. using PTMedicalInsurance.Helper;
  4. using PTMedicalInsurance.Variables;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. namespace PTMedicalInsurance.Business.Clearing
  13. {
  14. //异地清分
  15. class OutOfAreaPatientClearing
  16. {
  17. private InvokeHelper invoker = new InvokeHelper();
  18. private MIIrisServices mIS = new MIIrisServices();
  19. //private string year;
  20. //private string month;
  21. private DataTable datatable;
  22. private string transid;
  23. public int totalrow;
  24. #region 查询相关
  25. /// <summary>
  26. /// 查询医院医保库里的异地数据
  27. /// </summary>
  28. /// <param name="input"></param>
  29. /// <param name="outMsg"></param>
  30. /// <returns></returns>
  31. public int QueryHospitalData(JObject input, out string outMsg)
  32. {
  33. string hospitalDr = JsonHelper.getDestValue(input, "hospitalDr");
  34. DateTime dt = DateTime.Parse(JsonHelper.getDestValue(input, "month"));
  35. Global.curEvt.year = dt.ToString("yyyy");
  36. Global.curEvt.month = dt.ToString("MM");
  37. string begin = JsonHelper.getDestValue(input, "beginDate") + "0:00:00";
  38. string end = JsonHelper.getDestValue(input, "endDate") + "23:59:59"; ;
  39. string sqlStr = "Select CertificateNO,MdtrtID,SettlementDateTime,SettlementID,Sumamt,FundPaySumamt,'' mdtrt_setl_time ";
  40. sqlStr = sqlStr + ",'' as mdtrt_id,'' as setl_sn,'' as fulamt_advpay_flag,'' mdtrtarea,'' medins_no,'' certno,'' medfee_sumamt,'' optins_pay_sumamt,'1' cnfm_flag ";
  41. sqlStr = sqlStr + $" FROM BS_MedInsuSettlement WHERE ValidFlag = 1 and Hospital_Dr=" + hospitalDr;
  42. sqlStr = sqlStr + $" and OccurTime>='{begin}'";
  43. sqlStr = sqlStr + $" and OccurTime<='{end}'";
  44. sqlStr = sqlStr + " and (left(InsuranceAreaCode,2)<>'44')";
  45. sqlStr = sqlStr + " order by SettlementDateTime ";
  46. JObject joRtn = mIS.DynamicQuery(sqlStr, "查询HIS异地结算数据");
  47. return JsonHelper.parseIrisRtnResult(joRtn, out outMsg);
  48. }
  49. /// <summary>
  50. /// 查询中心的异地数据
  51. /// </summary>
  52. /// <param name="input"></param>
  53. /// <param name="outMsg"></param>
  54. /// <returns></returns>
  55. public int QueryCenterData(JObject input, out string outMsg)
  56. {
  57. JObject joRtn = invoker.invokeCenterService(TradeEnum.QueryOutOfAreaClearingDetail, new JObject(new JProperty("data", input)));
  58. if (JsonHelper.parseCenterReturnJson(joRtn, out outMsg) != 0)
  59. {
  60. return -1;
  61. }
  62. else
  63. {
  64. outMsg = joRtn.ToString();
  65. return 0;
  66. }
  67. }
  68. /// <summary>
  69. /// 循环查询中心数据,最后拼接成JARRY
  70. /// </summary>
  71. /// <param name="input"></param>
  72. /// <param name="ja"></param>
  73. /// <param name="outMsg"></param>
  74. /// <returns></returns>
  75. public int Combin3260Data(JObject input, out JArray ja, out string outMsg)
  76. {
  77. QueryOutOfAreaClearingDetailsInput queryInput = new QueryOutOfAreaClearingDetailsInput();
  78. DateTime dt = DateTime.Parse(input["month"].ToString());
  79. queryInput.trt_year = dt.ToString("yyyy");
  80. queryInput.trt_month = dt.ToString("MM");
  81. int startrow = 1;
  82. ja = null;
  83. //var combinedList = new List<QueryOutOfAreaClearingDetailsOutput>();
  84. while (true)
  85. {
  86. queryInput.startrow = startrow;
  87. if (QueryCenterData(queryInput.ToJson(), out outMsg) != 0)
  88. {
  89. return -1;
  90. }
  91. else
  92. {
  93. JObject joRtn = JObject.Parse(outMsg);
  94. JArray jaData = JArray.FromObject(joRtn["output"]["data"]);
  95. totalrow = int.Parse(joRtn["output"]["totalrow"].ToString());
  96. if (ja == null)
  97. {
  98. ja = jaData;
  99. }
  100. else
  101. {
  102. foreach (var jo in jaData)
  103. {
  104. ja.Add(jo);
  105. }
  106. }
  107. startrow = startrow + jaData.Count;
  108. if (jaData.Count < 100)
  109. {
  110. outMsg = "遍历完成,已查询到返回条数小于100!";
  111. return 0;
  112. }
  113. }
  114. }
  115. }
  116. /// <summary>
  117. /// 跟已查询出的医院数据进行匹配,未匹配成功的标记红色,多匹配的标记黄色,并新增行数显示
  118. /// </summary>
  119. /// <param name="dgv"></param>
  120. /// <param name="ja"></param>
  121. /// <param name="outMsg"></param>
  122. /// <returns></returns>
  123. public int MatchCenterData(DataGridView dgv, JArray ja, out string outMsg)
  124. {
  125. outMsg = "";
  126. //JArray jaDgv = (JArray)dgv.DataSource;
  127. DataTable dt = (DataTable)dgv.DataSource;
  128. DataColumn seqnoColumn = new DataColumn("seqno", typeof(int));
  129. seqnoColumn.DefaultValue = 0;
  130. dt.Columns.Add(seqnoColumn);
  131. //先遍历中心数据后遍历医院数据
  132. foreach (var item in ja)
  133. {
  134. bool isExist = false;
  135. JObject joCenter = (JObject)item;
  136. foreach (DataRow dr in dt.Rows)
  137. {
  138. if (dr["SettlementID"].ToString() == joCenter["setl_sn"].ToString())
  139. {
  140. dr["setl_sn"] = joCenter["setl_sn"].ToString();
  141. dr["seqno"] = int.Parse(joCenter["seqno"].ToString());
  142. dr["medfee_sumamt"] = joCenter["medfee_sumamt"].ToString();
  143. dr["fulamt_advpay_flag"] = joCenter["fulamt_advpay_flag"].ToString();
  144. dr["optins_pay_sumamt"] = joCenter["optins_pay_sumamt"].ToString();
  145. dr["mdtrt_setl_time"] = joCenter["mdtrt_setl_time"].ToString();
  146. dr["certno"] = joCenter["certno"].ToString();
  147. dr["mdtrt_id"] = joCenter["mdtrt_id"].ToString();
  148. dr["medins_no"] = joCenter["medins_no"].ToString();
  149. dr["mdtrtarea"] = joCenter["mdtrtarea"].ToString();
  150. isExist = true;
  151. }
  152. }
  153. if (!isExist)
  154. {
  155. // 创建一个新的行
  156. DataRow newRow = dt.NewRow();
  157. // 设置新行的值
  158. newRow["CertificateNO"] = "HIS未查询到,可扩大月份查询";
  159. newRow["MdtrtID"] = "";
  160. newRow["SettlementDateTime"] = "";
  161. newRow["SettlementID"] = joCenter["setl_sn"].ToString();
  162. newRow["Sumamt"] = "";
  163. newRow["FundPaySumamt"] = "";
  164. newRow["setl_sn"] = joCenter["setl_sn"].ToString();
  165. newRow["seqno"] = int.Parse(joCenter["seqno"].ToString());
  166. newRow["medfee_sumamt"] = joCenter["medfee_sumamt"].ToString();
  167. newRow["fulamt_advpay_flag"] = joCenter["fulamt_advpay_flag"].ToString();
  168. newRow["optins_pay_sumamt"] = joCenter["optins_pay_sumamt"].ToString();
  169. newRow["mdtrt_setl_time"] = joCenter["mdtrt_setl_time"].ToString();
  170. newRow["certno"] = joCenter["certno"].ToString();
  171. newRow["mdtrt_id"] = joCenter["mdtrt_id"].ToString();
  172. newRow["medins_no"] = joCenter["medins_no"].ToString();
  173. newRow["mdtrtarea"] = joCenter["mdtrtarea"].ToString();
  174. dt.Rows.Add(newRow);
  175. }
  176. }
  177. //dt.Columns.Add("rowid",typeof(int));
  178. //for (int i = 0;i <dt.Rows.Count;i ++)
  179. //{
  180. // dt.Rows[i]["rowid"] = i + 1;
  181. //}
  182. // 使用 LINQ 对 DataTable 进行排序
  183. var sortedRows = from row in dt.AsEnumerable()
  184. orderby row.Field<int>("seqno")
  185. select row;
  186. // 将排序后的行加载到新的 DataTable 中
  187. DataTable sortedTable = sortedRows.CopyToDataTable();
  188. datatable = sortedTable;
  189. dgv.DataSource = sortedTable;
  190. ////先遍历医院数据,如果未匹配到中心数据则标红
  191. //foreach (DataRow dr in dt.Rows)
  192. //{
  193. //}
  194. return 0;
  195. }
  196. /// <summary>
  197. /// 匹配医保库的上传记录表
  198. /// </summary>
  199. /// <param name="input"></param>
  200. /// <param name="outMsg"></param>
  201. /// <returns></returns>
  202. public int MatchMIUploadRecord(JObject input, out string outMsg)
  203. {
  204. outMsg = "";
  205. return 0;
  206. }
  207. #endregion
  208. #region 上传确认
  209. /// <summary>
  210. /// 组织3261的入参
  211. /// </summary>
  212. /// <param name="outMsg"></param>
  213. /// <returns></returns>
  214. public OutOfAreaClearingConfirmDetail OrgnizeSingle3261Detail(DataRow dr)
  215. {
  216. OutOfAreaClearingConfirmDetail detail = new OutOfAreaClearingConfirmDetail();
  217. detail.certno = dr["CertificateNO"].ToString();
  218. detail.mdtrt_id = dr["MdtrtID"].ToString();
  219. detail.mdtrt_setl_time = dr["SettlementDateTime"].ToString();
  220. detail.setl_sn = dr["SettlementID"].ToString();
  221. detail.medfee_sumamt = decimal.Parse(dr["Sumamt"].ToString());
  222. detail.cnfm_flag = dr["cnfm_flag"].ToString();
  223. detail.optins_pay_sumamt =decimal.Parse(dr["FundPaySumamt"].ToString());
  224. return detail;
  225. }
  226. /// <summary>
  227. /// 将确认结果上传给中心
  228. /// </summary>
  229. /// <param name="input"></param>
  230. /// <param name="outMsg"></param>
  231. /// <returns></returns>
  232. public int UploadToCenter(JObject input, out string outMsg)
  233. {
  234. JObject joRtn = invoker.invokeCenterService(TradeEnum.ConfirmOutOfAreaClearing, input);
  235. if (JsonHelper.parseCenterReturnJson(joRtn, out outMsg) != 0)
  236. {
  237. return -1;
  238. }
  239. else
  240. {
  241. outMsg = joRtn.ToString();
  242. return 0;
  243. }
  244. }
  245. /// <summary>
  246. /// 上传异地清分
  247. /// </summary>
  248. /// <param name="dgv"></param>
  249. /// <param name="rows"></param>
  250. /// <param name="outMsg"></param>
  251. /// <returns></returns>
  252. //public int BatchUpload(DataGridView dgv, int rows, out string outMsg)
  253. //{
  254. // outMsg = "";
  255. // List<OutOfAreaClearingConfirmDetail> details = new List<OutOfAreaClearingConfirmDetail>();
  256. // int rowTotalCount = datatable.Rows.Count;
  257. // for (int i = 0; i < rowTotalCount; i++)
  258. // {
  259. // DataRow dr = datatable.Rows[i];
  260. // JObject joTmp = new JObject();
  261. // if (((i + 1) / rows == 0) || ((i + 1) == rowTotalCount))
  262. // {
  263. // details = new List<OutOfAreaClearingConfirmDetail>();
  264. // //int totalrow = 0;
  265. // //if ((i + 1) / rows == 0)
  266. // //{
  267. // // totalrow = rows;
  268. // //}
  269. // //else
  270. // //{
  271. // // totalrow = rowTotalCount / rows;
  272. // //}
  273. // OutOfAreaClearingConfirmInput input = new OutOfAreaClearingConfirmInput();
  274. // OutOfAreaClearingConfirmData data = new OutOfAreaClearingConfirmData();
  275. // data.trt_year = year;
  276. // data.trt_month = month;
  277. // data.totalrow = totalrow;
  278. // input.detail = details;
  279. // input.data = data;
  280. // JObject joIn = input.ToJson();
  281. // if (UploadToCenter(joIn, out outMsg) != 0)
  282. // {
  283. // }
  284. // else
  285. // {
  286. // UpdateUploadRecord(JArray.Parse(JsonHelper.getDestValue(joIn, "detail")), out outMsg);
  287. // }
  288. // }
  289. // else
  290. // {
  291. // details.Add(OrgnizeSingle3261Detail(dr));
  292. // }
  293. // }
  294. // return 0;
  295. //}
  296. public int BatchUpload(DataGridView dgv, int rows, out string outMsg)
  297. {
  298. int iFalse = 0;outMsg = "";
  299. foreach (DataRow dr in datatable.Rows)
  300. {
  301. string err;
  302. if (dr["MdtrtID"].ToString() == "")
  303. {
  304. continue;
  305. }
  306. if (SingleUpload(dr, out err) != 0)
  307. {
  308. iFalse++;
  309. outMsg = outMsg + "\n" + err;
  310. }
  311. }
  312. return -iFalse;
  313. }
  314. #endregion
  315. #region 更新后台
  316. public int UpdateUploadRecord(JArray ja, out string outMsg)
  317. {
  318. outMsg = "";
  319. int iFalse = 0;
  320. foreach (JObject jo in ja)
  321. {
  322. string err = "";
  323. if (UpdateSingleUploadRecord(jo, out err) != 0)
  324. {
  325. iFalse++;
  326. outMsg = outMsg + "\n;" + err;
  327. }
  328. }
  329. return iFalse;
  330. }
  331. public int UpdateSingleUploadRecord(JObject jo, out string outMsg)
  332. {
  333. JObject joUpdateIn = new JObject();
  334. joUpdateIn.Add("businessCode", "OutOfAreaClearing");
  335. joUpdateIn.Add("businessID", jo["setl_sn"].ToString());//单条传,如果批量传,这么处理就有问题
  336. //joUpdateIn.Add("memo", jo["cnfm_flag"].ToString());//单条传,如果批量传,这么处理就有问题
  337. joUpdateIn.Add("memo", transid);//单条传,如果批量传,这么处理就有问题
  338. joUpdateIn.Add("input", jo);
  339. dynamic joOut = new
  340. {
  341. errorCode = "0",
  342. cnfm_flag = jo["cnfm_flag"].ToString()
  343. };
  344. joUpdateIn.Add("output", JObject.FromObject(joOut));
  345. //JoIn包含 起止时间,医院ID,接口ID,患者姓名,患者数电号
  346. JObject joInTmp = JsonHelper.setIrisInpar("02020007", joUpdateIn);
  347. //SELECT *FROM SQLUser.HB_User WHERE Hospital_Dr = 39
  348. joInTmp["session"][0]["userID"] = "278";
  349. joInTmp["session"][0]["hospID"] = Global.inf.hospitalDr;
  350. JObject joRtn = invoker.invokeInsuService(joInTmp.ToString(), "更新通用记录表");
  351. return JsonHelper.parseIrisRtnValue(joRtn, out outMsg);
  352. }
  353. /// <summary>
  354. /// 查询通用记录表-查询异地清分确认记录
  355. /// </summary>
  356. /// <param name="jo"></param>
  357. /// <param name="outMsg"></param>
  358. /// <returns></returns>
  359. public int QuerySingleUploadRecord(string businessID,out JObject joRtn, out string outMsg)
  360. {
  361. JObject joQueryIn = new JObject();
  362. joQueryIn.Add("businessCode", "ShenZhenOutOfAreaClearing");
  363. joQueryIn.Add("businessID", businessID); //结算ID
  364. joQueryIn.Add("HospitalDr", Global.inf.hospitalDr);
  365. //JoIn包含 起止时间,医院ID,接口ID,患者姓名,患者数电号
  366. JObject joInTmp = JsonHelper.setIrisInpar("02020186", joQueryIn);
  367. //SELECT *FROM SQLUser.HB_User WHERE Hospital_Dr = 39
  368. joInTmp["session"][0]["userID"] = "278";
  369. joInTmp["session"][0]["hospID"] = Global.inf.hospitalDr;
  370. joRtn = invoker.invokeInsuService(joInTmp.ToString(), "查询通用记录表异地清分记录");
  371. return JsonHelper.parseIrisRtnValue(joRtn, out outMsg);
  372. }
  373. #endregion
  374. #region 取消确认
  375. public int RollBack(JObject input, out string outMsg)
  376. {
  377. JObject joRtn = invoker.invokeCenterService(TradeEnum.RollBackOutOfAreaClearing, new JObject(new JProperty("data",input)));
  378. if (JsonHelper.parseCenterReturnJson(joRtn, out outMsg) != 0)
  379. {
  380. return -1;
  381. }
  382. else
  383. {
  384. outMsg = joRtn.ToString();
  385. return 0;
  386. }
  387. }
  388. #endregion
  389. #region 业务封装
  390. public int Query(JObject input, DataGridView dgv, out string outMsg)
  391. {
  392. //查询HIS医保结异地结算记录
  393. if (QueryHospitalData(input, out outMsg) != 0)
  394. {
  395. return -1;
  396. }
  397. else
  398. {
  399. JArray jaData = JArray.Parse(JsonHelper.getDestValue(JObject.Parse(outMsg),"data"));
  400. JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010129", jaData).ToString(), "根据传入的东莞异地清分记录匹配上传记录表");
  401. JArray jaMatchedData = JArray.FromObject(joRtn["data"]);
  402. dgv.DataSource = (DataTable)jaMatchedData.ToObject(typeof(DataTable));
  403. }
  404. //JArray jaCenter = new JArray();
  405. if (Combin3260Data(input, out JArray jaCenter, out outMsg) != 0)
  406. return -1;
  407. //匹配数据
  408. return MatchCenterData(dgv, jaCenter, out outMsg);
  409. }
  410. public int SingleUpload(DataRow dr, out string outMsg)
  411. {
  412. List<OutOfAreaClearingConfirmDetail> details = new List<OutOfAreaClearingConfirmDetail>();
  413. OutOfAreaClearingConfirmInput input = new OutOfAreaClearingConfirmInput();
  414. OutOfAreaClearingConfirmData data = new OutOfAreaClearingConfirmData();
  415. data.trt_year = Global.curEvt.year;
  416. data.trt_month = Global.curEvt.month;
  417. data.totalrow = Global.curEvt.totalrow;
  418. details.Add(OrgnizeSingle3261Detail(dr));
  419. input.detail = details;
  420. input.data = data;
  421. if (UploadToCenter(input.ToJson(), out outMsg )!= 0)
  422. {
  423. return -1;
  424. }
  425. else
  426. {
  427. transid = Global.curEvt.msgid;
  428. return UpdateSingleUploadRecord(JObject.Parse(JsonHelper.getDestValue(input.ToJson(),"detail[0]")),out outMsg);
  429. }
  430. }
  431. public int SingleUploadNew(DataRow dr, string totalrow, out string outMsg)
  432. {
  433. List<OutOfAreaClearingConfirmDetail> details = new List<OutOfAreaClearingConfirmDetail>();
  434. OutOfAreaClearingConfirmInput input = new OutOfAreaClearingConfirmInput();
  435. OutOfAreaClearingConfirmData data = new OutOfAreaClearingConfirmData();
  436. data.trt_year = Global.curEvt.year;
  437. data.trt_month = Global.curEvt.month;
  438. data.totalrow = Global.curEvt.totalrow; //int.Parse(totalrow)
  439. details.Add(OrgnizeSingle3261Detail(dr));
  440. input.detail = details;
  441. input.data = data;
  442. if (UploadToCenter(input.ToJson(), out outMsg) != 0)
  443. {
  444. return -1;
  445. }
  446. else
  447. {
  448. transid = Global.curEvt.msgid;
  449. return UpdateSingleUploadRecord(JObject.Parse(JsonHelper.getDestValue(input.ToJson(), "detail[0]")), out outMsg);
  450. }
  451. }
  452. public int Upload(DataGridView dgv, out string outMsg)
  453. {
  454. return BatchUpload(dgv, 100, out outMsg);
  455. }
  456. public int GetParamsALL(DataGridView dgv,out JArray jaRtn, out string outMsg)
  457. {
  458. jaRtn = null;
  459. outMsg = "";
  460. if ((DataTable)dgv.DataSource == null)
  461. {
  462. outMsg="请先查询HIS和医保结算信息!";
  463. return -1;
  464. }
  465. JArray ja = new JArray();
  466. DataTable dt = (DataTable)dgv.DataSource;
  467. for (int i = 0; i < dt.Rows.Count; i++)
  468. {
  469. if (string.IsNullOrEmpty(dt.Rows[i]["certno"].ToString()) == false)
  470. {
  471. JObject joDetail = new JObject
  472. {
  473. {"certno", dt.Rows[i]["certno"].ToString()},
  474. {"mdtrt_id", dt.Rows[i]["mdtrt_id"].ToString()},
  475. {"mdtrt_setl_time", dt.Rows[i]["mdtrt_setl_time"].ToString()},
  476. {"setl_sn", dt.Rows[i]["setl_sn"].ToString()},
  477. {"medfee_sumamt", dt.Rows[i]["medfee_sumamt"].ToString()},
  478. {"cnfm_flag", "1"}, //dt.Rows[i]["cnfm_flag"].ToString()
  479. {"optins_pay_sumamt", dt.Rows[i]["optins_pay_sumamt"].ToString()}
  480. };
  481. ja.Add(joDetail);
  482. }
  483. }
  484. if (ja.Count == 0)
  485. {
  486. outMsg = "无待确认上传的异地清分结算记录!";
  487. return -1;
  488. }
  489. jaRtn = ja;
  490. return 0;
  491. }
  492. public int uploadDetailToCenter(int singleCount, JArray jaDetail, out string outParam)
  493. {
  494. outParam = "";
  495. string errMsg;
  496. try
  497. {
  498. JArray jaTmp = new JArray();
  499. for (int i = 0; i < jaDetail.Count; i++)
  500. {
  501. //if (jaDetail[i]["validFlag"].ToString() == "N") continue;
  502. jaTmp.Add(jaDetail[i]);
  503. if (((i + 1) % singleCount == 0) || ((i + 1) == jaDetail.Count))
  504. {
  505. JObject jo = new JObject();
  506. jo.Add("trt_year", Global.curEvt.year);
  507. jo.Add("trt_month", Global.curEvt.month);
  508. jo.Add("totalrow", Global.curEvt.totalrow);
  509. JObject joInput = new JObject();
  510. joInput.Add("data", jo);
  511. joInput.Add("detail", jaTmp);
  512. JObject joRtn = invoker.invokeCenterService(TradeEnum.ConfirmOutOfAreaClearing, joInput);
  513. if (JsonHelper.parseCenterReturnJson(joRtn, out errMsg) != 0)
  514. {
  515. outParam = errMsg;
  516. return -1;
  517. }
  518. else
  519. {
  520. //返回成功更新通用记录表
  521. transid = Global.curEvt.msgid;
  522. for (int j = 0; j < jaTmp.Count; j++)
  523. {
  524. JObject joHis = new JObject();
  525. joHis = JObject.Parse(jaTmp[j].ToString());
  526. if (UpdateSingleUploadRecord(joHis, out errMsg) != 0)
  527. {
  528. outParam = outParam + errMsg;
  529. }
  530. }
  531. //errMsg = joRtn.ToString();
  532. //return 0;
  533. }
  534. jaTmp = new JArray();
  535. }
  536. }
  537. return 0;
  538. }
  539. catch (Exception ex)
  540. {
  541. outParam = "uploadDetail 异常:" + ex.Message;
  542. return -1;
  543. }
  544. }
  545. public int RollBackSingle(DataGridView dgv, out string outMsg)
  546. {
  547. OutOfAreaClearingRollBackInput input = new OutOfAreaClearingRollBackInput();
  548. input.trt_year = Global.curEvt.year;
  549. input.trt_month = Global.curEvt.month;
  550. input.otransid = "";
  551. RollBack(input.ToJson(), out outMsg);
  552. return UpdateSingleUploadRecord(input.ToJson(), out outMsg);
  553. }
  554. public int RollBackSingle(DataRow dr, out string outMsg)
  555. {
  556. if (QuerySingleUploadRecord(dr["SettlementID"].ToString(), out JObject joRtn, out outMsg) != 0)
  557. {
  558. outMsg = "查询通用记录表异地清分确认记录失败" + outMsg;
  559. return -1;
  560. }
  561. OutOfAreaClearingRollBackInput input = new OutOfAreaClearingRollBackInput();
  562. input.trt_year = Global.curEvt.year;
  563. input.trt_month = Global.curEvt.month;
  564. input.otransid = JsonHelper.getDestValue(joRtn, "result.data[0].Memo");
  565. if (RollBack(input.ToJson(), out outMsg) != 0)
  566. {
  567. return -1;
  568. }
  569. return UpdateSingleUploadRecord(input.ToJson(), out outMsg);
  570. }
  571. public int RollBackSingleNew(DataRow dr, out string outMsg)
  572. {
  573. if (QuerySingleUploadRecord(dr["SettlementID"].ToString(), out JObject joRtn, out outMsg) != 0)
  574. {
  575. outMsg = "查询通用记录表异地清分确认记录失败" + outMsg;
  576. return -1;
  577. }
  578. //OutOfAreaClearingRollBackInput input = new OutOfAreaClearingRollBackInput();
  579. JObject joInput = new JObject();
  580. joInput.Add("trt_year", Global.curEvt.year);
  581. joInput.Add("trt_month", Global.curEvt.month);
  582. joInput.Add("otransid", JsonHelper.getDestValue(joRtn, "result.data[0].Memo"));
  583. joInput.Add("setl_sn", dr["setl_sn"].ToString());
  584. joInput.Add("revokeFlag", "Y");
  585. joInput.Add("uploadFlag", "N");
  586. if (RollBack(joInput, out outMsg) != 0)
  587. {
  588. return -1;
  589. }
  590. return UpdateSingleUploadRecord(joInput, out outMsg);
  591. }
  592. public int RollBackAll(out string outMsg)
  593. {
  594. OutOfAreaClearingRollBackInput input = new OutOfAreaClearingRollBackInput();
  595. input.trt_month = Global.curEvt.month;
  596. input.trt_year = Global.curEvt.year;
  597. input.otransid = "0";
  598. if (RollBack(input.ToJson(), out outMsg) != 0)
  599. {
  600. return -1;
  601. }
  602. else
  603. {
  604. //更新通用上传记录表
  605. //return UpdateSingleUploadRecord(input.ToJson(), out outMsg);
  606. return 0;
  607. }
  608. }
  609. public int RollBackAll(DataGridView dgv, out string outparam)
  610. {
  611. string outMsg = ""; outparam = "";
  612. JObject joInput = new JObject();
  613. joInput.Add("trt_month", Global.curEvt.month);
  614. joInput.Add("trt_year", Global.curEvt.year);
  615. joInput.Add("otransid", "0");
  616. if (RollBack(joInput, out outMsg) != 0)
  617. {
  618. outparam = outMsg;
  619. return -1;
  620. }
  621. else
  622. {
  623. DataTable dt = (DataTable)dgv.DataSource;
  624. //更新通用上传记录表
  625. for (int i = 0; i < dt.Rows.Count; i++)
  626. {
  627. DataRow dr = dt.Rows[i];
  628. dynamic detail = new JObject();
  629. detail.certno = dr["CertificateNO"].ToString();
  630. detail.mdtrt_id = dr["MdtrtID"].ToString();
  631. detail.mdtrt_setl_time = dr["SettlementDateTime"].ToString();
  632. detail.setl_sn = dr["SettlementID"].ToString();
  633. detail.medfee_sumamt = decimal.Parse(dr["Sumamt"].ToString());
  634. detail.cnfm_flag = dr["cnfm_flag"].ToString();
  635. detail.optins_pay_sumamt = decimal.Parse(dr["FundPaySumamt"].ToString());
  636. detail.revokeFlag = "Y"; //撤销
  637. detail.uploadFlag = "N"; //撤销
  638. transid = "";
  639. if (string.IsNullOrEmpty(dr["msgid"].ToString()) == false)
  640. {
  641. UpdateSingleUploadRecord(detail, out outparam);
  642. }
  643. }
  644. return 0;
  645. }
  646. }
  647. #endregion
  648. }
  649. }