From 529af9b7aab95fffc66cce71db9db34d999b2ab4 Mon Sep 17 00:00:00 2001 From: xingheng Date: Tue, 16 Sep 2025 10:18:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=88=86=E9=85=8D=E7=9A=84step1=E5=92=8Cstep2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppApi/IOModuleApiController.cs | 211 ++++++++++-------- ...run.Application.TwoDevelopment.csproj.user | 2 +- .../ZZDT_EC/GlobalEnum.cs | 85 ++++++- .../ZZDT_EC/ec_cable/ec_CableBLL.cs | 118 ++++++---- .../ZZDT_EC/ec_cable/ec_CableEntity.cs | 19 +- 5 files changed, 290 insertions(+), 145 deletions(-) diff --git a/Learun.Application.Web/AppApi/IOModuleApiController.cs b/Learun.Application.Web/AppApi/IOModuleApiController.cs index baf7d2d7..b020d871 100644 --- a/Learun.Application.Web/AppApi/IOModuleApiController.cs +++ b/Learun.Application.Web/AppApi/IOModuleApiController.cs @@ -1,11 +1,10 @@ using DocumentFormat.OpenXml.Drawing.Spreadsheet; using Learun.Application.Organization; using Learun.Application.TwoDevelopment.ZZDT_EC; -using Learun.Application.TwoDevelopment.ZZDT_EC.Frame; using Learun.Loger; using Learun.Util; using Learun.Util.SqlSugar; -using log4net.Config; +using log4net.Config; using Microsoft.Practices.ObjectBuilder2; using Newtonsoft.Json; using Org.BouncyCastle.Bcpg.OpenPgp; @@ -15,7 +14,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Web.Http; -using static Learun.Application.TwoDevelopment.ZZDT_EC.GlobalEnum; using static Learun.Application.TwoDevelopment.ZZDT_EC.IO_WorkFlowService; namespace Learun.Application.Web.AppApi @@ -106,7 +104,7 @@ namespace Learun.Application.Web.AppApi nodeCatalogue.NodeExtData = Loc; treeList.Add(nodeCatalogue); - var listPanel = Panels.Where(x => x.Panel_Loc_ID == Loc.DataItemDetailID && x.systempanel == specialType.系统柜.ToString()).ToList(); + var listPanel = Panels.Where(x => x.Panel_Loc_ID == Loc.DataItemDetailID && x.systempanel == GlobalEnum.specialType.系统柜.ToString()).ToList(); if (listPanel != null && listPanel.Count > 0) { foreach (var Panel in listPanel) @@ -238,62 +236,20 @@ namespace Learun.Application.Web.AppApi } /// - /// 找到某一个预分配箱子 附近的某一个箱子 - /// - /// - /// Digital,4-20mA,10v,pt100,pulse - /// + /// 自动分配通道(点表信号自动分配)。 + /// /// - - private ec_PanelEntity FindPanelNearby(List frameLists, List allPanel, List allPanelProps - , string IOTypeOnCable, string PreAssignPanelID) - { - //当前预分配的箱子的位置 - var AssignPanelProps = allPanelProps.Where(x => x.EngineDataID == PreAssignPanelID).ToList(); - var AssignPanelX = AssignPanelProps.FirstOrDefault(x => x.PropertyName == GlobalObject.propName_Frame)?.PropertyValue; - AssignPanelX = AssignPanelX.Split(new string[] { GlobalObject.enum_separator }, StringSplitOptions.None)[0];//插件端对于下拉列表 都是 name || nameEN - var AssignPanelXValue = frameLists.FirstOrDefault(X => X.Num == AssignPanelX).Value; - if (AssignPanelXValue < 400) - { - // 小于400,我几乎可以认为此时肋位号用的是m这个单位。因为如果用的是mm,400mm的肋位号似乎也太小了。 - AssignPanelXValue = 1000 * AssignPanelXValue; // 转成mm - } - var AssignPanelXOff = AssignPanelProps.FirstOrDefault(x => x.PropertyName == GlobalObject.propName_FrameOff)?.PropertyValue; - - var AssignPanelY = AssignPanelProps.FirstOrDefault(x => x.PropertyName == GlobalObject.propName_YOff)?.PropertyValue; - - foreach (var panel in allPanel) - { - //拿到每一个的xy属性 - //然后和预分配箱子进行对比 - - } - //然后排序一次 - - //根据电缆上的信号,去找匹配的排序第一位(已经按照距离排序过)的箱子 - switch (IOTypeOnCable.ToUpper()) - { - case "DIGITAL": - //其他就近箱子的 allowIOTypes里有DI DO - break; - default: - break; - } - return null; - } - /// - /// 自动分配通道(点表信号自动分配) - /// - /// - /// 如果没有匹配的采集箱,则提示“未找到具有XX类型的采集箱,请新增后再次分配,是否取消自动分配进程? + /// + /// /// - public IHttpActionResult AutoAssignCable2Channel(string projId, bool AcceptUnmatchedPanel) + public IHttpActionResult AutoAssignCable2Channel_step1(string projId, bool AcceptNearbyPanel) { #region 数据准备 var cbll = new ec_CableBLL(); var panelTable = ProjectSugar.TableName(projId); var stripTable = ProjectSugar.TableName(projId); #endregion + #region 先要知道有哪些待分配的信号 var cablesNeedAssigned = cbll.GetCablesPreAssign(projId, true); @@ -306,20 +262,34 @@ namespace Learun.Application.Web.AppApi Where(x => panelsNeed.Select(xx => xx.PanelID).Contains(x.PanelID)). ToList(); #region 1.1判断(信号预分配选择的采集箱可能并没有该电缆需要的信号类型) - var cablesNotMatchIO = cablesNeedAssigned.Where(x => !x.IOTypeMatch).ToList(); // GetCablesPreAssign 查询时已经处理过io是否匹配了 + var cablesNotMatchIO = cablesNeedAssigned.Where(x => x.IOTypesNotMatchedList.Count > 0).ToList(); // GetCablesPreAssign 查询时已经处理过io是否匹配了 if (cablesNotMatchIO != null && cablesNotMatchIO.Count > 0) { - if (!AcceptUnmatchedPanel)//允许进行 + if (!AcceptNearbyPanel)//允许进行 { - //??? + //有不匹配的,但是用户允许继续 + //在之后的自动分配过程中会自动寻找匹配的采集箱,原则上从就近的开始找,如果没有匹配的采集箱,则提示“未找到具有XX类型的采集箱,请新增后再次分配,是否取消自动分配进程?” + return Success("OK"); } else { //不继续自动分配,中断进程,等添加完正确的模块后再继续自动分配 - return Fail("等电缆的预分配IO类型和其预分配的采集箱的IO类型无法匹配。等添加完正确的模块后再继续自动分配。"); + var cableNamesNotMatched = string.Join(",", cablesNotMatchIO.Select(x => x.TagNumber).ToList()); + var panelIOMissing = new List(); + foreach (ec_CableEntity cableNotMatchIO in cablesNotMatchIO) + { + panelIOMissing.Add(cableNotMatchIO.PanelID + "缺失IO: " + string.Join(",", cableNotMatchIO.IOTypesNotMatchedList)); + } + return Fail($"预分配结果中,以下电缆【{cableNamesNotMatched}】的IO类型和其预分配采集箱的IO类型无法匹配。等添加完正确的模块后再继续自动分配。\r\n" + + $"需要添加的正确模块有:{string.Join(",", panelIOMissing)}"); } } + else + { + //没有不匹配的,可以继续进行 + return Success("OK"); + } #endregion #region 1.2 @@ -353,12 +323,95 @@ namespace Learun.Application.Web.AppApi //????????????????????????????????? } } - 可能要换一下循环主体,评估下是按照cable循环好,还是按strip循环好 + //可能要换一下循环主体,评估下是按照cable循环好,还是按strip循环好 #endregion } #endregion return Success("自动关联完成"); + + + } + /// + /// + /// + /// + /// + public IHttpActionResult AutoAssignCable2Channel_step2(string projId) + { + // #region 数据准备 + // var cbll = new ec_CableBLL(); + // var panelTable = ProjectSugar.TableName(projId); + // var stripTable = ProjectSugar.TableName(projId); + // #endregion + + // #region 先要知道有哪些待分配的信号 + + // var cablesNeedAssigned = cbll.GetCablesPreAssign(projId, true); + + // #endregion + // //涉及到哪些箱子 + // var panelsNeed = SqlSugarHelper.Db.Queryable().AS(panelTable). + //Where(x => cablesNeedAssigned.Select(xx => xx.PanelID).Contains(x.PanelID)).ToList(); + // var stripsNeed = SqlSugarHelper.Db.Queryable().AS(stripTable). + // Where(x => panelsNeed.Select(xx => xx.PanelID).Contains(x.PanelID)). + // ToList(); + // #region 1.1判断(信号预分配选择的采集箱可能并没有该电缆需要的信号类型) + // var cablesNotMatchIO = cablesNeedAssigned.Where(x => x.IOTypesNotMatchedList.Count > 0).ToList(); // GetCablesPreAssign 查询时已经处理过io是否匹配了 + // if (cablesNotMatchIO != null && cablesNotMatchIO.Count > 0) + // { + // if (!AcceptUnmatchedPanel)//允许进行 + // { + // //??? + // } + // else + // { + // //不继续自动分配,中断进程,等添加完正确的模块后再继续自动分配 + // return Fail("等电缆的预分配IO类型和其预分配的采集箱的IO类型无法匹配。等添加完正确的模块后再继续自动分配。"); + + // } + // } + // #endregion + + // #region 1.2 + // #region 先分组 1.2.2 + // cablesNeedAssigned = cablesNeedAssigned.OrderBy(x => new { x.PreAssignIOType, x.System, x.PanelID }).ToList(); + // var curPanel = new ec_PanelEntity(); + // curPanel = panelsNeed.FirstOrDefault(x => x.PanelID == cablesNeedAssigned[0].PanelID);//先定位到第一个电缆所在的箱子 + // curPanel.strips = stripsNeed.Where(x => x.PanelID == curPanel.PanelID).ToList(); + // var curStrip = new ec_PanelStripEntity(); + // #endregion + // for (var i = 0; i < cablesNeedAssigned.Count; i++) + // { + + // #region 是否有端子排 1.2.1 + // if (curPanel.PanelID != cablesNeedAssigned[i].PanelID) + // { + // curPanel = panelsNeed.FirstOrDefault(x => x.PanelID == cablesNeedAssigned[0].PanelID);//切换箱子 + // curPanel.strips = stripsNeed.Where(x => x.PanelID == curPanel.PanelID).ToList(); + // } + // foreach (var set in cablesNeedAssigned[i].Sets) + // { + // var availableStrips = curPanel.strips.Where(x => x.IO_TYPE.ToUpper() == set.IOType.ToString().ToUpper()).ToList(); + + // if (availableStrips != null && availableStrips.Count > 0) + // { + // //已经存在端子排 + // } + // else + // { + // //没有端子排,根据信号数里自动新建端子排,通道数里根据端子io模板的默认值获得 + // //????????????????????????????????? + // } + // } + // //可能要换一下循环主体,评估下是按照cable循环好,还是按strip循环好 + // #endregion + + // } + // #endregion + return Success("自动关联完成"); + + } /// /// 把电缆分配到空余的模块的通道上。 @@ -381,48 +434,10 @@ namespace Learun.Application.Web.AppApi [HttpGet] public IHttpActionResult GetCablePreAssignPreview(string projId) { - var table = ProjectSugar.TableName(projId); - var tagTable = ProjectSugar.TableName(projId); - var panelTable = ProjectSugar.TableName(projId); - var setServ = new ec_CableSetService(); - var wireServ = new ec_CableSetWireService(); - var preAssignedCables = SqlSugarHelper.Db.Queryable().AS(table).Where(x => !string.IsNullOrEmpty(x.PanelID)).ToList(); - var tags = SqlSugarHelper.Db.Queryable().AS(tagTable). - Where(x => preAssignedCables.Select(xx => xx.EngineerDataID).Contains(x.EngineDataID)).ToList(); + var bll = new ec_CableBLL(); + var res = bll.GetCablesPreAssign(projId); - var panels = SqlSugarHelper.Db.Queryable().AS(panelTable). - Where(x => preAssignedCables.Select(xx => xx.PanelID).Contains(x.PanelID)).ToList(); - var panelTags = SqlSugarHelper.Db.Queryable().AS(tagTable). - Where(x => panels.Select(xx => xx.EngineerDataID).Contains(x.EngineDataID)).ToList(); - foreach (var cable in preAssignedCables) - { - var sets = setServ.GetList(projId, cable.CableID); - var Wires = wireServ.GetList(projId, cable.CableID, ""); - - - //剩下的感觉都可以是set上的参数? - foreach (var set in sets) - { - var wires = Wires.Where(x => x.CableSetID == set.CableSetID); - set.Wires = wires.ToList(); - } - cable.Sets = sets; - - - cable.TagNumber = tags.FirstOrDefault(x => x.EngineDataID == cable.EngineerDataID)?.TagNumber; - - var panelObj = panels.FirstOrDefault(x => x.PanelID == cable.PanelID); - if (panelObj != null) - { - panelObj.TagNumber = panelTags.FirstOrDefault(x => x.EngineDataID == panelObj.EngineerDataID)?.TagNumber; - } - - cable.ToPanel = panelObj; - } - - //分组 - preAssignedCables = preAssignedCables.OrderBy(x => x.PreAssignIOType).ToList(); - return Success(preAssignedCables); + return Success(res); } diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj.user b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj.user index a607660d..0b246432 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj.user +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj.user @@ -1,6 +1,6 @@ - ShowAllFiles + ProjectFiles \ No newline at end of file diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/GlobalEnum.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/GlobalEnum.cs index a6fe6a99..dcf855aa 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/GlobalEnum.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/GlobalEnum.cs @@ -8,12 +8,95 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { public class GlobalEnum { + #region 自动分配、预分配、io模块模板有关 + public enum inOrOut + { + 输入 = 0, + 输出 = 1 + } + /// + /// 电缆预分配时,会选择的信号类型。通讯和非通讯(digital等几个) + /// + public enum signalType + { + /// + /// 数字量 + /// + Digital = 1, + /// + /// 模拟量 4-20mA等 + /// + Analog = 2, + /// + /// + /// + TenVolt = 3, + /// + /// + /// + PT100 = 4, + PULSE + } + /// + /// 端子排上的IO类型 + /// + public enum IOType + { + DI = 0, + DO, + AI, + AO, + PT100, + PULSE, + TenVolt, + LAN, + /// + /// 485 422 + /// + RS485, + + } + #endregion + + /// + /// 对象类型上特殊的一些分类。对应 + /// + public enum specialType + { + 未定义 = 0, + 电力一次 = 1, + 电力二次 = 2, + 系统柜 = 3, + } + + + /// + /// 用于 + /// public enum TagDataStatus { - 外部 = 00001, + 外部 = 00001, 待验证 = 00002, 有效 = 00003, 导入 = 00004 } + /// + /// 用于 信号组别的状态 + /// + public enum signalGroupStatusEnum + { + /// + /// 待删除 + /// + 未核对 = 01, + /// + /// 新增的 + /// + 沟通中 = 02, + /// + /// 已关联 + /// + 已落实 = 03 + } } } diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableBLL.cs index ca73b94f..2b9769b6 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableBLL.cs @@ -3,6 +3,7 @@ using Learun.Util; using Learun.Util.SqlSugar; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Data; using System.Linq; @@ -166,12 +167,14 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC } } } + /// - /// 预览所有有信号预分配的电缆信息 + /// 预分配情况下的电缆set wire数据 /// /// + /// /// - public ec_CableEntity CablePreAssignPreview(string ProjID) + public ec_CableEntity GetCablePreAssign(string ProjID, string EngineerDataID) { var engineerDataServ = new ec_enginedataService(); var panelServ = new ec_PanelService(); @@ -187,14 +190,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC return null; } - var res = ec_CableService.GetList("{ProjectId:\"" + ProjID + "\"}").FirstOrDefault(); //电缆 + var res = ec_CableService.GetList("{ProjectId:\"" + ProjID + "\",EngineerDataID:\"" + EngineerDataID + "\"}").FirstOrDefault(); //电缆 if (res != null) { var sets = ec_CableSetService.GetList(ProjID, res.CableID); var Wires = ec_CableSetWireService.GetList(ProjID, res.CableID, ""); - Console.WriteLine(res.CableClass);//是否通讯信号 - Console.WriteLine(res.PreAssignIOType);//通讯类型 //剩下的感觉都可以是set上的参数? foreach (var set in sets) @@ -219,34 +220,65 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #region 还没有预配置 #endregion } - public ec_CableEntity GetCablePreAssign(string ProjID, string EngineerDataID) + + public List GetCablesPreAssign(string projId, bool needProp = false) { - var engineerDataServ = new ec_enginedataService(); - var panelServ = new ec_PanelService(); - var panelStripBll = new ec_PanelStripBLL(); - var panelStripServ = new ec_PanelStripService(); - var termServ = new ec_PanelStripTermBLL(); - var channelServ = new ec_PanelChannelService(); + var table = ProjectSugar.TableName(projId); + var tagTable = ProjectSugar.TableName(projId); + var panelTable = ProjectSugar.TableName(projId); + var propTable = ProjectSugar.TableName(projId); + var relTable = ProjectSugar.TableName(projId); - var ProjectEntity = new ec_projectEntity(); - ProjectEntity = new ec_projectBLL().GetEntity(ProjID); - if (ProjectEntity == null) + var setServ = new ec_CableSetService(); + var wireServ = new ec_CableSetWireService(); + //先查出所有已经预分配的电缆 + var preAssignedCables = SqlSugarHelper.Db.Queryable().AS(table). + Where(x => !string.IsNullOrEmpty(x.PanelID)).ToList(); + var tags = SqlSugarHelper.Db.Queryable().AS(tagTable). + Where(x => preAssignedCables.Select(xx => xx.EngineerDataID).Contains(x.EngineDataID)).ToList(); + var allpropOnFrom = new List(); + + var panels = SqlSugarHelper.Db.Queryable().AS(panelTable). + Where(x => preAssignedCables.Select(xx => xx.PanelID).Contains(x.PanelID)).ToList(); + var panelTags = SqlSugarHelper.Db.Queryable().AS(tagTable). + Where(x => panels.Select(xx => xx.EngineerDataID).Contains(x.EngineDataID)).ToList(); + if (needProp) { - return null; + var FromRels = SqlSugarHelper.Db.Queryable().AS(relTable). + Where(x => preAssignedCables.Select(y => y.EngineerDataID).Contains(x.RelEngineData2ID) + && x.RelTypeID == ((int)enum_RelType.设备_电缆).ToString()).ToList(); + allpropOnFrom = SqlSugarHelper.Db.Queryable().AS(propTable). + Where(x => FromRels.Select(xx => xx.RelEngineData2ID).Distinct().Contains(x.EngineDataID)).ToList(); } - - var res = ec_CableService.GetList("{ProjectId:\"" + ProjID + "\",EngineerDataID:\"" + EngineerDataID + "\"}").FirstOrDefault(); //电缆 - if (res != null) + foreach (var cable in preAssignedCables) { - var sets = ec_CableSetService.GetList(ProjID, res.CableID); - var Wires = ec_CableSetWireService.GetList(ProjID, res.CableID, ""); + var sets = setServ.GetList(projId, cable.CableID); + var Wires = wireServ.GetList(projId, cable.CableID, ""); - Console.WriteLine(res.CableClass);//是否通讯信号 - Console.WriteLine(res.PreAssignIOType);//通讯类型 + + + cable.TagNumber = tags.FirstOrDefault(x => x.EngineDataID == cable.EngineerDataID)?.TagNumber; + var panelObj = panels.FirstOrDefault(x => x.PanelID == cable.PanelID); + if (panelObj == null) + { + continue;//分配就已经不合理了 + } + else if (panelObj != null) + { + panelObj.TagNumber = panelTags.FirstOrDefault(x => x.EngineDataID == panelObj.EngineerDataID)?.TagNumber; + + //1.2.1 系统属性从电缆的from端上的设备中取设备的系统 + cable.System = allpropOnFrom.FirstOrDefault(x => x.EngineDataID == cable.PanelID && x.PropertyName == GlobalObject.propName_System)?.PropertyValue; + + + } + + cable.ToPanel = panelObj; + var IOsOnPanel = panelObj.allowedIOTypes.Split(',').ToList(); //剩下的感觉都可以是set上的参数? foreach (var set in sets) - { + { #region 判断下io匹配程度 if (set.PreAssignInOrOut == GlobalEnum.inOrOut.输入.ToString() && cable.PreAssignIOType.ToLower() == "digital") { @@ -268,14 +300,18 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { set.IOType = GlobalEnum.IOType.TenVolt; } - else if (cable.PreAssignIOType == GlobalEnum.signalType.PT100.ToString()) + else if (cable.PreAssignIOType == GlobalEnum.IOType.PT100.ToString()) { set.IOType = GlobalEnum.IOType.PT100; } - else if (cable.PreAssignIOType.ToUpper() == GlobalEnum.signalType.PULSE.ToString()) + else if (cable.PreAssignIOType.ToUpper() == GlobalEnum.IOType.PULSE.ToString()) { set.IOType = GlobalEnum.IOType.PULSE; - } + } + else if (cable.PreAssignIOType == GlobalEnum.IOType.PT100.ToString()) + { + set.IOType = GlobalEnum.IOType.PT100; + } //下面是通讯的 else { @@ -285,31 +321,33 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC if (IOsOnPanel.Contains(set.IOType.ToString())) { set.IOTypeMatch = true; + } else { set.IOTypeMatch = false; + cable.IOTypesNotMatchedList.Add(set.IOType.ToString());//从电缆上就能知道哪些io是匹配补上的 } #endregion var wires = Wires.Where(x => x.CableSetID == set.CableSetID); set.Wires = wires.ToList(); } - res.Sets = sets; - //除了端子号 - - return res; - } - else - { - //还没有电缆规格的实体,自然肯定也没有预配置 - return null;//由客户端根据当前电缆规格来渲染布局,然后保存时进行新建set wire和其他的预分配的内容 + cable.Sets = sets; + //if (cable.Sets.Any(x => !x.IOTypeMatch)) + //{ + // cable.IOTypeMatch = true; + //} + //else + //{ + // cable.IOTypeMatch = false; + //} } - #region 已经有了预配置 - #endregion + //分组 + preAssignedCables = preAssignedCables.OrderBy(x => x.PreAssignIOType).ToList(); - #region 还没有预配置 - #endregion + + return preAssignedCables; } #endregion diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableEntity.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableEntity.cs index 5909e61e..8ff39406 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableEntity.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableEntity.cs @@ -6,7 +6,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { - + /// /// 版 本 PIT-ADMS V7.0.3 敏捷开发框架 /// Copyright (c) 2013-2018 Hexagon PPM @@ -47,8 +47,9 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// Digital 4-20mA Pulse Pt100(如果是非母线,IO类型是什么。) /// public string PreAssignIOType { get; set; } = ""; + /// - /// 电缆预分配时,必须指定它应该在哪个IO柜子 + /// 电缆预分配时,必须指定它应该在哪个IO柜子。所以这个不为空,就说明是预分配的电缆。 /// public string PanelID { get; set; } /// @@ -101,6 +102,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #region 扩展字段 /// + /// 是否和 里的匹配。 + /// + public List IOTypesNotMatchedList = new List(); + /// /// /// [SugarColumn(IsIgnore = true)] @@ -129,16 +134,20 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// [SugarColumn(IsIgnore = true)] public string TagNumber { set; get; } - + /// + /// 电缆所在的From端设备的所在的system + /// + [SugarColumn(IsIgnore = true)] + public string System { set; get; } /// /// From连接处的工程位号信息 /// [SugarColumn(IsIgnore = true)] public ec_PanelEntity FromPanel { set; get; } - + /// - /// From连接处的工程位号信息( + /// From连接处的工程位号信息。同时,也表达下预分配电缆panelid对应的柜子信息。 /// [SugarColumn(IsIgnore = true)] public ec_PanelEntity ToPanel { set; get; }