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 b3f3288f..b69bc5dd 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/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.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 4d97efa6..e28d5b20 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")]
@@ -54,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/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.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/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/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..e927a50d
--- /dev/null
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -0,0 +1,56 @@
+using AutoMapper;
+using Microsoft.EntityFrameworkCore.Storage;
+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 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)
+ {
+ var entity = _mapper.Map(dto);
+ entity.Create(loginInfo.UserInfo.StaffId);
+
+ //需要填写序列号
+ //需要修改库存
+
+ IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
+ bool isRollback = false;
+ bool isSuccess = true;
+ entity = await _changeBoxRecordRepositories.Add(entity, true);
+ 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.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/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);
}
}
}
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();
+
}
}
}
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;
+ }
+
+ }
+}