using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; 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.SingleData; 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 { /// /// 系统配置 /// [Route("api/[controller]")] [ApiController] public class SysConfigController : ControllerBase { private readonly ILoginService _loginService; private readonly IBasicsRepositories _basicsRepositories; private readonly IBoxRepositories _boxRepositories; public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, IBoxRepositories boxRepositories) { _loginService = loginService; _basicsRepositories = basicsRepositories; _boxRepositories = boxRepositories; } /// /// 获取系统类型所需要下拉列表 /// /// [HttpGet] [Route("GetStatus")] public Task> GetStatus() { EnumStatusResponse response = new EnumStatusResponse(); foreach (OutStockType enumv in Enum.GetValues(typeof(OutStockType))) { response.OutStockType.Add(enumv.ToString(), enumv.GetRemark()); } foreach (MoveBoxType enumv in Enum.GetValues(typeof(MoveBoxType))) { response.MoveBoxType.Add(enumv.ToString(), enumv.GetRemark()); } foreach (TakeStockType enumv in Enum.GetValues(typeof(TakeStockType))) { response.TakeStockType.Add(enumv.ToString(), enumv.GetRemark()); } foreach (InstockType enumv in Enum.GetValues(typeof(InstockType))) { response.InstockType.Add(enumv.ToString(), enumv.GetRemark()); } foreach (InstockStatus enumv in Enum.GetValues(typeof(InstockStatus))) { response.InstockStatus.Add(enumv.ToString(), enumv.GetRemark()); } foreach (BackRecordType enumv in Enum.GetValues(typeof(BackRecordType))) { response.BackRecordType.Add(enumv.ToString(), enumv.GetRemark()); } foreach (InventoryInOutType enumv in Enum.GetValues(typeof(InventoryInOutType))) { response.InventoryInOutType.Add(enumv.ToString(), enumv.GetRemark()); } foreach (OrderType enumv in Enum.GetValues(typeof(OrderType))) { response.OrderType.Add(enumv.ToString(), enumv.GetRemark()); } //2 //1 return Task.FromResult(Result.ReSuccess(response)); } /// /// 获取仓库 /// /// 仓库模糊匹配 不必填 /// [HttpGet] [Route("GetUcStock")] public async Task> GetUcStock([FromQuery] string name) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var r = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), name, loginInfo.UserInfo.CompanyId); return ResultList.ReSuccess(r); } /// /// 根据仓库获取仓位 /// /// 仓库id /// [HttpGet] [Route("GetSubUcStock/{id}")] public async Task>> GetSubUcStock([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 r = await _basicsRepositories.GetSubUcStockAsync(id); return Result>.ReSuccess(r); } /// /// 获取仓位:模糊名称 /// /// 仓位名称模糊匹配 /// [HttpGet] [Route("GetSubUcStockByName/{name}")] public async Task>> GetSubUcStockByName([FromRoute] string name) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return Result>.ReFailure(ResultCodes.Token_Invalid_Error); var r = await _basicsRepositories.GetSubUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), name, loginInfo.UserInfo.CompanyId); return Result>.ReSuccess(r); } /// /// 根据箱号获取箱信息 /// /// 必填 /// [HttpGet] [Route("GetBox")] public async Task> GetBox([FromQuery] List billNos) { 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 _boxRepositories.GetBox(billNos); var bStrList = res.Select(s => s.BoxBillNo).ToList(); var ex = billNos.Except(bStrList).ToList(); if (ex.Count() > 0) return ResultList.ReFailure("箱号" + JsonConvert.SerializeObject(ex) + "不存在", 800000); return ResultList.ReSuccess(res); } } }