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(); } } }