添加项目文件。

This commit is contained in:
Administrator
2026-06-29 14:46:32 +08:00
parent 9a9c508618
commit d9e0324b1d
175 changed files with 17983 additions and 0 deletions

View File

@@ -0,0 +1,323 @@

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