using Microsoft.Extensions.DependencyInjection; using SlnMesnac.Model.domain; using SlnMesnac.Repository.service.@base; using System; using System.Collections.Generic; using System.Linq; using System.Text; #region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2024 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:LAPTOP-E0N2L34V * 命名空间:SlnMesnac.Repository.service.Impl * 唯一标识:052967bb-62b3-4a80-b2b9-135493fa7a73 * * 创建者:WenJY * 电子邮箱:wenjy@mesnac.com * 创建时间:2024-04-10 16:46:27 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> namespace SlnMesnac.Repository.service.Impl { public class RealBarCodeTaskServiceImpl : BaseServiceImpl, IRealBarCodeTaskService { private IServiceProvider _serviceProvider; public RealBarCodeTaskServiceImpl(Repository rep, IServiceProvider serviceProvider) : base(rep) { _serviceProvider = serviceProvider; } /// /// 保存条码队列信息 /// /// /// /// public void InsertBarCodeTask(RealBarCodeTask task) { try { if (task == null) { throw new ArgumentNullException($"保存条码队列信息异常:参数为空"); } var taskInfos = Query(x => x.BarCode == task.BarCode).ToList(); if (taskInfos.Count > 0) { Deletes(taskInfos); } Insert(task); RefreshLocalTask(); } catch (Exception e) { throw new InvalidOperationException($"保存条码队列信息异常:{e.Message}"); } } /// /// 移除条码队列 /// /// /// public void RemoveBarCodeTask(string barCode) { try { if (string.IsNullOrEmpty(barCode)) { throw new ArgumentNullException($"移除条码队列信息异常:参数为空"); } var taskInfos = Query(x => x.BarCode == barCode).ToList(); Deletes(taskInfos); RefreshLocalTask(); } catch (Exception e) { throw new InvalidOperationException($"移除条码队列信息异常:{e.Message}"); } } /// /// 刷新条码队列缓存信息 /// /// /// private void RefreshLocalTask() { try { using (var scope = _serviceProvider.CreateScope()) { var info = scope.ServiceProvider.GetRequiredService>(); var infos = base.Query(x => 1 == 1, y => y.RecordTime, true).ToList(); info.Clear(); info.AddRange(infos); } } catch (Exception e) { throw new InvalidOperationException($"刷新条码队列缓存信息异常:{e.Message}"); } } } }