济宁李尔接口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

510 lines
18 KiB

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using XS_DAL;
namespace XS_BLL
{
public static class UtilityBLL
{
/// <summary>
/// Md5 加密
/// </summary>
/// <param name="txt"></param>
/// <returns></returns>
public static string GenerateMD5(string txt)
{
using (MD5 mi = MD5.Create())
{
byte[] buffer = Encoding.UTF8.GetBytes(txt);
//开始加密
byte[] newBuffer = mi.ComputeHash(buffer);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < newBuffer.Length; i++)
{
sb.Append(newBuffer[i].ToString("X2"));
}
return sb.ToString();
}
}
/// <summary>
/// 生成获取UUID
/// </summary>
/// <param name="bl"></param>
/// <returns></returns>
public static string GetUuid(bool bl = false)
{
string uuid = string.Empty;
if (bl)
{
//带'-'
uuid = System.Guid.NewGuid().ToString();
}
else
{
//不带'-'
uuid = System.Guid.NewGuid().ToString("N");
}
return uuid;
}
/// <summary>
/// 获取json中指定Key的value值 不能取集合中数据
/// </summary>
/// <param name="recieveBuffer">json串</param>
/// <param name="key">json节点</param>
/// <returns></returns>
public static string GetReceiveValues(string recieveBuffer, string key)
{
try
{
key = key.Replace(" ", "");
string[] keys = key.Split(',');
string resMag = recieveBuffer;
if (!string.IsNullOrEmpty(recieveBuffer))
{
for (int i = 0; i < keys.Count(); i++)
{
JObject obj = Newtonsoft.Json.Linq.JObject.Parse(resMag);
resMag = obj[keys[i]].ToString();
}
}
return resMag;
}
catch (Exception ex)
{
LogHelper.ErrorLog(ex);
return "";
}
}
/// <summary>
/// 接收就送数据返回泛型集合{"header":{},"body":{"reqCode":"qw","data":[{}]}}
/// </summary>
/// <typeparam name="T">泛型实体类</typeparam>
/// <param name="recieveBuffer">json数据</param>
/// <returns></returns>
public static List<T> GetReceiveValuesList<T>(string recieveBuffer, string key)
{
try
{
JavaScriptSerializer Jss = new JavaScriptSerializer();
Dictionary<string, object> DicText = (Dictionary<string, object>)Jss.DeserializeObject(recieveBuffer);
string resMag = GetReceiveValues(recieveBuffer, key);
List<T> busList = Jss.Deserialize<List<T>>(resMag);
return busList;
}
catch (Exception ex)
{
LogHelper.ErrorLog(ex);
return null;
}
}
///// <summary>
///// 转JSON
///// </summary>
///// <param name="rModel">返回实体类</param>
///// <param name="pageNum">当前页</param>
///// <param name="totalPage">每页行数</param>
///// <param name="dtCount">总页数</param>
///// <returns></returns>
//public static string retHttpJson(t_result rModel, int i = 0)
//{
// try
// {
// string paramString = string.Empty;
// JObject joB = new JObject();
// string sign = Global.appSecret;
// string message = string.IsNullOrEmpty(rModel.message) ? "" : rModel.message;
// var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
// if (rModel.i_type == 0)
// {
// string js = string.Empty;
// if (rModel.dtCount > 0)
// {
// paramString = JsonConvert.SerializeObject(new
// {
// reqCode = rModel.reqCode,
// code = rModel.code,
// message = message,
// data = new { list = rModel.data, totalPage = rModel.pageNum, pageSize = rModel.totalPage, count = rModel.dtCount }
// }, Formatting.Indented, jsonSetting);
// }
// else
// {
// if (i == 1)
// {
// paramString = JsonConvert.SerializeObject(new
// {
// reqCode = rModel.reqCode,
// code = rModel.code,
// message = message,
// data = rModel.materielList
// }, Formatting.Indented, jsonSetting);
// }
// else
// {
// paramString = JsonConvert.SerializeObject(new
// {
// reqCode = rModel.reqCode,
// code = rModel.code,
// message = message,
// data = rModel.data
// }, Formatting.Indented, jsonSetting);
// }
// }
// }
// else
// {
// string uuid = getUuid();
// paramString = JsonConvert.SerializeObject(new
// {
// reqCode = string.IsNullOrEmpty(rModel.reqCode) ? uuid : rModel.reqCode,
// data = rModel.data
// }, Formatting.Indented, jsonSetting);
// }
// //var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include };
// //var json = JsonConvert.SerializeObject(paramString, Formatting.Indented, jsonSetting);
// return paramString;
// //return json;
// }
// catch (Exception ex)
// {
// return ex.Message;
// }
//}
//public static string retHttpJson(t_result rModel)
//{
// JObject joH = new JObject();
// JObject joB = new JObject();
// JObject jo = new JObject();
// string sign = Global.appSecret;
// string message = string.IsNullOrEmpty(rModel.message) ? "" : rModel.message;
// joH.Add("appKey", Global.appKey);
// joH.Add("requestPlan", Global.requestPlan);
// joH.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// joH.Add("version", Global.version);
// joH.Add("httpVersion", Global.httpVersion);
// if (rModel.i_type == 0)
// {
// joH.Add("sign", GenerateMD5(sign + rModel.reqCode));
// joB.Add("reqCode", rModel.reqCode);
// joB.Add("code", rModel.code);
// if (message.Length > 255)
// {
// message = message.Substring(0, 250) + "...";
// }
// joB.Add("message", message);
// if (rModel.data != null)
// {
// joB.Add("data", rModel.data);
// }
// }
// else
// {
// string uuid = getUuid();
// joH.Add("sign", GenerateMD5(sign + uuid));
// joB.Add("reqCode", uuid);
// if (rModel.data != null)
// {
// joB.Add("data", rModel.data);
// }
// if (rModel.file != null)
// {
// string myStr = System.Text.Encoding.UTF8.GetString(rModel.file);
// byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(myStr);
// string myStr001 = System.Text.Encoding.UTF8.GetString(rModel.file);
// joB.Add("file", rModel.file);
// }
// }
// jo.Add("header", joH);
// jo.Add("body", joB);
// string paramString = jo.ToString(Newtonsoft.Json.Formatting.None, null);
// string strFile = utilityBLL.getReceiveValues(paramString, "body,file");
// return paramString;
//}
/// <summary>
/// List集合转换为DataTable
/// 调用示例 : DataTable tb = ToDataTable(List集合);
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="collection">集合</param>
/// <returns>DataTable</returns>
public static DataTable ListToDataTable<T>(List<T> list)
{
//创建一个名为"tableName"的空表
DataTable dt = new DataTable("tableName");
if (list.Count > 0)
{
//创建传入对象名称的列
foreach (var item in list.FirstOrDefault().GetType().GetProperties())
{
dt.Columns.Add(item.Name);
}
//循环存储
foreach (var item in list)
{
//新加行
DataRow value = dt.NewRow();
//根据DataTable中的值,进行对应的赋值
foreach (DataColumn dtColumn in dt.Columns)
{
int i = dt.Columns.IndexOf(dtColumn);
//基元元素,直接复制,对象类型等,进行序列化
if (value.GetType().IsPrimitive)
{
value[i] = item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item);
}
else
{
string aa = "";
if (item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item) != null)
{
aa = item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item).ToString();
value[i] = aa;
}
else
{
aa = "";
}
//value[i] = JsonConvert.SerializeObject(item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item));
}
}
dt.Rows.Add(value);
}
}
return dt;
/*
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
*/
}
/// <summary>
/// JSON格式化
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string JsonToString(string str)
{
try
{
//格式化json字符串
JsonSerializer serializer = new JsonSerializer();
TextReader tr = new StringReader(str);
JsonTextReader jtr = new JsonTextReader(tr);
object obj = serializer.Deserialize(jtr);
if (obj != null)
{
StringWriter textWriter = new StringWriter();
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
{
Formatting = Formatting.Indented,
Indentation = 4,
IndentChar = ' '
};
serializer.Serialize(jsonWriter, obj);
return textWriter.ToString();
}
else
{
return str;
}
}
catch (Exception ex)
{
return str;
}
}
public static bool PrevInstance()
{
string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
if (System.Diagnostics.Process.GetProcessesByName(procName).GetUpperBound(0) >= 1)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// SqlServer 数据库链接验证
/// </summary>
/// <param name="connString">链接字符</param>
/// <returns></returns>
public static bool IsDbConnected(string connString = "")
{
SqlConnection mySqlConnection;
//获取数据库连接字符串
//创建连接对象
if (string.IsNullOrEmpty(connString))
{
mySqlConnection = new SqlConnection(Global.connstring);
}
else
{
mySqlConnection = new SqlConnection(connString);
}
//ConnectionTimeout 在.net 1.x 可以设置 在.net 2.0后是只读属性,则需要在连接字符串设置
//如:server=.;uid=sa;pwd=;database=PMIS;Integrated Security=SSPI; Connection Timeout=30
//mySqlConnection.ConnectionTimeout = 10;//设置连接超时的时间
bool IsCanConnectioned = false;
try
{
//Open DataBase
//打开数据库
mySqlConnection.Open();
IsCanConnectioned = true;
}
catch
{
//Can not Open DataBase
//打开不成功 则连接不成功
IsCanConnectioned = false;
}
finally
{
//Close DataBase
//关闭数据库连接
mySqlConnection.Close();
}
//mySqlConnection is a SqlConnection object
if (mySqlConnection.State == ConnectionState.Closed || mySqlConnection.State == ConnectionState.Broken)
{
//Connection is not available
return IsCanConnectioned;
}
else
{
//Connection is available
return IsCanConnectioned;
}
}
/// <summary>
/// DataTable转成List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public static List<T> ToDataList<T>(DataTable dt)
{
var list = new List<T>();
var plist = new List<PropertyInfo>(typeof(T).GetProperties());
foreach (DataRow item in dt.Rows)
{
T s = Activator.CreateInstance<T>();
for (int i = 0; i < dt.Columns.Count; i++)
{
PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName);
if (info != null)
{
try
{
if (!Convert.IsDBNull(item[i]))
{
object v = null;
if (info.PropertyType.ToString().Contains("System.Nullable"))
{
v = Convert.ChangeType(item[i], Nullable.GetUnderlyingType(info.PropertyType));
}
else
{
v = Convert.ChangeType(item[i], info.PropertyType);
}
info.SetValue(s, v, null);
}
}
catch (Exception ex)
{
throw new Exception("字段[" + info.Name + "]转换出错,value:" + item[i] + ex.ToString());
}
}
}
list.Add(s);
}
return list;
}
/// <summary>
/// 删除表数据
/// </summary>
/// <param name="delName"></param>
/// <param name="where"></param>
public static void DelInterface(string delName, string where)
{
try
{
string sql = " delete " + delName;
if (!string.IsNullOrEmpty(where.Trim()))
{
sql += where;
}
DBOperator.delSql(sql);
}
catch (Exception ex)
{
throw;
}
}
}
}