hwh
2024-06-19 0e507245da960f69f70242a884040cd2719f5b33
unitofwork事务
4个文件已修改
1个文件已添加
105 ■■■■ 已修改文件
Wms/Utility/UnitOfWork/SqlSugarUnitOfWork.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Utility/Utility.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllTaskServer/BllTaskSyncServer.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllTaskServer/IBllTaskSyncServer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Startup.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Utility/UnitOfWork/SqlSugarUnitOfWork.cs
New file
@@ -0,0 +1,69 @@
using Microsoft.AspNetCore.Mvc.Filters;
using SqlSugar;
namespace Utility
{
    /// <summary>
    /// SqlSugar 事务和工作单元
    /// </summary>
    public sealed class SqlSugarUnitOfWork : IUnitOfWork
    {
        /// <summary>
        /// SqlSugar 对象
        /// </summary>
        private readonly ISqlSugarClient _sqlSugarClient;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="sqlSugarClient"></param>
        public SqlSugarUnitOfWork(ISqlSugarClient sqlSugarClient)
        {
            _sqlSugarClient = sqlSugarClient;
        }
        /// <summary>
        /// 开启工作单元处理
        /// </summary>
        /// <param name="context"></param>
        /// <param name="unitOfWork"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void BeginTransaction(FilterContext context, UnitOfWorkAttribute unitOfWork)
        {
            _sqlSugarClient.AsTenant().BeginTran();
        }
        /// <summary>
        /// 提交工作单元处理
        /// </summary>
        /// <param name="resultContext"></param>
        /// <param name="unitOfWork"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void CommitTransaction(FilterContext resultContext, UnitOfWorkAttribute unitOfWork)
        {
            _sqlSugarClient.AsTenant().CommitTran();
        }
        /// <summary>
        /// 回滚工作单元处理
        /// </summary>
        /// <param name="resultContext"></param>
        /// <param name="unitOfWork"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void RollbackTransaction(FilterContext resultContext, UnitOfWorkAttribute unitOfWork)
        {
            _sqlSugarClient.AsTenant().RollbackTran();
        }
        /// <summary>
        /// 执行完毕(无论成功失败)
        /// </summary>
        /// <param name="context"></param>
        /// <param name="resultContext"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void OnCompleted(FilterContext context, FilterContext resultContext)
        {
            _sqlSugarClient.Dispose();
        }
    }
}
Wms/Utility/Utility.csproj
@@ -24,6 +24,7 @@
    <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0" />
    <PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
    <PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
    <PackageReference Include="SqlSugarCore" Version="5.1.3.43" />
    <PackageReference Include="System.Drawing.Common" Version="6.0.0" />
    <PackageReference Include="ZXing.Net" Version="0.16.7" />
  </ItemGroup>
Wms/WMS.BLL/BllTaskServer/BllTaskSyncServer.cs
@@ -1,5 +1,6 @@
using Model.InterFaceModel;
using Model.ModelDto.BllTaskDto;
using Model.ModelDto.SysDto;
using Model.ModelVm.BllTaskVm;
using Newtonsoft.Json;
using SqlSugar;
@@ -7,6 +8,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Utility;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.DAL;
@@ -27,6 +30,7 @@
        public BllTaskSyncServer() : base(Db)
        {
        }
        /// <summary>
        /// 获取任务列表
        /// </summary>
@@ -57,7 +61,7 @@
                        StartLocat = it.StartLocat,
                        EndLocat = it.EndLocat,
                        PalletNo = it.PalletNo,
                        PalletType=it.PalletType,
                        PalletType = it.PalletType,
                        FinishDate = it.FinishDate == null ? "" : Convert.ToDateTime(it.FinishDate).ToString("yyyy-MM-dd HH:mm:ss"),
                        WCSName = it.WCSName,
                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
@@ -120,7 +124,7 @@
                entry.WCSName = model.WCSName;
                //添加任务信息
                Db.Insertable(entry).ExecuteCommand();
                if (model.Type == "0" || model.Type == "2")//入库任务、移库任务
                {
                    //目标储位
@@ -167,7 +171,7 @@
                        BitPalletMark = "0",
                        IsBale = "0",
                        IsBelt = "0",
                        CompleteTime=model.FinishDate,//完成时间
                        CompleteTime = model.FinishDate,//完成时间
                        CreateTime = _dateNow
                    };
                    var bindId = Db.Insertable(bind).ExecuteReturnIdentity();
@@ -233,7 +237,7 @@
        /// </summary>
        /// <param name="taskNo"></param>
        /// <param name="orderNo"></param>
        public void HandleTaskSync(string taskNo, string orderNo,string url, int userId)
        public void HandleTaskSync(string taskNo, string orderNo, string url, int userId)
        {
            try
            {
@@ -465,8 +469,8 @@
                            IsBelt = bindInfo.IsBelt,
                            Demo = bindInfo.Demo,
                            OwnerNo= arrivalNotice.CustomerNo,//供应商编码
                            OwnerName=arrivalNotice.CustomerName,//供应商名称
                            OwnerNo = arrivalNotice.CustomerNo,//供应商编码
                            OwnerName = arrivalNotice.CustomerName,//供应商名称
                            IsDel = "0",
                            CreateUser = 0,
@@ -538,8 +542,8 @@
                                CreateUser = userId,
                                CreateTime = (DateTime)task.FinishDate,
                                OwnerNo=arrivalNotice.CustomerNo,
                                OwnerName=arrivalNotice.CustomerName
                                OwnerNo = arrivalNotice.CustomerNo,
                                OwnerName = arrivalNotice.CustomerName
                            };
                            Db.Insertable(dataStockInfo).ExecuteCommand();
                        }
@@ -603,7 +607,7 @@
                        exTask.Msg = $"入库口到=>>{task.EndLocat}的入库任务";//关键信息
                        #endregion
                        break;
                    case "1"://出库任务
                        #region 出库任务处理逻辑
                        if (task.PalletType == "1")//空托出库
@@ -785,8 +789,8 @@
                        exTask.OrderType = "1";//出库单
                        exTask.Msg = $"{task.StartLocat}的出库任务";//关键信息
                        break;
                        #endregion
                    #endregion
                    case "2"://移库任务
                        #region 移库任务处理逻辑
                        //托盘库存明细
@@ -936,7 +940,7 @@
                Db.CommitTran();
            }
            catch (Exception e)
            {
            {
                //回滚事务
                Db.RollbackTran();
                throw new Exception(e.Message);
@@ -961,7 +965,7 @@
                {
                    sqlString = $"select SONo from BllExportNotice where Status in ('1','2','3') and IsDel='0' order by CreateTime;";
                }
                var modelList = Db.Ado.SqlQuery<string>(sqlString);
                return modelList;
Wms/WMS.IBLL/IBllTaskServer/IBllTaskSyncServer.cs
@@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WMS.Entity.BllTaskEntity;
namespace WMS.IBLL.IBllTaskServer
Wms/Wms/Startup.cs
@@ -20,6 +20,7 @@
using Utility.Extension;
using Microsoft.Extensions.Options;
using Microsoft.AspNetCore.Http;
using SqlSugar;
namespace Wms
{
@@ -121,6 +122,9 @@
            //注册serilog
            services.AddConfigSerilog();
            services.AddScoped<ApiResponseActionFilter>();
            services.AddScoped<UnitOfWorkAttribute>();
            services.AddSingleton<ISqlSugarClient>(DataContext.Db); // 单例注册
            services.AddTransient<IUnitOfWork, SqlSugarUnitOfWork>(); // 事务与工作单元注册
        }
        public void ConfigureContainer(ContainerBuilder builder)
        {