From bc255992ddf176698583e30fa97172e3381c9a54 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Fri, 27 Oct 2023 10:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=82=B9=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/TakeStockController.cs | 66 +++++++++++++++++++ .../Dto/TakeStock/SaveTakeStockRequest.cs | 13 ++++ .../TakeStock/TakeStockQueryInfoResponse.cs | 65 ++++++++++++++++++ .../Dto/TakeStock/TakeStockQueryRequest.cs | 33 ++++++++++ src/WMS.Web.Domain/Entitys/TakeStock.cs | 14 ++-- .../Entitys/TakeStockDetails.cs | 2 +- .../IService/ITakeStockService.cs | 19 ++++++ .../IChangeBoxRecordRepositories.cs | 2 +- .../IMoveBoxRecordRepositories.cs | 2 +- .../Infrastructure/ITakeStockRepositories.cs | 3 + .../Mappers/MoveBoxRecordMapper.cs | 18 +++++ src/WMS.Web.Domain/Mappers/TakeStockMapper.cs | 17 +++++ .../Services/TakeStockService.cs | 65 ++++++++++++++++++ .../DependencyInjection/AppBuilder.cs | 2 +- .../TakeStockRepositories.cs | 41 ++++++++++++ 15 files changed, 353 insertions(+), 9 deletions(-) create mode 100644 src/WMS.Web.Api/Controllers/TakeStockController.cs create mode 100644 src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs create mode 100644 src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs create mode 100644 src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs create mode 100644 src/WMS.Web.Domain/IService/ITakeStockService.cs create mode 100644 src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs create mode 100644 src/WMS.Web.Domain/Mappers/TakeStockMapper.cs create mode 100644 src/WMS.Web.Domain/Services/TakeStockService.cs diff --git a/src/WMS.Web.Api/Controllers/TakeStockController.cs b/src/WMS.Web.Api/Controllers/TakeStockController.cs new file mode 100644 index 00000000..2ec2588d --- /dev/null +++ b/src/WMS.Web.Api/Controllers/TakeStockController.cs @@ -0,0 +1,66 @@ +using AutoMapper; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.TakeStock; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Api.Controllers +{ + /// + /// 盘点单 + /// + [Route("api/[controller]")] + [ApiController] + public class TakeStockController : ControllerBase + { + private readonly IMapper _mapper; + private readonly ILoginService _loginService; + private readonly ITakeStockRepositories _repositories; + public TakeStockController(IMapper mapper, ILoginService loginService, ITakeStockRepositories repositories) + { + _mapper = mapper; + _loginService = loginService; + _repositories = repositories; + } + /// + /// 列表 + /// + /// + /// + [HttpPost] + [Route("GetList")] + public async Task> GetPagedList([FromBody] TakeStockQueryRequest dto) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error); + + var (list, count) = await _repositories.GetListAsync(dto); + var result = ResultPagedList.ReSuccess(list, count); + return result; + } + + /// + /// 保存 + /// + /// + /// + [HttpPost] + [Route("Save")] + public async Task Save(List 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.MoveBoxSave(dto, loginInfo); + } + } +} diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs new file mode 100644 index 00000000..7e5f1c48 --- /dev/null +++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.TakeStock +{ + /// + /// 盘点单明细 + /// + public class SaveTakeStockRequest + { + } +} diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs new file mode 100644 index 00000000..aad1d6f4 --- /dev/null +++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.TakeStock +{ + /// + /// 盘点单列表 + /// + public class TakeStockQueryInfoResponse + { + /// + /// 明细编号 + /// + public int DetailId { get; set; } + /// + /// 单据编号 + /// + public string BillNo { get; set; } + /// + /// 盘点日期 + /// + public DateTime Date { get; set; } + /// + /// 盘点人员 + /// + public string Creator { get; set; } + /// + /// 金蝶同步成功或者失败 null 就是未同步 + /// + public bool? SuccessSync { get; set; } + /// + /// 单位 + /// + public string Unit { get; set; } + /// + /// 仓库 + /// + public string Stock { get; set; } + /// + /// 仓位 + /// + public string SubStock { get; set; } + /// + /// 盘点前数量(wms系统数量) + /// + public decimal BeforeQty { get; set; } + /// + /// 盘点实际数量(实际仓库数量) + /// + public decimal AfterQty { get; set; } + /// + /// 盘点后数量 + /// + public decimal FinalQty { get; set; } + /// + /// 盘点结果类型:1为盘盈,2位盘亏 + /// + public string ResultType { get; set; } + /// + /// 备注 + /// + public string Remark { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs new file mode 100644 index 00000000..b15b3919 --- /dev/null +++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.TakeStock +{ + /// + /// 盘点单列表请求 + /// + public class TakeStockQueryRequest : PaginationBaseRequestDto + { + /// + /// 盘点结果类型:1为盘盈,2位盘亏 + /// + public int? ResultType { get; set; } + /// + /// 仓库ID + /// + public int? StockId { get; set; } + /// + /// 单据编号 + /// + public string BillNo { get; set; } + /// + /// 盘点日期-开始 + /// + public DateTime? DateBeginDate { get; set; } = null; + /// + /// 盘点日期-结束 + /// + public DateTime? DateEndDate { get; set; } = null; + } +} diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs index b06af7ff..1df14a5a 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStock.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs @@ -35,11 +35,6 @@ namespace WMS.Web.Domain.Entitys [Column("CreatorId")] public int CreatorId { get; set; } /// - /// 公司ID - /// - [Column("CompanyId")] - public int CompanyId { get; set; } - /// /// 同步成功或者失败 null 就是未同步 /// [Column("SuccessSync")] @@ -48,5 +43,14 @@ namespace WMS.Web.Domain.Entitys /// 明细 /// public List Details = new List(); + /// + /// 创建 + /// + /// + public void Create(int creatorId) + { + this.CreatorId = creatorId; + this.Date = DateTime.Now; + } } } diff --git a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs index 93921bcf..5dd23943 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs @@ -26,7 +26,7 @@ namespace WMS.Web.Domain.Entitys [Column("Fid")] public int Fid { get; set; } /// - /// 单据头Id + /// 箱Id /// [Column("BoxId")] public int BoxId { get; set; } diff --git a/src/WMS.Web.Domain/IService/ITakeStockService.cs b/src/WMS.Web.Domain/IService/ITakeStockService.cs new file mode 100644 index 00000000..b3e358c6 --- /dev/null +++ b/src/WMS.Web.Domain/IService/ITakeStockService.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.Login; +using WMS.Web.Core.Dto.TakeStock; +using WMS.Web.Core.Internal.Results; + +namespace WMS.Web.Domain.IService +{ + /// + /// 盘点单服务 + /// + public interface ITakeStockService + { + //保存 + Task Save(List dto, LoginInDto loginInfo); + } +} diff --git a/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs index 3d0811ee..945f4d21 100644 --- a/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs @@ -13,7 +13,7 @@ namespace WMS.Web.Domain.Infrastructure // 新增 Task Add(ChangeBoxRecord entity, bool isTransaction = true); - // 获取销售列表 + // 获取列表 Task<(List list,int total)> GetListAsync(ChangeBoxRecordQueryRequest dto); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs index aca051b2..4ffcd2e0 100644 --- a/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs @@ -11,7 +11,7 @@ namespace WMS.Web.Domain.Infrastructure { // 新增 Task Add(MoveBoxRecord entity, bool isTransaction = true); - // 获取销售列表 + // 获取列表 Task<(List list, int total)> GetListAsync(MoveBoxRecordQueryRequest dto); } } diff --git a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs index e43f0388..c6d25f56 100644 --- a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto.TakeStock; using WMS.Web.Domain.Entitys; namespace WMS.Web.Domain.Infrastructure @@ -10,5 +11,7 @@ namespace WMS.Web.Domain.Infrastructure { // 新增 Task Add(TakeStock entity, bool isTransaction = true); + // 获取列表 + Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto); } } diff --git a/src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs b/src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs new file mode 100644 index 00000000..ebcd5e1d --- /dev/null +++ b/src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs @@ -0,0 +1,18 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Text; +using WMS.Web.Core.Dto.ChangeBoxRecord; +using WMS.Web.Core.Dto.MoveBoxRecord; +using WMS.Web.Domain.Entitys; + +namespace WMS.Web.Domain.Mappers +{ + public class MoveBoxRecordMapper : Profile + { + public MoveBoxRecordMapper() + { + CreateMap(); + } + } +} diff --git a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs new file mode 100644 index 00000000..cb309f4f --- /dev/null +++ b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs @@ -0,0 +1,17 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Text; +using WMS.Web.Core.Dto.TakeStock; +using WMS.Web.Domain.Entitys; + +namespace WMS.Web.Domain.Mappers +{ + public class TakeStockMapper:Profile + { + public TakeStockMapper() + { + CreateMap(); + } + } +} diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs new file mode 100644 index 00000000..4c99cfe9 --- /dev/null +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -0,0 +1,65 @@ +using AutoMapper; +using Microsoft.EntityFrameworkCore.Storage; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.Login; +using WMS.Web.Core.Dto.TakeStock; +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 TakeStockService : ITakeStockService + { + private readonly IMapper _mapper; + private readonly ILoginService _loginService; + public readonly ITransactionRepositories _transactionRepositories; + private readonly ITakeStockRepositories _takeStockRepositories; + public TakeStockService(IMapper mapper, ILoginService loginService, + ITransactionRepositories transactionRepositories, + ITakeStockRepositories takeStockRepositories) + { + _mapper = mapper; + _loginService = loginService; + _transactionRepositories = transactionRepositories; + _takeStockRepositories = takeStockRepositories; + } + /// + /// 保存 + /// + /// + /// + /// + public async Task Save(List dto, LoginInDto loginInfo) + { + TakeStock entity = new TakeStock(); + entity.Details = _mapper.Map>(dto); + entity.Create(loginInfo.UserInfo.StaffId); + + //需要填写序列号 + //需要修改库存 + + IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + bool isRollback = false; + bool isSuccess = true; + entity = await _takeStockRepositories.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.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs index 61940d96..d1fa4aa0 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs @@ -235,7 +235,7 @@ namespace WMS.Web.Repositories.DependencyInjection Services.AddTransient(); Services.AddTransient(); - + Services.AddTransient(); } } } diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs index 09542d0c..a5fd33e0 100644 --- a/src/WMS.Web.Repositories/TakeStockRepositories.cs +++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs @@ -1,9 +1,12 @@ 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.TakeStock; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; using WMS.Web.Repositories.Configuration; @@ -57,5 +60,43 @@ namespace WMS.Web.Repositories } } + /// + /// 盘点单列表 + /// + /// + /// + public async Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto) + { + var query = _context.TakeStock + .OrderByDescending(o => o.Id) + .Where(adv => 1 == 1); + + if (dto.DateBeginDate != null) + query = query.Where(w => w.Date >= dto.DateBeginDate); + if (dto.DateEndDate != null) + query = query.Where(w => w.Date <= dto.DateEndDate); + //组装 + int total = await query.CountAsync(); + var list = await query.Select(s => new TakeStockQueryInfoResponse() + { + #region dto组装 + DetailId = 0, + BillNo = "", + Unit = "", + Stock = "", + SubStock = "", + BeforeQty = 0, + AfterQty = 0, + FinalQty = 0, + ResultType="", + Remark="", + Creator = "", + Date = s.Date, + SuccessSync=s.SuccessSync + #endregion + + }).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); + return (list, total); + } } }