using AutoMapper; 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.OutStockTask; 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 OutStockTaskController : ControllerBase { private readonly IMapper _mapper; private readonly ILoginService _loginService; private readonly IOutStockTaskRepositories _repositories; private readonly IOutStockService _outStockService; private readonly IOutStockTaskService _outStockTaskService; private readonly QiniuOptions _option; private readonly IExportExcelService _exportExcelService; public OutStockTaskController(IMapper mapper, ILoginService loginService, IOutStockTaskRepositories repositories, IOutStockService outStockService, IOutStockTaskService outStockTaskService, IOptions option, IExportExcelService exportExcelServic) { _mapper = mapper; _loginService = loginService; _repositories = repositories; _outStockService = outStockService; _outStockTaskService = outStockTaskService; _option = option?.Value; _exportExcelService = exportExcelServic; } /// /// 列表 /// /// /// [HttpPost] [Route("GetList")] public async Task> GetPagedList([FromBody] OutStockTaskQueryRequest 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("Export")] public Task> Export([FromBody] OutStockTaskQueryRequest 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.OutStockTask.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.OutStockTask); }); return Task.FromResult(Result.ReSuccess(res)); } /// /// 作废 /// /// /// [HttpPost] [Route("Repeal")] public async Task Repeal(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 _outStockTaskService.Repeal(dto, loginInfo); } /// /// 合并 /// /// /// [HttpPost] [Route("merge")] public async Task merge(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 _outStockTaskService.merge(dto, loginInfo); } /// /// 根据出库单任务编号模糊搜索 /// /// /// [HttpGet] [Route("GetOutStockTaskListByNo/{billNo}")] public async Task> GetOutStockTaskListByNo([FromRoute] string billNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var res = await _repositories.GetOutStockTaskListByNo(billNo); if (res == null || res.Count() == 0) return ResultList.ReFailure(ResultCodes.OutStockTaskNoData); return ResultList.ReSuccess(res); } /// /// 根据出库单任务编号模糊搜索下拉-PDA出库 /// /// /// [HttpGet] [Route("GetOutStockTaskNosByNo/{billNo}")] public async Task> GetOutStockTaskNosByNo([FromRoute] string billNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var res = await _repositories.GetOutStockTaskNosByNo(billNo); if (res == null || res.Count() == 0) return ResultList.ReFailure(ResultCodes.OutStockTaskNoData); return ResultList.ReSuccess(res); } /// /// 根据出库单任务编号精确搜索(并且同步金蝶数据)-PDA出库 /// /// /// [HttpGet] [Route("GetOutStockTaskByNo/{billNo}")] public async Task> GetOutStockTaskByNo([FromRoute] string billNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); //搜索之前同步金蝶数据 await _outStockTaskService.Sync(new List() { billNo }); var res = await _repositories.GetOutStockTaskByNo(billNo); if (res == null) return Result.ReFailure(ResultCodes.OutStockTaskNoData); return Result.ReSuccess(res); } /// /// 刷新金蝶数据 /// /// /// [HttpPost] [Route("Refresh")] public async Task Refresh(OperateStrRequest 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 _outStockTaskService.Sync(dto.Ids); } } }