using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Common;
using PTMedicalInsurance.FormSetter;
using PTMedicalInsurance.Helper;
using PTMedicalInsurance.Variables;
using System;
using System.Data;
using System.Windows.Forms;
namespace PTMedicalInsurance.Forms
{
public partial class SettlementBillPrint : Form
{
private int hospitalDr;
private int interfaceDr;
private string hospitalNO;
private string interfaceNO;
private string hospitalName;
private string hospitalAreaCode;
System.Type ComType;
object ComInstance;
private InvokeHelper invoker = new InvokeHelper();
ReadCardClass rcl = new ReadCardClass();
public SettlementBillPrint()
{
InitializeComponent();
hospitalDr = Global.inf.hospitalDr;
hospitalNO = Global.inf.hospitalNO;
hospitalName = Global.inf.hospitalName;
hospitalAreaCode = Global.inf.areaCode;
interfaceDr = Global.inf.interfaceDr;
}
public SettlementBillPrint(JObject joParam)
{
InitializeComponent();
hospitalDr = Global.inf.hospitalDr;
hospitalNO = Global.inf.hospitalNO;
hospitalName = Global.inf.hospitalName;
hospitalAreaCode = Global.inf.areaCode;
if (joParam == null) return;
string setl_id = JsonHelper.getDestValue(joParam, "setl_id");
if (setl_id == "")
{
MessageBox.Show("根据传入的结算编号为查询到相关信息,请手动输入查询!");
return;
}
string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
sqlStr = sqlStr + " and SettlementID='" + setl_id + "'";
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(), "查询结算信息");
DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
dgvSettlRecord.DataSource = dt;
}
private void SettlementBillPrint_Load(object sender, EventArgs e)
{
dpST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
dpED.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
ComboxSetter cbxSetter = new ComboxSetter();
cbxSetter.setCbxInterfaceDataSource(cbxInterface);
GridViewSetter grdSetter = new GridViewSetter();
grdSetter.SetHeaderTextOfSettlList(dgvSettlRecord);
rbgAdmType.SelectedIndex = 2;
rbgBillType.SelectedIndex = 1;
//cbxInterface.SelectedValueChanged += new EventHandler(cbxInterface_SelectedValueChanged);
}
private void cbxInterface_SelectedValueChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)cbxInterface.DataSource;
int i = cbxInterface.SelectedIndex;
if (i >= 0)
{
//赋值
hospitalNO = dt.Rows[i]["HospitalNO"].ToString();
//MessageBox.Show(dt.Rows[i]["HospitalDr"].ToString());
//MessageBox.Show(dt.Rows[i]["HospitalDr"].ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
hospitalDr = int.Parse(dt.Rows[i]["HospitalDr"].ToString());
interfaceNO = dt.Rows[i]["InterfaceNO"].ToString();
interfaceDr = int.Parse(dt.Rows[i]["ID"].ToString());
hospitalAreaCode = dt.Rows[i]["AreaCode"].ToString();
//Global.inf.centerURL = dt.Rows[i]["CenterURL"].ToString();
//Global.inf.businessDllName = dt.Rows[i]["DLLName"].ToString();
//Global.inf.patientAreaCode = dt.Rows[i]["AreaCode"].ToString();
}
}
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
private void btnQuery_Click(object sender, EventArgs e)
{
string sqlStr = " SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + hospitalDr;
sqlStr = sqlStr + " and OccurTime>'" + dpST.Text + "'";
sqlStr = sqlStr + " and OccurTime<'" + dpED.Text + "'";
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 (cbxInterface.Text != "")
{
sqlStr = sqlStr + " and Interface_Dr=" + Global.inf.interfaceDr + "";
}
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 and ValidFlag=1 ";
}
if (rbgBillType.SelectedIndex == 2)
{
sqlStr = sqlStr + " and BillType=-1 and ValidFlag=0 ";
}
sqlStr = sqlStr + " Order By ID DESC ";
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");
JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
dgvSettlRecord.DataSource = dt;
}
public void btnPrint_Click(object sender, EventArgs e)
{
string sContrl_XML, sData_XML,FunName, AppRtnMsg,sLocal;
string OpenMsg, CloseMsg;
string sYWLSH = "HIS05155009" + DateTime.Now.ToString("yyMMddHHmmss"); //自定义业务流水号
if (dgvSettlRecord.RowCount <= 0)
{
MessageBox.Show("请先查询结算数据!");
return;
}
try
{
//创建首信医保Com实例
if (rcl.CreateBusinessObj(out ComType, out ComInstance) != 0)
{
MessageBox.Show("收据打印实例创建失败!");
return;
}
int i = dgvSettlRecord.CurrentRow.Index;
DataTable dt = (DataTable)dgvSettlRecord.DataSource;
string AdmID = dt.Rows[i]["AdmID"].ToString();
string SettlementID = dt.Rows[i]["SettlementID"].ToString();
string ValidFlag = dt.Rows[i]["ValidFlag"].ToString();
string MdtrtID = dt.Rows[i]["MdtrtID"].ToString();
string iOtherProvLocal = dt.Rows[i]["ClearingWay"].ToString(); //异地标志 0本地 1异地
string OrganSettlementID = dt.Rows[i]["OrganSettlementID"].ToString(); //门诊结算返回feeno收费单据号存在结算表msgid字段
string RecordID = dt.Rows[i]["RecordID"].ToString();
string BillType = dt.Rows[i]["BillType"].ToString();
if (iOtherProvLocal == "0")
{
//本地收据打印PrintInvoice
sData_XML = "" + SettlementID + "" // name = "交易流水号"
+ "" + OrganSettlementID + "" // name = "收费单据号" feeno
+ "" + sYWLSH + "" // name ="业务流水号"
+ "盈利性一级专科" // name="医疗机构类型"
+ "" + RecordID + "" // name="票据代码" HIS结算完成后 生成票据代码 传给DLL
+ " " + AdmID + "";
FunName = "PrintInvoice";
sLocal = "本地收据打印PrintInvoice:";
}
else
{
string histradeno;
if (BillType == "1")
histradeno = OrganSettlementID;
else
histradeno = OrganSettlementID + "-1";
//异地收据打印PrintInvoiceNation
sData_XML = "" + histradeno + "" // name = "交易流水号"
+ "" + OrganSettlementID + "" // name = "收费单据号"
+ "" + sYWLSH + "" // name ="业务流水号"
+ "盈利性一级专科" // name="医疗机构类型"
+ "" + RecordID + "" // name="票据代码"
+ "" + RecordID + "";
FunName = "PrintInvoiceNation";
sLocal = "异地收据打印PrintInvoiceNation:";
}
sData_XML = JsonHelper.GetinPar(sData_XML, 2);
//读卡前先Open
rcl.Open(ComType, ComInstance, out OpenMsg);
rcl.BussniessObj(FunName, sData_XML, ComType, ComInstance, out AppRtnMsg);
rcl.Close(ComType, ComInstance, out CloseMsg);
}
catch (Exception ex)
{
rcl.Close(ComType, ComInstance, out CloseMsg);
MessageBox.Show(ex.Message);
return;
}
}
private JObject getPatCheckList()
{
try
{
int i = dgvSettlRecord.CurrentRow.Index;
DataTable dt = (DataTable)dgvSettlRecord.DataSource;
JObject joSettel = new JObject();
joSettel.Add("HospitalDr", Global.inf.hospitalDr);
joSettel.Add("interfaceDr", Global.inf.interfaceDr);
joSettel.Add("admID", dt.Rows[i]["AdmID"].ToString());
joSettel.Add("SettlementID", dt.Rows[i]["SettlementID"].ToString());
joSettel.Add("ValidFlag", dt.Rows[i]["ValidFlag"].ToString());
JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010066", joSettel).ToString(), "获取结算单信息");
return joRtn;
}
catch (Exception ex)
{
JObject joRtn = new JObject();
joRtn.Add("errorCode", -1);
joRtn.Add("errorMessage", ex.Message);
return joRtn;
}
}
}
}