using Quartz; using SqlSugar; using SqlSugar.Extensions; using WIDESEA_Common.StockEnum; using WIDESEA_Model.Models; using WIDESEA_Model.Models.Basic; namespace WIDESEA_WMSServer.Jobs { [DisallowConcurrentExecution] public class InventoryLockJob : IJob { private readonly ILogger _logger; private readonly ISqlSugarClient _db; public InventoryLockJob(ILogger logger, ISqlSugarClient db ) { _logger = logger; _db = db; } public Task Execute(IJobExecutionContext context) { // 第一步:更新ValidDate的原生SQL(SQL Server) string updateSql = @" UPDATE s SET s.ValidDate = DATEADD(DAY, m.ValidityDays, s.CreateDate) FROM Dt_StockInfoDetail s INNER JOIN Dt_MaterialExpirationDate m ON SUBSTRING(s.MaterielCode, 1, 6) = m.MaterialCode WHERE s.ValidDate IS NULL"; int updateValidDateResult = _db.Ado.ExecuteCommand(updateSql); // 第二步:更新过期状态的原生SQL string updateStatusSql = @" UPDATE Dt_StockInfoDetail SET Status = 98 WHERE ValidDate IS NOT NULL AND ValidDate < GETDATE()"; int updateStatusResult = _db.Ado.ExecuteCommand(updateStatusSql); return Task.CompletedTask; } } }