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.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 InStockTaskController : ControllerBase { private readonly QiniuOptions _option; private readonly IExportExcelService _exportExcelService; private readonly ILoginService _loginService; private readonly IInStockService _inStockService; private readonly IInStockTaskService _inStockTaskService; private readonly IInStockTaskRepositories _inStockTaskRepositories; public InStockTaskController( IOptions option, IExportExcelService exportExcelService, ILoginService loginService, IInStockTaskService inStockTaskService, IInStockTaskRepositories inStockTaskRepositories, IInStockService inStockService) { this._option = option?.Value; this._exportExcelService = exportExcelService; this._loginService = loginService; this._inStockService = inStockService; this._inStockTaskService = inStockTaskService; this._inStockTaskRepositories = inStockTaskRepositories; } /// /// 列表 /// /// /// [HttpPost] [Route("GetList")] public async Task> GetPagedList([FromBody] InStockTaskQueryRequest 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,total) = await _inStockTaskRepositories.GetPagedList(dto); return ResultPagedList.ReSuccess(list, total); } /// /// 导出 /// /// /// [HttpPost] [Route("Export")] public Task> Export([FromBody] InStockTaskQueryRequest 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.InStockTask.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.OutStock); }); return Task.FromResult(Result.ReSuccess(res)); } /// /// 作废 /// /// /// [HttpPost] [Route("Repeal")] public async Task Repeal([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 _inStockTaskService.Repeal(dto, loginInfo); } /// /// 刷新 /// /// /// [HttpPost] [Route("Refresh")] public async Task Refresh([FromBody] OperateRequest dto) { //1.先找到任务单-并找到来源单集 var tasks= await _inStockTaskRepositories.GetList(dto.Ids); var sourcesBillNos = tasks.Select(x => x.SourceBillNo).ToList(); //2.同步金蝶 return await _inStockTaskService.Sysn(sourcesBillNos); } /// /// 收货-pad /// /// /// [HttpPost] [Route("Receive")] public async Task Receive([FromBody] UpdateInStockTaskRequest 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.Receive(dto, loginInfo); } /// /// 来源单-编号模糊查询-pad /// /// 来源单号 /// [HttpGet] [Route("GetSourceOrder/{sourceBillNo}")] public async Task> GetSourceOrder([FromRoute] string sourceBillNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var list= await _inStockTaskRepositories.GetListBy(new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo, InstockType = null }); return ResultList.ReSuccess(list); } /// /// 来源单-编号模糊查询-非采购上架使用-pad /// /// /// [HttpGet] [Route("GetSourceOrderNoPurchase/{sourceBillNo}")] public async Task> GetSourceOrderNoPurchase([FromRoute] string sourceBillNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var list = await _inStockTaskRepositories.GetListInfoBy(new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo, InstockType = null }); return ResultList.ReSuccess(list); } /// /// 来源单的信息校准-对应金蝶-pad /// /// /// [HttpGet] [Route("Adjust/{sourceBillNo}")] public async Task> Adjust([FromRoute] string sourceBillNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); //校准 var result= await _inStockTaskService.Adjust(sourceBillNo); if(!result.IsSuccess) return ResultList.ReFailure(result); //再一次查询新的数据:并返回最后的结果 var request = new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo }; var list = await _inStockTaskRepositories.GetListBy(request); return ResultList.ReSuccess(list); } /// /// 来源单的信息校准-非采购上架使用-对应金蝶-pad /// /// /// [HttpGet] [Route("AdjustNoPurchase/{sourceBillNo}")] public async Task> AdjustNoPurchase([FromRoute] string sourceBillNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); //校准 var result = await _inStockTaskService.Adjust(sourceBillNo); if (!result.IsSuccess) return ResultList.ReFailure(result); //再一次查询新的数据:并返回最后的结果 var request = new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo }; var list = await _inStockTaskRepositories.GetListInfoBy(request); return ResultList.ReSuccess(list); } /// /// 采购订单物料明细和箱物料明细-对比-pad /// /// /// [HttpPost] [Route("Contrast")] public async Task> Contrast([FromBody] ContrastMaterialsRequest dto) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); var result = await _inStockService.Contrast(dto); return result; } } }