123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- using Newtonsoft.Json.Linq;
- using PTMedicalInsurance.Common;
- using PTMedicalInsurance.Variables;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Runtime.ExceptionServices;
- using System.Runtime.InteropServices;
- using System.Security;
- using System.Text;
- using System.Threading.Tasks;
- namespace PTMedicalInsurance.Helper
- {
- class InvokeDllCenter : IInvokeCenter
- {
- public int Business(string inputData, ref string outputData, ref string pErrMsg)
- {
- pErrMsg = "";
- outputData = "";
- string method = Global.curEvt.funNo;
- try
- {
- inputData = inputData.Replace("\n", "").Replace("\t", "").Replace("\r", "");
- Global.curEvt.msgid = Global.inf.hospitalNO + DateTime.Now.ToString("yyyyMMddHHmmssffff");
- //调用业务函数
- //StringBuilder sbOut = new StringBuilder(4096000);
- //insuplc_admdvs 社保清算机构(参保地)
- string orgCode = Utils.GetInsuCode();
- if (!Utils.isOtherCity())
- {
- //如果是本地人员,除read_card和query_basic_info这两个接口传”000000”之外,其他与参保人相关的交易接口中sbjgbh必须传read_card和query_basic_info接口中返回的sbjgbh值
- if (("read_card".Equals(method)) || ("query_basic_info".Equals(method)))
- {
- orgCode = "000000"; //市内(本地)
- }
- }
- else
- {
- orgCode = "37000000"; //跨省、省内异地
- if (Utils.isOtherProvice() && "read_card".Equals(method)) {
- method = "read_card_qgyd"; //全国异地读卡
- }
- // 省医保
- if (Global.inf.interfaceDr == 28)
- {
- orgCode = Global.pat.insuplc_admdvs; //参保地
- }
- }
-
- string userCode = Global.user.ID;
- string tradeNo = Global.curEvt.msgid;
- string hospCode = Utils.GetInsuOrgCode();
- int pRtn = 0;
- // com调用
- //cressWSDLLLib.DWCressCom comCls = new cressWSDLLLib.DWCressCom();
- //outputData = comCls.f_invoke_cress_com(orgCode, hospCode, tradeNo, method, inputData, hospCode);
- // dll调用
- //pRtn = BusinessHandle(orgCode, userCode, tradeNo, method, inputData, hospCode, ref outputData);
- //outputData = sbOut.ToString();
- return pRtn;
- }
- catch (Exception ex)
- {
- pErrMsg = "业务函数["+method+"]异常:" + ex.Message;
- return -1;
- }
- finally
- {
- Global.writeLog("业务函数["+method+"]", inputData, outputData);
- }
- }
- public int BusinessExt(string inputData, ref string outputData, ref string pErrMsg)
- {
- pErrMsg = "";
- outputData = "";
- try
- {
- //inputData = inputData.Replace("\n", "").Replace("\t", "").Replace("\r", "");
- StringBuilder errmsgSb = new StringBuilder(4096);
- StringBuilder outSb = new StringBuilder(40960);
- StringBuilder sbHospitalNO = new StringBuilder(Global.inf.hospitalNO);
- StringBuilder sbCreditID = new StringBuilder(Global.inf.CreditID);
- StringBuilder sbBusinessID = new StringBuilder(Global.inf.BusinessID);
- StringBuilder sbInput = new StringBuilder(inputData);
- //调用业务函数
- int pRtn = 0; // BusinessHandleW(sbHospitalNO, sbCreditID, sbBusinessID, sbInput, outSb, errmsgSb);
- if (pRtn != 0)
- {
- outputData = outSb.ToString();
- pErrMsg = errmsgSb.ToString();
- return -1;
- }
- else
- {
- outputData = outSb.ToString();
- return 0;
- }
- }
- catch (Exception ex)
- {
- pErrMsg = "invokeInitByDLL.BusinessHandle 异常:" + ex.Message;
- return -1;
- }
- finally
- {
- Global.writeLog("CreditID12", Global.inf.CreditID, Global.inf.BusinessID);
- Global.writeLog("invokeInitByDLL.BusinessHandleW医保动态库通用业务函数", inputData, outputData);
- }
- }
- public int DownloadFile(string inputData, ref string outputData)
- {
- outputData = "";
- string error = string.Empty; int errorCode = 0;
- try
- {
- JObject jsonInParam = JObject.Parse(inputData);
- string fileName = (string)jsonInParam["input"]["fsDownloadIn"]["filename"];
- string filePath = Global.curEvt.path + "\\YBDLOAD\\" + fileName;
- //如果不存在目录,则创建目录
- if (!Directory.Exists(Global.curEvt.path + "\\YBDLOAD"))
- {
- //创建文件夹
- DirectoryInfo dirInfo = Directory.CreateDirectory(Global.curEvt.path + "\\YBDLOAD");
- }
- if (File.Exists(filePath))
- {
- File.Delete(filePath);
- }
- int iRes = Business(inputData, ref outputData,ref error);
- Global.writeLog("DLL下载文件返回:["+iRes+"]",inputData,outputData);
- if (iRes == 0)
- {
- dynamic joReturn = new JObject();
- joReturn.errorCode = errorCode;
- joReturn.errorMessage = error;
- joReturn.filePath = filePath;
- outputData = joReturn.ToString();
- }
- else
- {
- errorCode = -100;
- dynamic joReturn = new JObject();
- joReturn.errorCode = errorCode;
- joReturn.errorMessage = error;
- outputData = joReturn.ToString();
- return -1;
- }
- }
- catch (Exception ex)
- {
- errorCode = -100;
- error = ex.Message;
- dynamic joReturn = new JObject();
- joReturn.errorCode = errorCode;
- joReturn.errorMessage = error;
- outputData = joReturn.ToString();
- return -1;
- }
- finally
- {
- Global.writeLog("DownloadCenterFile" + "(" + Global.curEvt.URL + ")", inputData, outputData);
- }
- return 0;
- }
- public int Init(ref string pErrMsg)
- {
- int pRtn = -1;
- pErrMsg = "";
- JObject joRtn = new JObject();
- try
- {
- StringBuilder sbOut = new StringBuilder(40960);
- pRtn = 0; // Init(sbOut);
- pErrMsg = sbOut.ToString();
- Global.writeLog("DLL返回:"+pErrMsg);
- return pRtn;
- }
- catch (Exception ex)
- {
- pErrMsg = "invokeInitByDLL.Init 异常:" + ex.Message;
- return -1;
- }
- finally
- {
- Global.writeLog("InvokeInitByDLL(" + Global.inf.centerURL + ")", Global.inf.CreditID + ":" + Global.inf.BusinessID, pRtn.ToString() + pErrMsg);
- }
- }
- public int UploadFile(string inputData, ref string outputData, ref string pErrMsg)
- {
- pErrMsg = "";
- outputData = "";
- JObject joRtn = new JObject();
- try
- {
- inputData = inputData.Replace("\n", "").Replace("\t", "").Replace("\r", "");
- StringBuilder errmsgSb = new StringBuilder(4096);
- StringBuilder outSb = new StringBuilder(40960);
- //调用业务函数
- int pRtn = 0; // UploadFile(Global.inf.hospitalNO, Global.inf.CreditID, Global.inf.BusinessID, Global.inf.fileName, inputData, outSb, errmsgSb);
- if (pRtn != 0)
- {
- outputData = outSb.ToString();
- pErrMsg = errmsgSb.ToString();
- return -1;
- }
- else
- {
- outputData = outSb.ToString();
- return 0;
- }
- }
- catch (Exception ex)
- {
- pErrMsg = "invokeUploadFileByDLL.UploadFile 异常:" + ex.Message;
- return -1;
- }
- finally
- {
- Global.writeLog("invokeUploadFileByDLL.UploadFile医保动态库上传业务函数", inputData, outputData);
- }
- }
- /// <summary>
- /// 初始化函数
- /// </summary>
- /// <param name="pErrMsg"></param>
- /// <returns></returns>
- //[DllImport("cressWSDLL.dll", EntryPoint = "INIT", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
- //static extern int Init(StringBuilder pErrMsg);
- /// <summary>
- /// 通用业务函数
- /// </summary>
- /// <param name="inputData"></param>
- /// <param name="outputData"></param>
- /// <returns></returns>
- [DllImport("cressWSDLL.dll", EntryPoint = "f_invoke_cress", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
- static extern int BusinessHandle(string sbjgbh, string czybh,string hisjyh,string method,string jsonPara,string yybm, ref string outputData);
- }
- }
|