using HH.WCS.Mobox3.DSZSH.Helpers;
using SqlSugar;
namespace HH.WCS.Mobox3.DSZSH.Helper {
///
/// 用于生成序列号,并管理序列号前缀的工具类
///
internal class SysHelper
{
//使用静态 locker 对象实现线程同步
private static object locker = new object();
internal static int GetSerialNumber(string snType, string prefix) {
int result = 0;
lock (locker) {
var db = DbHelper.GetDbClient();
var sId = db.Queryable().Where(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix).First();
if (sId != null) {
sId.CN_N_MAX++;
//if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX} where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) {
// result = sId.CN_N_MAX;
//}
// 参数化查询,避免SQL注入
if (db.Updateable().SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX).Where(it => it.CN_S_TYPE == snType
&& it.CN_S_PRE == prefix).ExecuteCommand() > 0) {
result = sId.CN_N_MAX;
}
}
else {
//插入表
sId = new OI_SYS_MAXID { CN_S_TYPE = snType, CN_S_PRE = prefix, CN_N_MAX = 1 };
result = db.Insertable(sId).ExecuteCommand() > 0 ? 1 : 0;
}
}
return result;
}
[SugarTable("dbo.OI_SYS_MAXID")]
public class OI_SYS_MAXID
{
public string CN_S_TYPE { get; set; }
public string CN_S_PRE { get; set; }
public int CN_N_MAX { get; set; }
}
}
}