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; using WMS.Web.Core.Dto.OutStock; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Values; namespace WMS.Web.Api.Controllers { /// /// 出库单 /// [Route("api/[controller]")] [ApiController] public class OutStockController : ControllerBase { private readonly IMapper _mapper; private readonly ILoginService _loginService; private readonly IOutStockRepositories _repositories; private readonly IOutStockService _outStockService; public OutStockController(IMapper mapper, ILoginService loginService, IOutStockRepositories repositories, IOutStockService outStockService) { _mapper = mapper; _loginService = loginService; _repositories = repositories; _outStockService = outStockService; } /// /// 列表 /// /// /// [HttpPost] [Route("GetList")] public async Task> GetPagedList([FromBody] OutStockQueryRequest 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; } /// /// 获取详情 /// /// /// [HttpGet] [Route("GetInfo/{id}")] public async Task> GetInfo([FromRoute] int id) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); var response = await _repositories.GetInfo(id); return Result.ReSuccess(response); } /// /// 出库保存(出库)-PDA /// /// /// [HttpPost] [Route("Save")] public async Task Save(SaveOutStockRequest 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 _outStockService.Save(dto, loginInfo); } /// /// 同步金蝶 /// /// /// [HttpPost] [Route("Sync")] public async Task 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 _outStockService.Sync(dto, loginInfo); } } }