123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953 |
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using PTMedicalInsurance.Common;
- using PTMedicalInsurance.Helper;
- using PTMedicalInsurance.FormSetter;
- using PTMedicalInsurance.Business;
- using PTMedicalInsurance.Variables;
- using FastReport;
- using System.Xml;
- namespace PTMedicalInsurance.Forms
- {
- public partial class HandleException : Form
- {
- private int iLog = 0;
- private int iSettl = 0;
- private int iReg = 0;
- //设置业务实例
- CenterBusiness cBus = new CenterBusiness();
- HisMainBusiness hBus = new HisMainBusiness();
- HisIrisServices hIS = new HisIrisServices();
- MIIrisServices mIS = new MIIrisServices();
- InvokeHelper invoker = new InvokeHelper();
- //1.声明自适应类实例
- AutoResizeForm asc = new AutoResizeForm();
- ReadCardClass rcl = new ReadCardClass();
- AnalysisXML AnXML = new AnalysisXML();
- public HandleException()
- {
- InitializeComponent();
- //this.StartPosition = FormStartPosition.CenterParent;
- asc.controllInitializeSize(this);
- asc.controlAutoSize(this);
- }
- private void HandleException_Load(object sender, EventArgs e)
- {
- dpST_Log.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
- dpED_Log.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
- dpST_Settl.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
- dpED_Settl.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
- dgvSettlRecord.AutoGenerateColumns = false;
- GridViewSetter grdSetter = new GridViewSetter();
- grdSetter.SetHeaderTextOfSettlList(dgvSettlRecord);
- grdSetter.SetHeaderTextOfCenterLog(dgvLog);
- grdSetter.SetHeaderTextOfSettlList(dgvBalanceData);
- rbgAdmType.SelectedIndex = 2;
- rbgBillType.SelectedIndex = 1;
- rbg_Zone.SelectedIndex = 0;
- }
- #region 结算异常
- private void btnQuerySettleRec_Click(object sender, EventArgs e)
- {
- if (tbName.Text == "")
- {
- MessageBox.Show("请输入患者姓名!");
- return;
- }
- string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
- sqlStr = sqlStr + " and OccurTime>'" + dpST_Settl.Text + "'";
- sqlStr = sqlStr + " and OccurTime<'" + dpED_Settl.Text + "'";
- sqlStr = sqlStr + " And ReversalFlag<>'1' ";
- if (tbName.Text != "")
- {
- sqlStr = sqlStr + " and PatientName='" + tbName.Text + "'";
- }
- if (tbPatSettlID.Text != "")
- {
- sqlStr = sqlStr + " and SettlementID='" + tbPatSettlID.Text + "'";
- }
- if (tbHisNO.Text != "")
- {
- sqlStr = sqlStr + " and Adm_Dr='" + tbHisNO.Text + "'";
- }
- if (rbgAdmType.SelectedIndex == 1)
- {
- sqlStr = sqlStr + " and admType=2";
- }
- if (rbgAdmType.SelectedIndex == 2)
- {
- sqlStr = sqlStr + " and admType=1";
- }
- if (rbgBillType.SelectedIndex == 1)
- {
- sqlStr = sqlStr + " and BillType=1";
- }
- if (rbgBillType.SelectedIndex == 2)
- {
- sqlStr = sqlStr + " and BillType=-1";
- }
- JObject joSqlstr = new JObject();
- joSqlstr.Add("sqlStr", sqlStr);
- JArray jaParam = new JArray();
- jaParam.Add(joSqlstr);
- JObject joSettlQuery = new JObject();
- joSettlQuery.Add("params", jaParam);
- joSettlQuery.Add("code", "09010059");
- InvokeHelper invoker = new InvokeHelper();
- JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
- //MessageBox.Show(joRtn.ToString());
- //MessageBox.Show(joRtn["result"]["data"].ToString());
- if (joRtn["result"]["data"].ToString() == "[]")
- {
- MessageBox.Show("查询结果为空!");
- return;
- }
- DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
- dgvSettlRecord.DataSource = dt;
- }
- private void btnReverseBySettl_Click(object sender, EventArgs e)
- {
- string outParam = "";
- string sData_XML, OutMsg, AppRtnMsg, psn_no, tradeno, feeno, SettlementID, CloseMsg;
- System.Type InComType = null;
- dynamic InComInstance = "";
- DataTable dt = (DataTable)dgvSettlRecord.DataSource;
- int a = dgvSettlRecord.CurrentRow.Index;
- psn_no = dt.Rows[a]["PersonnelNO"].ToString();
- feeno = dt.Rows[a]["RecordID"].ToString();
- tradeno = dt.Rows[a]["SettlementID"].ToString();
- Global.pat.settlID = dt.Rows[a]["SettlementID"].ToString();
- try
- {
- //创建首信医保Com实例
- if (rcl.CreateBusinessObj(out InComType, out InComInstance) != 0)
- {
- MessageBox.Show("实例创建CreateBusinessObj失败:" + outParam);
- return;
- }
- //读卡前先Open
- rcl.Open(InComType, InComInstance, out outParam);
- //1.打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
- if (hBus.readCardCancelSettle(InComType, InComInstance, out outParam) != 0)
- {
- rcl.Close(InComType, InComInstance, out CloseMsg);
- MessageBox.Show("读卡readCard失败:" + outParam);
- return;
- }
- else
- {
- //展示患者信息界面
- if (hBus.showPatInfoNew(outParam, out outParam) != 0)
- {
- rcl.Close(InComType, InComInstance, out CloseMsg);
- MessageBox.Show("展示参保人员信息showPatInfoNew失败:" + outParam);
- return;
- }
- }
- //退费-本地
- if (Global.pat.iOtherProvLocal == 0)
- {
- //1.RefundmentDivideAll退费分解
- sData_XML = "<tradeinfo>"
- + "<tradeno>" + tradeno + "</tradeno>" // name="交易流水号"
- + "<operator>" + Global.user.ID + "</operator>" // name="收费员"
- + "<refundflag>0</refundflag>" // name="退费方式,0全部退费,1部分退费"
- + "<feeno>" + feeno + "</feeno>" // name="收费单据号"
- + "</tradeinfo>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- rcl.BussniessObj("RefundmentDivideAll", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- XmlDocument xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- Boolean bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- XmlNode dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output/fulltrade/tradeinfo");
- if (bPass == false)
- {
- outParam = "调用RefundmentDivideAll退费分解失败:" + OutMsg;
- MessageBox.Show(outParam);
- return;
- }
- else
- {
- if (OutMsg != "")
- outParam = "调用RefundmentDivideAll退费分解成功,但中心返回警告信息如下:" + OutMsg;
- tradeno = AnXML.FormatXMLElement(xmlDoc, dataNode, "tradeno", 0); //退费分解成功返回退费流水号
- //2.TradeALL退费确认
- rcl.TradeAll(InComType, InComInstance, out AppRtnMsg);
- //Global.writeLog("TradeALL退费确认出参:", sData_XML, AppRtnMsg);
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- if (bPass == false)
- {
- outParam = "调用RefundmentDivideAll退费分解成功,调用TradeAll退费确认失败," + OutMsg;
- if (hBus.TradeBack(3, Global.pat.settlID, InComType, InComInstance, out OutMsg) != 0)
- outParam = outParam + "调用TradeRollBack交易挂起回退失败:请手动执行回退退费交易,本次退费失败!" + OutMsg;
- else
- outParam = outParam + "调用TradeRollBack交易挂起回退成功,本次退费失败!";
- MessageBox.Show(outParam);
- Global.writeLog("TradeNo:" + Global.pat.settlID + outParam + OutMsg);
- return;
- }
- else
- {
- if (OutMsg != "")
- {
- outParam = "调用RefundmentDivideAll退费分解成功,调用TradeALL退费确认成功,返回警告信息:" + OutMsg;
- MessageBox.Show(outParam);
- }
- //3.HISFinishedNotice门诊退费交易完成通知
- //sData_XML = "<tradeno>" + Global.pat.settlID + "</tradeno>";
- sData_XML = "<tradeno>" + tradeno + "</tradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- //Global.writeLog("HISFinishedNotice门诊退费交易完成通知入参:" + sData_XML);
- rcl.BussniessObj("HISFinishedNotice", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //Global.writeLog("HISFinishedNotice门诊退费交易完成通知出参:", sData_XML, AppRtnMsg);
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output");
- string receivestate = AnXML.FormatXMLElement(xmlDoc, dataNode, "receivestate", 0); //接收状态: 1:成功,0:失败
- if ((bPass == false) || (receivestate != "1"))
- {
- outParam = "调用RefundmentDivideAll退费分解成功,调用TradeALL退费确认成功,调用HISFinishedNotice退费交易完成通知失败!" + OutMsg;
- if (hBus.TradeBack(3, Global.pat.settlID, InComType, InComInstance, out OutMsg) != 0)
- outParam = outParam + "调用TradeRollBack交易挂起回退异常:交易回退失败,请手动执行回退退费交易,本次退费失败!" + OutMsg;
- else
- outParam = outParam + "调用TradeRollBack交易挂起回退成功,本次退费失败!";
- MessageBox.Show(outParam);
- Global.writeLog("TradeNo:" + Global.pat.settlID + outParam + OutMsg);
- return;
- }
- else
- {
- if (OutMsg != "")
- {
- outParam = "调用HISFinishedNotice门诊退费交易完成通知成功,返回警告信息如下:" + OutMsg;
- MessageBox.Show(outParam);
- }
- outParam = "退费成功!" + tradeno;
- MessageBox.Show(outParam);
- }
- }
- }
- }
- else
- {
- string histradeno = tradeno + "-1";
- //1.RefundmentTradeAllNation异地门诊退费结算
- sData_XML = "<HisTradeNo>" + histradeno + "</HisTradeNo>" //本次红冲交易流水号
- + "<OriginalHisTradeNo>" + feeno + "</OriginalHisTradeNo>" //被退交易流水号
- + "<Operator>" + Global.user.ID + "</Operator>" //退费操作员的姓名或者工号,可为空
- + "<feeno></feeno>"; //重收交易对应的收据号,由财政局、税务局和部队统一制定;有重收交易时必填;(2021年1月1日起,由票据代码与票据号码拼接后填写)
- sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- rcl.BussniessObj("RefundmentTradeAllNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- XmlDocument xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- Boolean bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- XmlNode dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output/tradeinfo");
- if (bPass == false)
- {
- outParam = "调用RefundmentTradeAllNation门诊退费结算失败,中心返回错误信息:" + OutMsg;
- sData_XML = "<histradeno>" + histradeno + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- rcl.BussniessObj("CommitTradeStateNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- if (bPass == false)
- outParam = outParam + "!调用挂起回退交易CommitTradeStateNation失败!中心返回错误信息:" + OutMsg + ",本次异地门诊退费失败!";
- else
- outParam = outParam + "!调用挂起回退交易CommitTradeStateNation成功!本次异地门诊退费失败!";
- MessageBox.Show(outParam);
- Global.writeLog("histradeno:" + histradeno + outParam + OutMsg);
- return;
- }
- else
- {
- tradeno = dataNode.SelectNodes("tradeno")[0].InnerText; //门诊退费结算成功返回退费流水号
- //2.TradeCheckNation异地门诊退费结算实时对账
- sData_XML = "<histradeno>" + histradeno + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- rcl.BussniessObj("TradeCheckNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output");
- //string checkflag = dataNode.SelectNodes("checkflag")[0].InnerText; //对账标志 1-对账成功;2-无效交易
- string checkflag = AnXML.FormatXMLElement(xmlDoc, dataNode, "checkflag", 0); //对账标志 1-对账成功;2-无效交易
- if ((bPass == false) || (checkflag != "1"))
- {
- outParam = " 调用RefundmentTradeAllNation异地门诊退费结算成功,调用TradeCheckNation异地门诊退费结算实时对账失败,中心返回失败原因:" + OutMsg;
- sData_XML = "<histradeno>" + histradeno + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- rcl.BussniessObj("CommitTradeStateNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- if (bPass == false)
- outParam = outParam + "调用CommitTradeStateNation门诊挂起回退失败!中心返回错误信息:" + OutMsg + ",本次异地门诊退费失败!";
- else
- outParam = outParam + "调用CommitTradeStateNation门诊挂起回退成功!本次异地门诊退费失败!";
- MessageBox.Show(outParam);
- Global.writeLog("histradeno:" + histradeno + outParam + OutMsg);
- return;
- }
- }
- }
- }
- catch (Exception ex)
- {
- outParam = "门诊退费异常:" + ex.Message;
- MessageBox.Show(outParam);
- return;
- }
- finally
- {
- rcl.Close(InComType, InComInstance, out CloseMsg);
- }
- }
- private void btCancleSettl_Click(object sender, EventArgs e)
- {
-
- }
- #endregion
- #region 日志异常
- private void btnQueryLog_Click(object sender, EventArgs e)
- {
- string errMsg;
- string sqlStr = "SELECT * FROM BS_MedInsuTransactionLog WHERE Hospital_Dr=" + Global.inf.hospitalDr;
- sqlStr = sqlStr + " and InfDate>='" + dpST_Log.Value.ToString("yyyy-MM-dd") + "'";
- sqlStr = sqlStr + " and InfDate<='" + dpED_Log.Value.ToString("yyyy-MM-dd") + "'";
- if (tbPsnNO.Text != "")
- {
- sqlStr = sqlStr + " and PSNNO='" + tbPsnNO.Text + "'";
- }
- if (tbTransNO.Text != "")
- {
- sqlStr = sqlStr + " and Infno='" + tbTransNO.Text + "'";
- }
- JObject joSqlstr = new JObject();
- joSqlstr.Add("sqlStr", sqlStr);
- JObject joRtn = mIS.QueryTransactionLog(joSqlstr);
- try
- {
- if (joRtn["result"]["data"].ToString() == "[]")
- {
- MessageBox.Show("查询结果为空!");
- return;
- }
- DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
- dgvLog.DataSource = dt;
- }
- catch (Exception eX)
- {
- MessageBox.Show(eX.Message);
- }
- }
- private void btnReverseByLog_Click(object sender, EventArgs e)
- {
- InvokeHelper invoker = new InvokeHelper();
- DataTable dt = (DataTable)dgvLog.DataSource;
- JObject joInparam = new JObject();
- JObject joData = new JObject();
- int a = dgvLog.CurrentRow.Index;
- if (tbCBD_Log.Text != "")
- { Global.pat.insuplc_admdvs = tbCBD_Log.Text; }
- else
- Global.pat.insuplc_admdvs = dt.Rows[a]["insuplc_admdvs"].ToString();
- joData.Add("omsgid", dt.Rows[a]["msgid"].ToString());
- joData.Add("psn_no", dt.Rows[a]["psn_no"].ToString());
- joData.Add("oinfno", dt.Rows[a]["infno"].ToString());
- //joData.Add("oinfno", "2207");
- joInparam.Add("data", joData);
- JObject joRtn = invoker.invokeCenterService("2601", JsonHelper.setCenterInpar("2601", joInparam.ToString()));
- string errorMessage = "";
- if (JsonHelper.parseCenterRtnValue(joRtn, out errorMessage) != 0)
- {
- MessageBox.Show("冲正失败" + errorMessage);
- }
- else
- {
- MessageBox.Show("冲正成功");
- }
- }
- #endregion
- private void btPatInfo_ex_Click(object sender, EventArgs e)
- {
- rtbInparam.Text = "";
- if (rbg_Zone.SelectedIndex == 0)
- {
- gb_Local.Visible = true;
- gb_Other.Visible = false;
- string str = "<tradeinfo>"
- + " <tradeno>" + tb_TradeNo.Text + "</tradeno>"
- + " <operator>" + Global.user.ID + "</operator>"
- + " <refundflag>0</refundflag>"
- + " <feeno>" + tb_FeeNo.Text + "</feeno>"
- + "</tradeinfo>";
- rtbInparam.Text = JsonHelper.GetinPar(str, 2);
- }
- else
- {
- gb_Local.Visible = false;
- gb_Other.Visible = true;
- string str = " <HisTradeNo>"+ tb_HISTradeNo.Text +"</HisTradeNo>"
- + " <OriginalHisTradeNo>"+ tb_OrginalHisTradeNo.Text +"</OriginalHisTradeNo>"
- + " <Operator>"+ Global.user.ID +"</Operator>"
- + " <feeno></feeno>";
- rtbInparam.Text = JsonHelper.GetinPar(str, 2);
- }
- rtbInparam.Text = XmlHelper.FormatXml(rtbInparam.Text);
- }
- private void rbg_Zone_ValueChanged(object sender, int index, string text)
- {
- rtbInparam.Text = "";
- if (rbg_Zone.SelectedIndex == 0)
- {
- gb_Local.Visible = true;
- gb_Other.Visible = false;
- string str = "<tradeinfo>"
- + " <tradeno>" + tb_TradeNo.Text + "</tradeno>"
- + " <operator>" + Global.user.ID + "</operator>"
- + " <refundflag>0</refundflag>"
- + " <feeno>" + tb_FeeNo.Text + "</feeno>"
- + "</tradeinfo>";
- rtbInparam.Text = JsonHelper.GetinPar(str, 2);
- }
- else
- {
- gb_Local.Visible = false;
- gb_Other.Visible = true;
- string str = " <HisTradeNo>" + tb_HISTradeNo.Text + "</HisTradeNo>"
- + " <OriginalHisTradeNo>" + tb_OrginalHisTradeNo.Text + "</OriginalHisTradeNo>"
- + " <Operator>" + Global.user.ID + "</Operator>"
- + " <feeno></feeno>";
- rtbInparam.Text = JsonHelper.GetinPar(str, 2);
- }
- rtbInparam.Text = XmlHelper.FormatXml(rtbInparam.Text);
- }
- private void btnPatInfoShow_Click(object sender, EventArgs e)
- {
- string outParam = "";
- string sData_XML, OutMsg, AppRtnMsg, tradeno, CloseMsg;
- System.Type InComType = null;
- dynamic InComInstance = "";
- try
- {
- //创建首信医保Com实例
- if (rcl.CreateBusinessObj(out InComType, out InComInstance) != 0)
- {
- MessageBox.Show("实例创建CreateBusinessObj失败:" + outParam);
- return;
- }
- //读卡前先Open
- rcl.Open(InComType, InComInstance, out outParam);
- //1.打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
- if (hBus.readCardCancelSettle(InComType, InComInstance, out outParam) != 0)
- {
- rcl.Close(InComType, InComInstance, out CloseMsg);
- rtbOutparam.Text = "读卡readCard失败:" + outParam;
- return;
- }
- else
- {
- //展示患者信息界面
- if (hBus.showPatInfoNew(outParam, out outParam) != 0)
- {
- rcl.Close(InComType, InComInstance, out CloseMsg);
- rtbOutparam.Text = "展示参保人员信息showPatInfoNew失败:" + outParam;
- return;
- }
- }
- //退费-本地
- if (Global.pat.iOtherProvLocal == 0)
- {
- if (tb_TradeNo.Text == "")
- {
- rtbOutparam.Text = "医保结算流水号TradeNo不能为空!";
- return;
- }
- if (tb_FeeNo.Text == "")
- {
- MessageBox.Show("收费单据号feeNo不能为空!");
- return;
- }
- //1.RefundmentDivideAll退费分解
- //sData_XML = "<tradeinfo>"
- // + "<tradeno>" + tb_TradeNo.Text + "</tradeno>" // name="交易流水号"
- // + "<operator>" + Global.user.ID + "</operator>" // name="收费员"
- // + "<refundflag>0</refundflag>" // name="退费方式,0全部退费,1部分退费"
- // + "<feeno>" + tb_FeeNo.Text + "</feeno>" // name="收费单据号"
- // + "</tradeinfo>";
- //rtbInparam.Text = sData_XML;
- //sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- sData_XML = rtbInparam.Text;
- rcl.BussniessObj("RefundmentDivideAll", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- XmlDocument xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- Boolean bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- XmlNode dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output/fulltrade/tradeinfo");
- if (bPass == false)
- {
- rtbOutparam.Text = "调用RefundmentDivideAll退费分解失败:" + OutMsg;
- return;
- }
- else
- {
- if (OutMsg != "")
- rtbOutparam.Text = "调用RefundmentDivideAll退费分解成功,但中心返回警告信息如下:" + OutMsg;
- tradeno = AnXML.FormatXMLElement(xmlDoc, dataNode, "tradeno", 0); //退费分解成功返回退费流水号
- //2.TradeALL退费确认
- rcl.TradeAll(InComType, InComInstance, out AppRtnMsg);
- //Global.writeLog("TradeALL退费确认出参:", sData_XML, AppRtnMsg);
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- if (bPass == false)
- {
- outParam = "调用RefundmentDivideAll退费分解成功,调用TradeAll退费确认失败," + OutMsg;
- if (hBus.TradeBack(3, tb_TradeNo.Text, InComType, InComInstance, out OutMsg) != 0)
- rtbOutparam.Text = outParam + "调用TradeRollBack交易挂起回退失败:请手动执行回退退费交易,本次退费失败!" + OutMsg;
- else
- rtbOutparam.Text = outParam + "调用TradeRollBack交易挂起回退成功,本次退费失败!";
- Global.writeLog("TradeNo:" + tb_TradeNo.Text + outParam + OutMsg);
- return;
- }
- else
- {
- if (OutMsg != "")
- rtbOutparam.Text = "调用RefundmentDivideAll退费分解成功,调用TradeALL退费确认成功,返回警告信息:" + OutMsg;
- //3.HISFinishedNotice门诊退费交易完成通知
- //sData_XML = "<tradeno>" + Global.pat.settlID + "</tradeno>";
- sData_XML = "<tradeno>" + tradeno + "</tradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- //Global.writeLog("HISFinishedNotice门诊退费交易完成通知入参:" + sData_XML);
- rcl.BussniessObj("HISFinishedNotice", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //Global.writeLog("HISFinishedNotice门诊退费交易完成通知出参:", sData_XML, AppRtnMsg);
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output");
- string receivestate = AnXML.FormatXMLElement(xmlDoc, dataNode, "receivestate", 0); //接收状态: 1:成功,0:失败
- if ((bPass == false) || (receivestate != "1"))
- {
- outParam = "调用RefundmentDivideAll退费分解成功,调用TradeALL退费确认成功,调用HISFinishedNotice退费交易完成通知失败!" + OutMsg;
- if (hBus.TradeBack(3, tb_TradeNo.Text, InComType, InComInstance, out OutMsg) != 0)
- rtbOutparam.Text = outParam + "调用TradeRollBack交易挂起回退异常:交易回退失败,请手动执行回退退费交易,本次退费失败!" + OutMsg;
- else
- rtbOutparam.Text = outParam + "调用TradeRollBack交易挂起回退成功,本次退费失败!";
- Global.writeLog("TradeNo:" + tb_TradeNo.Text + outParam + OutMsg);
- return;
- }
- else
- {
- if (OutMsg != "")
- rtbOutparam.Text = "调用HISFinishedNotice门诊退费交易完成通知成功,返回警告信息如下:" + OutMsg;
- rtbOutparam.Text = "退费成功!" + tradeno;
- }
- }
- }
- }
- else
- {
- if (tb_HISTradeNo.Text == "")
- {
- MessageBox.Show("异地退费HISTradeNo不能为空!");
- return;
- }
- if (tb_OrginalHisTradeNo.Text == "")
- {
- MessageBox.Show("收费单据号feeNo不能为空!");
- return;
- }
- string histradeno = tb_HISTradeNo.Text;
- //1.RefundmentTradeAllNation异地门诊退费结算
- //sData_XML = "<HisTradeNo>" + histradeno + "</HisTradeNo>" //本次红冲交易流水号
- // + "<OriginalHisTradeNo>" + tb_OrginalHisTradeNo.Text + "</OriginalHisTradeNo>" //被退交易流水号
- // + "<Operator>" + Global.user.ID + "</Operator>" //退费操作员的姓名或者工号,可为空
- // + "<feeno></feeno>"; //重收交易对应的收据号,由财政局、税务局和部队统一制定;有重收交易时必填;(2021年1月1日起,由票据代码与票据号码拼接后填写)
- //rtbInparam.Text = sData_XML;
- //sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- sData_XML = rtbInparam.Text;
- rcl.BussniessObj("RefundmentTradeAllNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- XmlDocument xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- Boolean bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- XmlNode dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output/tradeinfo");
- if (bPass == false)
- {
- outParam = "调用RefundmentTradeAllNation门诊退费结算失败,中心返回错误信息:" + OutMsg;
- sData_XML = "<histradeno>" + histradeno + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- rcl.BussniessObj("CommitTradeStateNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- if (bPass == false)
- rtbOutparam.Text = outParam + "!调用挂起回退交易CommitTradeStateNation失败!中心返回错误信息:" + OutMsg + ",本次异地门诊退费失败!";
- else
- rtbOutparam.Text = outParam + "!调用挂起回退交易CommitTradeStateNation成功!本次异地门诊退费失败!";
- Global.writeLog("histradeno:" + histradeno + outParam + OutMsg);
- return;
- }
- else
- {
- tradeno = dataNode.SelectNodes("tradeno")[0].InnerText; //门诊退费结算成功返回退费流水号
- //2.TradeCheckNation异地门诊退费结算实时对账
- sData_XML = "<histradeno>" + histradeno + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- rcl.BussniessObj("TradeCheckNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- dataNode = AnXML.GetNodeFromPath(xmlDoc.DocumentElement, "output");
- //string checkflag = dataNode.SelectNodes("checkflag")[0].InnerText; //对账标志 1-对账成功;2-无效交易
- string checkflag = AnXML.FormatXMLElement(xmlDoc, dataNode, "checkflag", 0); //对账标志 1-对账成功;2-无效交易
- if ((bPass == false) || (checkflag != "1"))
- {
- outParam = " 调用RefundmentTradeAllNation异地门诊退费结算成功,调用TradeCheckNation异地门诊退费结算实时对账失败,中心返回失败原因:" + OutMsg;
- sData_XML = "<histradeno>" + histradeno + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- rcl.BussniessObj("CommitTradeStateNation", sData_XML, InComType, InComInstance, out AppRtnMsg);
- //解析返回值
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- bPass = AnXML.CheckState(xmlDoc, out OutMsg);
- if (bPass == false)
- rtbOutparam.Text = outParam + "调用CommitTradeStateNation门诊挂起回退失败!中心返回错误信息:" + OutMsg + ",本次异地门诊退费失败!";
- else
- rtbOutparam.Text = outParam + "调用CommitTradeStateNation门诊挂起回退成功!本次异地门诊退费失败!";
- Global.writeLog("histradeno:" + histradeno + outParam + OutMsg);
- return;
- }
- }
- }
- }
- catch (Exception ex)
- {
- rtbOutparam.Text = "门诊退费异常:" + ex.Message;
- return;
- }
- finally
- {
- rcl.Close(InComType, InComInstance, out CloseMsg);
- }
- }
- private void btnExit_Click(object sender, EventArgs e)
- {
- Close();
- }
- private void Chk_DealNo_ValueChanged(object sender, bool value)
- {
- }
- private void btnExit_Click_1(object sender, EventArgs e)
- {
- this.Close();
- }
- private void uiButton1_Click(object sender, EventArgs e)
- {
- if (tb_Name.Text == "")
- {
- MessageBox.Show("请输入患者姓名!");
- return;
- }
- string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
- sqlStr = sqlStr + " and OccurTime>'" + dtBegin.Text + "'";
- sqlStr = sqlStr + " and OccurTime<'" + dtEnd.Text + "'";
- if (tb_Name.Text != "")
- {
- sqlStr = sqlStr + " and PatientName='" + tb_Name.Text + "'";
- }
- if (tb_PatSettlID.Text != "")
- {
- sqlStr = sqlStr + " and SettlementID='" + tb_PatSettlID.Text + "'";
- }
- if (tb_HisNO.Text != "")
- {
- sqlStr = sqlStr + " and Adm_Dr='" + tb_HisNO.Text + "'";
- }
- if (rbgAdmType_Handel.SelectedIndex == 1)
- {
- sqlStr = sqlStr + " and admType=1";
- }
- if (rbgAdmType_Handel.SelectedIndex == 2)
- {
- sqlStr = sqlStr + " and admType=2";
- }
- if (rbgBillType_Handel.SelectedIndex == 1)
- {
- sqlStr = sqlStr + " and BillType=1";
- }
- if (rbgBillType_Handel.SelectedIndex == 2)
- {
- sqlStr = sqlStr + " and BillType=-1";
- }
- JObject joSqlstr = new JObject();
- joSqlstr.Add("sqlStr", sqlStr);
- JArray jaParam = new JArray();
- jaParam.Add(joSqlstr);
- JObject joSettlQuery = new JObject();
- joSettlQuery.Add("params", jaParam);
- joSettlQuery.Add("code", "09010059");
- InvokeHelper invoker = new InvokeHelper();
- JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
- //MessageBox.Show(joRtn.ToString());
- //MessageBox.Show(joRtn["result"]["data"].ToString());
- if (joRtn["result"]["data"].ToString() == "[]")
- {
- MessageBox.Show("查询结果为空!");
- return;
- }
- DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
- dgvBalanceData.DataSource = dt;
- }
- private void btnDo_Click(object sender, EventArgs e)
- {
- string sData_XML = "", S_Temp = "", Appmsg = "", OutMsg_Open = "", OutMsg_Close, AppRtnMsg = "", OutMsg = "";
- string FunName = "", Explain = "";
- System.Type ComType = null;
- dynamic ComInstance = null;
- if ((rbgType.SelectedIndex == 3) && (rbgType.SelectedIndex == 4) && (rbgType.SelectedIndex == 5))
- {
- if (tbTradeNo.Text == "")
- {
- MessageBox.Show("调用<挂起回退CommitTradeStateNation交易>,请直接输入需要确认的HIS交易流水号!");
- return;
- }
- }
- else
- {
- }
- if ((rbgType.SelectedIndex == 0) || (rbgType.SelectedIndex == 1))
- {
- if (rbgType.SelectedIndex == 0)
- {
- sData_XML = " <tradetype>0</tradetype>"
- + " <tradeno>" + tbTradeNo.Text + "</tradeno>" //收费交易流水号
- + " <fulltradeno></fulltradeno> "
- + " <partialtradeno></partialtradeno> "; // name="重收交易流水号"
- }
- else
- {
- sData_XML = " <tradetype>2</tradetype>"
- + " <tradeno></tradeno>"
- + " <fulltradeno>" + tbTradeNo.Text + "</fulltradeno> " //退费交易流水号
- + " <partialtradeno></partialtradeno> "; // name="重收交易流水号"
- }
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- FunName = "TradeRollBack";
- Explain = "交易挂起回退";
- }
- else if (rbgType.SelectedIndex == 2)
- {
- sData_XML = "<tradeno>" + tbTradeNo.Text + "</tradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- FunName = "HISFinishedNotice";
- Explain = "门诊交易完成通知";
- }
- else if (rbgType.SelectedIndex == 3)
- {
- sData_XML = "<HISTradeNO>" + tbTradeNo.Text + "</HISTradeNO>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 0);
- FunName = "CommitTradeStateNation";
- Explain = "门诊挂起回退";
- }
- else if (rbgType.SelectedIndex == 4)
- {
- if ((tbTradeNo.Text == "") || (tbFeeNo.Text == ""))
- {
- MessageBox.Show("收费交易流水号tradeno或医保收费单据号feeno不能为空!");
- return;
- }
- MessageBox.Show("收费回退(异地)成功后,请接着调用退费实时对账交易才能完成异地退费!");
- sData_XML = " <HisTradeNo>" + tbTradeNo.Text + "</HisTradeNo> "
- + " <OriginalHisTradeNo></OriginalHisTradeNo> "
- + " <Operator></Operator> "
- + " <feeno></feeno> ";
- sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- FunName = "RefundmentTradeAllNation";
- Explain = "收费回退(异地)";
- }
- else if (rbgType.SelectedIndex == 5)
- {
- sData_XML = "<histradeno>" + tbTradeNo.Text + "</histradeno>";
- sData_XML = JsonHelper.GetinPar(sData_XML, 2);
- FunName = "TradeCheckNation";
- Explain = "异地门诊收费实时对账";
- }
- //创建首信医保Com实例
- if (rcl.CreateBusinessObj(out ComType, out ComInstance) != 0)
- {
- MessageBox.Show("实例创建失败");
- return;
- }
- else
- {
- Appmsg = sData_XML;
- rcl.Open(ComType, ComInstance, out OutMsg_Open); //读卡前先Open
- rcl.ReadCardObj(FunName, Appmsg, ComType, ComInstance, out AppRtnMsg);
- rcl.Close(ComType, ComInstance, out OutMsg_Close);
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc = AnXML.GetXmlDoc(AppRtnMsg);
- if (AnXML.CheckState(xmlDoc, out OutMsg) == false)
- {
- MessageBox.Show("调用【" + FunName + "】" + Explain + "失败,中心返回错误信息:" + OutMsg + "\r\n"
- + "调用【Open】打开读卡设备输出:" + OutMsg_Open + "\r\n"
- + "调用【Close】关闭读卡设备输出:" + OutMsg_Close);
- return;
- }
- else
- {
- xmlDoc = null;
- MessageBox.Show("调用【" + FunName + "】" + Explain + "成功:中心返回" + AppRtnMsg);
- }
- }
- }
-
- }
- }
|