using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using WMS.Web.Core; using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.InStock; using WMS.Web.Core.Dto.InStockTask; using WMS.Web.Core.Help; 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.Options; using WMS.Web.Domain.Values; namespace WMS.Web.Api.Controllers { /// /// 入库单-接口 /// [Route("api/[controller]")] [ApiController] public class InStockController : ControllerBase { private readonly QiniuOptions _option; private readonly ILoginService _loginService; private readonly IInStockService _inStockService; private readonly IInStockRepositories _inStockRepositories; private readonly IExportExcelService _exportExcelService; public InStockController(IOptions option, ILoginService loginService, IInStockRepositories inStockRepositories, IInStockService inStockService, IExportExcelService exportExcelService) { _option = option?.Value; this._loginService = loginService; this._inStockService = inStockService; this._exportExcelService = exportExcelService; this._inStockRepositories = inStockRepositories; } /// /// 列表 /// /// /// [HttpPost] [Route("GetList")] public async Task> GetPagedList([FromBody] InStockQueryRequest 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 _inStockRepositories.GetPagedList(dto); return ResultPagedList.ReSuccess(list, count); } /// /// 获取详情 /// /// /// [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 _inStockRepositories.GetInfo(id); return Result.ReSuccess(response); } /// /// 导出 /// /// /// [HttpPost] [Route("Export")] public Task> Export([FromBody] InStockQueryRequest dto) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null) return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error)); string fileName = FileDownLoadOrderType.InStock.GetRemark() + loginInfo.UserInfo.CompanyId + DateTime.Now.DateTimeToLongTimeStamp() + ".xlsx"; string res = _option.Url + fileName; Task.Run(async () => { await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.InStock); }); return Task.FromResult(Result.ReSuccess(res)); } /// /// 上架-采购订单 /// /// /// [HttpPost] [Route("Shelf")] public async Task Shelf([FromBody] PurchaseShelfRequest 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.Shelf(dto, loginInfo); } /// /// 上架-非采购订单(按箱和按产品) /// /// /// [HttpPost] [Route("ShelfOther")] public async Task ShelfOther([FromBody] NoPurchaseShelfRequest 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.ShelfNoPurchase(dto, loginInfo); } /// /// 通过箱号获取到入库任务单数据-PAD /// /// /// [HttpPost] [Route("GetTaskByBox")] public async Task> GetTaskByBoxBy([FromBody] BoxInStockTaskRequest 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.GetInfoByBox(dto); } /// /// 同步金蝶 /// /// /// [HttpPost] [Route("Sync")] public async Task Sync([FromBody] 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,loginInfo); } } }