using HH.WCS.Mobox3.AnGang.util; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WCS.Mobox3.AnGang.wms { internal class SYSHelper { private static object locker = new object(); internal static int GetSerialNumber(string snType, string prefix) { int result = 0; lock (locker) { var db = new SqlHelper().GetInstance(); var sId = db.Queryable().Where(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix).First(); if (sId != null) { if (sId.CN_T_LAST < DateTime.Today) { sId.CN_N_MAX = 1; } else { sId.CN_N_MAX++; } sId.CN_T_LAST = DateTime.Now; if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX}, CN_T_LAST='{sId.CN_T_LAST}' where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) { //LogHelper.Info($"set cn_n_max {sId.CN_N_MAX}"); result = sId.CN_N_MAX; } //if (db.Updateable(sId).UpdateColumns(it => new { it.CN_N_MAX, it.CN_T_LAST}).ExecuteCommand() > 0) { // result = sId.CN_N_MAX; //} //if (db.Updateable() // .SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX && it.CN_T_LAST == sId.CN_T_LAST) // .Where(it => it.CN_S_TYPE == sId.CN_S_TYPE && it.CN_S_PRE == sId.CN_S_TYPE) // .ExecuteCommand() > 0) { // result = sId.CN_N_MAX; //} //var parameters = new[] { // new SugarParameter("@CN_N_MAX", sId.CN_N_MAX), // new SugarParameter("@CN_T_LAST", sId.CN_T_LAST), // new SugarParameter("@CN_S_TYPE", sId.CN_S_TYPE), // new SugarParameter("@CN_S_PRE", sId.CN_S_TYPE) //}; //var sql = @"UPDATE OI_SYS_MAXID // SET CN_N_MAX = @CN_N_MAX, CN_T_LAST = @CN_T_LAST // WHERE CN_S_TYPE = @CN_S_TYPE AND CN_S_PRE = @CN_S_PRE"; //if (db.Ado.ExecuteCommand(sql, parameters) > 0) { // result = sId.CN_N_MAX; // LogHelper.Info($"set cn_n_max {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; } public DateTime CN_T_LAST { get; set; } } } }