diff --git a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
index 8c6eede0..bfc6fcf5 100644
--- a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
+++ b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
@@ -12,6 +12,18 @@ public static class DictConst
///
public const string RegionCategoryStationCode = "workstation";
///
+ /// 区域类型-公司Code
+ ///
+ public const string RegionCategoryCompanyCode = "company";
+ ///
+ /// 区域类型-车间Code
+ ///
+ public const string RegionCategoryWorkshopCode = "workshop";
+ ///
+ /// 区域类型-产线Code
+ ///
+ public const string RegionCategoryWorklineCode = "workline";
+ ///
/// 备品备件类型
///
public const string SparePartsType = "SparePartsType";
diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs
new file mode 100644
index 00000000..dcfee410
--- /dev/null
+++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs
@@ -0,0 +1,42 @@
+namespace Tnb.EquipMgr.Entities.Dto
+{
+ public class WorklineAndEquipTreeOutput
+ {
+ ///
+ /// 获取节点id.
+ ///
+ ///
+ public string id { get; set; }
+
+ ///
+ /// 标题
+ ///
+ public string title { get; set; }
+
+ ///
+ /// 获取节点父id.
+ ///
+ ///
+ public string parentId { get; set; }
+
+ ///
+ /// 是否有子级.
+ ///
+ public bool hasChildren { get; set; }
+
+ ///
+ /// 设置Children.
+ ///
+ public List? children { get; set; } = new List();
+
+ ///
+ /// 子节点数量.
+ ///
+ public int num { get; set; }
+
+ ///
+ /// 是否为子节点.
+ ///
+ public bool isLeaf { get; set; } = false;
+ }
+}
\ No newline at end of file
diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs
index a1255946..3473dbf8 100644
--- a/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs
+++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs
@@ -17,5 +17,11 @@ namespace Tnb.EquipMgr.Interfaces
///
///
public Task GetListByTypeId(Dictionary dic);
+
+ ///
+ /// 获取产线和注塑挤出设备树
+ ///
+ ///
+ public Task GetWorklineAndEquipTree(Dictionary dic);
}
}
\ No newline at end of file
diff --git a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
index f2be6958..a904bcaa 100644
--- a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
+++ b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
@@ -1,13 +1,18 @@
using Aop.Api.Domain;
using Aspose.Cells.Drawing;
using JNPF.Common.Filter;
+using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
+using JNPF.Extras.CollectiveOAuth.Models;
+using JNPF.Systems.Entitys.Permission;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using Mapster;
using Microsoft.AspNetCore.Mvc;
+using Senparc.NeuChar.ApiHandlers;
using SqlSugar;
+using Tnb.BasicData;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Entities.Dto;
using Tnb.EquipMgr.Interfaces;
@@ -78,5 +83,67 @@ namespace Tnb.EquipMgr
return await _repository.AsSugarClient().Queryable().Where(x => typeIdArr.Contains(x.equip_type_id))
.ToListAsync();
}
+
+ [HttpPost]
+ public async Task GetWorklineAndEquipTree(Dictionary dic)
+ {
+ string equipTypes = dic.ContainsKey("equipTypes") ? dic["equipTypes"] : "";
+ var db = _repository.AsSugarClient();
+ var queryable1 = db.Queryable()
+ .Where((a) => a.DeleteMark == null && a.Category==DictConst.RegionCategoryWorkshopCode)
+ .Select((a) => new WorklineAndEquipTreeOutput()
+ {
+ id = a.Id,
+ title = a.EnCode+"/"+a.FullName,
+ parentId = "0",
+ hasChildren = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Any(),
+ num = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Count(),
+ isLeaf = false,
+ children = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).ToList(b=>new WorklineAndEquipTreeOutput()
+ {
+ id = b.Id,
+ title = b.EnCode+"/"+b.FullName,
+ parentId = b.ParentId,
+ hasChildren = false,
+ num = 0,
+ isLeaf = true,
+ })
+ });
+
+ List list2 = new List();
+ if (!string.IsNullOrEmpty(equipTypes))
+ {
+ string[] equipTypeArr = equipTypes.Split(",");
+ list2 = await db.Queryable()
+ .Where((a) => equipTypeArr.Contains(a.code))
+ .Select((a) => new WorklineAndEquipTreeOutput()
+ {
+ id = a.id,
+ title = a.name,
+ parentId = "0",
+ hasChildren = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).Any(),
+ num = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).Count(),
+ isLeaf = false,
+ children = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).ToList(b=>new WorklineAndEquipTreeOutput()
+ {
+ id = b.id,
+ title = b.code+"/"+b.name,
+ parentId = b.equip_type_id,
+ hasChildren = false,
+ num = 0,
+ isLeaf = true,
+ })
+ }).ToListAsync();
+
+ }
+
+ // var list = await db.UnionAll(queryable1, queryable2).ToListAsync();
+ var list1 = await queryable1.ToListAsync();
+ list1.AddRange(list2);
+ return new AuthResponse(200, "", new Dictionary()
+ {
+ ["list"] = list1,
+ });
+ }
}
}
\ No newline at end of file