Files
tnb.server/BasicData/Tnb.BasicData/MaterialService.cs
2023-04-24 16:57:53 +08:00

89 lines
3.4 KiB
C#

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
{
/// <summary>
/// 物料档案
/// </summary>
[ApiDescriptionSettings(Tag = "BasicData", Name = "Material", Order = 700)]
[Route("api/basic/[controller]")]
public class MaterialService : IDynamicApiController, ITransient
{
private readonly ISqlSugarRepository<BasMaterial> _repository;
private readonly DataBaseManager _dbManager;
private readonly IDictionaryDataService _dictionaryDataService;
public MaterialService(
ISqlSugarRepository<BasMaterial> repository,DataBaseManager dbManager,IDictionaryDataService dictionaryDataService)
{
_repository = repository;
_dbManager = dbManager;
_dictionaryDataService = dictionaryDataService;
}
[HttpPost("[action]")]
public async Task<Dictionary<string,string>> GetEbomVersionAndRouteName(string materialId)
{
var db = _repository.AsSugarClient();
var dic = await _dictionaryDataService.GetDicByKey(DicTypeKey.MeasurementUnit);
// var momDbLink = await _repository.AsSugarClient().Queryable<DbLinkEntity>().FirstAsync(x => x.FullName == DbName.TNBMON);
// if (momDbLink != null)
// {
// db = _dbManager.ChangeDataBase(momDbLink);
// }
var ebom = await db.Queryable<BasEbomH>()
.LeftJoin<BasRoute>((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<string,string>()
{
["version"] = ebom?.version,
["routeName"] = ebom?.Name,
["routeId"] = ebom?.id
};
}
[HttpPost("[action]")]
public async Task<List<ElementSelectDto>> GetMaterialUnits(string materialId)
{
var db = _repository.AsSugarClient();
var type = await db.Queryable<DictionaryTypeEntity>().Where(x => x.EnCode == DicTypeKey.MeasurementUnit)
.SingleAsync();
string typeId = type?.Id;
var queryable1 = db.Queryable<BasMaterial>()
.LeftJoin<DictionaryDataEntity>((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<BasMaterial>()
.LeftJoin<DictionaryDataEntity>((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<ElementSelectDto> data = await db.Union(queryable1, queryable2).ToListAsync();
return data;
}
}
}