修改了Getbreaker的内容

This commit is contained in:
xingheng 2025-10-17 11:15:09 +08:00
parent 8084bd7715
commit b803684ebc
18 changed files with 185 additions and 43 deletions

View File

@ -64,7 +64,7 @@ namespace Learun.Application.Web.AppApi
/// <param name="PDBId">分电箱的工程ID</param>
/// <returns></returns>
[HttpPost]
public IHttpActionResult SaveBreakers(string projId, string PDBId)
public IHttpActionResult SaveBreakers(string projId, string PDBId, [FromBody] List<ec_CircuitBreakerEntity> CBs)
{
try
@ -72,7 +72,7 @@ namespace Learun.Application.Web.AppApi
ec_enginedata_relBLL ec_Enginedata_RelBLL = new ec_enginedata_relBLL();
var ec_RelTypeBll = new ec_reltypeBLL();
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var CBs = asyncContent.ToObject<List<ec_CircuitBreakerEntity>>();
//var CBs = asyncContent.ToObject<List<ec_CircuitBreakerEntity>>();
//var RelType = ec_RelTypeBll.GetList("{\"ProjectId\":\"" + projId + "\", \"RelType\": \"" + (int)enum_RelType.开关_电缆 + "\"}").FirstOrDefault();
if (CBs == null)
{

View File

@ -84,7 +84,7 @@ namespace Learun.Application.Web.AppApi
var res4 = templateCategoryBll.GetTemplateCategory(ProjId);
#endregion
#region ObjectTypeApi/GetObjectTypeData0
var res5 = objectTypeBll.GetObjectTypeData3Level(ProjId, "0");
var res5 = objectTypeBll.GetObjectTypeData3Level(ProjId, "0","",true);
#endregion
#region ObjectTypeApi/GetObjectTypeData2
// 这个数据量太大导致加载项目时卡顿长达6分钟所以单独独立出去

View File

@ -597,7 +597,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers
/// <param name="ProjectId">项目ID</param>
/// <param name="folderId">文件夹ID</param>
/// <param name="reportFileName">报表文件名称</param>
///<param name="param">前端的json格式的参数</param>
public void ReportToExcel(string ProjectId, string folderId, string reportFileName, string param)
{
try

View File

@ -97,8 +97,8 @@ var bootstrap = function ($, learun) {
var keyValue = $('#gridtable').jfGridValue('ObjectTypeID');
var keyName = $('#gridtable').jfGridValue('ObjectTypeName');
if (learun.checkrow(keyValue)) {
if (keyName == "OPC" || keyName == "基点" || keyName == "图框") {
learun.alert.warning("OPC为系统内置的特殊类型,无法编辑其属性!");
if (keyName = "附属件_内部开关" || keyName == "OPC" || keyName == "基点" || keyName == "图框") {
learun.alert.warning(keyName + " 为系统内置的特殊类型,无法编辑其属性!");
}
else {
learun.layerForm({
@ -123,7 +123,7 @@ var bootstrap = function ($, learun) {
var keyValue = $('#gridtable').jfGridValue('ObjectTypeID');
var keyName = $('#gridtable').jfGridValue('ObjectTypeName');
if (learun.checkrow(keyValue)) {
if (keyName == "OPC" || keyName == "基点" || keyName == "图框" || keyName == "TagNumber") {
if (keyName = "附属件_内部开关" || keyName == "OPC" || keyName == "基点" || keyName == "图框" ) {
learun.alert.warning(keyName + "为系统内置的特殊类型,无法删除!");
return false;
}
@ -190,8 +190,8 @@ var bootstrap = function ($, learun) {
learun.alert.warning('请选择最后一级!');
return false;
}
if (keyName == "OPC" || keyName == "基点" || keyName == "图框") {
learun.alert.warning("OPC为系统内置的特殊类型 \u000d 无法进行“命名规则设置”!");
if (keyName = "附属件_内部开关" || keyName == "OPC" || keyName == "基点" || keyName == "图框") {
learun.alert.warning(keyName+ " 为系统内置的特殊类型 \u000d 无法进行“命名规则设置”!");
return false;
}
learun.layerForm({

View File

@ -40,7 +40,7 @@ var bootstrap = function ($, learun) {
if (learun.checkrow(keyValue)) {
var folderId = $('#gridtable').jfGridValue('FolderId');
var reportFileName = $('#gridtable').jfGridValue('ReportFileName');
if (reportFileName == '电缆清册') {
if (reportFileName == '电缆清册' || reportFileName == '电缆册') {
learun.layerForm({
id: 'systemselect',
title: '电缆清册 参数选择',

View File

@ -3434,6 +3434,8 @@
<Content Include="SQL\250307\Project\ec_archive_enginedata_3.sql" />
<Content Include="SQL\250307\Project\ec_archive_property_3.sql" />
<Content Include="SQL\250307\Project\ec_archive_rel_3.sql" />
<Content Include="SQL\251013\Project\ec_dataitem.sql" />
<Content Include="SQL\251013\Project\ec_objecttypeP.sql" />
<Content Include="SQL\250902\Project\ec_objecttype.sql" />
<Content Include="SQL\250829\Project\ec_dataItem.sql" />
<Content Include="SQL\250829\NoProject\ec_project.sql" />
@ -3663,6 +3665,7 @@
<Folder Include="SQL\250728\NoProject\" />
<Folder Include="SQL\250825\NoProject\" />
<Folder Include="SQL\250902\NoProject\" />
<Folder Include="SQL\251013\NoProject\" />
<Folder Include="Views\PlotLayout\" />
<Folder Include="Views\Property\" />
</ItemGroup>

View File

@ -0,0 +1 @@
ALTER TABLE ec_dataitem ADD ShowEN int NULL;

View File

@ -0,0 +1 @@
ALTER TABLE ec_objecttypep ADD ShowEN int NULL;

View File

@ -729,9 +729,9 @@ CREATE TABLE `ec_objecttype` (
`DefaultLayoutLibFileID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '布置å¾é»˜è®¤çš„å<EFBFBD>?,
`ObjectTypeName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`ObjectTypeNameEN` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`IsSerialNumber` int NULL DEFAULT NULL COMMENT '是å<EFBFBD>¦ç”Ÿæˆ<EFBFBD>æµ<EFBFBD>æ°´å<EFBFBD>?,
`IsOOTB` int NULL DEFAULT NULL COMMENT '是å<EFBFBD>¦æ˜¯å†…置的特殊类åž',
`specialType` int NULL DEFAULT NULL COMMENT '电力一��电力二次 �系统柜等',
`IsSerialNumber` int NULL DEFAULT NULL ,
`IsOOTB` int NULL DEFAULT NULL ,
`specialType` int NULL DEFAULT NULL ,
`OrderID` int NULL DEFAULT NULL,
`FullPath` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`FullPathCN` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,

View File

@ -729,9 +729,9 @@ CREATE TABLE `ec_objecttype` (
`DefaultLayoutLibFileID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '布置å¾é»˜è®¤çš„å<EFBFBD>?,
`ObjectTypeName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`ObjectTypeNameEN` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`IsSerialNumber` int NULL DEFAULT NULL COMMENT '是å<EFBFBD>¦ç”Ÿæˆ<EFBFBD>æµ<EFBFBD>æ°´å<EFBFBD>?,
`IsOOTB` int NULL DEFAULT NULL COMMENT '是å<EFBFBD>¦æ˜¯å†…置的特殊类åž',
`specialType` int NULL DEFAULT NULL COMMENT '电力一��电力二次 �系统柜等',
`IsSerialNumber` int NULL DEFAULT NULL ,
`IsOOTB` int NULL DEFAULT NULL ,
`specialType` int NULL DEFAULT NULL ,
`OrderID` int NULL DEFAULT NULL,
`FullPath` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`FullPathCN` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,

View File

@ -64,9 +64,9 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
{
}
foreach (var CB in res)
{
{
Type type = CB.GetType();
//CB.CableIDs = ec_Enginedata_RelBLL.GetList("{ProjectId:\"" + ProjID + "\",RelEngineData1ID:\"" + CB.EngineerDataID + "\"}").
// Where(X => !string.IsNullOrEmpty(X.TagNumber2)).
@ -76,16 +76,16 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
CB.CableTagNumbers = new List<string>();
foreach (var item in CBsProps.Where(x=>x.EngineDataID == CB.EngineerDataID))
foreach (var item in CBsProps.Where(x => x.EngineDataID == CB.EngineerDataID))
{
PropertyInfo property = type .GetProperty(item.PropertyName);
PropertyInfo property = type.GetProperty(item.PropertyName);
if (property != null && property.CanWrite)
{
property.SetValue(CB, Convert.ChangeType(item.PropertyValue, property.PropertyType));
} //属性要怎么来从property来了然后通过反射填充到 cb 类的属性里
}
//所有在一端是开关的关联关系
//foreach (var item in RelBreaker_CableCol.
@ -162,6 +162,125 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
}
}
}
/// <summary>
/// 按tag的属性来返回开关
/// </summary>
/// <param name="ProjID"></param>
/// <param name="EngineerDataID">开关箱对应的工程id</param>
/// <param name="OnlySelf"></param>
/// <returns></returns>
public List<ec_CircuitBreakerEntity> GetBreakersUnderPDBNew(string ProjID, string EngineerDataID, bool OnlySelf = false)
{
try
{
var engineBll = new ec_enginedataService();
var ProjectEntity = new ec_projectEntity();
ProjectEntity = new ec_projectBLL().GetEntity(ProjID);
if (ProjectEntity == null)
{
return null;
}
var propTbName = ProjectSugar.TableName<ec_enginedata_propertyEntity>(ProjID);
var objectTypeTbName = ProjectSugar.TableName<ec_objecttypeEntity>(ProjID);
var objectType = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(objectTypeTbName).First(x => x.ObjectTypeName == GlobalObject.objectType_Breaker);
if (objectType == null)
{
throw new Exception("项目中不存在" + GlobalObject.objectType_Breaker + "这个内置类型。请联系管理员。");
}
//所有类别的属性信息
var objectTypeProps = new ec_objecttypepBLL().GetObjectTypePById(objectType.ObjectTypeID, ProjID, true);
//所有和电缆的关联关系
var allRels = ec_Enginedata_RelBLL.GetList("{ProjectId:\"" + ProjID + "\",RelType:\"" + (int)enum_RelType._电缆 + "\"}");
//该PDB上和电缆的关联关系
//var PDBallRels = allRels.Where(x => x.RelEngineData1ID == EngineerDataID || x.RelEngineData2ID == EngineerDataID).ToList();
//所有开关
var CBs = ec_CircuitBreakerService.GetList("{ProjectId:\"" + ProjID + "\"}");
//属于这个箱子的开关
CBs = CBs.Where(x => x.PDBId == EngineerDataID).OrderBy(x => x.OrderId).ToList();
List<string> resIDs = CBs.Select(x => x.EngineerDataID).ToList();
//开关上的所有属性
var CBsProps = SqlSugarHelper.Db.Queryable<ec_enginedata_propertyEntity>().AS(propTbName).
Where(x => resIDs.Contains(x.EngineDataID)).ToList();
var CBTags = engineBll.GetListSingleTable(ProjID, resIDs).ToList();
#region
foreach (var CB in CBs)
{
CB.CableIDs = new List<string>();
CB.CableTagNumbers = new List<string>();
//所有在一端是开关的关联关系
if (!string.IsNullOrEmpty(CB.CableID))
{
CB.CableIDs = CB.CableID.Split(',').ToList();//目前就考虑一个
CB.CableTagNumbers = engineBll.GetListSingleTable(ProjID, CB.CableIDs).Select(x => x.TagNumber).ToList();
//另一边的开关(cableid相同 但是开关id不同)
foreach (var RemoteItem in CBs.Where(x => x.CableID == CB.CableID && x.EngineerDataID != CB.EngineerDataID))
{
// var remoteCB = ec_CircuitBreakerService.GetList("{ProjectId:\"" + ProjID + "\",EngineerDataID:\"" + RemoteItem.RelEngineData1ID + "\"}").FirstOrDefault();
// if (remoteCB != null)
// {
CB.RemoteCB = RemoteItem;//此时,插件端用的是这个来拼出"对面的开关"
// 属性从 prop里来而不是从CB表来
CB.RemoteDeviceId = RemoteItem.PDBId;
CB.RemoteDeviceName = RemoteItem.PDBName;
CB.RemoteDeviceObjectType = RemoteItem.ObjectTypeName;
// }
// }
break;
}
if (CB.RemoteCB == null)
{
//对面不是通过开关连接,而是直接接到了负载上
var remoteRelObj = allRels.FirstOrDefault(x => x.RelEngineData1ID == CB.CableID && x.RelEngineData2ID != EngineerDataID);
if (remoteRelObj != null)
{
CB.RemoteDeviceId = remoteRelObj.RelEngineData2ID;
CB.RemoteDeviceName = remoteRelObj.TagNumber2;
CB.RemoteDeviceObjectType = remoteRelObj.Type2;
}
else
{
remoteRelObj = allRels.FirstOrDefault(x => x.RelEngineData2ID == CB.CableID && x.RelEngineData1ID != EngineerDataID);
if (remoteRelObj != null)
{
CB.RemoteDeviceId = remoteRelObj.RelEngineData1ID;
CB.RemoteDeviceName = remoteRelObj.TagNumber1;
CB.RemoteDeviceObjectType = remoteRelObj.Type1;
}
else
{
//NULL
}
}
}
}
CB.Tag = CBTags.FirstOrDefault(x => x.EngineDataID == CB.EngineerDataID);
if (CB.Tag != null)
{
CB.Tag.EngineDataProperty = CBsProps.Where(x => x.EngineDataID == CB.EngineerDataID).ToList();
}
}
#endregion
return CBs.Where(x => x.Tag != null).ToList();
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowBusinessException(ex);
}
}
}
#endregion
@ -190,22 +309,22 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
{
if (entity != null)
{
var typeTbName = ProjectSugar.TableName<ec_objecttypeEntity>(ProjectId);
var ec_objtype = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(typeTbName).First(x => x.ObjectTypeName == GlobalObject.objectType_Breaker);
if (ec_objtype == null)
{
throw new Exception($"系统中找不到内置的开关类型【{GlobalObject.objectType_Breaker}】。请联系管理员。");
}
#region CB
bool mode = BreakerID == "" ? true : false;
bool mode = string.IsNullOrEmpty(BreakerID) ? true : false;
entity.PDBId = PBDId;
ec_CircuitBreakerService.SaveEntity(ProjectId, ref BreakerID, entity);
#endregion
#region tag
var typeTbName = ProjectSugar.TableName<ec_objecttypeEntity>(ProjectId);
var ec_objtype = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(typeTbName).First(x => x.ObjectTypeName == GlobalObject.objectType_Breaker);
if (ec_objtype == null)
{
return;
}
var tagTbName = ProjectSugar.TableName<ec_enginedataEntity>(ProjectId);
ec_enginedataEntity addEnginedata = new ec_enginedataEntity();
@ -231,7 +350,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
}
#endregion
#region prop
var propBll = new ec_enginedata_propertyBLL();
var propBll = new ec_enginedata_propertyBLL();
//属性还是要去存enginedata_prop表
var TagProps = propBll.ConvertPropToEngineProp<ec_CircuitBreakerEntity>(ProjectId, ec_objtype.ObjectTypeID, addEnginedata.EngineDataID, entity);
propBll.SaveEngineProp(ProjectId, TagProps);

View File

@ -327,6 +327,8 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
[SugarColumn(IsIgnore = true)]
public string RemoteDeviceObjectType { get; set; }
[SugarColumn(IsIgnore = true)]
public ec_enginedataEntity Tag { get; set; }
#endregion
}
/// <summary>

View File

@ -171,6 +171,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
{
//ProjectEntity = this.BaseRepository().FindEntity<ec_projectEntity>(ProjectId);
ProjectEntity = new ec_projectBLL().GetEntity(ProjectId);
if (ProjectEntity == null)
{
return;
}
}
else
{

View File

@ -1441,7 +1441,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
Db.Insertable(addEngineDataList).AS($"ec_enginedata_{targetProject.ProjectIndex}").ExecuteCommand();
Db.Insertable(addPixelList).AS($"ec_enginedata_pixel_{targetProject.ProjectIndex}").ExecuteCommand();
Db.Insertable(addPropertyList).AS($"ec_enginedata_property_{targetProject.ProjectIndex}").ExecuteCommand();
//Db.Insertable(addPropertyList).AS($"ec_enginedata_property_{targetProject.ProjectIndex}").ExecuteCommand();
Db.Fastest<ec_enginedata_propertyEntity>().AS($"ec_enginedata_property_{targetProject.ProjectIndex}")
.PageSize(10000)
.BulkCopy(addPropertyList);
Db.Insertable(addCableList).AS($"ec_cable_{targetProject.ProjectIndex}").ExecuteCommand();
Db.Insertable(addSetList).AS($"ec_Cable_Set_{targetProject.ProjectIndex}").ExecuteCommand();

View File

@ -1,4 +1,5 @@
using Learun.Util;
using Learun.Util.SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
@ -86,7 +87,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
/// <summary>
/// 将一些特殊的对象其属性对应到ec-EngineData-property上。
/// 原则是:对象的属性名 = objectType关联下的PropertyName。
/// 如果没找到还是会按照objectType关联的属性来一份无非是属性为空。
/// 比如开关,其属性不是在右侧属性栏里输入的,而是在开关箱管理界面,所以不得不这样。那能不能搞一个和右侧属性里一样的
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="ProjId"></param>
@ -94,12 +95,20 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
/// <param name="Obj"></param>
/// <returns></returns>
public List<ec_enginedata_propertyEntity> ConvertPropToEngineProp<T>(string ProjId, string ObjectTypeId, string EngineDataId, T Obj)
{
var objectTypePBll = new ec_objecttypepBLL();
var typeP = objectTypePBll.GetObjectTypePById(ObjectTypeId, ProjId, true);
//属性还是要去存enginedata_prop表
{
var type = Obj.GetType();
var propsInClass = type.GetProperties();
var objectTypePBll = new ec_objecttypepBLL();
#region addauto
var existObjectTypeP = SqlSugarHelper.Db.Queryable<ec_objecttypepEntity>().Where(x=>x.ObjectTypeID == ObjectTypeId).ToList();
foreach (var propDef in propsInClass)
{
}
#endregion
var typeP = objectTypePBll.GetObjectTypePById(ObjectTypeId, ProjId, true);
//属性还是要去存enginedata_prop表
var TagProps = new List<ec_enginedata_propertyEntity>();
foreach (var prop in typeP)
{

View File

@ -58,7 +58,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
/// <param name="dataType">0:对象类型、1:位号、2:图纸</param>
/// <param name="KeyWork">位号的关键字</param>
/// <returns></returns>
public List<TreeModel> GetObjectTypeData3Level(string projectId, string dataType, string KeyWord = "")
public List<TreeModel> GetObjectTypeData3Level(string projectId, string dataType, string KeyWord = "",bool showOOTB = false)
{
List<TreeModel> treeList = new List<TreeModel>();
@ -78,7 +78,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
if (dataType.Equals("0") || dataType.Equals("1") || dataType.Equals("2"))
{
//获取所有的对象类型的基础信息
var listObjectType = GetList("{\"ProjectId\":\"" + projectId + "\"}", null).ToList();
var listObjectType = GetList("{\"ProjectId\":\"" + projectId + "\"}", null, showOOTB).ToList();
//包括关键字的对象类型
var listObjectTypeFiltered = listObjectType.Where(x => x.ObjectTypeName.Contains(KeyWord) || x.ObjectTypeNameEN.Contains(KeyWord)).ToList();
//查询位号的基础信息

View File

@ -15,7 +15,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
#region
List<ec_objTypeLayoutFilter> GetLayoutFilterList(string projId, string objTypeId);
List<TreeModel> GetObjectTypeData3Level(string projectId, string dataType, string KeyWord = "");
List<TreeModel> GetObjectTypeData3Level(string projectId, string dataType, string KeyWord = "",bool showOOTB=false);
/// <summary>
/// 获取列表数据
/// <summary>

View File

@ -1,5 +1,5 @@

FE:\Di-Electrical\SWSDBSchemeUpgradeTool\MainWindow.xaml;;
FE:\Di-Electrical\SWSDBSchemeUpgradeTool\SQLPreview.xaml;;
FC:\repo\CODE\009_DI-Elec\SWSDBSchemeUpgradeTool\MainWindow.xaml;;
FC:\repo\CODE\009_DI-Elec\SWSDBSchemeUpgradeTool\SQLPreview.xaml;;