using System; using SqlSugar; using Infrastructure.Attribute; using Infrastructure.Extensions; using DOAN.Model; using DOAN.Model.Dto; using DOAN.Model.MES.base_; using DOAN.Model.MES.base_.Dto; using DOAN.Repository; using DOAN.Service.MES.base_.IService; using System.Linq; using Microsoft.IdentityModel.Tokens; using Mapster; using System.Xml.Linq; using static Org.BouncyCastle.Crypto.Engines.SM2Engine; using Infrastructure.Model; using Aliyun.OSS; namespace DOAN.Service.MES.base_ { /// /// 物料清单Service业务层处理 /// //[AppService(ServiceType = typeof(IBaseMaterialBOMService), ServiceLifetime = LifeTime.Transient)] //public class BaseMaterialBOMService : BaseService, IBaseMaterialBOMService //{ // /// // /// 查询物料清单列表 // /// // /// // /// // public PagedInfo GetList(BaseMaterialListQueryDto2 parm) // { // int[] nodes = null; // if (parm.Type == 1) // { // nodes = FindLeafNodes(Context.Queryable().ToList(), 6).Select(it => it.Id).ToArray(); // } // else if (parm.Type == 2) // { // nodes = FindLeafNodes(Context.Queryable().ToList(), 5).Select(it => it.Id).ToArray(); // } // var predicate = Expressionable.Create(); // var response = Queryable() // .Where(it => nodes.Contains(it.FkTypeId.Value)) // .Where(predicate.ToExpression()) // .ToPage(parm); // return response; // } // /// // /// 获取详情 // /// // /// // /// // public BaseMaterialList GetInfo(string Id) // { // var response = Queryable() // .Where(x => x.Id == Id) // .First(); // return response; // } // /// // /// 添加物料清单 // /// // /// // /// // public BaseMaterialList AddBaseMaterialList(BaseMaterialList model) // { // return Context.Insertable(model).ExecuteReturnEntity(); // } // /// // /// 修改物料清单 // /// // /// // /// // public int UpdateBaseMaterialList(BaseMaterialList model) // { // //var response = Update(w => w.Id == model.Id, it => new BaseMaterialList() // //{ // // Name = model.Name, // // Code = model.Code, // // Customer code = model.Customer code, // // Color = model.Color, // // Specification = model.Specification, // // Unit = model.Unit, // // Description = model.Description, // // ExpirationUnit = model.ExpirationUnit, // // ExpirationDate = model.ExpirationDate, // // ShelfLifeWarningDays = model.ShelfLifeWarningDays, // // IsShelfLife = model.IsShelfLife, // // StartTime = model.StartTime, // // StopTime = model.StopTime, // // BarCode = model.BarCode, // // IsBatch = model.IsBatch, // // CreatedBy = model.CreatedBy, // // CreatedTime = model.CreatedTime, // // UpdatedBy = model.UpdatedBy, // // UpdatedTime = model.UpdatedTime, // //}); // //return response; // return Update(model, true); // } // /// // /// 获取bom结构 // /// // /// // /// // public List Achieve_BOM(string id) // { // var query1 = Context.Queryable().Where(it => it.FkParentId == id); // return Context.Queryable(query1).LeftJoin((q, m) => q.FkId == m.Id) // .InnerJoin((q, m, t) => m.FkTypeId == t.Id) // .Select((q, m, t) => new BaseMaterialListDto2() // { // Type_Name = t.Name, // Type_Code = t.Code, // }, true) // .ToList() // .Adapt>() // ; // } // /// // /// 删除绑定关系 // /// // /// // /// // public int DeleteBOMBind(string id, string parent_id) // { // return Context.Deleteable().Where(it => it.FkId == id) // .Where(it => it.FkParentId == parent_id) // .ExecuteCommand(); // } // /// // /// 增加绑定关系 // /// // /// // /// // public int ADDBOMBind(string id, string parent_id) // { // BaseMaterialBom bom = new BaseMaterialBom(); // bom.FkId = id; // bom.FkParentId = parent_id; // bom.CreatedTime = DateTime.Now; // return Context.Insertable(bom).ExecuteCommand(); // } // /// // /// 获取未绑定的BOM结构 // /// // /// // /// // public PagedInfo Achieve_BOM_no_bind(BaseMaterialListQueryDto3 query) // { // // 成品id 的Bom结构 // string[] binded_array = Context.Queryable().Where(it => it.FkParentId == query.Id).Select(it => it.FkId).ToArray(); // //在原材料和半成品中 选择 // List typeList = Context.Queryable().ToList(); // int[] leaf = FindLeafNodes(typeList, 1).Select(it => it.Id).ToArray(); // int[] leaf2 = FindLeafNodes(typeList, 5).Select(it => it.Id).ToArray(); // int[] leaf3 = leaf.Concat(leaf2).ToArray(); // var predicate = Expressionable.Create() // .AndIF(!string.IsNullOrEmpty(query.Name), it => it.Name.Contains(query.Name)) // .AndIF(!string.IsNullOrEmpty(query.Code), it => it.Name.Contains(query.Code)) // .AndIF(!string.IsNullOrEmpty(query.CustomerCode), it => it.Name.Contains(query.CustomerCode)) // ; // var qua = Context.Queryable().Where(it => !binded_array.Contains(it.Id)) // .Where(predicate.ToExpression()) // .Where(it => leaf3.Contains(it.FkTypeId.Value)); // return Context.Queryable(qua).InnerJoin((q, t) => q.FkTypeId == t.Id) // .Select((q, t) => new BaseMaterialListDto2() // { // Type_Name = t.Name, // Type_Code = t.Code, // }, true).ToPage(query); // } // public static List FindLeafNodes(List nodes, int ancestorId) // { // List leafNodes = new List(); // void FindLeaves(int currentId) // { // // 查找当前ID的直接子节点 // var children = nodes.Where(n => n.ParentId == currentId).ToList(); // // 如果没有子节点,说明是叶子节点 // if (!children.Any()) // { // leafNodes.Add(nodes.FirstOrDefault(n => n.Id == currentId)); // } // else // { // // 对每个子节点递归调用FindLeaves // foreach (var child in children) // { // FindLeaves(child.Id); // } // } // } // // 从指定的祖先节点开始查找 // FindLeaves(ancestorId); // return leafNodes; // } // /// // /// bom视图 // /// // /// // /// // public BaseParseNode ShowBOMView(string id) // { // //TODO 获取成品id的一级子集 bom // return null; // } //} }