盘点单

This commit is contained in:
18942506660
2023-10-27 10:33:24 +08:00
parent f26000aabc
commit bc255992dd
15 changed files with 353 additions and 9 deletions

View File

@@ -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
{
/// <summary>
/// 盘点单
/// </summary>
[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;
}
/// <summary>
/// 列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
[Route("GetList")]
public async Task<ResultPagedList<TakeStockQueryInfoResponse>> GetPagedList([FromBody] TakeStockQueryRequest dto)
{
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null)
return ResultPagedList<TakeStockQueryInfoResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var (list, count) = await _repositories.GetListAsync(dto);
var result = ResultPagedList<TakeStockQueryInfoResponse>.ReSuccess(list, count);
return result;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
[Route("Save")]
public async Task<Result> Save(List<SaveTakeStockRequest> 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);
}
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.TakeStock
{
/// <summary>
/// 盘点单明细
/// </summary>
public class SaveTakeStockRequest
{
}
}

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.TakeStock
{
/// <summary>
/// 盘点单列表
/// </summary>
public class TakeStockQueryInfoResponse
{
/// <summary>
/// 明细编号
/// </summary>
public int DetailId { get; set; }
/// <summary>
/// 单据编号
/// </summary>
public string BillNo { get; set; }
/// <summary>
/// 盘点日期
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 盘点人员
/// </summary>
public string Creator { get; set; }
/// <summary>
/// 金蝶同步成功或者失败 null 就是未同步
/// </summary>
public bool? SuccessSync { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; set; }
/// <summary>
/// 仓库
/// </summary>
public string Stock { get; set; }
/// <summary>
/// 仓位
/// </summary>
public string SubStock { get; set; }
/// <summary>
/// 盘点前数量wms系统数量
/// </summary>
public decimal BeforeQty { get; set; }
/// <summary>
/// 盘点实际数量(实际仓库数量)
/// </summary>
public decimal AfterQty { get; set; }
/// <summary>
/// 盘点后数量
/// </summary>
public decimal FinalQty { get; set; }
/// <summary>
/// 盘点结果类型1为盘盈2位盘亏
/// </summary>
public string ResultType { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
}

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.TakeStock
{
/// <summary>
/// 盘点单列表请求
/// </summary>
public class TakeStockQueryRequest : PaginationBaseRequestDto
{
/// <summary>
/// 盘点结果类型1为盘盈2位盘亏
/// </summary>
public int? ResultType { get; set; }
/// <summary>
/// 仓库ID
/// </summary>
public int? StockId { get; set; }
/// <summary>
/// 单据编号
/// </summary>
public string BillNo { get; set; }
/// <summary>
/// 盘点日期-开始
/// </summary>
public DateTime? DateBeginDate { get; set; } = null;
/// <summary>
/// 盘点日期-结束
/// </summary>
public DateTime? DateEndDate { get; set; } = null;
}
}

View File

@@ -35,11 +35,6 @@ namespace WMS.Web.Domain.Entitys
[Column("CreatorId")]
public int CreatorId { get; set; }
/// <summary>
/// 公司ID
/// </summary>
[Column("CompanyId")]
public int CompanyId { get; set; }
/// <summary>
/// 同步成功或者失败 null 就是未同步
/// </summary>
[Column("SuccessSync")]
@@ -48,5 +43,14 @@ namespace WMS.Web.Domain.Entitys
/// 明细
/// </summary>
public List<TakeStockDetails> Details = new List<TakeStockDetails>();
/// <summary>
/// 创建
/// </summary>
/// <param name="creatorId"></param>
public void Create(int creatorId)
{
this.CreatorId = creatorId;
this.Date = DateTime.Now;
}
}
}

View File

@@ -26,7 +26,7 @@ namespace WMS.Web.Domain.Entitys
[Column("Fid")]
public int Fid { get; set; }
/// <summary>
/// 单据头Id
/// Id
/// </summary>
[Column("BoxId")]
public int BoxId { get; set; }

View File

@@ -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
{
/// <summary>
/// 盘点单服务
/// </summary>
public interface ITakeStockService
{
//保存
Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo);
}
}

View File

@@ -13,7 +13,7 @@ namespace WMS.Web.Domain.Infrastructure
// 新增
Task<ChangeBoxRecord> Add(ChangeBoxRecord entity, bool isTransaction = true);
// 获取销售列表
// 获取列表
Task<(List<ChangeBoxRecordQueryInfoResponse> list,int total)> GetListAsync(ChangeBoxRecordQueryRequest dto);
}
}

View File

@@ -11,7 +11,7 @@ namespace WMS.Web.Domain.Infrastructure
{
// 新增
Task<MoveBoxRecord> Add(MoveBoxRecord entity, bool isTransaction = true);
// 获取销售列表
// 获取列表
Task<(List<MoveBoxRecordQueryInfoResponse> list, int total)> GetListAsync(MoveBoxRecordQueryRequest dto);
}
}

View File

@@ -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<TakeStock> Add(TakeStock entity, bool isTransaction = true);
// 获取列表
Task<(List<TakeStockQueryInfoResponse> list, int total)> GetListAsync(TakeStockQueryRequest dto);
}
}

View File

@@ -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<SaveMoveBoxRecordRequest, MoveBoxRecord>();
}
}
}

View File

@@ -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<SaveTakeStockRequest, TakeStockDetails>();
}
}
}

View File

@@ -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
{
/// <summary>
/// 盘点单服务
/// </summary>
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;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public async Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo)
{
TakeStock entity = new TakeStock();
entity.Details = _mapper.Map<List<TakeStockDetails>>(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();
}
}
}

View File

@@ -235,7 +235,7 @@ namespace WMS.Web.Repositories.DependencyInjection
Services.AddTransient<IErpService, ErpService>();
Services.AddTransient<IChangeMoveBoxService, ChangeMoveBoxService>();
Services.AddTransient<ITakeStockService, TakeStockService>();
}
}
}

View File

@@ -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
}
}
/// <summary>
/// 盘点单列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public async Task<(List<TakeStockQueryInfoResponse> 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);
}
}
}