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