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);
}
}
}