using AksWebBrowser.Common; using AKSWebBrowser.Commen; using AKSWebBrowser.Common; using CPF.Cef; using System; using System.Diagnostics; using System.Globalization; using System.IO; using System.Net.Http; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using static System.Net.Mime.MediaTypeNames; namespace AKS.EnterpriseLibrary.WebBrowser { public class MainModel : CPF.CpfObject { public COMUtils com = new COMUtils(); /// /// 读取身份证卡号 /// /// /// [JSFunction] public string IDCardRead(string paramsString) { try { paramsString = "{\"type\":\"1\",\"param\":{\"data\":\"" + "" + "\"}}"; Log.Info("读取身份证卡号: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "获取数据失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("读取身份证卡号异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 打印排队票据 /// /// 排号 /// 等待人数 /// 二维码 /// 办理业务名称 /// [JSFunction] public string SendByPrint(string ph, string ddrs, string qrcode, string ywmc) { try { string paramsString = "{\"type\":\"2\",\"param\":{\"ph\":\"" + ph + "\",\"ddrs\":\"" + ddrs + "\",\"qrcode\":\"" + qrcode + "\",\"ywmc\":\"" + ywmc + "\"}}"; Log.Info("打印排队票据: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印排队票据失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("打印排队票据异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 文字语音播报 /// /// /// /// [JSFunction] public string payleText(string text, bool ispaye) { try { if (text.Length > 65535) { return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":" + "文字太长" + "}"; } string paramsString = "{\"type\":\"3\",\"param\":{\"text\":\"" + text + "\",\"ispaye\":\"" + ispaye + "\"}}"; Log.Info("文字语音播报: " + paramsString + ""); string base64 = str2Base64(paramsString); if (base64.Length > 1024) { string url = "http://192.168.0.34:92/api/UploadFP/UploadFP"; Task.Run(async () => { DateTime dateTime = DateTime.Now; string time = DateTime.Now.ToString( "yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); var dirpath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "TempFile"); if (!Directory.Exists(dirpath)) { Directory.CreateDirectory(dirpath); } var filepath = Path.Combine(dirpath, time); string path = dirpath + @"/" + time + ".txt"; base64 = str2Base64(text); byte[] bytes = Convert.FromBase64String(base64); System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.CreateNew); System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(bytes, 0, bytes.Length); writer.Close(); Log.Info("文字语音播报临时文件: " + path + ""); UploadInfo(url, path); }); @event2.WaitOne(); Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)"); MatchCollection mc = re.Matches(url);//获取的是一个数组 string pdfurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath; paramsString = "{\"type\":\"3\",\"param\":{\"text\":\"" + pdfurl + "\",\"ispaye\":\"" + ispaye + "\"}}"; Log.Info("文字语音播报: " + paramsString + ""); base64 = str2Base64(paramsString); } string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "文字语音播报失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("文字语音播报异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 发送短信 /// /// /// /// [JSFunction] public string SendSSM(string content, string phone) { try { string paramsString = "{\"type\":\"4\",\"param\":{\"content\":\"" + content + "\",\"phone\":\"" + phone + "\"}}"; Log.Info("发送短信: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "发送短信失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("发送短信异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 打开高拍仪并且进行快速扫描文件 /// /// /// [JSFunction] public string openCamera(string url) { try { string paramsString = "{\"type\":\"5\",\"param\":{\"url\":\"" + url + "\"}}"; Log.Info("打开高拍仪并且进行快速扫描文件: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打开高拍仪并且进行快速扫描文件失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("打开高拍仪并且进行快速扫描文件异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 打开签字版 /// /// /// [JSFunction] public string OpenSign(string paramsString) { try { paramsString = "{\"type\":\"6\",\"param\":{\"data\":\"" + "" + "\"}}"; Log.Info("打开签字版: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打开签字版失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("打开签字版异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 关闭签字版 /// /// /// [JSFunction] public string CloseSign(string paramsString) { try { paramsString = "{\"type\":\"7\",\"param\":{\"data\":\"" + "" + "\"}}"; Log.Info("关闭签字版: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "关闭签字版失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("关闭签字版异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 获取签字版数据 /// /// /// [JSFunction] public string GetSignData(string url) { try { string paramsString = "{\"type\":\"8\",\"param\":{\"url\":\"" + url + "\"}}"; Log.Info("获取签字版数据: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "获取签字版数据失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("获取签字版数据异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 开始录音、取消录音、结束录音 /// /// /// /// [JSFunction] public string SoundRecording(bool isopen, string url) { try { string paramsString = "{\"type\":\"11\",\"param\":{\"isopen\":\"" + isopen + "\",\"url\":\"" + url + "\"}}"; Log.Info("开始录音、取消录音、结束录音: " + paramsString + ""); string base64 = str2Base64(paramsString); string str = com.SendData(base64); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "开始录音、取消录音、结束录音失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("开始录音、取消录音、结束录音异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 根据文件地址在线打印 /// /// /// [JSFunction] public string PrintFile(string url, string ext) { try { string paramsString = "{\"type\":\"9\",\"param\":{\"url\":\"" + url + "\",\"ext\":\"" + ext + "\"}}"; Log.Info("根据文件地址在线打印: " + paramsString + ""); string base64_1 = str2Base64(paramsString); string str = com.SendData(base64_1); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "根据文件地址在线打印失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("根据文件地址在线打印异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 根据文件base64打印 /// /// /// /// [JSFunction] public string PrintBase64(string url, string base64, string ext) { try { Task.Run(async () => { DateTime dateTime = DateTime.Now; string time = DateTime.Now.ToString( "yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); var dirpath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "PrintFile"); if (!Directory.Exists(dirpath)) { Directory.CreateDirectory(dirpath); } var filepath = Path.Combine(dirpath, time); string path = dirpath + @"/" + time + "." + ext; byte[] bytes = Convert.FromBase64String(base64); System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.CreateNew); System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(bytes, 0, bytes.Length); writer.Close(); Log.Info("根据文件base64打印: " + path + ""); UploadInfo(url, path); }); @event2.WaitOne(); Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)"); MatchCollection mc = re.Matches(url);//获取的是一个数组 string pdfurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath; Log.Info("根据文件base64打印: " + pdfurl + ""); try { string paramsString = "{\"type\":\"9\",\"param\":{\"url\":\"" + pdfurl + "\",\"ext\":\"" + ext + "\"}}"; Log.Info("根据文件base64打印: " + paramsString + ""); string base64_1 = str2Base64(paramsString); string str = com.SendData(base64_1); if (string.IsNullOrEmpty(str)) { return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "根据文件base64打印失败" + "\"}"; } else { return Base64str2(str); } } catch (Exception ex) { Log.Error("根据文件base64打印异常: " + ex.Message + ""); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } catch (Exception ex) { return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; } } /// /// 初始文件上传 /// private string urlpath = string.Empty; private AutoResetEvent @event2 = new AutoResetEvent(false); private async void UploadInfo(string url, string srpath) { var httpClient = new HttpClient(); var uploader = new ChunkedUpload(httpClient); urlpath = await uploader.UploadFileAsync(url, srpath); @event2.Set(); } /// /// string 转换为 base64 /// /// public static string str2Base64(string str) { byte[] b = System.Text.Encoding.UTF8.GetBytes(str); string result = Convert.ToBase64String(b); return result; } /// /// base64 转换为 string /// /// public static string Base64str2(string data) { byte[] c = Convert.FromBase64String(data); string result = System.Text.Encoding.UTF8.GetString(c); Log.Info("接收返回数据:" + result); return result; } /// /// 根据程序名称杀死进程 /// /// public static void KillProcessByName(string processName) { Process[] processes = Process.GetProcessesByName(processName); foreach (Process process in processes) { try { process.Kill(); process.WaitForExit(); // 等待进程退出 } catch (Exception ex) { } } } /// /// 关闭串口 /// public void CLoseCOM() { com.ClosePort(); } } }