1
This commit is contained in:
913
iMES.Bi.API/CommonHelp.cs
Normal file
913
iMES.Bi.API/CommonHelp.cs
Normal file
@@ -0,0 +1,913 @@
|
||||
using NPOI.HSSF.UserModel;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.XSSF.UserModel;
|
||||
using iMES.Bi.Data;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Web;
|
||||
|
||||
namespace iMES.Bi.API
|
||||
{
|
||||
public class CommonHelp
|
||||
{
|
||||
|
||||
public static T DeepCopyByReflect<T>(T obj)
|
||||
{
|
||||
//如果是字符串或值类型则直接返回
|
||||
if (obj is string || obj.GetType().IsValueType) return obj;
|
||||
|
||||
object retval = Activator.CreateInstance(obj.GetType());
|
||||
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
|
||||
foreach (FieldInfo field in fields)
|
||||
{
|
||||
try { field.SetValue(retval, DeepCopyByReflect(field.GetValue(obj))); }
|
||||
catch { }
|
||||
}
|
||||
return (T)retval;
|
||||
}
|
||||
/// <summary>
|
||||
/// 从html中提取纯文本
|
||||
/// </summary>
|
||||
/// <param name="strHtml"></param>
|
||||
/// <returns></returns>
|
||||
public string StripHT(string strHtml) //从html中提取纯文本
|
||||
{
|
||||
Regex regex = new Regex("<.+?>", RegexOptions.IgnoreCase);
|
||||
string strOutput = regex.Replace(strHtml, "");//替换掉"<"和">"之间的内容
|
||||
strOutput = strOutput.Replace("<", "");
|
||||
strOutput = strOutput.Replace(">", "");
|
||||
strOutput = strOutput.Replace(" ", "");
|
||||
return strOutput;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 移除html标签
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <returns></returns>
|
||||
public static string RemoveHtml(string html)
|
||||
{
|
||||
if (string.IsNullOrEmpty(html)) return html;
|
||||
|
||||
Regex regex = new Regex("<.+?>");
|
||||
var matches = regex.Matches(html);
|
||||
|
||||
foreach (Match match in matches)
|
||||
{
|
||||
html = html.Replace(match.Value, "");
|
||||
}
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
|
||||
{
|
||||
string ret = string.Empty;
|
||||
try
|
||||
{
|
||||
byte[] byteArray = dataEncode.GetBytes(paramData); //转化
|
||||
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
|
||||
webReq.Method = "POST";
|
||||
webReq.ContentType = "application/json; charset=UTF-8";
|
||||
|
||||
webReq.ContentLength = byteArray.Length;
|
||||
Stream newStream = webReq.GetRequestStream();
|
||||
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
|
||||
newStream.Close();
|
||||
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
|
||||
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
|
||||
ret = sr.ReadToEnd();
|
||||
sr.Close();
|
||||
response.Close();
|
||||
newStream.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return ex.Message;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static HttpWebResponse CreateHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies, string strType = "POST")
|
||||
{
|
||||
HttpWebRequest request = null;
|
||||
//如果是发送HTTPS请求
|
||||
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
//request.ProtocolVersion = HttpVersion.Version10;
|
||||
}
|
||||
else
|
||||
{
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
}
|
||||
request.Method = strType;
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
|
||||
//设置代理UserAgent和超时
|
||||
//request.UserAgent = userAgent;
|
||||
//request.Timeout = timeout;
|
||||
|
||||
if (cookies != null)
|
||||
{
|
||||
request.CookieContainer = new CookieContainer();
|
||||
request.CookieContainer.Add(cookies);
|
||||
}
|
||||
//发送POST数据
|
||||
if (!(parameters == null || parameters.Count == 0))
|
||||
{
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
int i = 0;
|
||||
foreach (string key in parameters.Keys)
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer.AppendFormat("{0}={1}", key, parameters[key]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
byte[] data = Encoding.UTF8.GetBytes(buffer.ToString());
|
||||
using (Stream stream = request.GetRequestStream())
|
||||
{
|
||||
stream.Write(data, 0, data.Length);
|
||||
}
|
||||
}
|
||||
string[] values = request.Headers.GetValues("Content-Type");
|
||||
return request.GetResponse() as HttpWebResponse;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建POST方式的HTTP请求
|
||||
/// </summary>
|
||||
public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies, string strType = "POST")
|
||||
{
|
||||
HttpWebRequest request = null;
|
||||
//如果是发送HTTPS请求
|
||||
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
//request.ProtocolVersion = HttpVersion.Version10;
|
||||
}
|
||||
else
|
||||
{
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
}
|
||||
request.Method = strType;
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
|
||||
//设置代理UserAgent和超时
|
||||
//request.UserAgent = userAgent;
|
||||
//request.Timeout = timeout;
|
||||
|
||||
if (cookies != null)
|
||||
{
|
||||
request.CookieContainer = new CookieContainer();
|
||||
request.CookieContainer.Add(cookies);
|
||||
}
|
||||
//发送POST数据
|
||||
if (!(parameters == null || parameters.Count == 0))
|
||||
{
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
int i = 0;
|
||||
foreach (string key in parameters.Keys)
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer.AppendFormat("{0}={1}", key, parameters[key]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
byte[] data = Encoding.UTF8.GetBytes(buffer.ToString());
|
||||
using (Stream stream = request.GetRequestStream())
|
||||
{
|
||||
stream.Write(data, 0, data.Length);
|
||||
}
|
||||
}
|
||||
string[] values = request.Headers.GetValues("Content-Type");
|
||||
return request.GetResponse() as HttpWebResponse;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取请求的数据
|
||||
/// </summary>
|
||||
public static string GetResponseString(HttpWebResponse webresponse)
|
||||
{
|
||||
using (Stream s = webresponse.GetResponseStream())
|
||||
{
|
||||
StreamReader reader = new StreamReader(s, Encoding.Default);
|
||||
return reader.ReadToEnd();
|
||||
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 导出Excel
|
||||
/// </summary>
|
||||
/// <param name="table"></param>
|
||||
/// <param name="fileName"></param>
|
||||
public static MemoryStream RenderToExcel(DataTable table)
|
||||
{
|
||||
MemoryStream ms = new MemoryStream();
|
||||
|
||||
using (table)
|
||||
{
|
||||
IWorkbook workbook = new HSSFWorkbook();
|
||||
ISheet sheet = workbook.CreateSheet();
|
||||
IRow headerRow = sheet.CreateRow(0);
|
||||
|
||||
// handling header.
|
||||
foreach (DataColumn column in table.Columns)
|
||||
headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);//If Caption not set, returns the ColumnName value
|
||||
|
||||
// handling value.
|
||||
int rowIndex = 1;
|
||||
|
||||
foreach (DataRow row in table.Rows)
|
||||
{
|
||||
IRow dataRow = sheet.CreateRow(rowIndex);
|
||||
|
||||
foreach (DataColumn column in table.Columns)
|
||||
{
|
||||
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
|
||||
}
|
||||
|
||||
rowIndex++;
|
||||
}
|
||||
|
||||
workbook.Write(ms);
|
||||
ms.Flush();
|
||||
ms.Position = 0;
|
||||
}
|
||||
|
||||
//using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
|
||||
//{
|
||||
// byte[] data = ms.ToArray();
|
||||
|
||||
// fs.Write(data, 0, data.Length);
|
||||
// fs.Flush();
|
||||
// data = null;
|
||||
//}
|
||||
return ms;
|
||||
}
|
||||
|
||||
//
|
||||
public static bool HasData(Stream excelFileStream)
|
||||
{
|
||||
using (excelFileStream)
|
||||
{
|
||||
IWorkbook workbook = new HSSFWorkbook(excelFileStream);
|
||||
if (workbook.NumberOfSheets > 0)
|
||||
{
|
||||
ISheet sheet = workbook.GetSheetAt(0);
|
||||
return sheet.PhysicalNumberOfRows > 0;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string SendDX(string Mobile, string Content, string SendTime)
|
||||
{
|
||||
try
|
||||
{
|
||||
string returnData = "";
|
||||
// string url = CommonHelp.GetConfig("DXURL") + "&Mobile=" + Mobile + "&Content=" + Content;
|
||||
if (CommonHelp.GetConfig("DXURL") != "")
|
||||
{
|
||||
string url = CommonHelp.GetConfig("DXURL") + "&phone=" + Mobile + "&msg=" + Content;
|
||||
CommonHelp.WriteLOG(url);
|
||||
WebClient WC = new WebClient();
|
||||
WC.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
||||
int p = url.IndexOf("?");
|
||||
string sData = url.Substring(p + 1);
|
||||
url = url.Substring(0, p);
|
||||
byte[] postData = Encoding.GetEncoding("gb2312").GetBytes(sData);
|
||||
byte[] responseData = WC.UploadData(url, "POST", postData);
|
||||
returnData = Encoding.GetEncoding("gb2312").GetString(responseData);
|
||||
}
|
||||
return returnData;
|
||||
|
||||
|
||||
}
|
||||
catch (Exception Ex)
|
||||
{
|
||||
return Ex.Message;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static HSSFWorkbook ExportToExcel(DataTable dt)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
if (dt.Rows.Count > 0)
|
||||
{
|
||||
ISheet sheet = workbook.CreateSheet("Sheet1");
|
||||
|
||||
ICellStyle HeadercellStyle = workbook.CreateCellStyle();
|
||||
HeadercellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
HeadercellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
HeadercellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
HeadercellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
HeadercellStyle.Alignment = HorizontalAlignment.Center;
|
||||
HeadercellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
|
||||
HeadercellStyle.FillPattern = FillPattern.SolidForeground;
|
||||
HeadercellStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
|
||||
|
||||
//字体
|
||||
NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont();
|
||||
headerfont.Boldweight = (short)FontBoldWeight.Bold;
|
||||
headerfont.FontHeightInPoints = 12;
|
||||
HeadercellStyle.SetFont(headerfont);
|
||||
|
||||
|
||||
//用column name 作为列名
|
||||
int icolIndex = 0;
|
||||
IRow headerRow = sheet.CreateRow(0);
|
||||
foreach (DataColumn dc in dt.Columns)
|
||||
{
|
||||
ICell cell = headerRow.CreateCell(icolIndex);
|
||||
cell.SetCellValue(dc.ColumnName);
|
||||
cell.CellStyle = HeadercellStyle;
|
||||
icolIndex++;
|
||||
}
|
||||
|
||||
ICellStyle cellStyle = workbook.CreateCellStyle();
|
||||
|
||||
//为避免日期格式被Excel自动替换,所以设定 format 为 『@』 表示一率当成text來看
|
||||
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");
|
||||
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
|
||||
|
||||
NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont();
|
||||
cellfont.Boldweight = (short)FontBoldWeight.Normal;
|
||||
cellStyle.SetFont(cellfont);
|
||||
|
||||
//建立内容行
|
||||
int iRowIndex = 0;
|
||||
foreach (DataRow dr in dt.Rows)
|
||||
{
|
||||
int iCellIndex = 0;
|
||||
IRow irow = sheet.CreateRow(iRowIndex + 1);
|
||||
for (int i = 0; i < dt.Columns.Count; i++)
|
||||
{
|
||||
string strsj = string.Empty;
|
||||
if (dr[i] != null)
|
||||
{
|
||||
strsj = dr[i].ToString();
|
||||
}
|
||||
ICell cell = irow.CreateCell(iCellIndex);
|
||||
cell.SetCellValue(strsj);
|
||||
cell.CellStyle = cellStyle;
|
||||
iCellIndex++;
|
||||
}
|
||||
iRowIndex++;
|
||||
}
|
||||
|
||||
//自适应列宽度
|
||||
for (int i = 0; i < icolIndex; i++)
|
||||
{
|
||||
sheet.AutoSizeColumn(i);
|
||||
}
|
||||
|
||||
//using (MemoryStream ms = new MemoryStream())
|
||||
//{
|
||||
// workbook.Write(ms);
|
||||
|
||||
// HttpContext curContext = HttpContext.Current;
|
||||
|
||||
|
||||
// // 设置编码和附件格式
|
||||
// curContext.Response.ContentType = "application/vnd.ms-excel";
|
||||
// curContext.Response.ContentEncoding = Encoding.UTF8;
|
||||
// curContext.Response.Charset = "";
|
||||
// curContext.Response.AppendHeader("Content-Disposition",
|
||||
// "attachment;filename=" + HttpUtility.UrlEncode(Name + "_导出文件_" + DateTime.Now.Ticks + ".xls", Encoding.UTF8));
|
||||
|
||||
// curContext.Response.BinaryWrite(ms.GetBuffer());
|
||||
|
||||
// workbook = null;
|
||||
// ms.Close();
|
||||
// ms.Dispose();
|
||||
|
||||
// curContext.Response.End();
|
||||
//}
|
||||
}
|
||||
return workbook;
|
||||
|
||||
}
|
||||
public DataTable ExcelToTable(Stream stream, int headrow, string suffix)
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
|
||||
IWorkbook workbook = null;
|
||||
if (suffix == "xlsx") // 2007版本
|
||||
{
|
||||
workbook = new XSSFWorkbook(stream);
|
||||
}
|
||||
else if (suffix == "xls") // 2003版本
|
||||
{
|
||||
workbook = new HSSFWorkbook(stream);
|
||||
}
|
||||
|
||||
//获取excel的第一个sheet
|
||||
ISheet sheet = workbook.GetSheetAt(0);
|
||||
|
||||
//获取sheet的第一行
|
||||
IRow headerRow = sheet.GetRow(headrow);
|
||||
|
||||
//一行最后一个方格的编号 即总的列数
|
||||
int cellCount = headerRow.LastCellNum;
|
||||
//最后一列的标号 即总的行数
|
||||
int rowCount = sheet.LastRowNum;
|
||||
//列名
|
||||
for (int i = 0; i < cellCount; i++)
|
||||
{
|
||||
dt.Columns.Add(headerRow.GetCell(i).ToString());
|
||||
}
|
||||
|
||||
for (int i = (sheet.FirstRowNum + headrow + 1); i <= sheet.LastRowNum; i++)
|
||||
{
|
||||
DataRow dr = dt.NewRow();
|
||||
|
||||
IRow row = sheet.GetRow(i);
|
||||
for (int j = row.FirstCellNum; j < cellCount; j++)
|
||||
{
|
||||
if (row.GetCell(j) != null)
|
||||
{
|
||||
dr[j] = row.GetCell(j).ToString();
|
||||
}
|
||||
}
|
||||
|
||||
dt.Rows.Add(dr);
|
||||
}
|
||||
|
||||
sheet = null;
|
||||
workbook = null;
|
||||
|
||||
return dt;
|
||||
}
|
||||
|
||||
public static string HttpGet(string Url)
|
||||
{
|
||||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
|
||||
request.Method = "GET";
|
||||
request.ContentType = "text/html;charset=UTF-8";
|
||||
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
|
||||
Stream myResponseStream = response.GetResponseStream();
|
||||
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
|
||||
string retString = myStreamReader.ReadToEnd();
|
||||
myStreamReader.Close();
|
||||
myResponseStream.Close();
|
||||
|
||||
return retString;
|
||||
}
|
||||
public static string GetAPIData(string strUrl)
|
||||
{
|
||||
string strReturn = "";
|
||||
string strHost = GetConfig("APITX");
|
||||
strHost = strHost.Substring(0, strHost.IndexOf("/api"));
|
||||
strReturn = CommonHelp.HttpGet(strUrl.Replace("$API_HOST", strHost));
|
||||
return strReturn;
|
||||
}
|
||||
|
||||
private int rep = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 生成随机不重复的字符串(分享码用)
|
||||
/// </summary>
|
||||
/// <param name="codeCount"></param>
|
||||
/// <returns></returns>
|
||||
public string GenerateCheckCode(int codeCount)
|
||||
{
|
||||
string str = string.Empty;
|
||||
long num2 = DateTime.Now.Ticks + this.rep;
|
||||
this.rep++;
|
||||
Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
|
||||
for (int i = 0; i < codeCount; i++)
|
||||
{
|
||||
char ch;
|
||||
int num = random.Next();
|
||||
if ((num % 2) == 0)
|
||||
{
|
||||
ch = (char)(0x30 + ((ushort)(num % 10)));
|
||||
}
|
||||
else
|
||||
{
|
||||
ch = (char)(0x41 + ((ushort)(num % 0x1a)));
|
||||
}
|
||||
str = str + ch.ToString();
|
||||
}
|
||||
return str;
|
||||
}
|
||||
/// <summary>
|
||||
/// MD5加密
|
||||
/// </summary>
|
||||
/// <param name="content"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetMD5(string content)
|
||||
{
|
||||
using (var md5 = MD5.Create())
|
||||
{
|
||||
var result = md5.ComputeHash(Encoding.ASCII.GetBytes(content));
|
||||
var strResult = BitConverter.ToString(result);
|
||||
return strResult.Replace("-", "");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static string GetConfig(string strKey, string strDefault = "")
|
||||
{
|
||||
return Appsettings.app(strKey) ?? strDefault;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取数字验证码
|
||||
/// </summary>
|
||||
/// <param name="codenum"></param>
|
||||
/// <returns></returns>
|
||||
public static string numcode(int codenum)
|
||||
{
|
||||
string Vchar = "0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9";
|
||||
string[] VcArray = Vchar.Split(',');
|
||||
string[] stray = new string[codenum];
|
||||
Random random = new Random();
|
||||
for (int i = 0; i < codenum; i++)
|
||||
{
|
||||
int iNum = 0;
|
||||
while ((iNum = Convert.ToInt32(VcArray.Length * random.NextDouble())) == VcArray.Length)
|
||||
{
|
||||
iNum = Convert.ToInt32(VcArray.Length * random.NextDouble());
|
||||
}
|
||||
stray[i] = VcArray[iNum];
|
||||
}
|
||||
|
||||
string identifycode = string.Empty;
|
||||
foreach (string s in stray)
|
||||
{
|
||||
identifycode += s;
|
||||
}
|
||||
return identifycode;
|
||||
}
|
||||
/// <summary>
|
||||
/// 登录验证码
|
||||
/// </summary>
|
||||
/// <param name="codenum"></param>
|
||||
/// <returns></returns>
|
||||
public static string yzmcode(int codenum)
|
||||
{
|
||||
string Vchar = "0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
|
||||
string[] VcArray = Vchar.Split(',');
|
||||
string[] stray = new string[codenum];
|
||||
Random random = new Random();
|
||||
for (int i = 0; i < codenum; i++)
|
||||
{
|
||||
int iNum = 0;
|
||||
while ((iNum = Convert.ToInt32(VcArray.Length * random.NextDouble())) == VcArray.Length)
|
||||
{
|
||||
iNum = Convert.ToInt32(VcArray.Length * random.NextDouble());
|
||||
}
|
||||
stray[i] = VcArray[iNum];
|
||||
}
|
||||
|
||||
string identifycode = string.Empty;
|
||||
foreach (string s in stray)
|
||||
{
|
||||
identifycode += s;
|
||||
}
|
||||
return identifycode;
|
||||
}
|
||||
|
||||
private static bool IsIPAddress(string str1)
|
||||
{
|
||||
if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false;
|
||||
|
||||
string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";
|
||||
|
||||
Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
|
||||
return regex.IsMatch(str1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static void WriteLOG(string err)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
string path = AppContext.BaseDirectory;// .NET CORE
|
||||
//string path = HttpContext.Current.Request.MapPath("/");
|
||||
|
||||
if (!Directory.Exists(path + "/log/"))
|
||||
{
|
||||
Directory.CreateDirectory(path + "/log/");
|
||||
}
|
||||
|
||||
string name = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
if (!File.Exists(path + "/log/" + name))
|
||||
{
|
||||
FileInfo myfile = new FileInfo(path + "/log/" + name);
|
||||
FileStream fs = myfile.Create();
|
||||
fs.Close();
|
||||
}
|
||||
|
||||
StreamWriter sw = File.AppendText(path + "/log/" + name);
|
||||
sw.WriteLine(err + "\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static bool ProcessSqlStr(string Str, int type)
|
||||
{
|
||||
string SqlStr = "";
|
||||
if (type == 1) //Post方法提交
|
||||
{
|
||||
SqlStr = "script|iframe|xp_loginconfig|xp_fixeddrives|Xp_regremovemultistring|Xp_regread|Xp_regwrite|xp_cmdshell|xp_dirtree|count(|substring(|mid(|master|truncate|char(|declare|replace(|varchar(|cast(";
|
||||
}
|
||||
else if (type == 2) //Get方法提交
|
||||
{
|
||||
SqlStr = "'|script|iframe|xp_loginconfig|xp_fixeddrives|Xp_regremovemultistring|Xp_regread|Xp_regwrite|xp_cmdshell|xp_dirtree|count(|*|asc(|chr(|substring(|mid(|master|truncate|char(|declare|replace(|;|varchar(|cast(";
|
||||
}
|
||||
else if (type == 3) //Cookie提交
|
||||
{
|
||||
SqlStr = "script|iframe|xp_loginconfig|xp_fixeddrives|Xp_regremovemultistring|Xp_regread|Xp_regwrite|xp_cmdshell|xp_dirtree|count(|asc(|chr(|substring(|mid(|master|truncate|char(|declare";
|
||||
}
|
||||
else //默认Post方法提交
|
||||
{
|
||||
SqlStr = "script|iframe|xp_loginconfig|xp_fixeddrives|Xp_regremovemultistring|Xp_regread|Xp_regwrite|xp_cmdshell|xp_dirtree|count(|asc(|chr(|substring(|mid(|master|truncate|char(|declare|replace(";
|
||||
}
|
||||
|
||||
bool ReturnValue = true;
|
||||
try
|
||||
{
|
||||
if (Str != "")
|
||||
{
|
||||
string[] anySqlStr = SqlStr.ToUpper().Split('|'); ;
|
||||
foreach (string ss in anySqlStr)
|
||||
{
|
||||
if (Str.ToUpper().IndexOf(ss) >= 0)
|
||||
{
|
||||
ReturnValue = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
ReturnValue = false;
|
||||
}
|
||||
return ReturnValue;
|
||||
}
|
||||
|
||||
|
||||
public static string Filter(string str)
|
||||
{
|
||||
string[] pattern = { "insert ", "delete", "count\\(", "drop table", "update", "truncate", "xp_cmdshell", "exec master", "netlocalgroup administrators", "net use " };
|
||||
for (int i = 0; i < pattern.Length; i++)
|
||||
{
|
||||
str = str.Replace(pattern[i].ToString(), "");
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static string CreateqQsql(string strQFiled, string strQtype, string strQvalue)
|
||||
{
|
||||
string strSQL = " AND ";
|
||||
strSQL = strSQL + strQFiled;
|
||||
if (strQtype == "0")
|
||||
{
|
||||
strSQL = strSQL + " = ";
|
||||
|
||||
}
|
||||
strSQL = strSQL + "'" + strQvalue + "'";
|
||||
return strSQL.FilterSpecial();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 生成流水号格式:8位日期加3位顺序号,如20100302001。
|
||||
/// </summary>
|
||||
public static string GetWFNumber(string serialNumber, string ywcode, string strWFQZ)
|
||||
{
|
||||
if (serialNumber.Length < 13)
|
||||
{
|
||||
strWFQZ = "1";
|
||||
//没法子,只能曲线救国
|
||||
}
|
||||
string strLSTemp = strWFQZ == "0" ? "yyyyMMdd" : "yyyy";
|
||||
if (serialNumber != "0" && serialNumber != "")
|
||||
{
|
||||
string headDate = serialNumber.Substring(ywcode.Length + 1, strLSTemp.Length);
|
||||
int lastNumber = int.Parse(serialNumber.Substring(ywcode.Length + 1 + strLSTemp.Length));
|
||||
//如果数据库最大值流水号中日期和生成日期在同一天,则顺序号加1
|
||||
if (headDate == DateTime.Now.ToString(strLSTemp))
|
||||
{
|
||||
lastNumber++;
|
||||
return ywcode + "-" + headDate + lastNumber.ToString("000");
|
||||
}
|
||||
}
|
||||
return ywcode + "-" + DateTime.Now.ToString(strLSTemp) + "001";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转化时分秒
|
||||
/// </summary>
|
||||
/// <param name="strSFM"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetSencond(string strSFM)
|
||||
{
|
||||
int[] ListTemp = strSFM.SplitTOInt(':');
|
||||
|
||||
return ListTemp[0] * 3600 + ListTemp[1] * 60 + ListTemp[2];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 在DataTable末尾添加合计行,最后一个参数设置需要合计的列,Tools.dbDataTableSumRowsWithColList(dt,"车号",new string[]{"个人产值","节油(元)","超油(元)"});
|
||||
/// </summary>
|
||||
/// <param name="dt"></param>
|
||||
/// <param name="nColHeJi">需要显示‘合计’字段的列</param>
|
||||
/// <param name="colsHeJi">需要合计的列</param>
|
||||
public static DataRow dbDataTableSumRowsWithColList(DataTable dt, string sColHeJi, string[] colsHeJi)
|
||||
{
|
||||
DataRow dr = dt.NewRow();
|
||||
dr[sColHeJi] = "合计";
|
||||
dt.Rows.Add(dr);
|
||||
//初始化合计数组
|
||||
decimal[] arrDec = new decimal[colsHeJi.Length];
|
||||
for (int i = 0; i < colsHeJi.Length; i++)
|
||||
{
|
||||
arrDec[i] = decimal.Zero;
|
||||
}
|
||||
//合计
|
||||
for (int i = 0; i < dt.Rows.Count - 1; i++)
|
||||
{
|
||||
for (int j = 0; j < colsHeJi.Length; j++)
|
||||
{
|
||||
string cName = colsHeJi[j];
|
||||
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
|
||||
arrDec[j] += decimal.Parse(dt.Rows[i][cName] + "");
|
||||
}
|
||||
}
|
||||
//赋值
|
||||
for (int i = 0; i < colsHeJi.Length; i++)
|
||||
{
|
||||
string cName = colsHeJi[i];
|
||||
if (arrDec[i] == decimal.Zero) dr[cName] = "0";
|
||||
else dr[cName] = arrDec[i];
|
||||
}
|
||||
return dr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 分类小计,并有合计行,
|
||||
/// </summary>
|
||||
/// <param name="dt"></param>
|
||||
/// <param name="nColHeJi">需要显示‘合计’字段的列</param>
|
||||
/// <param name="colsHeJi">需要合计的列</param>
|
||||
public static DataRow dbDataTableSubSumRowsWithColList(DataTable dt, string sColHeJi, string strGroupName, string[] colsHeJi)
|
||||
{
|
||||
DataRow dr = dt.NewRow();
|
||||
dr[sColHeJi] = "合计";
|
||||
dt.Rows.Add(dr);
|
||||
//初始化合计数组
|
||||
decimal[] arrDec = new decimal[colsHeJi.Length];
|
||||
for (int i = 0; i < colsHeJi.Length; i++)
|
||||
{
|
||||
arrDec[i] = decimal.Zero;
|
||||
}
|
||||
//合计
|
||||
for (int i = 0; i < dt.Rows.Count - 1; i++)
|
||||
{
|
||||
for (int j = 0; j < colsHeJi.Length; j++)
|
||||
{
|
||||
string cName = colsHeJi[j];
|
||||
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
|
||||
arrDec[j] += decimal.Parse(dt.Rows[i][cName] + "");
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < colsHeJi.Length; i++)
|
||||
{
|
||||
string cName = colsHeJi[i];
|
||||
if (arrDec[i] == decimal.Zero) dr[cName] = 0;
|
||||
else dr[cName] = arrDec[i];
|
||||
}
|
||||
if (dt.Rows.Count <= 1) return dr;
|
||||
//小计
|
||||
string sRate = "";
|
||||
int currSubSumCol = dt.Rows.Count - 2;
|
||||
ArrayList ar = new ArrayList();
|
||||
for (int i = dt.Rows.Count - 2; i >= 0; i--)
|
||||
{
|
||||
string currRate = dt.Rows[i][strGroupName] + "";
|
||||
if (sRate != currRate)
|
||||
{
|
||||
if (i != dt.Rows.Count - 2)
|
||||
{
|
||||
dr = dt.NewRow();
|
||||
dr[sColHeJi] = "小计";
|
||||
for (int j = 0; j < colsHeJi.Length; j++)
|
||||
{
|
||||
string cName = colsHeJi[j];
|
||||
if (arrDec[j] == decimal.Zero) dr[cName] = 0;
|
||||
else dr[cName] = arrDec[j];
|
||||
}
|
||||
dt.Rows.InsertAt(dr, currSubSumCol + 1);
|
||||
}
|
||||
currSubSumCol = i;
|
||||
sRate = currRate;
|
||||
for (int j = 0; j < colsHeJi.Length; j++)
|
||||
{ //归零
|
||||
arrDec[j] = decimal.Zero;
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < colsHeJi.Length; j++)
|
||||
{
|
||||
string cName = colsHeJi[j];
|
||||
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
|
||||
arrDec[j] += decimal.Parse(dt.Rows[i][cName] + "");
|
||||
}
|
||||
if (i == 0)
|
||||
{
|
||||
dr = dt.NewRow();
|
||||
dr[sColHeJi] = "小计";
|
||||
for (int j = 0; j < colsHeJi.Length; j++)
|
||||
{
|
||||
string cName = colsHeJi[j];
|
||||
if (arrDec[j] == decimal.Zero) dr[cName] = 0;
|
||||
else dr[cName] = arrDec[j];
|
||||
}
|
||||
dt.Rows.InsertAt(dr, currSubSumCol + 1);
|
||||
}
|
||||
}
|
||||
|
||||
return dr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user