using AutoMapper; using BarCode.Web.Core.Dto.Erp; using BarCode.Web.Core.Dto.Erp.Org; using BarCode.Web.Core.Dto.Erp.Supplier; using BarCode.Web.Core.Dto.Login; using BarCode.Web.Core.Dto.SingleData; using BarCode.Web.Core.Internal.Results; using BarCode.Web.Domain.Infrastructure; using BarCode.Web.Domain.IService.Public; using BarCode.Web.Domain.Options; using BarCode.Web.Domain.Values; using BarCode.Web.Domain.Values.Single; using BarCode.Web.Repositories; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Options; using NPOI.POIFS.FileSystem; using System.ComponentModel.Design; namespace BarCode.Web.Api.Controllers { /// /// 系统配置 /// [Route("api/[controller]")] [ApiController] public class SysConfigController : ControllerBase { private readonly ILoginService _loginService; private readonly IBasicsRepositories _basicsRepositories; private readonly IErpService _erpService; private readonly ISingleDataService _singleDataService; private readonly IMapper _mapper; private readonly IErpBasicDataExtendService _erpBasicDataExtendService; private readonly ILogger _logger; private ErpOptions _erpOptions; private readonly IMemoryCache _memoryCache; public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, IOptions erpOptions, IErpService erpService, ISingleDataService singleDataService, IMemoryCache memoryCache, IMapper mapper, IErpBasicDataExtendService erpBasicDataExtendService, ILogger logger) { this._erpOptions = erpOptions?.Value; this._memoryCache = memoryCache; _loginService = loginService; _basicsRepositories = basicsRepositories; _erpService = erpService; _singleDataService = singleDataService; _mapper = mapper; _erpBasicDataExtendService = erpBasicDataExtendService; _logger = logger; } /// /// 获取物料;通过规格型号 /// /// /// [HttpGet] [Route("GetMaterialList")] public async Task> GetMaterialList([FromQuery] string speci) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var materials = _memoryCache.Get>(_erpOptions.cache_materail_key); if (materials == null) { var res = await _erpService.BillQueryForMaterial(); if (res.IsSuccess) materials = res.Data.ToList(); } if (materials == null) return ResultList.ReFailure(ResultCodes.MateriaNoData); //没有物料Id 32进制的也过滤掉 var result = materials.Where(x => x.Specifications.Contains(speci) && x.isDis=="1" && !string.IsNullOrEmpty(x.IdConvertBar.Trim() )).Take(30).ToList(); //var ErpMaterialDto_list = new List(); //foreach (var item in result) //{ // var lis = new ErpMaterialDto(); // lis.OrgId = item.OrgId; // lis.OrgCode = item.OrgCode; // lis.MaterialId = item.MaterialId; // lis.MaterialName=item.MaterialName; // lis.MaterialNumber = item.MaterialNumber; // lis.Specifications = item.Specifications; // lis.BaseUnitId = item.BaseUnitId; // lis.BaseUnitName = item.BaseUnitName; // lis.BaseUnitNumber = item.BaseUnitNumber; // lis.BaseUnitNumber = item.BaseUnitNumber; // ErpMaterialDto_list.Add(lis); //} return ResultList.ReSuccess(result); } /// /// 获取供应商-erp基础数据 /// 使用code做键 /// /// 供应商名字 /// 组织编码 /// [HttpGet] [Route("GetSupplierOrOrg")] public async Task> GetSupplierOrOrg([FromQuery] string? name, [FromQuery] string orgCode) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var result = await _singleDataService.GetSingleDataNoCache, NameRequest, SysConfigAction>( new NameRequest(name, loginInfo.UserInfo.CompanyId), SysConfigAction.GetSupplierByNameAndCompany, SingleControllerType.SysConfig); if (!result.IsSuccess) return ResultList.ReFailure(result.Message, result.Status); List suppliers = result.Data.ToList(); //suppliers = suppliers.Where(w => w.ErpOrgCode.Equals(orgCode)).ToList(); if (!string.IsNullOrEmpty(name)) suppliers = suppliers.Where(w => w.Name.Contains(name)).ToList(); List pullList = new List(); foreach (var c in suppliers) { pullList.Add(new PullDownStrResponse() { Id = "s_" + c.Id.ToString(), Name = c.Name, Code = "s_" + c.Code }); } //var org_result = await _erpService.BillQueryForOrg(); //List orgs = org_result.Data.ToList(); //if (!string.IsNullOrEmpty(name)) // orgs = orgs.Where(w => w.Name.Contains(name)).ToList(); //foreach (var c in orgs) //{ // pullList.Add(new PullDownStrResponse() // { // Id = "o_" + c.Id.ToString(), // Name = c.Name, // Code = "o_" + c.Number // }); //} return ResultList.ReSuccess(pullList); } /// /// 获取组织-erp基础数据 /// 使用 code做键 /// /// [HttpGet] [Route("GetOrg")] public async Task> GetOrg([FromQuery] string? name) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); List pullList = new List(); if (loginInfo.UserInfo.Identity == 2) { pullList.Add(new PullDownStrResponse() { Id = loginInfo.UserInfo.SupplierId.ToString(), Name = loginInfo.UserInfo.SupplierName, Code = "s_" + loginInfo.UserInfo.SupplierCode, IsDefault = true }); ; return ResultList.ReSuccess(pullList); } var result = await _singleDataService.GetSingleDataNoCache, UserRequest, SysConfigAction>( new UserRequest(loginInfo.UserInfo.UcId), SysConfigAction.GetOrgByUser, SingleControllerType.SysConfig); if (!result.IsSuccess) return ResultList.ReFailure(result.Message, result.Status); List orgs = result.Data.ToList(); if (!string.IsNullOrEmpty(name)) orgs = orgs.Where(w => w.Name.Contains(name)).ToList(); foreach (var c in orgs) { pullList.Add(new PullDownStrResponse() { Id = c.Id.ToString(), Name = c.Name, Code = "o_" + c.ErpOrgCode }); } //默认显示第一个 pullList.First().IsDefault = true; return ResultList.ReSuccess(pullList); } } }