using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entitys; using Tnb.BasicData.Entitys.Entity; using Tnb.BasicData.Entitys.Const; namespace Tnb.BasicData { /// /// 物料档案 /// [ApiDescriptionSettings(Tag = "BasicData", Name = "Material", Order = 700)] [Route("api/basic/[controller]")] public class MaterialService : IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; private readonly DataBaseManager _dbManager; private readonly IDictionaryDataService _dictionaryDataService; public MaterialService( ISqlSugarRepository repository,DataBaseManager dbManager,IDictionaryDataService dictionaryDataService) { _repository = repository; _dbManager = dbManager; _dictionaryDataService = dictionaryDataService; } [HttpPost("[action]")] public async Task> GetEbomVersionAndRouteName(string materialId) { var db = _repository.AsSugarClient(); var dic = await _dictionaryDataService.GetDicByKey(DicTypeKey.MeasurementUnit); // var momDbLink = await _repository.AsSugarClient().Queryable().FirstAsync(x => x.FullName == DbName.TNBMON); // if (momDbLink != null) // { // db = _dbManager.ChangeDataBase(momDbLink); // } var ebom = await db.Queryable() .LeftJoin((a,b)=>a.route_id==b.Id) .Where((a,b) => a.material_id == materialId) .Select((a,b)=>new { a.id, a.version, b.Name, }).SingleAsync(); return new Dictionary() { ["version"] = ebom?.version, ["routeName"] = ebom?.Name, ["routeId"] = ebom?.id }; } [HttpPost("[action]")] public async Task> GetMaterialUnits(string materialId) { var db = _repository.AsSugarClient(); var type = await db.Queryable().Where(x => x.EnCode == DicTypeKey.MeasurementUnit) .SingleAsync(); string typeId = type?.Id; var queryable1 = db.Queryable() .LeftJoin((a,b)=>a.unit_id==b.EnCode && b.DictionaryTypeId==typeId) .Where((a,b) => a.Id == materialId) .Select((a,b)=> new ElementSelectDto { value = b.EnCode, label = b.FullName, }); var queryable2 = db.Queryable() .LeftJoin((a,b)=>a.pickunit_id==b.EnCode && b.DictionaryTypeId==typeId) .Where((a,b) => a.Id == materialId) .Select((a,b)=> new ElementSelectDto { value = b.EnCode, label = b.FullName, }); List data = await db.Union(queryable1, queryable2).ToListAsync(); return data; } } }