using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
using System.Net;
using System.IO;
using System.Runtime.InteropServices;
using Newtonsoft.Json.Linq;
using MedicalInsurance.Business;
using System.Windows.Forms;
using System.Reflection;
namespace ChengDuMedInsu2
{
class Common
{
public string GetMAC()
{
try
{
//获取网卡硬件地址
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"].ToString();
mo.Dispose();//释放资源
break;
}
}
moc = null;
mc = null;
return mac;
}
catch
{
return "unknow";
}
}
public string GetIP()
{
IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());
//string myip = IpEntry.AddressList[0].ToString();//IP6
string myip = IpEntry.AddressList[1].ToString();//IP4
return myip;
}
}
class Log
{
public string DirectoryPath { get; set; }
public string LogName{ get; set; }
public Log(string DirectoryPath,string LogName)
{
this.DirectoryPath = DirectoryPath;
this.LogName = LogName;
}
//创建文件夹
//参数:path 文件夹路径
public bool CreateFolder(string path)
{
try
{
if (Directory.Exists(path))
{
return true;
}
if (!Directory.Exists(path.Substring(0, path.LastIndexOf("\\"))))
{ //若路径中无“\”则表示路径错误
return false;
}
else
{
//创建文件夹
DirectoryInfo dirInfo = Directory.CreateDirectory(path);
return true;
}
}
catch (Exception ex)
{
return false;
}
}
//创建文件
//参数:path 文件路径
public void CreateFile(string path)
{
try
{
if (CreateFolder(path.Substring(0, path.LastIndexOf("\\"))))
{
if (!File.Exists(path))
{
FileStream fs = File.Create(path);
fs.Close();
}
}
}
catch (Exception ex)
{
return;
}
}
//删除文件
//参数:path 文件夹路径
public void DeleteFile(string path)
{
try
{
if (!File.Exists(path))
{
return;
}
else
{
File.Delete(path);
}
}
catch (Exception ex)
{
return;
}
}
///
/// 将即时日志保存入日志文件
///
public void Write(string content)
{
if (!Directory.Exists(this.DirectoryPath))
{
CreateFolder(this.DirectoryPath);
}
try
{
//写入新的文件
string filePath = this.DirectoryPath + "\\" + this.LogName;
FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(content);
sw.Close();
fs.Close();
}
catch (Exception ex)
{
}
}
}
class IniFile
{
public string FullPath; //INI全路径
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key,
string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def,
StringBuilder retVal, int size, string filePath);
public IniFile(string path)
{
this.FullPath = path;
}
//写INI文件
public void WriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, this.FullPath);
}
//读取INI文件指定
public string ReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, this.FullPath);
return temp.ToString();
}
}
public static class GlobalVariables
{
#region 全局变量
//当前路径
public static String currentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
//医院的基本信息
public static String hospitalID = "";
public static String hospitalName = "";
public static int hospitalDr = 0;
public static string hospitalLevel = "";
//接口信息
public static string InterfaceID = "";
public static int interfaceDr = 0;
//医保环境信息
public static String signno = "";
public static String centerURL = "";
public static String ecURL = "";
public static String hospitalNO = "";
public static String hospitalAreaCode = "";
public static String patientAreaCode = "";
public static String recivedSystemCode = "";
public static String certificationAuthorityInfo = "";
public static String signatureType = "";
public static String interfaceVersion = "";
public static String deviceSafetyInfo = "";
public static String businessDllName = "";
public static String businessDllNameSpace = "";
//IRIS信息
public static String irisServiceIP = "";
public static String irisServiceURL = "";
public static String irisServiceAuthorization = "";
//登录用户信息
public static String operatoType = "";
public static String operatorNO = "";
public static String operatorName = "";
//医保患者信息
public static string insuplc_admdvs = "";
public static string mdtrt_cert_type = "";
public static string mdtrt_cert_no = "";
public static string psn_cert_type = "";
public static string certno = "";
public static string psn_name = "";
public static string card_sn = "";
public static string psn_no = "";
public static string card_token = "";
//
//public static int errorcode = 0;
//public static string errormessage = "";
#endregion
public static void printGlobalVariablesVlaue()
{
var varList = new List();
string outParam = "";
varList.Add("currentDirectory =" + currentDirectory);
varList.Add("hospitalID =" + hospitalID);
varList.Add("hospitalName =" + hospitalName);
varList.Add("hospitalDr =" + hospitalDr);
varList.Add("InterfaceID =" + InterfaceID);
varList.Add("interfaceDr =" + interfaceDr);
varList.Add("signno =" + signno);
varList.Add("centerURL =" + centerURL);
varList.Add("ecURL =" + ecURL);
varList.Add("hospitalNO =" + hospitalNO);
varList.Add("hospitalAreaCode =" + hospitalAreaCode);
varList.Add("patientAreaCode =" + patientAreaCode);
varList.Add("recivedSystemCode =" + recivedSystemCode);
varList.Add("certificationAuthorityInfo =" + certificationAuthorityInfo);
varList.Add("signatureType =" + signatureType);
varList.Add("interfaceVersion =" + interfaceVersion);
varList.Add("deviceSafetyInfo =" + deviceSafetyInfo);
varList.Add("businessDllName =" + businessDllName);
varList.Add("businessDllNameSpace =" + businessDllNameSpace);
varList.Add("irisServiceIP =" + irisServiceIP);
varList.Add("irisServiceURL =" + irisServiceURL);
varList.Add("irisServiceAuthorization =" + irisServiceAuthorization);
varList.Add("operatoType =" + operatoType);
varList.Add("operatorNO =" + operatorNO);
varList.Add("operatorName =" + operatorName);
for (int i = 0; i < varList.Count; i++)
outParam = outParam + (varList[i] + "\r\n");
writeLog("printGlobalVariablesVlaue", "", outParam);
}
public static int Init(string inParam)
{
string exMsg = string.Empty;
string outParam = "";
var varList = new List();
int iResult = -1;
try
{
//获取配置文件里的IRIS服务信息
IniFile ini = new IniFile(currentDirectory + @"\INSUConfigure.ini");
irisServiceIP = ini.ReadValue("HIS", "ip");
varList.Add("irisServiceIP =" + irisServiceIP);
irisServiceURL = ini.ReadValue("HIS", "url");
varList.Add("irisServiceURL =" + irisServiceURL);
irisServiceAuthorization = ini.ReadValue("HIS", "authorization");
varList.Add("irisServiceAuthorization =" + irisServiceAuthorization);
businessDllNameSpace = ini.ReadValue("INTERFACEINFO", "businessDllNameSpace");//后面统一为MedicalInsurance
varList.Add("businessDllNameSpace =" + businessDllNameSpace);
//获取his(或者说壳程序)传过来的基本信息
JObject joInParam = JObject.Parse(inParam);
JArray jaParams = JArray.FromObject(joInParam["params"]);
JObject joParam = JObject.FromObject(jaParams[0]);
hospitalDr = (int)joParam["hospitalDr"];
varList.Add("hospitalDr =" + hospitalDr);
hospitalName = (string)joParam["hospitalName"];
varList.Add("hospitalName =" + hospitalName);
operatorNO = (string)joParam["operatorNO"];
varList.Add("operatorNO =" + operatorNO);
operatorName = (string)joParam["operatorName"];
varList.Add("operatorName =" + operatorName);
InterfaceID = (string)joParam["InterfaceID"];
varList.Add("InterfaceID =" + InterfaceID);
//MessageBox.Show(joParam["InterfaceID"].ToString());
//if (int.TryParse(joParam["InterfaceDr"].ToString(), out interfaceDr))
//{ MessageBox.Show("2"); }
//else
//{ MessageBox.Show("2"); }
interfaceDr = (int)joParam["InterfaceDr"];
operatoType = "3";
varList.Add("operatoType =" + operatoType);
//通过irsi服务获取接口信息09010003
//IrisInterfaceService iris = new IrisInterfaceService();
//JObject joInterface = iris.getCurrentInterface();
//centerURL = (string)joInterface["CenterURL"];
//hospitalAreaCode = (string)joInterface["AreaCode"];
//businessDllName = (string)joInterface["DLLName"];
//hospitalNO = (string)joInterface["HospitalNO"];
centerURL = (string)joParam["centerURL"];
varList.Add("centerURL =" + centerURL);
hospitalAreaCode = (string)joParam["areaCode"];
varList.Add("hospitalAreaCode =" + hospitalAreaCode);
businessDllName = (string)joParam["dllName"];
varList.Add("businessDllName =" + businessDllName);
hospitalNO = (string)joParam["hospitalNO"];
varList.Add("hospitalNO =" + hospitalNO);
interfaceVersion = "v1.0";
varList.Add("interfaceVersion =" + interfaceVersion);
signatureType = "sm3";
varList.Add("signatureType =" + signatureType);
recivedSystemCode = "YBXT";
varList.Add("recivedSystemCode =" + recivedSystemCode);
iResult = 0;
for (int i = 0; i < varList.Count; i++)
outParam = outParam + (varList[i]) + "\r\n";
writeLog("getInterfaceInfo", inParam, outParam);
return iResult;
}
catch (Exception ex)
{
exMsg = "全局变量初始化异常:" + ex.Message;
return iResult;
}
finally
{
if (iResult != 0)
{
writeLog("全局变量初始化", inParam, "GlobalVariables.Init异常:" + exMsg);
}
else
{
writeLog("全局变量初始化", inParam, outParam);
}
}
}
///
/// 初始化接口信息(包含医院信息),初始化后会那啥
///
///
public static void getInterfaceInfo(JObject joInterface)
{
var varList = new List();//获取his(或者说壳程序)传过来的基本信息
hospitalDr = (int)joInterface["hospitalDr"];
varList.Add("hospitalDr =" + hospitalDr);
hospitalName = (string)joInterface["hospitalName"];
varList.Add("hospitalName =" + hospitalName);
operatorNO = (string)joInterface["operatorNO"];
varList.Add("operatorNO =" + operatorNO);
operatorName = (string)joInterface["operatorName"];
varList.Add("operatorName =" + operatorName);
InterfaceID = (string)joInterface["InterfaceID"];
varList.Add("InterfaceID =" + InterfaceID);
interfaceDr = (int)joInterface["InterfaceDr"];
varList.Add("interfaceDr =" + interfaceDr);
operatoType = "3";
varList.Add("operatoType =" + operatoType);
centerURL = (string)joInterface["centerURL"];
varList.Add("centerURL =" + centerURL);
hospitalAreaCode = (string)joInterface["areaCode"];
varList.Add("hospitalAreaCode =" + hospitalAreaCode);
businessDllName = (string)joInterface["dllName"];
varList.Add("businessDllName =" + businessDllName);
hospitalNO = (string)joInterface["hospitalNO"];
varList.Add("hospitalNO =" + hospitalNO);
interfaceVersion = "v1.0";
varList.Add("interfaceVersion =" + interfaceVersion);
signatureType = "sm3";
varList.Add("signatureType =" + signatureType);
recivedSystemCode = "YBXT";
varList.Add("recivedSystemCode =" + recivedSystemCode);
string outParam = "";
for (int i = 0; i < varList.Count; i++)
outParam = outParam + (varList[i]) + "\r\n";
writeLog("getInterfaceInfo", joInterface.ToString(), outParam);
}
public static void getInterfaceInfoByIris(JObject joInterface)
{
var varList = new List();//获取his(或者说壳程序)传过来的基本信息
interfaceDr = (int)joInterface["ID"];
varList.Add("interfaceDr =" + interfaceDr);
InterfaceID = (string)joInterface["InterfaceID"];
varList.Add("InterfaceID =" + InterfaceID);
hospitalNO = (string)joInterface["HospitalNO"];
varList.Add("hospitalNO =" + hospitalNO);
hospitalDr = (int)joInterface["HospitalDr"];
varList.Add("hospitalDr =" + hospitalDr);
hospitalLevel = (string)joInterface["HospitalLevel"];
varList.Add("hospitalLevel =" + hospitalLevel);
centerURL = (string)joInterface["CenterURL"];
varList.Add("centerURL =" + centerURL);
hospitalAreaCode = (string)joInterface["AreaCode"];
varList.Add("hospitalAreaCode =" + hospitalAreaCode);
businessDllName = (string)joInterface["DLLName"];
varList.Add("businessDllName =" + businessDllName);
operatoType = "3";
varList.Add("operatoType =" + operatoType);
interfaceVersion = "v1.0";
varList.Add("interfaceVersion =" + interfaceVersion);
signatureType = "sm3";
varList.Add("signatureType =" + signatureType);
recivedSystemCode = "YBXT";
varList.Add("recivedSystemCode =" + recivedSystemCode);
string outParam = "";
for (int i = 0; i < varList.Count; i++)
outParam = outParam + (varList[i]) + "\r\n";
writeLog("getInterfaceInfoByIris", joInterface.ToString(), outParam);
}
public static void getIrisConfig()
{
var varList = new List();
//获取配置文件里的IRIS服务信息
IniFile ini = new IniFile(currentDirectory + @"\INSUConfigure.ini");
irisServiceIP = ini.ReadValue("HIS", "ip");
varList.Add("irisServiceIP =" + irisServiceIP);
irisServiceURL = ini.ReadValue("HIS", "url");
varList.Add("irisServiceURL =" + irisServiceURL);
irisServiceAuthorization = ini.ReadValue("HIS", "authorization");
varList.Add("irisServiceAuthorization =" + irisServiceAuthorization);
string outParam = "";
for (int i = 0; i < varList.Count; i++)
outParam = outParam + (varList[i]);
writeLog("getIrisConfig:" + outParam);
}
public static void getInterfaceByHISParam(JObject joInParam)
{
hospitalDr = int.Parse(joInParam["hospitalDr"].ToString());
interfaceDr = int.Parse(joInParam["InterfaceDr"].ToString());
hospitalName = joInParam["hospitalName"].ToString();
operatorNO = joInParam["hospitalDr"].ToString();
operatorName = joInParam["hospitalDr"].ToString();
}
public static void writeLog(string content)
{
string logDir = GlobalVariables.currentDirectory + "\\Log", logName = DateTime.Now.ToString("yyyy-MM-dd") + "_YW.Log";
if (!Directory.Exists(logDir))
{
//创建文件夹
DirectoryInfo dirInfo = Directory.CreateDirectory(logDir);
}
if (!File.Exists(logDir + "\\" + logName))
{
FileStream fs1 = File.Create(logDir + "\\" + logName);
fs1.Close();
}
FileStream fs = new FileStream(logDir + "\\" + logName, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
string timeLine = "**********" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "***********" + "\r\n";
sw.WriteLine(timeLine + content);
sw.Close();
fs.Close();
}
public static void writeLog(string tradeName, string inParam, string outParam)
{
string logDir = GlobalVariables.currentDirectory + "\\Log", logName = DateTime.Now.ToString("yyyy-MM-dd") + "_YW.Log";
string statrTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff");
if (!Directory.Exists(logDir))
{
//创建文件夹
DirectoryInfo dirInfo = Directory.CreateDirectory(logDir);
}
if (!File.Exists(logDir + "\\" + logName))
{
FileStream fs1 = File.Create(logDir + "\\" + logName);
fs1.Close();
}
FileStream fs = new FileStream(logDir + "\\" + logName, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
string content = "****************************交易开始(" + statrTime + ")****************************" + "\r\n";
content = content + "交易名称:" + tradeName + "\r\n";
content = content + "交易入参:" + inParam + "\r\n";
content = content + "交易出参:" + outParam + "\r\n";
//content = content + "****************************交易结束(" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + ")****************************" + "\r\n";
sw.WriteLine(content);
sw.Close();
fs.Close();
}
public static string SetJsonParam(string infno, string input)
{
dynamic Jo = new JObject();
Jo.infno = infno;
Jo.msgid = GlobalVariables.hospitalNO + DateTime.Now.ToString("yyyyMMddHHmmssffff");
Jo.mdtrtarea_admvs = GlobalVariables.hospitalAreaCode;
Jo.insuplc_admdvs = GlobalVariables.patientAreaCode;
Jo.recer_sys_code = GlobalVariables.recivedSystemCode;
Common common = new Common();
Jo.dev_no = common.GetMAC();
Jo.dev_safe_info = GlobalVariables.deviceSafetyInfo;
Jo.cainfo = GlobalVariables.certificationAuthorityInfo; ;
Jo.signtype = GlobalVariables.signatureType; ;
Jo.infver = GlobalVariables.interfaceVersion; ;
Jo.opter_type = GlobalVariables.operatoType; ;
Jo.opter = GlobalVariables.operatorNO; ;
Jo.opter_name = GlobalVariables.operatorName; ;
Jo.inf_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Jo.fixmedins_code = GlobalVariables.hospitalNO;
Jo.fixmedins_name = GlobalVariables.hospitalName;
Jo.sign_no = GlobalVariables.signno;
JObject joInput = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(input);
Jo.Add("input", JObject.FromObject(joInput));
return Jo.ToString();
}
}
}