From 7d7256281e1cd9b81ad2dbccada4c69db5b01db0 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 26 Oct 2023 16:17:57 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E7=A7=BB=E7=AE=B1=E5=88=97=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ChangeBoxRecordQueryRequest.cs | 6 +--
.../ChangeBoxRecordQueryResponse.cs | 48 ++++++++++++++++++-
src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs | 10 ++++
.../Entitys/TakeStockDetails.cs | 5 --
.../ChangeBoxRecordRepositories.cs | 33 ++++++++++++-
5 files changed, 91 insertions(+), 11 deletions(-)
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryRequest.cs
index 20391543..7d757271 100644
--- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryRequest.cs
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryRequest.cs
@@ -20,15 +20,15 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
///
/// 仓库
///
- public int StockId { get; set; }
+ public int? StockId { get; set; }
///
/// 原仓位ID
///
- public int SrcSubStockId { get; set; }
+ public int? SrcSubStockId { get; set; }
///
/// 现仓位ID
///
- public int DestSubStockId { get; set; }
+ public int? DestSubStockId { get; set; }
///
/// 操作人
///
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryResponse.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryResponse.cs
index b828cbc3..e468e6ec 100644
--- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryResponse.cs
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/ChangeBoxRecordQueryResponse.cs
@@ -4,8 +4,54 @@ using System.Text;
namespace WMS.Web.Core.Dto.ChangeBoxRecord
{
+ ///
+ /// 改箱列表
+ ///
public class ChangeBoxRecordQueryInfoResponse
{
-
+ ///
+ /// 物料名称
+ ///
+ public string MaterialName { get; set; }
+ ///
+ /// 物料编码
+ ///
+ public string MaterialNumber { get; set; }
+ ///
+ /// 物料规格型号
+ ///
+ public string Specifications { get; set; }
+ ///
+ /// 仓库
+ ///
+ public string Stock { get; set; }
+ ///
+ /// 序列号
+ ///
+ public string SerialNumber { get; set; }
+ ///
+ /// 原箱子
+ ///
+ public string SrcBox { get; set; }
+ ///
+ /// 目标箱子
+ ///
+ public string DestBox { get; set; }
+ ///
+ /// 原仓位
+ ///
+ public string SrcSubStock { get; set; }
+ ///
+ /// 目标仓位
+ ///
+ public string DestSubStock { get; set; }
+ ///
+ /// 操作人
+ ///
+ public string Creator { get; set; }
+ ///
+ /// 操作时间
+ ///
+ public DateTime CreateTime { get; set; } = DateTime.Now;
}
}
diff --git a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
index 4d97efa6..70656bf4 100644
--- a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
+++ b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
@@ -25,6 +25,16 @@ namespace WMS.Web.Domain.Entitys
[Column("MaterialId")]
public int MaterialId { get; set; }
///
+ /// 仓库Id
+ ///
+ [Column("StockId")]
+ public int StockId { get; set; }
+ ///
+ /// 序列号
+ ///
+ [Column("SerialNumber")]
+ public string SerialNumber { get; set; }
+ ///
/// 原箱子ID
///
[Column("SrcBoxId")]
diff --git a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs
index d28a1ee6..93921bcf 100644
--- a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs
@@ -31,11 +31,6 @@ namespace WMS.Web.Domain.Entitys
[Column("BoxId")]
public int BoxId { get; set; }
///
- /// 序号
- ///
- [Column("Seq")]
- public int Seq { get; set; }
- ///
/// 物料ID
///
[Column("MaterialId")]
diff --git a/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs b/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
index 321ca5c5..90b1c05b 100644
--- a/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
+++ b/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
@@ -1,7 +1,9 @@
using AutoMapper;
+using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
@@ -64,9 +66,36 @@ namespace WMS.Web.Repositories
///
///
///
- public Task<(List list, int total)> GetListAsync(ChangeBoxRecordQueryRequest dto)
+ public async Task<(List list, int total)> GetListAsync(ChangeBoxRecordQueryRequest dto)
{
- throw new NotImplementedException();
+ var query = _context.ChangeBoxRecord
+ .OrderByDescending(o => o.Id)
+ .Where(adv => 1 == 1);
+
+ if (dto.CreateBeginDate != null)
+ query = query.Where(w => w.CreateTime >= dto.CreateBeginDate);
+ if (dto.CreateEndDate != null)
+ query = query.Where(w => w.CreateTime <= dto.CreateEndDate);
+ //组装
+ int total = await query.CountAsync();
+ var list = await query.Select(s => new ChangeBoxRecordQueryInfoResponse()
+ {
+ #region dto组装
+ MaterialName = "",
+ MaterialNumber = "",
+ Specifications = "",
+ Stock = "",
+ SerialNumber = "",
+ SrcBox = "",
+ DestBox = "",
+ SrcSubStock = "",
+ DestSubStock = "",
+ Creator = "",
+ CreateTime =s.CreateTime
+ #endregion
+
+ }).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
+ return (list, total);
}
}
}
From 5f4e00a4367c32a34afc36a0b9f2f0afebab612b Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 26 Oct 2023 16:52:24 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E6=94=B9=E7=AE=B1=E4=BF=9D=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/ChangeBoxRecordController.cs | 23 ++++-
src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 7 ++
src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 95 +++++++++++++++++++
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 39 +++++++-
.../SaveChangeBoxRecordRequest.cs | 44 +++++++++
src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs | 9 ++
.../IService/IChangeMoveBoxService.cs | 20 ++++
.../Mappers/ChangeBoxRecordMapper.cs | 20 ++++
.../Services/ChangeMoveBoxService.cs | 44 +++++++++
src/WMS.Web.Domain/Values/ResultCodes.cs | 4 +
.../DependencyInjection/AppBuilder.cs | 5 +
11 files changed, 303 insertions(+), 7 deletions(-)
create mode 100644 src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
create mode 100644 src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
create mode 100644 src/WMS.Web.Domain/Mappers/ChangeBoxRecordMapper.cs
create mode 100644 src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
diff --git a/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs b/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs
index 3edb9356..186905b3 100644
--- a/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs
+++ b/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs
@@ -8,7 +8,9 @@ using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.ChangeBoxRecord;
using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Values;
@@ -24,11 +26,13 @@ namespace WMS.Web.Api.Controllers
private readonly IMapper _mapper;
private readonly ILoginService _loginService;
private readonly IChangeBoxRecordRepositories _repositories;
- public ChangeBoxRecordController(IMapper mapper, ILoginService loginService, IChangeBoxRecordRepositories repositories)
+ private readonly IChangeMoveBoxService _changeMoveBoxService;
+ public ChangeBoxRecordController(IMapper mapper, ILoginService loginService, IChangeBoxRecordRepositories repositories, IChangeMoveBoxService changeMoveBoxService)
{
_mapper = mapper;
_loginService = loginService;
_repositories = repositories;
+ _changeMoveBoxService = changeMoveBoxService;
}
///
/// 列表
@@ -44,8 +48,23 @@ namespace WMS.Web.Api.Controllers
return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
var (list, count) = await _repositories.GetListAsync(dto);
- var result = ResultPagedList.ReSuccess(list,count);
+ var result = ResultPagedList.ReSuccess(list, count);
return result;
}
+ ///
+ /// 保存
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Save")]
+ public async Task Save(SaveChangeBoxRecordRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ return await _changeMoveBoxService.Save(dto, loginInfo);
+ }
}
}
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
index f52ae928..fa5575e3 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
@@ -16,6 +16,13 @@
+
+
+ 保存
+
+
+
+
登录接口
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 20913220..2ab86116 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -130,6 +130,101 @@
操作时间 结束
+
+
+ 改箱列表
+
+
+
+
+ 物料名称
+
+
+
+
+ 物料编码
+
+
+
+
+ 物料规格型号
+
+
+
+
+ 仓库
+
+
+
+
+ 序列号
+
+
+
+
+ 原箱子
+
+
+
+
+ 目标箱子
+
+
+
+
+ 原仓位
+
+
+
+
+ 目标仓位
+
+
+
+
+ 操作人
+
+
+
+
+ 操作时间
+
+
+
+
+ 保存改箱
+
+
+
+
+ 物料ID
+
+
+
+
+ 仓库Id
+
+
+
+
+ 原箱子ID
+
+
+
+
+ 目标箱子ID
+
+
+
+
+ 原仓位ID
+
+
+
+
+ 目标仓位ID
+
+
ERP:单据查询-dto
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index edaaaa7c..6afd41df 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -149,6 +149,16 @@
物料ID
+
+
+ 仓库Id
+
+
+
+
+ 序列号
+
+
原箱子ID
@@ -179,6 +189,12 @@
操作时间
+
+
+ 创建
+
+
+
wms入库单
@@ -764,11 +780,6 @@
单据头Id
-
-
- 序号
-
-
物料ID
@@ -819,6 +830,11 @@
wms入库单-仓储接口
+
+
+ 改箱 移箱服务
+
+
erp:单据查询-采购入库单
@@ -1011,6 +1027,11 @@
mapper映射
+
+
+ 改箱
+
+
集合映射
@@ -1117,6 +1138,9 @@
私钥
+
+ 改箱 移箱服务
+
erp数据交互服务
@@ -1715,6 +1739,11 @@
无效
+
+
+ 数据操作失败
+
+
对接单点的接口方法-枚举
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
new file mode 100644
index 00000000..3aa186f7
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.ChangeBoxRecord
+{
+ ///
+ /// 保存改箱
+ ///
+ public class SaveChangeBoxRecordRequest
+ {
+ ///
+ /// 物料ID
+ ///
+ [Required(ErrorMessage = "物料不能为空")]
+ public int MaterialId { get; set; }
+ ///
+ /// 仓库Id
+ ///
+ [Required(ErrorMessage = "仓库不能为空")]
+ public int StockId { get; set; }
+ ///
+ /// 原箱子ID
+ ///
+ [Required(ErrorMessage = "原箱子不能为空")]
+ public int SrcBoxId { get; set; }
+ ///
+ /// 目标箱子ID
+ ///
+ [Required(ErrorMessage = "目标箱子不能为空")]
+ public int DestBoxId { get; set; }
+ ///
+ /// 原仓位ID
+ ///
+ [Required(ErrorMessage = "原仓位不能为空")]
+ public int SrcSubStockId { get; set; }
+ ///
+ /// 目标仓位ID
+ ///
+ [Required(ErrorMessage = "目标仓位不能为空")]
+ public int DestSubStockId { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
index 70656bf4..e28d5b20 100644
--- a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
+++ b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
@@ -64,5 +64,14 @@ namespace WMS.Web.Domain.Entitys
///
[Column("CreateTime")]
public DateTime CreateTime { get; set; } = DateTime.Now;
+ ///
+ /// 创建
+ ///
+ ///
+ public void Create(int creatorId)
+ {
+ this.CreatorId = creatorId;
+ this.CreateTime = DateTime.Now;
+ }
}
}
diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
new file mode 100644
index 00000000..0c8770b8
--- /dev/null
+++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
@@ -0,0 +1,20 @@
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.ChangeBoxRecord;
+using WMS.Web.Core.Dto.Login;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Services;
+
+namespace WMS.Web.Domain.IService
+{
+ ///
+ /// 改箱 移箱服务
+ ///
+ public interface IChangeMoveBoxService
+ {
+ Task Save(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo);
+ }
+}
diff --git a/src/WMS.Web.Domain/Mappers/ChangeBoxRecordMapper.cs b/src/WMS.Web.Domain/Mappers/ChangeBoxRecordMapper.cs
new file mode 100644
index 00000000..95a4947a
--- /dev/null
+++ b/src/WMS.Web.Domain/Mappers/ChangeBoxRecordMapper.cs
@@ -0,0 +1,20 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WMS.Web.Core.Dto.ChangeBoxRecord;
+using WMS.Web.Domain.Entitys;
+
+namespace WMS.Web.Domain.Mappers
+{
+ ///
+ /// 改箱
+ ///
+ public class ChangeBoxRecordMapper : Profile
+ {
+ public ChangeBoxRecordMapper()
+ {
+ CreateMap();
+ }
+ }
+}
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
new file mode 100644
index 00000000..50f0f904
--- /dev/null
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -0,0 +1,44 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.ChangeBoxRecord;
+using WMS.Web.Core.Dto.Login;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Entitys;
+using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Domain.IService;
+using WMS.Web.Domain.IService.Public;
+using WMS.Web.Domain.Values;
+
+namespace WMS.Web.Domain.Services
+{
+ ///改箱 移箱服务
+ public class ChangeMoveBoxService : IChangeMoveBoxService
+ {
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ private readonly IChangeBoxRecordRepositories _changeBoxRecordRepositories;
+ public ChangeMoveBoxService(IMapper mapper, ILoginService loginService, IChangeBoxRecordRepositories changeBoxRecordRepositories)
+ {
+ _mapper = mapper;
+ _loginService = loginService;
+ _changeBoxRecordRepositories = changeBoxRecordRepositories;
+ }
+
+ public async Task Save(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo)
+ {
+ var entity = _mapper.Map(dto);
+ entity.Create(loginInfo.UserInfo.StaffId);
+
+ //需要填写序列号
+ //需要修改库存
+
+ entity = await _changeBoxRecordRepositories.Add(entity, true);
+ if (entity == null)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+ return Result.ReSuccess();
+ }
+ }
+}
diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs
index 8d7222ff..50def08b 100644
--- a/src/WMS.Web.Domain/Values/ResultCodes.cs
+++ b/src/WMS.Web.Domain/Values/ResultCodes.cs
@@ -16,5 +16,9 @@ namespace WMS.Web.Domain.Values
/// 无效
///
public static ValueTuple Token_Invalid_Error = (401, "验证Token无效,请重新登录");
+ ///
+ /// 数据操作失败
+ ///
+ public static ValueTuple DateWriteError = (40004, "数据操作失败");
}
}
diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
index e93d36c5..83c343c0 100644
--- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
+++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
@@ -9,9 +9,11 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using WMS.Web.Core.Help;
+using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Mappers;
using WMS.Web.Domain.Options;
+using WMS.Web.Domain.Services;
using WMS.Web.Domain.Services.Public;
namespace WMS.Web.Repositories.DependencyInjection
@@ -185,6 +187,9 @@ namespace WMS.Web.Repositories.DependencyInjection
Services.AddTransient();
Services.AddTransient();
Services.AddTransient();
+
+ Services.AddTransient();
+
}
}
}
From 526e18a1292d100ae180a262607b0d19889de29a Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 26 Oct 2023 17:06:35 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=8B=E7=89=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ITransactionRepositories.cs | 22 +++++++++
.../Services/ChangeMoveBoxService.cs | 16 ++++++-
.../AppBuilderExtensions.cs | 2 +
.../TransactionRepositories.cs | 47 +++++++++++++++++++
4 files changed, 85 insertions(+), 2 deletions(-)
create mode 100644 src/WMS.Web.Domain/Infrastructure/ITransactionRepositories.cs
create mode 100644 src/WMS.Web.Repositories/TransactionRepositories.cs
diff --git a/src/WMS.Web.Domain/Infrastructure/ITransactionRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ITransactionRepositories.cs
new file mode 100644
index 00000000..4896a418
--- /dev/null
+++ b/src/WMS.Web.Domain/Infrastructure/ITransactionRepositories.cs
@@ -0,0 +1,22 @@
+using Microsoft.EntityFrameworkCore.Storage;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Domain.Infrastructure
+{
+ public interface ITransactionRepositories
+ {
+ ///
+ /// 获取事务 用来处理即时库存
+ ///
+ ///
+ IDbContextTransaction GetTransaction();
+
+ ///
+ /// 获取事务 用来处理即时库存
+ ///
+ ///
+ bool CommitTransaction(bool isRollback, IDbContextTransaction transaction);
+ }
+}
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index 50f0f904..e927a50d 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -1,4 +1,5 @@
using AutoMapper;
+using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic;
using System.Text;
@@ -20,11 +21,14 @@ namespace WMS.Web.Domain.Services
private readonly IMapper _mapper;
private readonly ILoginService _loginService;
private readonly IChangeBoxRecordRepositories _changeBoxRecordRepositories;
- public ChangeMoveBoxService(IMapper mapper, ILoginService loginService, IChangeBoxRecordRepositories changeBoxRecordRepositories)
+ public readonly ITransactionRepositories _transactionRepositories;
+ public ChangeMoveBoxService(IMapper mapper, ILoginService loginService,
+ IChangeBoxRecordRepositories changeBoxRecordRepositories, ITransactionRepositories transactionRepositories)
{
_mapper = mapper;
_loginService = loginService;
_changeBoxRecordRepositories = changeBoxRecordRepositories;
+ _transactionRepositories = transactionRepositories;
}
public async Task Save(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo)
@@ -35,9 +39,17 @@ namespace WMS.Web.Domain.Services
//需要填写序列号
//需要修改库存
+ IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
+ bool isRollback = false;
+ bool isSuccess = true;
entity = await _changeBoxRecordRepositories.Add(entity, true);
- if (entity == null)
+ if (entity == null) isRollback = true;
+
+ //提交事务
+ isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
+ if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
+
return Result.ReSuccess();
}
}
diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs
index d69bac59..57141188 100644
--- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs
+++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs
@@ -32,6 +32,8 @@ namespace Microsoft.Extensions.DependencyInjection
{
services.AddHttpContextAccessor();
+ services.AddTransient();
+
services.AddTransient();
services.AddTransient();
diff --git a/src/WMS.Web.Repositories/TransactionRepositories.cs b/src/WMS.Web.Repositories/TransactionRepositories.cs
new file mode 100644
index 00000000..f674cedb
--- /dev/null
+++ b/src/WMS.Web.Repositories/TransactionRepositories.cs
@@ -0,0 +1,47 @@
+using Microsoft.EntityFrameworkCore.Storage;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Repositories.Configuration;
+
+namespace WMS.Web.Repositories
+{
+ public class TransactionRepositories: ITransactionRepositories
+ {
+ private RepositoryDbContext _context;
+
+
+ public TransactionRepositories(RepositoryDbContext context)
+ {
+ _context = context;
+ }
+ public IDbContextTransaction GetTransaction()
+ {
+ return _context.Database.BeginTransaction();
+ }
+
+ public bool CommitTransaction(bool isRollback, IDbContextTransaction transaction)
+ {
+ try
+ {
+ if (transaction == null)
+ return true;
+
+ if (isRollback)
+ {
+ transaction.Rollback();
+ return false;
+ }
+ transaction.Commit();
+ }
+ catch (Exception ex)
+ {
+ transaction.Rollback();
+ return false;
+ }
+ return true;
+ }
+
+ }
+}