using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Sln.Wcs.Common; using Sln.Wcs.Model.Domain; using Sln.Wcs.Serilog; using SqlSugar; namespace Sln.Wcs.Function.Functions { public class warehouseSqlFunction : SqlFunctionFactory { private BaseWarehouseInfo? baseWarehouseinfo; private ISqlSugarClient _sqlSugarClient; private readonly SerilogHelper _logger; public warehouseSqlFunction(IServiceProvider serviceProvider) { _sqlSugarClient = serviceProvider.GetRequiredService(); _logger = serviceProvider.GetRequiredService(); } public override void deleteFunction(BaseWarehouseInfo _entity) { var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs"); baseWarehouseinfo = _entity; try { List baseConfigs = wcsDb.Queryable().Where(it => it.WarehouseCode == baseWarehouseinfo.WarehouseCode).ToList(); if (baseConfigs.Count == 0) { _logger.Info("不存在仓库配置"); return; } foreach (var item in baseConfigs) { wcsDb.Ado.BeginTran(); wcsDb.Deleteable(item).ExecuteCommand(); wcsDb.Ado.CommitTran(); } } catch (Exception ex) { wcsDb.AsTenant().RollbackTran(); _logger.Error($"删除仓库设置异常{ex.Message}"); } } public override void insertFunction(BaseWarehouseInfo _entity) { var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs"); baseWarehouseinfo = _entity; try { bool hasTask = wcsDb.Queryable().Any(it => it.WarehouseCode == baseWarehouseinfo.WarehouseCode); if (hasTask) { _logger.Info("已有该仓库配置"); return; } wcsDb.Ado.BeginTran(); wcsDb.Insertable(baseWarehouseinfo).ExecuteCommand(); wcsDb.Ado.CommitTran(); } catch (Exception ex) { wcsDb.AsTenant().RollbackTran(); _logger.Error($"插入仓库设置异常{ex.Message}"); } } public override List searchFunction(BaseWarehouseInfo _entity) { var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs"); baseWarehouseinfo = _entity; try { // 根据 ConfigKey 查询配置信息 List result = wcsDb.Queryable() .Where(it => it.WarehouseCode == baseWarehouseinfo.WarehouseCode) .ToList(); if (result.Count == 0) { _logger.Info($"未找到 ConfigKey 为 {baseWarehouseinfo?.WarehouseCode} 的仓库配置"); // 可以根据需要返回 null 或者抛出异常 return null; } _logger.Info($"成功查询仓库配置: {baseWarehouseinfo?.WarehouseCode}"); return result; } catch (Exception ex) { _logger.Error($"查询仓库设置异常: {ex.Message}"); return null; } } public override void updateFunction(BaseWarehouseInfo _entity) { var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs"); baseWarehouseinfo = _entity; try { // 检查是否存在该配置 bool exists = wcsDb.Queryable() .Any(it => it.WarehouseCode == baseWarehouseinfo.WarehouseCode); if (!exists) { _logger.Info($"不存在 ConfigKey 为 {baseWarehouseinfo.WarehouseCode} 的仓库配置,无法更新"); return; } // 开始事务 wcsDb.Ado.BeginTran(); var updateResult = wcsDb.Updateable(baseWarehouseinfo).ExecuteCommand(); wcsDb.Ado.CommitTran(); if (updateResult > 0) { _logger.Info($"成功更新仓库配置: {baseWarehouseinfo.WarehouseCode}"); } else { _logger.Info($"更新仓库配置影响行数为0: {baseWarehouseinfo.WarehouseCode}"); } } catch (Exception ex) { wcsDb.AsTenant().RollbackTran(); _logger.Error($"更新仓库设置异常: {ex.Message}"); throw; // 或者根据业务需求决定是否抛出 } } } }