324 lines
10 KiB
C#
324 lines
10 KiB
C#
|
||
using Newtonsoft.Json;
|
||
using Serilog;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Data.SqlClient;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows;
|
||
using System.Xml;
|
||
using WPFWCSDemo.Data;
|
||
using WPFWCSDemo.Models.Tables;
|
||
using WPFWCSDemo.StateCode;
|
||
using WPFWCSDemo.ViewModels;
|
||
|
||
namespace WPFWCSDemo.Utilities
|
||
{
|
||
public class SqlHelper
|
||
{
|
||
/// <summary>
|
||
/// sql连接字符串,引用自【app.config】
|
||
/// </summary>
|
||
public static string? ConStr { get; set; }
|
||
|
||
/// <summary>
|
||
/// 检查数据库是否连接正常
|
||
/// </summary>
|
||
/// <returns>true-连接正常 false-连接失败</returns>
|
||
public static bool IsDBConnected()
|
||
{
|
||
using var context = new AppDbContext();
|
||
|
||
return context.Database.CanConnect();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取数据集
|
||
/// </summary>
|
||
/// <param name="cmdText">sql执行语句</param>
|
||
/// <param name="sqlParameters">可选的sql参数</param>
|
||
/// <returns>查询目标的数据集</returns>
|
||
public static DataSet GetDataSet(string cmdText, params SqlParameter[] sqlParameters)
|
||
{
|
||
//创建sql连接
|
||
using SqlConnection conn = new SqlConnection(ConStr);
|
||
try
|
||
{
|
||
conn.Open();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
using SqlCommand cmd = new SqlCommand(cmdText, conn);
|
||
cmd.Parameters.AddRange(sqlParameters);
|
||
using SqlDataAdapter sda = new SqlDataAdapter(cmd);
|
||
using DataSet ds = new DataSet();
|
||
sda.Fill(ds);
|
||
//TableRefresh(cmdText);
|
||
|
||
return ds;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取对应SQL查询的数据表
|
||
/// </summary>
|
||
/// <param name="cmdText">sql执行语句</param>
|
||
/// <returns>查询目标的数据表名</returns>
|
||
public static DataTable? ExecuteTable(string cmdText, params SqlParameter[] sqlParameters)
|
||
{
|
||
return GetDataSet(cmdText, sqlParameters).Tables[0];
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 获取某个表字段的集合
|
||
/// </summary>
|
||
/// <param name="cmdText">sql执行语句</param>
|
||
/// <returns>查询目标表字段/列名的值的集合</returns>
|
||
public static List<string> GetColumns(string cmdText)
|
||
{
|
||
//创建用于存储列名的集合
|
||
List<string> columns = new List<string>();
|
||
|
||
//创建sql连接
|
||
using (SqlConnection conn = new SqlConnection(ConStr))
|
||
{
|
||
try
|
||
{
|
||
conn.Open();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
|
||
SqlCommand cmd = new SqlCommand(cmdText, conn);
|
||
SqlDataAdapter sda = new SqlDataAdapter(cmdText, conn);
|
||
DataSet ds = new DataSet();
|
||
sda.Fill(ds);
|
||
|
||
//将获取到的字段名添加到集合中
|
||
foreach (DataColumn colName in ds.Tables[0].Columns)
|
||
{
|
||
columns.Add(colName.ToString());
|
||
}
|
||
|
||
return columns;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 操作获取受影响的行数
|
||
/// </summary>
|
||
/// <param name="cmdText">sql语句</param>
|
||
/// <param name="sqlParameters">sql字段参数</param>
|
||
/// <returns></returns>
|
||
public static int ExecuteNonQuery(string cmdText, params SqlParameter[] sqlParameters)
|
||
{
|
||
//创建sql连接
|
||
using (SqlConnection conn = new SqlConnection(ConStr))
|
||
{
|
||
conn.Open();
|
||
|
||
using SqlCommand cmd = new SqlCommand(cmdText, conn);
|
||
|
||
//sql参数化设置
|
||
cmd.Parameters.AddRange(sqlParameters);
|
||
//MessageBox.Show(cmdText);
|
||
//返回执行sql受影响的行数
|
||
int rows = cmd.ExecuteNonQuery();
|
||
if (rows > -1)
|
||
{
|
||
//throw new Exception("获取数据失败!(错误代码:000001)");
|
||
}
|
||
|
||
//TableRefresh(cmdText);
|
||
|
||
return rows;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取查询数据的行数
|
||
/// </summary>
|
||
/// <param name="cmdText">SQL字符串</param>
|
||
/// <returns>目标行数</returns>
|
||
public static int GetRowCount(string cmdText, params SqlParameter[] sqlParameters)
|
||
{
|
||
using (DataTable dt = ExecuteTable(cmdText, sqlParameters))
|
||
{
|
||
if (dt == null)
|
||
{
|
||
return 0;
|
||
}
|
||
return dt.Rows.Count;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 获取为当前任务【自动生成】的WCS本地任务号
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static int GetTaskIdByAutoGeneration()
|
||
{
|
||
using DataTable dt = ExecuteTable("SELECT TASKNO FROM TASKNUMBER");
|
||
|
||
int taskId = (int)dt.Rows[0][0];
|
||
|
||
//此处定义9开头的任务号为手动添加的任务,因此自动生成的任务号小于9000
|
||
if (taskId > 899999)
|
||
{
|
||
ExecuteNonQuery("UPDATE TASKNUMBER SET TASKNO=@TaskNo WHERE TASKNO=@TaskId",
|
||
new SqlParameter("@taskNo", 100001),
|
||
new SqlParameter("@taskId", taskId));
|
||
return 100001;
|
||
}
|
||
else
|
||
{
|
||
ExecuteNonQuery("UPDATE TASKNUMBER SET TASKNO=@TaskNo WHERE TASKNO=@TaskId",
|
||
new SqlParameter("@taskNo", taskId + 1),
|
||
new SqlParameter("@taskId", taskId));
|
||
}
|
||
|
||
return taskId;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取为当前任务【手动添加】的WCS本地任务号
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static int GetTaskIdByManualGeneration()
|
||
{
|
||
using DataTable dt = ExecuteTable("SELECT MAN_TASKNO FROM TASKNUMBER");
|
||
|
||
int taskId = (int)dt.Rows[0][0];
|
||
|
||
//此处定义9开头的任务号为手动添加的任务
|
||
if (taskId > 999999)
|
||
{
|
||
ExecuteNonQuery("UPDATE TASKNUMBER SET MAN_TASKNO=@Man_TaskNo WHERE MAN_TASKNO=@TaskId",
|
||
new SqlParameter("@Man_TaskNo", 900000),
|
||
new SqlParameter("@taskId", taskId));
|
||
return 900000;
|
||
}
|
||
else
|
||
{
|
||
ExecuteNonQuery("UPDATE TASKNUMBER SET MAN_TASKNO=@Man_TaskNo WHERE MAN_TASKNO=@TaskId",
|
||
new SqlParameter("@Man_TaskNo", taskId + 1),
|
||
new SqlParameter("@taskId", taskId));
|
||
}
|
||
|
||
return taskId;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 获取为当前事件【手动添加】的编号
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static int GetEventIdByAutoGeneration()
|
||
{
|
||
using DataTable? dt = ExecuteTable("SELECT EVENT_TASKNO FROM TASKNUMBER");
|
||
|
||
int taskId = (int)dt.Rows[0][0];
|
||
|
||
//此处定义9开头的任务号为手动添加的任务
|
||
if (taskId > 9999)
|
||
{
|
||
ExecuteNonQuery("UPDATE TASKNUMBER SET EVENT_TASKNO=@Event_TaskNo WHERE EVENT_TASKNO=@TaskId",
|
||
new SqlParameter("@Event_TaskNo", 1001),
|
||
new SqlParameter("@taskId", taskId));
|
||
return 1001;
|
||
}
|
||
else
|
||
{
|
||
ExecuteNonQuery("UPDATE TASKNUMBER SET EVENT_TASKNO=@Event_TaskNo WHERE EVENT_TASKNO=@TaskId",
|
||
new SqlParameter("@Event_TaskNo", taskId + 1),
|
||
new SqlParameter("@taskId", taskId));
|
||
}
|
||
|
||
return taskId;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 记录当前操作事件
|
||
/// </summary>
|
||
/// <param name="message">信息</param>
|
||
/// <param name="userId">标识</param>
|
||
/// <param name="type">类型(登录、操作等)</param>
|
||
/// <param name="source">来源(名称、数据集等)</param>
|
||
/// <param name="level">级别</param>
|
||
/// <param name="status">状态(是否完成等)</param>
|
||
public static void NewEventLog(string message,string userId, string type, string source, string level, string status)
|
||
{
|
||
using var context = new AppDbContext();
|
||
|
||
Event_Log event_Log = new Event_Log()
|
||
{
|
||
Id = Guid.NewGuid(),
|
||
Message = message,
|
||
TimeStamp = DateTime.Now.ToString(TimeFormat.stringFormat),
|
||
UserId = userId,
|
||
Type = type,
|
||
Source = source,
|
||
Level = level,
|
||
Status = status,
|
||
};
|
||
|
||
context.Event_Log.Add(event_Log);
|
||
|
||
context.SaveChanges();
|
||
|
||
Log.Warning($"【事件记录】{JsonConvert.SerializeObject(event_Log)}");
|
||
}
|
||
/// <summary>
|
||
/// 记录当前操作事件
|
||
/// </summary>
|
||
/// <param name="message">信息</param>
|
||
/// <param name="userId">标识</param>
|
||
/// <param name="type">类型(登录、操作等)</param>
|
||
/// <param name="source">来源(名称、数据集等)</param>
|
||
/// <param name="level">级别</param>
|
||
/// <param name="status">状态(是否完成等)</param>
|
||
public static void NewEventLog(string message, string userId)
|
||
{
|
||
using var context = new AppDbContext();
|
||
|
||
Event_Log event_Log = new Event_Log()
|
||
{
|
||
Id = Guid.NewGuid(),
|
||
Message = message,
|
||
TimeStamp = DateTime.Now.ToString(TimeFormat.stringFormat),
|
||
UserId = userId,
|
||
};
|
||
|
||
context.Event_Log.Add(event_Log);
|
||
|
||
context.SaveChanges();
|
||
|
||
Log.Warning($"【事件记录】{event_Log.UserId}-{event_Log.Message}");
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|