入库单-接口

This commit is contained in:
tongfei
2023-10-30 10:46:47 +08:00
parent 3cfb985d24
commit 8931b89da3
13 changed files with 430 additions and 2 deletions

View File

@@ -5,8 +5,10 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using WMS.Web.Core.Dto; using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.InStock;
using WMS.Web.Core.Internal.Results; using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Values; using WMS.Web.Domain.Values;
@@ -20,10 +22,12 @@ namespace WMS.Web.Api.Controllers
public class InStockController : ControllerBase public class InStockController : ControllerBase
{ {
private readonly ILoginService _loginService; private readonly ILoginService _loginService;
private readonly IInStockService _inStockService;
private readonly IInStockRepositories _inStockRepositories; private readonly IInStockRepositories _inStockRepositories;
public InStockController(ILoginService loginService, IInStockRepositories inStockRepositories) public InStockController(ILoginService loginService, IInStockRepositories inStockRepositories, IInStockService inStockService)
{ {
this._loginService = loginService; this._loginService = loginService;
this._inStockService = inStockService;
this._inStockRepositories = inStockRepositories; this._inStockRepositories = inStockRepositories;
} }
@@ -42,5 +46,37 @@ namespace WMS.Web.Api.Controllers
var result= await _inStockRepositories.GetPagedList(dto); var result= await _inStockRepositories.GetPagedList(dto);
return result; return result;
} }
/// <summary>
/// 保存
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
[Route("Save")]
public async Task<Result> Save(List<SaveInStockRequest> 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 _inStockService.Save(dto, loginInfo);
}
/// <summary>
/// 同步金蝶
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
[Route("Sync")]
public async Task<Result> Sync(OperateRequest 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 _inStockService.Sync(dto);
}
} }
} }

View File

@@ -43,6 +43,10 @@ namespace WMS.Web.Api.Controllers
{ {
response.TakeStockType.Add(enumv.ToString(), enumv.GetRemark()); response.TakeStockType.Add(enumv.ToString(), enumv.GetRemark());
} }
foreach (InstockType enumv in Enum.GetValues(typeof(InstockType)))
{
response.InstockType.Add(enumv.ToString(), enumv.GetRemark());
}
//2 //2
//1 //1
return Task.FromResult(Result<EnumStatusResponse>.ReSuccess(response)); return Task.FromResult(Result<EnumStatusResponse>.ReSuccess(response));

View File

@@ -35,6 +35,20 @@
<param name="dto"></param> <param name="dto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Api.Controllers.InStockController.Save(System.Collections.Generic.List{WMS.Web.Core.Dto.InStock.SaveInStockRequest})">
<summary>
保存
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.InStockController.Sync(WMS.Web.Core.Dto.OperateRequest)">
<summary>
同步金蝶
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Api.Controllers.InStockTaskController"> <member name="T:WMS.Web.Api.Controllers.InStockTaskController">
<summary> <summary>
入库任务单-接口 入库任务单-接口

View File

@@ -475,6 +475,51 @@
同步成功或者失败 同步成功或者失败
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Core.Dto.InStock.SaveInStockRequest">
<summary>
保存入库单-请求对象
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.Type">
<summary>
入库类型
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.SupplierId">
<summary>
供应商
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.OrgId">
<summary>
组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.MaterialId">
<summary>
物料Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.StockId">
<summary>
仓库ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.SubStockId">
<summary>
仓位ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockRequest.Qty">
<summary>
入库数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.AccessTokenDto.Token"> <member name="P:WMS.Web.Core.Dto.Login.AccessTokenDto.Token">
<summary> <summary>
授权token -- 给前端用的验证token 授权token -- 给前端用的验证token
@@ -980,6 +1025,11 @@
单据Id 单据Id
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.DetailId">
<summary>
明细Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.BillNo"> <member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.BillNo">
<summary> <summary>
单据编号 单据编号
@@ -1070,6 +1120,11 @@
出库单任务 出库单任务
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.Ids">
<summary>
刷新 明细Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.Type"> <member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.Type">
<summary> <summary>
单据类型(出库单下拉列表) 单据类型(出库单下拉列表)

View File

@@ -300,6 +300,17 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="M:WMS.Web.Domain.Entitys.InStock.Create(System.Int32)">
<summary>
创建
</summary>
<param name="creatorId"></param>
</member>
<member name="M:WMS.Web.Domain.Entitys.InStock.GenerateNo">
<summary>
生成单据号
</summary>
</member>
<member name="T:WMS.Web.Domain.Entitys.InStockDetails"> <member name="T:WMS.Web.Domain.Entitys.InStockDetails">
<summary> <summary>
wms入库单明细 wms入库单明细
@@ -964,6 +975,14 @@
<param name="dto"></param> <param name="dto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Infrastructure.IInStockRepositories.Add(WMS.Web.Domain.Entitys.InStock,System.Boolean)">
<summary>
添加
</summary>
<param name="entity"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Infrastructure.IInStockTaskRepositories"> <member name="T:WMS.Web.Domain.Infrastructure.IInStockTaskRepositories">
<summary> <summary>
入库任务-仓储接口 入库任务-仓储接口
@@ -1045,6 +1064,26 @@
改箱 移箱服务 改箱 移箱服务
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Domain.IService.IInStockService">
<summary>
入库单服务接口
</summary>
</member>
<member name="M:WMS.Web.Domain.IService.IInStockService.Save(System.Collections.Generic.List{WMS.Web.Core.Dto.InStock.SaveInStockRequest},WMS.Web.Core.Dto.Login.LoginInDto)">
<summary>
保存
</summary>
<param name="dto"></param>
<param name="loginInfo"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.IInStockService.Sync(WMS.Web.Core.Dto.OperateRequest)">
<summary>
同步金蝶
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.IService.IOutStockService"> <member name="T:WMS.Web.Domain.IService.IOutStockService">
<summary> <summary>
出库服务 出库服务
@@ -1538,6 +1577,26 @@
<param name="loginInfo"></param> <param name="loginInfo"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:WMS.Web.Domain.Services.InStockService">
<summary>
入库单服务
</summary>
</member>
<member name="M:WMS.Web.Domain.Services.InStockService.Save(System.Collections.Generic.List{WMS.Web.Core.Dto.InStock.SaveInStockRequest},WMS.Web.Core.Dto.Login.LoginInDto)">
<summary>
出库单
</summary>
<param name="dto"></param>
<param name="loginInfo"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.InStockService.Sync(WMS.Web.Core.Dto.OperateRequest)">
<summary>
同步金蝶
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Services.OutStockService"> <member name="T:WMS.Web.Domain.Services.OutStockService">
<summary> <summary>
出库服务 出库服务

View File

@@ -22,6 +22,12 @@ namespace WMS.Web.Core.Dto
/// 盘点结果类型 /// 盘点结果类型
/// </summary> /// </summary>
public Dictionary<string, string> TakeStockType { get; set; } = new Dictionary<string, string>(); public Dictionary<string, string> TakeStockType { get; set; } = new Dictionary<string, string>();
/// <summary>
/// 入库单类型
/// </summary>
public Dictionary<string, string> InstockType { get; set; } = new Dictionary<string, string>();
} }
} }

View File

@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace WMS.Web.Core.Dto.InStock
{
/// <summary>
/// 保存入库单-请求对象
/// </summary>
public class SaveInStockRequest
{
/// <summary>
/// 入库类型
/// </summary>
[Required(ErrorMessage = "入库类型不能为空")]
public int Type { get; set; }
/// <summary>
/// 来源单号
///</summary>
[Required(ErrorMessage = "来源单号不能为空")]
public string SourceBillNo { get; set; }
/// <summary>
/// 供应商
/// </summary>
[Required(ErrorMessage = "供应商不能为空")]
public int SupplierId { get; set; }
/// <summary>
/// 组织
/// </summary>
[Required(ErrorMessage = "组织不能为空")]
public int OrgId { get; set; }
/// <summary>
/// 物料Id
///</summary>
[Required(ErrorMessage = "物料不能为空")]
public int MaterialId { get; set; }
/// <summary>
/// 仓库ID
///</summary>
[Required(ErrorMessage = "仓库不能为空")]
public int StockId { get; set; }
/// <summary>
/// 仓位ID
///</summary>
[Required(ErrorMessage = " 仓位不能为空")]
public int SubStockId { get; set; }
/// <summary>
/// 入库数量
///</summary>
[Required(ErrorMessage = "入库数量不能为空")]
public decimal Qty { get; set; }
}
}

View File

@@ -43,5 +43,38 @@ namespace WMS.Web.Domain.Entitys
/// </summary> /// </summary>
[NotMapped] [NotMapped]
public List<InStockDetails> Details = new List<InStockDetails>(); public List<InStockDetails> Details = new List<InStockDetails>();
/// <summary>
/// 创建
/// </summary>
/// <param name="creatorId"></param>
public void Create(int creatorId)
{
this.CreatorId = creatorId;
this.CreateTime = DateTime.Now;
}
/// <summary>
/// 生成单据号
/// </summary>
public void GenerateNo()
{
//用户手动输入了 就不自动生成了
if (!string.IsNullOrEmpty(this.BillNo)) return;
if (this.Id.ToString().Length >= 8)
{
this.BillNo = "RK" + this.Id.ToString();
return;
}
string idStr = this.Id.ToString();
while (true)
{
idStr = "0" + idStr;
if (idStr.Length >= 8) break;
}
this.BillNo = "RK" + idStr;
}
} }
} }

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.InStock;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
namespace WMS.Web.Domain.IService
{
/// <summary>
/// 入库单服务接口
/// </summary>
public interface IInStockService
{
/// <summary>
/// 保存
/// </summary>
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
Task<Result> Save(List<SaveInStockRequest> dto, LoginInDto loginInfo);
/// <summary>
/// 同步金蝶
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
Task<Result> Sync(OperateRequest dto);
}
}

View File

@@ -4,6 +4,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using WMS.Web.Core.Dto; using WMS.Web.Core.Dto;
using WMS.Web.Core.Internal.Results; using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
namespace WMS.Web.Domain.Infrastructure namespace WMS.Web.Domain.Infrastructure
{ {
@@ -18,5 +19,13 @@ namespace WMS.Web.Domain.Infrastructure
/// <param name="dto"></param> /// <param name="dto"></param>
/// <returns></returns> /// <returns></returns>
Task<ResultPagedList<InStockQueryResponse>> GetPagedList(InStockQueryRequest dto); Task<ResultPagedList<InStockQueryResponse>> GetPagedList(InStockQueryRequest dto);
/// <summary>
/// 添加
/// </summary>
/// <param name="entity"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<InStock> Add(InStock entity, bool isTransaction = true);
} }
} }

View File

@@ -0,0 +1,82 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.InStock;
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
{
/// <summary>
/// 入库单服务
/// </summary>
public class InStockService: IInStockService
{
private readonly IMapper _mapper;
private readonly ILoginService _loginService;
public readonly ITransactionRepositories _transactionRepositories;
private readonly IInStockRepositories _inStockRepositories;
private readonly IInStockTaskRepositories _inStockTaskRepositories;
public InStockService(IMapper mapper, ILoginService loginService,
ITransactionRepositories transactionRepositories,
IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories)
{
_mapper = mapper;
_loginService = loginService;
_transactionRepositories = transactionRepositories;
_inStockRepositories = inStockRepositories;
_inStockTaskRepositories = inStockTaskRepositories;
}
/// <summary>
/// 出库单
/// </summary>
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public async Task<Result> Save(List<SaveInStockRequest> dto, LoginInDto loginInfo)
{
var entity = new InStock();
entity.Details = _mapper.Map<List<InStockDetails>>(dto);
entity.Create(loginInfo.UserInfo.StaffId);
//需要填写序列号
//需要修改库存
//需要同步金蝶
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
bool isSuccess = true;
entity = await _inStockRepositories.Add(entity, true);
if (entity == null) isRollback = true;
//提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
/// <summary>
/// 同步金蝶
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public Task<Result> Sync(OperateRequest dto)
{
//调用同步服务方法
return Task.FromResult(Result.ReSuccess());
}
}
}

View File

@@ -237,6 +237,7 @@ namespace WMS.Web.Repositories.DependencyInjection
Services.AddTransient<IChangeMoveBoxService, ChangeMoveBoxService>(); Services.AddTransient<IChangeMoveBoxService, ChangeMoveBoxService>();
Services.AddTransient<ITakeStockService, TakeStockService>(); Services.AddTransient<ITakeStockService, TakeStockService>();
Services.AddTransient<IOutStockService, OutStockService>(); Services.AddTransient<IOutStockService, OutStockService>();
Services.AddTransient<IInStockService, InStockService>();
} }
} }

View File

@@ -1,5 +1,6 @@
using AutoMapper; using AutoMapper;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -8,6 +9,7 @@ using System.Threading.Tasks;
using WMS.Web.Core; using WMS.Web.Core;
using WMS.Web.Core.Dto; using WMS.Web.Core.Dto;
using WMS.Web.Core.Internal.Results; using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Values.Single; using WMS.Web.Domain.Values.Single;
@@ -77,5 +79,40 @@ namespace WMS.Web.Repositories
response.Data = list; response.Data = list;
return response; return response;
} }
/// <summary>
/// 新增
/// </summary>
/// <param name="entity"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<InStock> Add(InStock entity, bool isTransaction = true)
{
IDbContextTransaction _transaction = null;
if (isTransaction)
_transaction = _context.Database.BeginTransaction();
try
{
await _context.Instock.AddAsync(entity);
await _context.SaveChangesAsync();
if (string.IsNullOrEmpty(entity.BillNo))
{
entity.GenerateNo();
await _context.SaveChangesAsync();
}
if (_transaction != null)
_transaction.Commit();
return entity;
}
catch (Exception ex)
{
if (_transaction != null)
_transaction.Rollback();
return null;
}
}
} }
} }