You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
5.2 KiB
C#

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 subtaskSqlFunction : SqlFunctionFactory<BaseSubtaskTemplate>
{
private BaseSubtaskTemplate? baseSubtaskTemplate;
private ISqlSugarClient _sqlSugarClient;
private readonly SerilogHelper _logger;
public subtaskSqlFunction(IServiceProvider serviceProvider)
{
_sqlSugarClient = serviceProvider.GetRequiredService<ISqlSugarClient>();
_logger = serviceProvider.GetRequiredService<SerilogHelper>();
}
public override void deleteFunction(BaseSubtaskTemplate _entity)
{
var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs");
baseSubtaskTemplate = _entity;
try
{
List<BaseSubtaskTemplate> baseSubtaskConfigs = wcsDb.Queryable<BaseSubtaskTemplate>().Where(it => it.SubtaskCode == baseSubtaskTemplate.SubtaskCode).ToList();
if (baseSubtaskConfigs.Count == 0)
{
_logger.Info("不存在仓库配置");
return;
}
foreach (var item in baseSubtaskConfigs)
{
wcsDb.Ado.BeginTran();
wcsDb.Deleteable<BaseSubtaskTemplate>(item).ExecuteCommand();
wcsDb.Ado.CommitTran();
}
}
catch (Exception ex)
{
wcsDb.AsTenant().RollbackTran();
_logger.Error($"删除仓库设置异常{ex.Message}");
}
}
public override void insertFunction(BaseSubtaskTemplate _entity)
{
var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs");
baseSubtaskTemplate = _entity;
try
{
bool hasTask = wcsDb.Queryable<BaseSubtaskTemplate>().Any(it => it.SubtaskCode == baseSubtaskTemplate.SubtaskCode);
if (hasTask)
{
_logger.Info("已有该仓库配置");
return;
}
wcsDb.Ado.BeginTran();
wcsDb.Insertable(baseSubtaskTemplate).ExecuteCommand();
wcsDb.Ado.CommitTran();
}
catch (Exception ex)
{
wcsDb.AsTenant().RollbackTran();
_logger.Error($"插入仓库设置异常{ex.Message}");
}
}
public override List<BaseSubtaskTemplate> searchFunction(BaseSubtaskTemplate _entity)
{
var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs");
baseSubtaskTemplate = _entity;
try
{
// 根据 ConfigKey 查询配置信息
List<BaseSubtaskTemplate> result = wcsDb.Queryable<BaseSubtaskTemplate>()
.Where(it => it.SubtaskCode == baseSubtaskTemplate.SubtaskCode)
.ToList();
if (result.Count == 0)
{
_logger.Info($"未找到 ConfigKey 为 {baseSubtaskTemplate?.SubtaskCode} 的仓库配置");
// 可以根据需要返回 null 或者抛出异常
return null;
}
_logger.Info($"成功查询仓库配置: {baseSubtaskTemplate?.SubtaskCode}");
return result;
}
catch (Exception ex)
{
_logger.Error($"查询仓库设置异常: {ex.Message}");
return null;
}
}
public override void updateFunction(BaseSubtaskTemplate _entity)
{
var wcsDb = _sqlSugarClient.AsTenant().GetConnection("wcs");
baseSubtaskTemplate = _entity;
try
{
// 检查是否存在该配置
bool exists = wcsDb.Queryable<BaseSubtaskTemplate>()
.Any(it => it.SubtaskCode == baseSubtaskTemplate.SubtaskCode);
if (!exists)
{
_logger.Info($"不存在 ConfigKey 为 {baseSubtaskTemplate.SubtaskCode} 的仓库配置,无法更新");
return;
}
// 开始事务
wcsDb.Ado.BeginTran();
var updateResult = wcsDb.Updateable(baseSubtaskTemplate).ExecuteCommand();
wcsDb.Ado.CommitTran();
if (updateResult > 0)
{
_logger.Info($"成功更新仓库配置: {baseSubtaskTemplate.SubtaskCode}");
}
else
{
_logger.Info($"更新仓库配置影响行数为0: {baseSubtaskTemplate.SubtaskCode}");
}
}
catch (Exception ex)
{
wcsDb.AsTenant().RollbackTran();
_logger.Error($"更新仓库设置异常: {ex.Message}");
throw; // 或者根据业务需求决定是否抛出
}
}
}
}