diff --git a/.gitignore b/.gitignore index 8ccfa79f..d1c32de5 100644 --- a/.gitignore +++ b/.gitignore @@ -1109,3 +1109,4 @@ newFront/c#前端/.vs/ /newFront/c#前端/CAD.Extend/obj/Debug/CAD.Extend.csproj.AssemblyReference.cache /newFront/c#前端/.vs/SWS.CAD/FileContentIndex/f03e1583-e8e0-43b7-9dbb-a1896ce4b92d.vsidx /newFront/c#前端/.vs/SWS.CAD/FileContentIndex/f2e37380-e651-406b-9320-af642620eee9.vsidx +/SWSDBSchemeUpgradeTool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache diff --git a/Learun.Application.Web/AppApi/DrawingFileApiController.cs b/Learun.Application.Web/AppApi/DrawingFileApiController.cs index ffdbe1f7..29b4eb0a 100644 --- a/Learun.Application.Web/AppApi/DrawingFileApiController.cs +++ b/Learun.Application.Web/AppApi/DrawingFileApiController.cs @@ -406,57 +406,7 @@ namespace Learun.Application.Web.AppApi return Fail(ex.Message); } } - - /// - /// 检入图纸文件 - /// - /// 项目ID - /// 图纸文件ID - /// 描述 - /// 文件夹ID - /// 文件MD5 - /// 待通知的用户,逗号分隔 - /// - [HttpPost] - [Obsolete] - public IHttpActionResult CheckInDrawingFile(string projectId, string drawingFileID, string remark, string folderId, string fileMD5, string UsersNotified) - { - //如何避免数据丢失 - try - { - var httpContent = Request.Content; - var asyncContent = httpContent.ReadAsStringAsync().Result; - List entityList = asyncContent.ToList(); - if (entityList == null || entityList.Count == 0) - { - //避免前端因频繁切换图纸造成检入时,一个都没有,而把数据库里的都清空了 - XmlConfigurator.Configure(); - var log = log4net.LogManager.GetLogger("INFO"); //参数就是config里logger节点的名字 - log.Error($"★★★{DateTime.Now.ToString()}★★★Drawing Check In Only 0 Pixel【DrawingId:{drawingFileID}】★★★"); - //return Success("检入成功!"); - //entityList = new List(); - } - else if (string.IsNullOrEmpty(folderId)) - { - log4net.LogManager.GetLogger("ERROR").Error("检入图纸 - " + "无效的空白FolderId"); - throw new Exception("检入图纸 - " + "无效的空白FolderId"); - } - else - { - pixelBll.SavePixels(entityList, projectId, drawingFileID); - - } - //换了下顺序,先SaveMuliteEntity,再CheckInDrawingFile。这样就算SaveMuliteEntity报错了,但是图纸至少不会被检入,免得出现之前数据丢失的问题 - ec_drawing_fileIBLL.CheckInDrawingFile(drawingFileID, remark, folderId, fileMD5, projectId, UsersNotified); - - return Success("检入成功!"); - } - catch (Exception ex) - { - return Fail(ex.Message); - } - } - /// + /// 检入图纸文件(修改消息) /// /// 项目ID diff --git a/Learun.Application.Web/AppApi/EnginedataApiController.cs b/Learun.Application.Web/AppApi/EnginedataApiController.cs index 6d2b47b2..28d7a910 100644 --- a/Learun.Application.Web/AppApi/EnginedataApiController.cs +++ b/Learun.Application.Web/AppApi/EnginedataApiController.cs @@ -62,7 +62,7 @@ namespace Learun.Application.Web.AppApi { List res = new List(); var ec_enginedata_pixelBLL = new ec_enginedata_pixelBLL(); - var data = ec_enginedata_pixelBLL.GetList("{\"ProjectId\":\"" + projectId + "\",\"EngineDataID\":\"" + EngineDataID + "\"}"); + var data = ec_enginedata_pixelBLL.GetList("{\"ProjectId\":\"" + projectId + "\",\"EngineDataID\":\"" + EngineDataID + "\"}",projectId); return Success(data); } @@ -184,7 +184,7 @@ namespace Learun.Application.Web.AppApi Where(x => x.DeleteFlg != 1).ToList(); var relTypeTbName = ProjectSugar.TableName(projectId); - var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); var propBll = new ec_enginedata_propertyBLL(); var allTagProps = SqlSugarHelper.Db.Queryable().AS(propTbName).ToList(); @@ -265,7 +265,7 @@ namespace Learun.Application.Web.AppApi Where(x => x.DeleteFlg != 1).ToList(); var relTypeTbName = ProjectSugar.TableName(projectId); - var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); //var propBll = new ec_enginedata_propertyBLL(); var allTagProps = SqlSugarHelper.Db.Queryable().AS(propTBName).ToList(); @@ -312,7 +312,7 @@ namespace Learun.Application.Web.AppApi Where(x => x.DeleteFlg != 1).ToList(); var relTypeTbName = ProjectSugar.TableName(projectId); - var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); var propBll = new ec_enginedata_propertyBLL(); var CBs = allCBs.Where(x => x.PDBId == Enginedataid).ToList(); diff --git a/Learun.Application.Web/AppApi/IOModuleApiController.cs b/Learun.Application.Web/AppApi/IOModuleApiController.cs index 1e3bf30c..4c6149ea 100644 --- a/Learun.Application.Web/AppApi/IOModuleApiController.cs +++ b/Learun.Application.Web/AppApi/IOModuleApiController.cs @@ -1,16 +1,21 @@ using DocumentFormat.OpenXml.Drawing.Spreadsheet; using Learun.Application.Organization; using Learun.Application.TwoDevelopment.ZZDT_EC; +using Learun.Application.TwoDevelopment.ZZDT_EC.Frame; +using Learun.Cache.Base; +using Learun.Cache.Factory; 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; using Pipelines.Sockets.Unofficial.Arenas; +using SqlSugar; using System; using System.Collections.Generic; +using System.Data.Entity.Infrastructure; using System.Diagnostics; using System.Linq; using System.Web.Http; @@ -41,7 +46,49 @@ namespace Learun.Application.Web.AppApi + /// + /// 找到某一个预分配箱子 附近的某一个箱子 + /// + /// + /// Digital,4-20mA,10v,pt100,pulse + /// + /// + private ec_PanelEntity FindPanelNearby(List frameLists, List allPanel, List allPanelProps + , string IOTypeOnCable) + { + //当前预分配的箱子的位置 + var AssignPanelX = allPanelProps.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)//null也没事 + { + // 小于400,我几乎可以认为此时肋位号用的是m这个单位。因为如果用的是mm,400mm的肋位号似乎也太小了。 + AssignPanelXValue = 1000 * AssignPanelXValue; // 转成mm + } + var AssignPanelXOff = allPanelProps.FirstOrDefault(x => x.PropertyName == GlobalObject.propName_FrameOff)?.PropertyValue; + + var AssignPanelY = allPanelProps.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; + } /// /// IO分配主界面查询,查询所有的位置 - 采集箱 - 模块 - 通道 @@ -104,7 +151,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) @@ -234,6 +281,158 @@ namespace Learun.Application.Web.AppApi return Success(res); } + } + /// + /// 自动分配通道(点表信号自动分配)。 + /// + /// + /// + /// + /// 需要分配的电缆cableid,不是enginedataId,逗号分开 + /// + [HttpPost] + public IHttpActionResult AutoAssignCable2Channel_step1(string projId, bool AcceptNearbyPanel, [FromBody] List CableIds) + { + #region 数据准备 + var frameBll = new FrameBll(); + var allFrames = frameBll.GetFrameList(projId); + var cbll = new ec_CableBLL(); + var panelTable = ProjectSugar.TableName(projId); + var stripTable = ProjectSugar.TableName(projId); + var tagTable = ProjectSugar.TableName(projId); + var propTable = ProjectSugar.TableName(projId); + var typeTable = ProjectSugar.TableName(projId); + #endregion + + #region 先要知道有哪些待分配的信号 端子排 + if (CableIds == null || CableIds.Count == 0) + { + return Success("OK"); + } + var cablesNeedAssigned = cbll.GetCablesPreAssign(projId, CableIds, true); + cablesNeedAssigned = cablesNeedAssigned.Where(x => CableIds.Contains(x.CableID)).ToList(); + #endregion + //涉及到哪些箱子 + var allPanel = SqlSugarHelper.Db.Queryable().AS(panelTable). + InnerJoin((a, b) => a.EngineerDataID == b.EngineDataID).AS(tagTable). + InnerJoin((a, b, c) => b.ObjectTypeID == c.ObjectTypeID).AS(typeTable). + Where((a, b, c) => c.specialType == GlobalEnum.specialType.系统柜). + ToList();//这里要过滤一下,根据object type里的specialType,而不是所有的panel + + var allPanelProp = SqlSugarHelper.Db.Queryable().AS(propTable) + .Where(x => allPanel.Select(xx => xx.EngineerDataID).Contains(x.EngineDataID)) + .ToList().GroupBy(x => x.EngineDataID).ToDictionary(x => x.Key, x => x.ToList()); + var panelsNeed = allPanel.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 (AcceptNearbyPanel)//允许进行 + { + //有不匹配的,但是用户允许继续 + //在之后的自动分配过程中会自动寻找匹配的采集箱,原则上从就近的开始找,如果没有匹配的采集箱,则提示“未找到具有XX类型的采集箱,请新增后再次分配,是否取消自动分配进程?” + bool nearbyFound = false; + foreach (var cable in cablesNotMatchIO) + { + var nearPanel = FindPanelNearby(allFrames, allPanel, allPanelProp[cable.ToPanel.EngineerDataID], cable.PreAssignIOType); + if (nearPanel == null) + { + nearbyFound = false; + return Fail($"在附近未找到具有{cable.PreAssignIOType}类型的采集箱,请新增后再次分配,是否取消自动分配进程?"); + } + else + { + nearbyFound = true; + } + } + + + + } + else + { + //不继续自动分配,中断进程,等添加完正确的模块后再继续自动分配 + 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 + { + //没有不匹配的,可以继续进行 + + } + //必要的数据存入redis,以便后续步骤使用 + ICache redisObj = CacheFactory.CaChe(); + redisObj.Remove("IOModule_AutoAssign2Ch_" + projId, CacheId.IOModule_AutoAssign2Ch); + redisObj.Write>("IOModule_AutoAssign2Ch_" + projId, cablesNeedAssigned, CacheId.IOModule_AutoAssign2Ch); + + return Success("OK"); + #endregion + + + + + } + /// + /// + /// + /// + /// + public IHttpActionResult AutoAssignCable2Channel_step2(string projId) + { + ICache redisObj = CacheFactory.CaChe(); + var cablesNeedAssigned = redisObj.Read>("IOModule_AutoAssign2Ch_" + projId, CacheId.IOModule_AutoAssign2Ch); + + //#region 1.2 + #region 先分组 1.2.2 + cablesNeedAssigned = cablesNeedAssigned.OrderBy(x => new { x.PanelID, x.PreAssignIOType, x.System }).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("自动关联完成"); + + } /// /// 把电缆分配到空余的模块的通道上。 @@ -256,48 +455,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, null); - 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.Application.Web/AppApi/ObjectTypeApiController.cs b/Learun.Application.Web/AppApi/ObjectTypeApiController.cs index 82f5cf87..113ee1e8 100644 --- a/Learun.Application.Web/AppApi/ObjectTypeApiController.cs +++ b/Learun.Application.Web/AppApi/ObjectTypeApiController.cs @@ -373,7 +373,7 @@ namespace Learun.Application.Web.AppApi /// /// 项目ID /// 图纸文件ID - /// 图元编号集合(用,连接) + /// 图元编号集合(用,连接)。正常就1个 /// 工况ID /// [HttpGet] @@ -548,11 +548,11 @@ namespace Learun.Application.Web.AppApi foreach (ec_enginedata_propertyEntity TagProp in tag.EngineDataProperty) { - if (TagProp.PropertyName == "起始设备") + if (TagProp.PropertyName == GlobalObject.propName_From) { TagProp.PropertyValue = CableConn.End1Tag; } - else if (TagProp.PropertyName == "终止设备") + else if (TagProp.PropertyName == GlobalObject.propName_To) { TagProp.PropertyValue = CableConn.End2Tag; } @@ -591,79 +591,97 @@ namespace Learun.Application.Web.AppApi var propTbName = ProjectSugar.TableName(projectId); var allUser = SqlSugarHelper.Db.Queryable().ToList(); + var userDict = allUser.ToDictionary(x => x.F_UserId, x => x.F_RealName); var pixelAll = SqlSugarHelper.Db.Queryable().AS(pixelTbName).Where(x => x.DrawingFileID == drawingFileID && x.DeleteFlg != 1).ToList(); + var pixelDictByTag = pixelAll.GroupBy(x => x.EngineDataID).ToDictionary(x => x.Key, x => x.ToList()); var pixelObjs = pixelAll.Where(x => pixelCodes.Split(',').ToList().Contains(x.PixelCode)).ToList(); var tagIds = pixelObjs.Select(x => x.EngineDataID).Distinct().ToList(); var tagAll = SqlSugarHelper.Db.Queryable().AS(tagTbName).OrderBy(x => x.TagNumber).ToList(); + // 提前分组:按ObjectTypeID分组,并为每个组预生成字典(仅执行一次,O(m)时间) + var preGrouped = tagAll + .GroupBy(tag => tag.ObjectTypeID) + .ToDictionary( + group => group.Key, // 键:ObjectTypeID + group => group.ToDictionary( // 值:该组内的EngineDataID→TagNumber字典 + item => item.EngineDataID, + item => item.TagNumber + ) + ); var tagObjs = tagAll.Where(x => tagIds.Contains(x.EngineDataID)).ToList(); - + var tagDictByType = tagObjs.GroupBy(x => x.ObjectTypeID).ToDictionary(x => x.Key, x => x.ToList()); var typeIds = tagObjs.Select(x => x.ObjectTypeID).Distinct().ToList(); var typeAll = SqlSugarHelper.Db.Queryable().AS(typeTbName).ToList(); var typeObjs = typeAll.Where(x => typeIds.Contains(x.ObjectTypeID)).ToList(); var tagPropAll = SqlSugarHelper.Db.Queryable().AS(propTbName).Where(x => tagIds.Contains(x.EngineDataID)).ToList(); + var tagPropDictByTag = tagPropAll.GroupBy(x => x.EngineDataID).ToDictionary(x => x.Key, x => x.ToList()); //所有类别的属性信息 var objectTypeProps2 = objectTypePBll.GetObjectTypePById(string.Join(",", typeIds), projectId, true);//最频繁的那个接口 - + var typePropDictByType = objectTypeProps2.GroupBy(x => x.ObjectTypeID).ToDictionary(g => g.Key, g => g.ToList()); try { foreach (var objectType in typeObjs) { //该类型下的属性信息 - objectType.props = objectTypeProps2.Where(x => x.ObjectTypeID == objectType.ObjectTypeID).ToList(); + objectType.props = typePropDictByType[objectType.ObjectTypeID];// objectTypeProps2.Where(x => x.ObjectTypeID == objectType.ObjectTypeID).ToList(); //该类型下的位号基础信息 - objectType.tags = tagObjs.Where(x => x.ObjectTypeID == objectType.ObjectTypeID).ToList(); - foreach (var item in objectType.tags) - { - item.CreateUserName = allUser.FirstOrDefault(x => x.F_UserId == item.CreateUserID)?.F_RealName; - } + objectType.tags = tagDictByType[objectType.ObjectTypeID]; // tagObjs.Where(x => x.ObjectTypeID == objectType.ObjectTypeID).ToList(); + //每个位号的属性信息 foreach (var tag in objectType.tags) { + if (string.IsNullOrEmpty(tag.CreateUserID)) + { + tag.CreateUserName = string.Empty; + } + else + { + tag.CreateUserName = userDict[tag.CreateUserID];// allUser.FirstOrDefault(x => x.F_UserId == item.CreateUserID)?.F_RealName; + } - tag.EngineDataID = tag.EngineDataID; - tag.EngineDataProperty = tagPropAll.Where(x => x.EngineDataID == tag.EngineDataID).ToList(); + tag.EngineDataProperty = tagPropDictByTag[tag.EngineDataID];// tagPropAll.Where(x => x.EngineDataID == tag.EngineDataID).ToList(); tag.ObjectTypeName = objectType.ObjectTypeName; + if (objectType.ObjectTypeName.EndsWith("电缆")) { //电缆from to - var CableConn = relBll.GetCableConn(tag.EngineDataID, projectId); + var CableConn = relBll.GetCableConn(tag.EngineDataID, projectId);//此时就根据rel里的id拿到了新的tagNumber - if (!tag.EngineDataProperty.Any(X => X.PropertyName == "起始设备")) + if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_From)) { var newProp = new ec_enginedata_propertyEntity() { EngineDataID = tag.EngineDataID, - PropertyName = "起始设备", + PropertyName = GlobalObject.propName_From, //CaseID = string.IsNullOrEmpty(caseID) ? tag.CaseID : caseID, }; newProp.Create(); - ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp); + ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp);//增加 起始设备 tag.EngineDataProperty.Add(newProp); } - if (!tag.EngineDataProperty.Any(X => X.PropertyName == "终止设备")) + if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_To)) { var newProp = new ec_enginedata_propertyEntity() { EngineDataID = tag.EngineDataID, - PropertyName = "终止设备", + PropertyName = GlobalObject.propName_To, //CaseID = string.IsNullOrEmpty(caseID) ? tag.CaseID : caseID, }; newProp.Create(); - ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp); + ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp);////增加 终止设备 tag.EngineDataProperty.Add(newProp); } - var TagProp = tag.EngineDataProperty.FirstOrDefault(X => X.PropertyName == "起始设备"); + var TagProp = tag.EngineDataProperty.FirstOrDefault(X => X.PropertyName == GlobalObject.propName_From); if (TagProp != null) { TagProp.PropertyValue = CableConn.End1Tag; } TagProp = null; - TagProp = tag.EngineDataProperty.FirstOrDefault(X => X.PropertyName == "终止设备"); + TagProp = tag.EngineDataProperty.FirstOrDefault(X => X.PropertyName == GlobalObject.propName_To); if (TagProp != null) { TagProp.PropertyValue = CableConn.End2Tag; @@ -671,10 +689,10 @@ namespace Learun.Application.Web.AppApi } //查一下每个位号的图元信息 - tag.EngineDataPixel = pixelAll.Where(x => x.EngineDataID == tag.EngineDataID).ToList(); + tag.EngineDataPixel = pixelDictByTag[tag.EngineDataID];// pixelAll.Where(x => x.EngineDataID == tag.EngineDataID).ToList(); } //taglist - objectType.tagsListDropDown = tagAll.Where(X => X.ObjectTypeID == objectType.ObjectTypeID).ToDictionary(x => x.EngineDataID, x => x.TagNumber); + objectType.tagsListDropDown = preGrouped[objectType.ObjectTypeID]; //tagAll.Where(X => X.ObjectTypeID == objectType.ObjectTypeID).ToDictionary(x => x.EngineDataID, x => x.TagNumber); //该类型下的流水 if (objectType.IsSerialNumber == 1) @@ -775,12 +793,12 @@ namespace Learun.Application.Web.AppApi tag.EngineDataProperty = engineDataProps.Where(x => x.EngineDataID == tag.EngineDataID).ToList(); //BUG 1483 - if (!tag.EngineDataProperty.Any(X => X.PropertyName == "起始设备")) + if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_From)) { var newProp = new ec_enginedata_propertyEntity() { EngineDataID = tag.EngineDataID, - PropertyName = "起始设备", + PropertyName = GlobalObject.propName_From, //CaseID = string.IsNullOrEmpty(caseID) ? tag.CaseID : caseID, }; newProp.Create(); @@ -788,12 +806,12 @@ namespace Learun.Application.Web.AppApi ec_enginedata_propertyIBLL.InsertTagProp(projectId, tag.EngineDataID, newProp); tag.EngineDataProperty.Add(newProp); } - if (!tag.EngineDataProperty.Any(X => X.PropertyName == "终止设备")) + if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_To)) { var newProp = new ec_enginedata_propertyEntity() { EngineDataID = tag.EngineDataID, - PropertyName = "终止设备", + PropertyName = GlobalObject.propName_To, //CaseID = string.IsNullOrEmpty(caseID) ? tag.CaseID : caseID, }; newProp.Create(); @@ -804,11 +822,11 @@ namespace Learun.Application.Web.AppApi foreach (ec_enginedata_propertyEntity TagProp in tag.EngineDataProperty) { - if (TagProp.PropertyName == "起始设备") + if (TagProp.PropertyName == GlobalObject.propName_From) { TagProp.PropertyValue = CableConn.End1Tag; } - else if (TagProp.PropertyName == "终止设备") + else if (TagProp.PropertyName == GlobalObject.propName_To) { TagProp.PropertyValue = CableConn.End2Tag; } @@ -921,7 +939,7 @@ namespace Learun.Application.Web.AppApi foreach (var DuplicatePixelData in data) { //先根据老的图例,找出工程ID - var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + DuplicatePixelData.oldPixelCode + "\",\"DrawingFileID\":\"" + oldDrawingID + "\"}"). + var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + DuplicatePixelData.oldPixelCode + "\",\"DrawingFileID\":\"" + oldDrawingID + "\"}", ProjectId). Where(x => x.EngineDataID != ""). Select(x => x.EngineDataID).Distinct(); if (EngineDataIDs == null) diff --git a/Learun.Application.Web/AppApi/PlotLayoutApiController.cs b/Learun.Application.Web/AppApi/PlotLayoutApiController.cs index 7dcabe24..3f2d00b5 100644 --- a/Learun.Application.Web/AppApi/PlotLayoutApiController.cs +++ b/Learun.Application.Web/AppApi/PlotLayoutApiController.cs @@ -1,4 +1,5 @@ using Learun.Application.TwoDevelopment.ZZDT_EC; +using Learun.Application.TwoDevelopment.ZZDT_EC.Frame; using Learun.Util; using Learun.Util.SqlSugar; using NPOI.SS.Formula.Functions; @@ -54,37 +55,13 @@ namespace Learun.Application.Web.AppApi return Fail("找不到基点这个对象类型。"); } #region frame - List frameLists = new List(); - frameLists.Add(new FrameList() - { Num = "", Value = 0 }); - var settings = new ec_projectSettingsBLL(); - var ec_dataitemBLL = new ec_dataitemBLL(); - - var FrameListFlg = settings.GetEntity(GlobalObject.projSetting_enumlist_Frame, ProjectId); - - if (FrameListFlg != null) + var frameBll = new FrameBll(); + var frameLists = frameBll.GetFrameList(ProjectId); + if (frameLists == null) { - - var FrameDetail = ec_dataitemBLL.GetDetailList(FrameListFlg.SettingValue, "", ProjectId, false); - if (FrameDetail == null) - { - return Fail("项目数据字典中,没有找到【肋位号】的下拉项中。");// 或者 无法从数据字典中找到对应的那个下拉 - } - foreach (var item in FrameDetail) - { - double value; - if (double.TryParse(item.DataItemCode, out value)) - { - frameLists.Add(new FrameList() { Num = item.DataItemName, Value = value }); - } - } - - frameLists = frameLists.OrderBy(t => t.Value).ToList(); - } - else - { - return Fail("项目设置中(projectSettings表),没有找到【肋位号】的设置项。");// 或者 无法从数据字典中找到对应的那个下拉 + return Fail("项目数据字典中,没有找到【肋位号】的下拉项中。");// 或者 无法从数据字典中找到对应的那个下拉 } + #endregion var pointsOnDwg = SqlSugarHelper.Db.Queryable().AS(pixelTbName). @@ -148,9 +125,23 @@ namespace Learun.Application.Web.AppApi } //这里要考虑下拉列表 带 ||的问题 - var matchedTagIds = propAll.Where(x => x.PropertyName == keyProp - && (x.PropertyValue == keyValue || x.PropertyValue.StartsWith(keyValue + GlobalObject.enum_separator))). - Select(X => X.EngineDataID).Distinct().ToList(); + List matchedTagIds = new List(); + if (keyProp == GlobalObject.propName_System) + { + //#task 9536 + // 筛选出所有以 "a||" 或 "b||" 开头的元素 + var validSystems = keyValue.Split().ToList(); + matchedTagIds = propAll.Where(item => + validSystems.Any(prefix => item.PropertyValue == prefix) || validSystems.Any(prefix => item.PropertyValue.StartsWith(prefix + GlobalObject.enum_separator)) + ).Select(X => X.EngineDataID).Distinct().ToList(); + } + else + { + matchedTagIds = propAll.Where(x => x.PropertyName == keyProp + && (x.PropertyValue == keyValue || x.PropertyValue.StartsWith(keyValue + GlobalObject.enum_separator))). + Select(X => X.EngineDataID).Distinct().ToList(); + } + //有效范围的设备 var matchedTags = SqlSugarHelper.Db.Queryable().AS(tagTbName). @@ -167,9 +158,9 @@ namespace Learun.Application.Web.AppApi #region 每个基点关联的设备 //甲板 区域都和基点一致的设备 var DeckMatchedTagIds = EquipPropAll.Where(x => x.PropertyName == "甲板号" && x.PropertyValue == basePoint.deck).Select(X => X.EngineDataID).ToList(); - var AreaMatchedTagIds = EquipPropAll.Where(x => x.PropertyName == "区域" && x.PropertyValue == basePoint.area).Select(X => X.EngineDataID).ToList(); - - var matchPointTagIds = DeckMatchedTagIds.Intersect(AreaMatchedTagIds).ToList(); + //var AreaMatchedTagIds = EquipPropAll.Where(x => x.PropertyName == "区域" && x.PropertyValue == basePoint.area).Select(X => X.EngineDataID).ToList(); + //#task 9542 + var matchPointTagIds = DeckMatchedTagIds;//.Intersect(AreaMatchedTagIds).ToList(); foreach (var matchPointTagId in matchPointTagIds) { @@ -361,40 +352,21 @@ namespace Learun.Application.Web.AppApi [HttpGet] public IHttpActionResult GetFrameList(string ProjectId) { - var ec_dataitemBLL = new ec_dataitemBLL(); - var settings = new ec_projectSettingsBLL(); - - var FrameListFlg = settings.GetEntity(GlobalObject.projSetting_enumlist_Frame, ProjectId); - - if (FrameListFlg != null) + var bll = new FrameBll(); + var res = bll.GetFrameList(ProjectId); + if (res == null) { - List frameLists = new List(); + return Fail("项目设置中(projectSettings表),没有找到【肋位号】的设置项中,对应的那个下拉。");// 或者 无法从数据字典中找到对应的那个下拉 - - var res = ec_dataitemBLL.GetDetailList(FrameListFlg.SettingValue, "", ProjectId, false); - if (res == null) - { - return Fail("项目设置中(projectSettings表),没有找到【肋位号】的设置项中,对应的那个下拉。");// 或者 无法从数据字典中找到对应的那个下拉 - } - foreach (var item in res) - { - double value; - if (double.TryParse(item.DataItemCode, out value)) - { - frameLists.Add(new FrameList() { Num = item.DataItemName, Value = value }); - } - } - - frameLists = frameLists.OrderBy(t => t.Value).ToList(); - return Success(frameLists); } else { - return Fail("项目设置中(projectSettings表),没有找到【肋位号】的设置项。");// 或者 无法从数据字典中找到对应的那个下拉 + return Success(res); } } + /// /// 根据ObjectTypeID,查绘制布置图时的图例 /// @@ -467,20 +439,6 @@ namespace Learun.Application.Web.AppApi } - /// - /// 肋位号 - /// - public class FrameList - { - /// - /// 号 - /// - public string Num { get; set; } - /// - /// 值。单位是m - /// - public double Value { get; set; } - } } \ No newline at end of file diff --git a/Learun.Application.Web/AppApi/RelApiController.cs b/Learun.Application.Web/AppApi/RelApiController.cs index b05b934b..40062252 100644 --- a/Learun.Application.Web/AppApi/RelApiController.cs +++ b/Learun.Application.Web/AppApi/RelApiController.cs @@ -77,7 +77,7 @@ namespace Learun.Application.Web.AppApi relData.RelEngineData2ID }; } - ec_relDataBLL.SaveEntitys(ProjectId, relData.RelTypeID, relData.RelEngineData1ID, relData.End2IDs); + ec_relDataBLL.SaveEntitys(ProjectId, relData.RelTypeID, relData.RelEngineData1ID, relData.End2IDs,relData.OPCPixel); } @@ -214,7 +214,7 @@ namespace Learun.Application.Web.AppApi //根据句柄和图纸,先把工程id查出来先 var drawingID = CablePixelID.DrawingID; var pixelID = CablePixelID.CablePixelID; - var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + pixelID + "\",\"DrawingFileID\":\"" + drawingID + "\"}").Distinct(); + var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + pixelID + "\",\"DrawingFileID\":\"" + drawingID + "\"}", ProjectId).Distinct(); if (EngineDataIDs != null && EngineDataIDs.Count() == 1) { var engineDataPixel = EngineDataIDs.First(); @@ -487,7 +487,7 @@ namespace Learun.Application.Web.AppApi } } - + relDataCol = relDataColNotOPC; } else @@ -509,9 +509,9 @@ namespace Learun.Application.Web.AppApi } //根据句柄和图纸,先把工程id查出来先 //获取工程数据图元数据 - var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.TagPixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}"). + var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.TagPixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}", ProjectId). Select(x => x.EngineDataID).Distinct(); - var CableIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.CablePixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}"). + var CableIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.CablePixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}", ProjectId). Select(x => x.EngineDataID).Distinct(); if (EngineDataIDs != null && EngineDataIDs.Count() == 1 && CableIDs != null && CableIDs.Count() == 1) { @@ -536,9 +536,9 @@ namespace Learun.Application.Web.AppApi { //根据句柄和图纸,先把工程id查出来先 //获取工程数据图元数据 - var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.TagPixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}"). + var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.TagPixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}", ProjectId). Select(x => x.EngineDataID).Distinct(); - var CableIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.CablePixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}"). + var CableIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + relData.CablePixelID + "\",\"DrawingFileID\":\"" + relData.DrawingID + "\"}", ProjectId). Select(x => x.EngineDataID).Distinct(); if (EngineDataIDs != null && EngineDataIDs.Count() == 1 && CableIDs != null && CableIDs.Count() == 1) { @@ -547,13 +547,13 @@ namespace Learun.Application.Web.AppApi - if (relData.IsEnd1) + if (relData.IsEnd1)//电缆的起始端连接信息,设备在end1,电缆在end2 { - ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, new List { TagID }, CableID, true); + ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, new List { TagID }, CableID, relData.TagPixelID, true); } else { - ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, CableID, new List { TagID }, true); + ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, CableID, new List { TagID }, relData.TagPixelID, true); } } diff --git a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_drawing_fileController.cs b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_drawing_fileController.cs index ce134c71..806bfb29 100644 --- a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_drawing_fileController.cs +++ b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_drawing_fileController.cs @@ -55,7 +55,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers return View(); } /// - /// 回收站 + /// 图纸回收站 /// /// [HttpGet] diff --git a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedataController.cs b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedataController.cs index b7c86a01..2ebe07da 100644 --- a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedataController.cs +++ b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedataController.cs @@ -40,7 +40,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers return View(); } /// - /// 工程数据回收站 + /// 工程数据Tag回收站 /// /// [HttpGet] diff --git a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_pixelController.cs b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_pixelController.cs index 3fced1d3..8cb7936f 100644 --- a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_pixelController.cs +++ b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_pixelController.cs @@ -32,17 +32,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers #region 获取数据 - /// - /// 获取列表数据 - /// - /// - [HttpGet] - [AjaxOnly] - public ActionResult GetList(string queryJson) - { - var data = ec_enginedata_pixelIBLL.GetList(queryJson); - return Success(data); - } + /// /// 获取工程数据图元表数据 /// diff --git a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_relController.cs b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_relController.cs index 3dee7536..d365cbc3 100644 --- a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_relController.cs +++ b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_enginedata_relController.cs @@ -99,7 +99,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers public ActionResult SaveForm(string ProjectId, string RelTypeID, string RelEngineData1ID, string strEntity) { List relEngineData2IDs = strEntity.ToList(); - ec_enginedata_relIBLL.SaveEntitys(ProjectId, RelTypeID, RelEngineData1ID, relEngineData2IDs); + ec_enginedata_relIBLL.SaveEntitys(ProjectId, RelTypeID, RelEngineData1ID, relEngineData2IDs,""); return Success("保存成功!"); } #endregion diff --git a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_report_fileController.cs b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_report_fileController.cs index 16e0b0a4..aae1c759 100644 --- a/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_report_fileController.cs +++ b/Learun.Application.Web/Areas/ZZDT_EC/Controllers/ec_report_fileController.cs @@ -28,6 +28,7 @@ using System.Text.RegularExpressions; using System.Web.Helpers; using System.Web.Mvc; using static Learun.Application.TwoDevelopment.ZZDT_EC.ec_enginedata_pixelService; +using static Learun.Application.TwoDevelopment.ZZDT_EC.GlobalEnum; using SystemIO = System.IO; namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers @@ -764,7 +765,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers break; } - var cableFromToRel = SqlSugarHelper.Db.Queryable().AS(relTypeTableName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var cableFromToRel = SqlSugarHelper.Db.Queryable().AS(relTypeTableName).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); if (cableFromToRel == null) { throw new Exception($"查不到【{enum_RelType.设备_电缆.ToString()}】这个关联类型。"); @@ -1123,7 +1124,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers //电缆的from to是根据甲板号的order顺序来的,高优先级的就属于from int? FromOrder = -1; int? ToOrder = -1; #region From - var cableFromId = relDatas?.FirstOrDefault(x => x?.RelEngineData2ID == cable?.EngineDataID && x?.RelEngDataObjType1?.Contains("OPC")==false)?.RelEngineData1ID; + var cableFromId = relDatas?.FirstOrDefault(x => x?.RelEngineData2ID == cable?.EngineDataID && x?.RelEngDataObjType1?.Contains(GlobalObject.objectType_OPC)==false)?.RelEngineData1ID; if (!string.IsNullOrEmpty(cableFromId)) { var cableFromObj = Equips.FirstOrDefault(x => x.EngineDataID == cableFromId); @@ -1174,7 +1175,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers } #endregion #region To - var cableEndId = relDatas?.FirstOrDefault(x => x?.RelEngineData1ID == cable?.EngineDataID && x?.RelEngDataObjType2?.Contains("OPC")==false)?.RelEngineData2ID; + var cableEndId = relDatas?.FirstOrDefault(x => x?.RelEngineData1ID == cable?.EngineDataID && x?.RelEngDataObjType2?.Contains(GlobalObject.objectType_OPC)==false)?.RelEngineData2ID; if (!string.IsNullOrEmpty(cableEndId)) { var cableEndObj = Equips.FirstOrDefault(x => x.EngineDataID == cableEndId); @@ -1570,8 +1571,8 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers (eep, ee, eo, edf, edc, edp) => eep.EngineDataID == edp.EngineDataID ) .LeftJoin(subQuery, (eep, ee, eo, edf, edc, edp,dde)=> edp.甲板号 == dde.DataItemName) - .WhereIF(selectModel == 0, (eep, ee, eo, edf, edc, edp, dde) => !eo.FullPathCN.EndsWith("电缆") && !eo.FullPathCN.EndsWith("图框") && !eo.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eo.FullPathCN.EndsWith("OPC") && eep.DeleteFlg == 0) - .WhereIF(selectModel == 1, (eep, ee, eo, edf, edc, edp, dde) => !eo.FullPathCN.EndsWith("电缆") && !eo.FullPathCN.EndsWith("图框") && !eo.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eo.FullPathCN.EndsWith("OPC") && dwgIdCos.Contains(eep.DrawingFileID) && eep.DeleteFlg == 0) + .WhereIF(selectModel == 0, (eep, ee, eo, edf, edc, edp, dde) => !eo.FullPathCN.EndsWith("电缆") && !eo.FullPathCN.EndsWith("图框") && !eo.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eo.FullPathCN.EndsWith(GlobalObject.objectType_OPC) && eep.DeleteFlg == 0) + .WhereIF(selectModel == 1, (eep, ee, eo, edf, edc, edp, dde) => !eo.FullPathCN.EndsWith("电缆") && !eo.FullPathCN.EndsWith("图框") && !eo.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eo.FullPathCN.EndsWith(GlobalObject.objectType_OPC) && dwgIdCos.Contains(eep.DrawingFileID) && eep.DeleteFlg == 0) .GroupBy((eep, ee, eo, edf, edc, edp, dde) => new { edc.DrawingCatalogueNO, diff --git a/Learun.Application.Web/Global.asax.cs b/Learun.Application.Web/Global.asax.cs index 0f239625..b82c196c 100644 --- a/Learun.Application.Web/Global.asax.cs +++ b/Learun.Application.Web/Global.asax.cs @@ -1,5 +1,7 @@ using Learun.Application.Scheduler; using Learun.Application.Web.Common; +using Learun.Cache.Base; +using Learun.Cache.Factory; using System; using System.Timers; using System.Web; @@ -30,12 +32,17 @@ namespace Learun.Application.Web GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); - + ////一天执行一次备份 Timer timer = new Timer(86400000); //timer.Elapsed += Timer_Elapsed; //timer.Start(); + + #region redis清理 + ICache redisObj = CacheFactory.CaChe(); + redisObj.RemoveAll(); + #endregion } private void Timer_Elapsed(object sender, ElapsedEventArgs e) diff --git a/Learun.Application.Web/Learun.Application.Web.csproj.user b/Learun.Application.Web/Learun.Application.Web.csproj.user index 7b853d90..e3b381c6 100644 --- a/Learun.Application.Web/Learun.Application.Web.csproj.user +++ b/Learun.Application.Web/Learun.Application.Web.csproj.user @@ -18,7 +18,7 @@ True False - ShowAllFiles + ProjectFiles diff --git a/Learun.Application.Web/SQL/250829/NoProject/ec_project.sql b/Learun.Application.Web/SQL/250829/NoProject/ec_project.sql index 764159c9..7bb1f6ca 100644 --- a/Learun.Application.Web/SQL/250829/NoProject/ec_project.sql +++ b/Learun.Application.Web/SQL/250829/NoProject/ec_project.sql @@ -1,5 +1,5 @@ ALTER TABLE ec_project ADD `IO_predicted_issue` VARCHAR(50) NULL; -ALTER TABLE ec_project ADD `IO_predicted_issue` VARCHAR(50) NULL; -ALTER TABLE ec_project ADD `IO_predicted_issue` VARCHAR(50) NULL; -ALTER TABLE ec_project ADD `IO_predicted_issue` VARCHAR(50) NULL; +ALTER TABLE ec_project ADD `IO_predicted_construct` VARCHAR(50) NULL; +ALTER TABLE ec_project ADD `IO_real_issue` VARCHAR(50) NULL; +ALTER TABLE ec_project ADD `IO_real_construct` VARCHAR(50) NULL; \ No newline at end of file diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/.vs/Learun.Application.TwoDevelopment.csproj.dtbcache.json b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/.vs/Learun.Application.TwoDevelopment.csproj.dtbcache.json index c8c7fd3e..0a5784bc 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/.vs/Learun.Application.TwoDevelopment.csproj.dtbcache.json +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/.vs/Learun.Application.TwoDevelopment.csproj.dtbcache.json @@ -1 +1 @@ -{"RootPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.TwoDevelopment","ProjectFileName":"Learun.Application.TwoDevelopment.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Plugin\\IEnginedataPlugin.cs"},{"SourceFile":"Plugin\\PluginHelper.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_enginedata.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_Pixel.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_Property.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_Rel.cs"},{"SourceFile":"ZZDT_EC\\ec_access\\ec_accessBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_access\\ec_accessEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_access\\ec_accessService.cs"},{"SourceFile":"ZZDT_EC\\ec_Action\\ec_actionEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetEntityBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_parallel_CableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetWireService.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetService.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetWireEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableService.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseService.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_RefCBService.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_RefCircuitBreakerEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_CircuitBreakerService.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_CircuitBreakerBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_CircuitBreakerEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemdetailEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataCableBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\layoutTagInfoBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataEquipBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyEntityBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLEBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLEData.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLEAttr.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLE.cs"},{"SourceFile":"ZZDT_EC\\ec_notification\\ec_notificationBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_notification\\ec_notificationEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_notification\\ec_notificationService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypenamingconv\\ec_objectNVBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypenamingconv\\ec_objectNVEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypenamingconv\\ec_objectNVService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objTypeLayoutFilterP.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objTypeLayoutFilter.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelEntity_Brief.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripEntity_Brief.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermEntity_Brief.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermService.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripService.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelService.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_projectSettings\\ec_projectSettingsBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_projectSettings\\ec_projectSettingsEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_projectSettings\\ec_projectSettingsService.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectService.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_file\\ec_drawing_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_file\\ec_drawing_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_file\\ec_drawing_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logService.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logBLL.cs"},{"SourceFile":"ZZDT_EC\\GlobalEnum.cs"},{"SourceFile":"ZZDT_EC\\GlobalObject.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyService.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygService.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableService.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupService.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemService.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeService.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableService.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeService.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitService.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\IO_WorkFlowService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\SignalStatusConverter.cs"},{"SourceFile":"ZZDT_EC\\ec_wire_group_notice\\ec_wire_group_noticeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_wire_group_log\\ec_wire_group_logEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_wire_group_propertyhis\\ec_wire_group_propertyhisEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Terminal\\ec_WireTerminalBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Terminal\\ec_WireTerminalService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Terminal\\ec_WireTerminalEntity.cs"},{"SourceFile":"ZZDT_EC\\ProjectSugar.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.6.1.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\ClosedXML.0.102.1\\lib\\netstandard2.0\\ClosedXML.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\Dapper.1.50.2\\lib\\net45\\Dapper.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\DnsClient.1.3.1\\lib\\net45\\DnsClient.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\DocumentFormat.OpenXml.2.16.0\\lib\\net46\\DocumentFormat.OpenXml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\EPPlus.7.0.1\\lib\\net35\\EPPlus.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\EPPlus.Interfaces.6.1.1\\lib\\net35\\EPPlus.Interfaces.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\EPPlus.System.Drawing.6.1.1\\lib\\net35\\EPPlus.System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\ExcelNumberFormat.1.1.0\\lib\\net20\\ExcelNumberFormat.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\SharpZipLib.0.86.0\\lib\\20\\ICSharpCode.SharpZipLib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\Irony.NetCore.1.0.11\\lib\\net461\\Irony.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.Base\\bin\\Debug\\Learun.Application.Base.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.Base\\bin\\Debug\\Learun.Application.Base.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.IM\\bin\\Debug\\Learun.Application.IM.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.IM\\bin\\Debug\\Learun.Application.IM.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Application.Organization\\bin\\Debug\\Learun.Application.Organization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Application.Organization\\bin\\Debug\\Learun.Application.Organization.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.WorkFlow\\bin\\Debug\\Learun.Application.WorkFlow.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.WorkFlow\\bin\\Debug\\Learun.Application.WorkFlow.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Base\\bin\\Debug\\Learun.Cache.Base.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Base\\bin\\Debug\\Learun.Cache.Base.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Cache\\LeaRun.Cache.Factory\\bin\\Debug\\Learun.Cache.Factory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Cache\\LeaRun.Cache.Factory\\bin\\Debug\\Learun.Cache.Factory.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Redis\\bin\\Debug\\Learun.Cache.Redis.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Redis\\bin\\Debug\\Learun.Cache.Redis.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Log\\bin\\Debug\\Learun.Loger.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Log\\bin\\Debug\\Learun.Loger.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Util\\Learun.Util\\bin\\Debug\\Learun.Util.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Util\\Learun.Util\\bin\\Debug\\Learun.Util.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Util\\Learun.Util.Operat\\bin\\Debug\\Learun.Util.Operat.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Util\\Learun.Util.Operat\\bin\\Debug\\Learun.Util.Operat.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\log4net.2.0.7\\lib\\net45-full\\log4net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\Microsoft.Extensions.Logging.Abstractions.2.1.1\\lib\\netstandard2.0\\Microsoft.Extensions.Logging.Abstractions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\Microsoft.Office.Interop.Excel.15.0.4795.1000\\lib\\net20\\Microsoft.Office.Interop.Excel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\Microsoft.Win32.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\netfx.force.conflicts.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\netstandard.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\Newtonsoft.Json.12.0.1\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\O2S.Components.PDFRender4NET.Win.6.0.2.0\\lib\\net40\\O2S.Components.PDFRender4NET.Win.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\Quartz.3.7.0\\lib\\netstandard2.0\\Quartz.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\SixLabors.Fonts.1.0.0\\lib\\netstandard2.0\\SixLabors.Fonts.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\SqlSugar.5.1.4.114\\lib\\SqlSugar.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.AppContext.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Buffers.4.5.1\\lib\\net461\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.Concurrent.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.NonGeneric.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.Specialized.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.EventBasedAsync.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.TypeConverter.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Configuration.ConfigurationManager.6.0.1\\lib\\net461\\System.Configuration.ConfigurationManager.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Configuration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Console.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Data.Common.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Data.OracleClient.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Contracts.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Debug.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Diagnostics.DiagnosticSource.4.7.1\\lib\\net46\\System.Diagnostics.DiagnosticSource.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.FileVersionInfo.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Process.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.StackTrace.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.TextWriterTraceListener.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Tools.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.TraceSource.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Tracing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Drawing.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Dynamic.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Globalization.Calendars.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Globalization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Globalization.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.Compression.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.Compression.ZipFile.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.DriveInfo.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.Watcher.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.IsolatedStorage.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.MemoryMappedFiles.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.IO.Packaging.6.0.0\\lib\\net461\\System.IO.Packaging.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.Pipes.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.UnmanagedMemoryStream.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.Expressions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.Parallel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.Queryable.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Memory.4.5.4\\lib\\net461\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.NameResolution.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.NetworkInformation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Ping.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Requests.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Security.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Sockets.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.WebHeaderCollection.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.WebSockets.Client.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.WebSockets.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Numerics.Vectors.4.5.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ObjectModel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Reflection.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Reflection.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Reflection.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Resources.Reader.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Resources.ResourceManager.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Resources.Writer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Runtime.CompilerServices.Unsafe.4.7.0\\lib\\netstandard2.0\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.CompilerServices.VisualC.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Handles.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.InteropServices.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.InteropServices.RuntimeInformation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Formatters.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Security.AccessControl.6.0.0\\lib\\net461\\System.Security.AccessControl.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Claims.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Algorithms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Csp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Encoding.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.X509Certificates.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Security.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Security.Permissions.6.0.0\\lib\\net461\\System.Security.Permissions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Principal.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\System.Security.Principal.Windows.5.0.0\\lib\\net461\\System.Security.Principal.Windows.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.SecureString.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.ServiceProcess.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Text.Encoding.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Text.Encoding.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Text.RegularExpressions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Overlapped.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Tasks.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Tasks.Parallel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Thread.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.ThreadPool.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Timer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Transactions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.ReaderWriter.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XDocument.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XmlDocument.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XmlSerializer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XPath.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XPath.XDocument.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Server\\packages\\XLParser.1.5.2\\lib\\net461\\XLParser.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\repo\\CODE\\009_DI-Elec\\Server\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.TwoDevelopment\\bin\\Debug\\Learun.Application.TwoDevelopment.dll","OutputItemRelativePath":"Learun.Application.TwoDevelopment.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]} \ No newline at end of file +{"RootPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.TwoDevelopment","ProjectFileName":"Learun.Application.TwoDevelopment.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Plugin\\IEnginedataPlugin.cs"},{"SourceFile":"Plugin\\PluginHelper.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_enginedata.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_Pixel.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_Property.cs"},{"SourceFile":"ZZDT_EC\\Archive\\ec_Archive_Rel.cs"},{"SourceFile":"ZZDT_EC\\ec_access\\ec_accessBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_access\\ec_accessEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_access\\ec_accessService.cs"},{"SourceFile":"ZZDT_EC\\ec_Action\\ec_actionEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetEntityBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_parallel_CableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetWireService.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetService.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetWireEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableSetEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_cable\\ec_CableService.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Case\\ec_CaseService.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_RefCBService.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_RefCircuitBreakerEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_CircuitBreakerService.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_CircuitBreakerBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_CircuitBreaker\\ec_CircuitBreakerEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemdetailEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataCableBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\layoutTagInfoBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataEquipBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyEntityBrief.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLEBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLEData.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLEAttr.cs"},{"SourceFile":"ZZDT_EC\\ec_lookup\\ec_REFLOOKUPTABLE.cs"},{"SourceFile":"ZZDT_EC\\ec_notification\\ec_notificationBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_notification\\ec_notificationEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_notification\\ec_notificationService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypenamingconv\\ec_objectNVBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypenamingconv\\ec_objectNVEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypenamingconv\\ec_objectNVService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objTypeLayoutFilterP.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objTypeLayoutFilter.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelEntity_Brief.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripEntity_Brief.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermEntity_Brief.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip_term\\ec_PanelStripTermService.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_strip\\ec_PanelStripService.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel_channel\\ec_PanelChannelService.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_projectSettings\\ec_projectSettingsBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_projectSettings\\ec_projectSettingsEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_projectSettings\\ec_projectSettingsService.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectService.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_project\\ec_projectIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_catalogue\\ec_drawing_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_file\\ec_drawing_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_file\\ec_drawing_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_file\\ec_drawing_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_publish\\ec_drawing_publishBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synService.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_drawing_syn\\ec_drawing_synBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logService.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_operate_log\\ec_operate_logBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\signalGroup.cs"},{"SourceFile":"ZZDT_EC\\Frame\\FrameBll.cs"},{"SourceFile":"ZZDT_EC\\GlobalEnum.cs"},{"SourceFile":"ZZDT_EC\\GlobalObject.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_template_catalogue\\ec_template_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_template_file\\ec_template_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyService.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_property\\ec_propertyIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttype\\ec_objecttypeBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypep\\ec_objecttypepBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygService.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_propertyg\\ec_propertygBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_catalogue\\ec_library_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_library_file\\ec_library_fileIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata\\ec_enginedataIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_pixel\\ec_enginedata_pixelBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_property\\ec_enginedata_propertyBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibService.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_objecttypelib\\ec_objecttypelibBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableService.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_business_table\\ec_business_tableBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupService.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_project_bakup\\ec_project_bakupIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemService.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_dataitem\\ec_dataitemIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueService.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_catalogue\\ec_report_catalogueBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileService.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_report_file\\ec_report_fileIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_propertyhis\\ec_enginedata_propertyhisBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeService.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_reltype\\ec_reltypeBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relService.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_enginedata_rel\\ec_enginedata_relBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableService.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_synrel_table\\ec_synrel_tableBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeService.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unittype\\ec_measuring_unittypeBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitService.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_measuring_unit\\ec_measuring_unitBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_panel\\ec_PanelService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\IO_WorkFlowService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\ec_Wire_GroupService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group\\SignalStatusConverter.cs"},{"SourceFile":"ZZDT_EC\\ec_wire_group_notice\\ec_wire_group_noticeEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_wire_group_log\\ec_wire_group_logEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_wire_group_propertyhis\\ec_wire_group_propertyhisEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateEntity.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateIBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Group_Template\\ec_Wire_Group_TemplateService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Terminal\\ec_WireTerminalBLL.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Terminal\\ec_WireTerminalService.cs"},{"SourceFile":"ZZDT_EC\\ec_Wire_Terminal\\ec_WireTerminalEntity.cs"},{"SourceFile":"ZZDT_EC\\ProjectSugar.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.6.1.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\ClosedXML.0.102.1\\lib\\netstandard2.0\\ClosedXML.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\Dapper.1.50.2\\lib\\net45\\Dapper.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\DnsClient.1.3.1\\lib\\net45\\DnsClient.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\DocumentFormat.OpenXml.2.16.0\\lib\\net46\\DocumentFormat.OpenXml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\EPPlus.7.0.1\\lib\\net35\\EPPlus.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\EPPlus.Interfaces.6.1.1\\lib\\net35\\EPPlus.Interfaces.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\EPPlus.System.Drawing.6.1.1\\lib\\net35\\EPPlus.System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\ExcelNumberFormat.1.1.0\\lib\\net20\\ExcelNumberFormat.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\SharpZipLib.0.86.0\\lib\\20\\ICSharpCode.SharpZipLib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\Irony.NetCore.1.0.11\\lib\\net461\\Irony.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.Base\\bin\\Debug\\Learun.Application.Base.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.Base\\bin\\Debug\\Learun.Application.Base.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.IM\\bin\\Debug\\Learun.Application.IM.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.IM\\bin\\Debug\\Learun.Application.IM.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Application.Organization\\bin\\Debug\\Learun.Application.Organization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Application.Organization\\bin\\Debug\\Learun.Application.Organization.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.WorkFlow\\bin\\Debug\\Learun.Application.WorkFlow.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.WorkFlow\\bin\\Debug\\Learun.Application.WorkFlow.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Base\\bin\\Debug\\Learun.Cache.Base.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Base\\bin\\Debug\\Learun.Cache.Base.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Cache\\LeaRun.Cache.Factory\\bin\\Debug\\Learun.Cache.Factory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Cache\\LeaRun.Cache.Factory\\bin\\Debug\\Learun.Cache.Factory.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Redis\\bin\\Debug\\Learun.Cache.Redis.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Cache\\Learun.Cache.Redis\\bin\\Debug\\Learun.Cache.Redis.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Log\\bin\\Debug\\Learun.Loger.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Log\\bin\\Debug\\Learun.Loger.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Util\\Learun.Util\\bin\\Debug\\Learun.Util.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Util\\Learun.Util\\bin\\Debug\\Learun.Util.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Util\\Learun.Util.Operat\\bin\\Debug\\Learun.Util.Operat.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Util\\Learun.Util.Operat\\bin\\Debug\\Learun.Util.Operat.dll"},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\log4net.2.0.7\\lib\\net45-full\\log4net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\Microsoft.Extensions.Logging.Abstractions.2.1.1\\lib\\netstandard2.0\\Microsoft.Extensions.Logging.Abstractions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\Microsoft.Office.Interop.Excel.15.0.4795.1000\\lib\\net20\\Microsoft.Office.Interop.Excel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\Microsoft.Win32.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\netfx.force.conflicts.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\netstandard.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\Newtonsoft.Json.12.0.1\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\O2S.Components.PDFRender4NET.Win.6.0.2.0\\lib\\net40\\O2S.Components.PDFRender4NET.Win.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\Quartz.3.7.0\\lib\\netstandard2.0\\Quartz.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\SixLabors.Fonts.1.0.0\\lib\\netstandard2.0\\SixLabors.Fonts.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\SqlSugar.5.1.4.114\\lib\\SqlSugar.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.AppContext.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Buffers.4.5.1\\lib\\net461\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.Concurrent.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.NonGeneric.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Collections.Specialized.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.EventBasedAsync.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ComponentModel.TypeConverter.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Configuration.ConfigurationManager.6.0.1\\lib\\net461\\System.Configuration.ConfigurationManager.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Configuration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Console.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Data.Common.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Data.OracleClient.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Contracts.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Debug.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Diagnostics.DiagnosticSource.4.7.1\\lib\\net46\\System.Diagnostics.DiagnosticSource.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.FileVersionInfo.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Process.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.StackTrace.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.TextWriterTraceListener.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Tools.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.TraceSource.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Diagnostics.Tracing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Drawing.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Dynamic.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Globalization.Calendars.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Globalization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Globalization.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.Compression.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.Compression.ZipFile.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.DriveInfo.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.FileSystem.Watcher.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.IsolatedStorage.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.MemoryMappedFiles.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.IO.Packaging.6.0.0\\lib\\net461\\System.IO.Packaging.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.Pipes.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.IO.UnmanagedMemoryStream.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.Expressions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.Parallel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Linq.Queryable.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Memory.4.5.4\\lib\\net461\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.NameResolution.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.NetworkInformation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Ping.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Requests.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Security.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.Sockets.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.WebHeaderCollection.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.WebSockets.Client.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Net.WebSockets.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Numerics.Vectors.4.5.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ObjectModel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Reflection.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Reflection.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Reflection.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Resources.Reader.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Resources.ResourceManager.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Resources.Writer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Runtime.CompilerServices.Unsafe.4.7.0\\lib\\netstandard2.0\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.CompilerServices.VisualC.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Handles.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.InteropServices.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.InteropServices.RuntimeInformation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Formatters.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Runtime.Serialization.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Security.AccessControl.6.0.0\\lib\\net461\\System.Security.AccessControl.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Claims.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Algorithms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Csp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Encoding.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Cryptography.X509Certificates.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Security.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Security.Permissions.6.0.0\\lib\\net461\\System.Security.Permissions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.Principal.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\System.Security.Principal.Windows.5.0.0\\lib\\net461\\System.Security.Principal.Windows.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Security.SecureString.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.ServiceProcess.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Text.Encoding.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Text.Encoding.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Text.RegularExpressions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Overlapped.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Tasks.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Tasks.Parallel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Thread.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.ThreadPool.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Threading.Timer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Transactions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.ReaderWriter.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XDocument.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XmlDocument.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XmlSerializer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XPath.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\System.Xml.XPath.XDocument.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.6.1\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\repo\\CODE\\009_DI-Elec\\packages\\XLParser.1.5.2\\lib\\net461\\XLParser.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\repo\\CODE\\009_DI-Elec\\Learun.Framework.Module\\Learun.Application.Module\\Learun.Application.TwoDevelopment\\bin\\Debug\\Learun.Application.TwoDevelopment.dll","OutputItemRelativePath":"Learun.Application.TwoDevelopment.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]} \ No newline at end of file diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj index 011106eb..3674d81f 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/Learun.Application.TwoDevelopment.csproj @@ -274,6 +274,7 @@ + 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/Frame/FrameBll.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/Frame/FrameBll.cs new file mode 100644 index 00000000..c9f04b35 --- /dev/null +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/Frame/FrameBll.cs @@ -0,0 +1,64 @@ +using DocumentFormat.OpenXml.Bibliography; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Learun.Application.TwoDevelopment.ZZDT_EC.Frame +{ + public class FrameBll + { + /// + /// 肋位号 + /// + public class FrameList + { + /// + /// 号 + /// + public string Num { get; set; } + + /// + /// 值。单位是m + /// + public double Value { get; set; } + } + public List GetFrameList(string ProjectId) + { + var ec_dataitemBLL = new ec_dataitemBLL(); + var settings = new ec_projectSettingsBLL(); + + var FrameListFlg = settings.GetEntity(GlobalObject.projSetting_enumlist_Frame, ProjectId); + + if (FrameListFlg != null) + { + List frameLists = new List(); + + + var res = ec_dataitemBLL.GetDetailList(FrameListFlg.SettingValue, "", ProjectId, false); + if (res == null) + { + return null;// 或者 无法从数据字典中找到对应的那个下拉 + } + foreach (var item in res) + { + double value; + if (double.TryParse(item.DataItemCode, out value)) + { + frameLists.Add(new FrameList() { Num = item.DataItemName, Value = value }); + } + } + + frameLists = frameLists.OrderBy(t => t.Value).ToList(); + return frameLists; + } + else + { + return null;// 或者 无法从数据字典中找到对应的那个下拉 + } + + } + + } +} 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 0834fa00..8a05f5be 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 @@ -1,8 +1,10 @@ using DocumentFormat.OpenXml.Drawing.Spreadsheet; using Learun.Util; using Learun.Util.SqlSugar; +using SqlSugar; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Data; using System.Linq; @@ -121,7 +123,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var panelStripTableName = ProjectSugar.TableName(ProjID); var allRelTypeDef = SqlSugarHelper.Db.Queryable().AS(relTypeTableName).ToList(); //var x2 = SqlSugarHelper.Db.Queryable().AS(relTypeTableName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); - var cableFromToRel = allRelTypeDef.FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var cableFromToRel = allRelTypeDef.FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); if (cableFromToRel == null) { throw new Exception($"查不到【{enum_RelType.设备_电缆.ToString()}】这个关联类型。"); @@ -166,12 +168,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 +191,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,53 +221,161 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #region 还没有预配置 #endregion } - public ec_CableEntity GetCablePreAssign(string ProjID, string EngineerDataID) + /// + /// 所有的 + /// + /// + /// 按需指定某几个id + /// 是否需要带出电缆上的工程属性 + /// + public List GetCablesPreAssign(string projId, List range, 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 relTypeTable = ProjectSugar.TableName(projId); + var setServ = new ec_CableSetService(); + var wireServ = new ec_CableSetWireService(); + //先查出所有已经预分配的电缆 + var preAssignedCables = SqlSugarHelper.Db.Queryable().AS(table). + WhereIF(range != null && range.Count() > 0, x => range.Contains(x.CableID)). + 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(). + ToDictionary(x => x.EngineDataID); + //var allpropOnFrom = new List(); - var ProjectEntity = new ec_projectEntity(); - ProjectEntity = new ec_projectBLL().GetEntity(ProjID); - if (ProjectEntity == null) + var panels = SqlSugarHelper.Db.Queryable().AS(panelTable). + Where(x => preAssignedCables.Select(xx => xx.PanelID).Contains(x.PanelID)).ToList(); + var panelDict = panels.ToDictionary(x => x.PanelID); + var panelTags = SqlSugarHelper.Db.Queryable().AS(tagTable). + Where(x => panels.Select(xx => xx.EngineerDataID).Contains(x.EngineDataID)).ToList().ToDictionary(x => x.EngineDataID); + var FromRels = new Dictionary();//key是cable,value是from设备的id + var allpropOnFrom = new List(); + if (needProp) { - return null; + var relTypeObj = SqlSugarHelper.Db.Queryable().AS(relTypeTable).ToList(). + FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); + + FromRels = SqlSugarHelper.Db.Queryable().AS(relTable). + Where(x => x.RelTypeID == relTypeObj.RelTypeID && preAssignedCables.Select(c => c.EngineerDataID).Contains(x.RelEngineData2ID)). + Distinct(). + ToList().ToDictionary(x => x.RelEngineData2ID, x => x.RelEngineData1ID); + + //设备上的属性 + //电缆在2,因为1.2.2里用于取的是from端的设备(设备在1,电缆在2) + + allpropOnFrom = SqlSugarHelper.Db.Queryable().AS(propTable). + Where(x => FromRels.Values.Contains(x.EngineDataID)).ToList(); + } - - var res = ec_CableService.GetList("{ProjectId:\"" + ProjID + "\",EngineerDataID:\"" + EngineerDataID + "\"}").FirstOrDefault(); //电缆 - if (res != null) + var allPropOnFromDict = allpropOnFrom.GroupBy(x => x.EngineDataID).ToDictionary(x => x.Key, + groupValue => groupValue.ToDictionary( + item => item.PropertyName, // 内层字典的键:比如 PropertyID + item => item)); // 内层字典的值:整个对象或其某个属性); + 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[cable.EngineerDataID]?.TagNumber; + var panelObj = panelDict[cable.PanelID]; + if (panelObj == null) + { + continue;//分配就已经不合理了 + } + else if (panelObj != null) + { + panelObj.TagNumber = panelTags[panelObj.EngineerDataID]?.TagNumber; + + //1.2.2 系统属性从电缆的from端上的设备中取设备的系统 + var panelId = FromRels[cable.EngineerDataID]; + var panelProps = allPropOnFromDict[panelId]; + cable.System = panelProps[GlobalObject.propName_System]?.PropertyValue; + + + } + + cable.ToPanel = panelObj;//暂用一下topanel属性,相当于电缆预分配的采集箱背后的Panel对象。 + + var IOsOnPanel = panelObj.allowedIOTypes.Split(',').ToList(); //剩下的感觉都可以是set上的参数? foreach (var set in sets) { + #region 判断下io匹配程度 + if (set.PreAssignInOrOut == GlobalEnum.inOrOut.输入.ToString() && cable.PreAssignIOType.ToLower() == "digital") + { + set.IOType = GlobalEnum.IOType.DI; + } + else if (set.PreAssignInOrOut == GlobalEnum.inOrOut.输出.ToString() && cable.PreAssignIOType.ToLower() == "digital") + { + set.IOType = GlobalEnum.IOType.DO; + } + else if (set.PreAssignInOrOut == GlobalEnum.inOrOut.输入.ToString() && cable.PreAssignIOType == "4~20mA") + { + set.IOType = GlobalEnum.IOType.AI; + } + else if (set.PreAssignInOrOut == GlobalEnum.inOrOut.输出.ToString() && cable.PreAssignIOType == "4~20mA") + { + set.IOType = GlobalEnum.IOType.AO; + } + else if (cable.PreAssignIOType == "10v") + { + set.IOType = GlobalEnum.IOType.TenVolt; + } + else if (cable.PreAssignIOType == GlobalEnum.signalType.PT100.ToString()) + { + set.IOType = GlobalEnum.IOType.PT100; + } + else if (cable.PreAssignIOType.ToUpper() == GlobalEnum.signalType.PULSE.ToString()) + { + set.IOType = GlobalEnum.IOType.PULSE; + } + else if (cable.PreAssignIOType == GlobalEnum.signalType.PT100.ToString()) + { + set.IOType = GlobalEnum.IOType.PT100; + } + //下面是通讯的 + else + { + + } + + 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..5e4bbd34 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 @@ -42,13 +42,14 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC public string CableClass { get; set; } = ""; /// - /// 即里面走的信号的信号类型? + /// 即里面走的信号的信号类型?。然后加上,才是 /// RS485 RS422 TCP/IP MQTT(如果是通讯母线,通讯类型是什么。) /// 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 HashSet IOTypesNotMatchedList = new HashSet(); + /// /// /// [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; } diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableSetEntity.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableSetEntity.cs index dc941e9d..aed17d4f 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableSetEntity.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_cable/ec_CableSetEntity.cs @@ -129,6 +129,16 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #region 扩展字段 /// + /// 根据 算出来的(比如4-20mA + 输入)得到AI + /// + [SugarColumn(IsIgnore = true)] + public GlobalEnum.IOType IOType { get; set; } + /// + /// + /// + [SugarColumn(IsIgnore = true)] + public bool IOTypeMatch { get; set; } + /// /// /// [SugarColumn(IsIgnore = true)] diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_drawing_file/ec_drawing_fileBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_drawing_file/ec_drawing_fileBLL.cs index 324459e2..fb143fc1 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_drawing_file/ec_drawing_fileBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_drawing_file/ec_drawing_fileBLL.cs @@ -586,7 +586,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC List ArchiveRels = new List(); var tbRelType = ProjectSugar.TableName(targetProjId); - var RelTypeCableFromTo = SqlSugarHelper.Db.Queryable().AS(tbRelType).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var RelTypeCableFromTo = SqlSugarHelper.Db.Queryable().AS(tbRelType).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); //图上的pixel内容 @@ -824,7 +824,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var sourceTermAll = Db.Queryable().AS($"ec_Panel_Strip_Term_{sourceProject.ProjectIndex}").ToList(); var sourceChAll = Db.Queryable().AS($"ec_Panel_Channel_{sourceProject.ProjectIndex}").ToList(); var sourceCBAll = Db.Queryable().AS($"ec_CircuitBreaker_{sourceProject.ProjectIndex}").ToList(); - var sourceConnRelType = Db.Queryable().AS($"ec_reltype_{sourceProject.ProjectIndex}").ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var sourceConnRelType = Db.Queryable().AS($"ec_reltype_{sourceProject.ProjectIndex}").ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); if (sourceConnRelType == null) { return "原始项目中,找不到 设备-电缆 的连接关系(RelType)定义。"; @@ -859,7 +859,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var targetTypeAll = objectTypeBll.GetList("{ProjectId:\"" + ProjectId + "\"}").ToList(); var TargetDrawingFile = drawingBll.GetList("{ProjectId:\"" + ProjectId + "\"}").ToList(); var targetTags = ec_enginedataService.GetListSingleTable(ProjectId, null); - var targetConnRelType = Db.Queryable().AS($"ec_reltype_{targetProject.ProjectIndex}").ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var targetConnRelType = Db.Queryable().AS($"ec_reltype_{targetProject.ProjectIndex}").ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); if (targetConnRelType == null) { return "当前项目中,找不到 设备-电缆 的连接关系(RelType)定义。"; @@ -986,7 +986,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #region 工程数据和图面 - var resourcePixelList = ec_enginedata_pixelService.GetList("{ProjectId:\"" + item.ProjectId + "\",DrawingFileID:\"" + item.DrawingFileID + "\"}").ToList(); + var resourcePixelList = ec_enginedata_pixelService.GetList("{ProjectId:\"" + item.ProjectId + "\",DrawingFileID:\"" + item.DrawingFileID + "\"}",ProjectId).ToList(); if (resourcePixelList != null && resourcePixelList.Count() > 0)//不包含deleteflg的 { //获取拷贝图纸所有的工程数据ID diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataBLL.cs index 00cf9631..210cdc43 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataBLL.cs @@ -2,6 +2,7 @@ using DocumentFormat.OpenXml.ExtendedProperties; using DocumentFormat.OpenXml.Office2010.Excel; using DocumentFormat.OpenXml.Office2013.Drawing.Chart; +using DocumentFormat.OpenXml.Office2021.DocumentTasks; using DocumentFormat.OpenXml.Spreadsheet; @@ -87,7 +88,8 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var drawingInfo = Db.Queryable().AS(drawingfileTableName) .LeftJoin((edf, edid) => edf.DrawingSystem == edid.DataItemDetailID).AS(dataitemdetailTableName) .Where((edf, edid) => edf.DrawingFileID == drawingId) - .Select((edf, edid) => new { + .Select((edf, edid) => new + { edid.DataItemName, edf.DrawingFileName, edid.UpDataItemDetailID @@ -126,10 +128,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC allTag = FilterEngineDataBySystemTopName(propertiesOfEnginedata, allTag, topDataItemDetailName, dataitemdetailTableName); } var allType = Db.Queryable().AS(typeT). - Where(x => allTag.Select(y => y.ObjectTypeID).Contains(x.ObjectTypeID) + Where(x => allTag.Select(y => y.ObjectTypeID).Contains(x.ObjectTypeID) && !x.FullPathCN.EndsWith("图框") && !x.FullPathCN.EndsWith(GlobalObject.objectType_Base) - && !x.FullPathCN.EndsWith("OPC")).Distinct().ToList(); + && !x.FullPathCN.EndsWith(GlobalObject.objectType_OPC)).Distinct().ToList(); var allPropDef = Db.Queryable().AS(propT).ToList(); //var allObjectTypeP = Db.Queryable().AS(objectTypeP_T).ToList(); var allObjectTypeP = new ec_objecttypepBLL().GetObjectTypePById("", projectId, true).ToList(); @@ -226,8 +228,8 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC groupedProps[cableId] = props; } - bool hasStart = props.Any(x => x.PropertyName == "起始设备"); - bool hasEnd = props.Any(x => x.PropertyName == "终止设备"); + bool hasStart = props.Any(x => x.PropertyName == GlobalObject.propName_From); + bool hasEnd = props.Any(x => x.PropertyName == GlobalObject.propName_To); var cableTypeName = cableTypeMap.TryGetValue(cableId, out var typeName) ? typeName : "电缆"; if (!hasStart) @@ -236,12 +238,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { EngineDataID = cableId, ObjectTypeName = cableTypeName, - PropertyName = "起始设备", + PropertyName = GlobalObject.propName_From, PropertyValue = "" }; props.Add(newStartProp); allTagProps.Add(newStartProp); // ✅ 加入总集合 - tagPropDict[(cableId, "起始设备")] = newStartProp; // ✅ 加入/覆盖字典 + tagPropDict[(cableId, GlobalObject.propName_From)] = newStartProp; // ✅ 加入/覆盖字典 } if (!hasEnd) @@ -250,18 +252,18 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { EngineDataID = cableId, ObjectTypeName = cableTypeName, - PropertyName = "终止设备", + PropertyName = GlobalObject.propName_To, PropertyValue = "" }; props.Add(newEndProp); allTagProps.Add(newEndProp); // ✅ 加入总集合 - tagPropDict[(cableId, "终止设备")] = newEndProp; // ✅ 加入/覆盖字典 + tagPropDict[(cableId, GlobalObject.propName_To)] = newEndProp; // ✅ 加入/覆盖字典 } } // 整合所有补全后的属性 var cableProperties = groupedProps.Values.SelectMany(g => g) - .Where(x => x.PropertyName == "起始设备" || x.PropertyName == "终止设备") + .Where(x => x.PropertyName == GlobalObject.propName_From || x.PropertyName == GlobalObject.propName_To) .ToList(); // 一次性获取所有连接信息 @@ -271,18 +273,18 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { if (cableRelDict.TryGetValue(changeprofromto.EngineDataID, out var conn)) { - if (changeprofromto.PropertyName == "起始设备") + if (changeprofromto.PropertyName == GlobalObject.propName_From) { changeprofromto.PropertyValue = conn.End1Tag; } - else if (changeprofromto.PropertyName == "终止设备") + else if (changeprofromto.PropertyName == GlobalObject.propName_To) { changeprofromto.PropertyValue = conn.End2Tag; } } } - + foreach (var type in allType) { string sheetName = $"{seq}_{type.ObjectTypeName}"; @@ -320,7 +322,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC // 4. 处理 `RequireIfRequired` 依赖项 foreach (var item in requireIfRequiredProps) { - if (requiredProps.ContainsKey(item.trigger_property_id) && (item.IsRequired == -1 || item.IsRequired == null || item.IsRequired==0))//isrequired==0是因为历史遗留数据,正常情况是没有0的 + if (requiredProps.ContainsKey(item.trigger_property_id) && (item.IsRequired == -1 || item.IsRequired == null || item.IsRequired == 0))//isrequired==0是因为历史遗留数据,正常情况是没有0的 { //在必填的里面累加不必填的内容,但是需要处理依赖项的 allLinkedPropSet.Add(item); @@ -366,21 +368,21 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { curSheet.Cells[curRow, 1].Value = tag.TagNumber; //var tagPropDict = allTagProps - //.GroupBy(x => (x.EngineDataID, x.PropertyName)) - //.ToDictionary(g => g.Key, g => g.First()); + //.GroupBy(x => (x.EngineDataID, x.PropertyName)) + //.ToDictionary(g => g.Key, g => g.First()); var tagProp = tagPropDict.TryGetValue((tag.EngineDataID, propDef.PropertyName), out var propVal) ? propVal : null; //var tagProp = allTagProps.FirstOrDefault(x => x.EngineDataID == tag.EngineDataID && x.PropertyName == propDef.PropertyName); if (tagProp == null) { - if (!string.IsNullOrEmpty(propDef.DefaultValue) && propDef.DefaultValue != "0") - { - curSheet.Cells[curRow, propCol].Value = propDef.DefaultValue; - } - else - { - CheckDependency(prop, allTagProps, tag, triggerProName, triggerOperator, triggerValue, curSheet, curRow, propCol, allLinkedPropId); - } + if (!string.IsNullOrEmpty(propDef.DefaultValue) && propDef.DefaultValue != "0") + { + curSheet.Cells[curRow, propCol].Value = propDef.DefaultValue; + } + else + { + CheckDependency(prop, allTagProps, tag, triggerProName, triggerOperator, triggerValue, curSheet, curRow, propCol, allLinkedPropId); + } } else if (string.IsNullOrEmpty(tagProp.PropertyValue) || tagProp.PropertyValue == "0") { @@ -536,7 +538,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC curSheet.Cells[1, 1, totalRows, totalColumns].Style.Locked = false; curSheet.Cells[1, 1, 1, totalColumns].Style.Locked = true; // 锁定第一行 curSheet.Cells[1, 1, totalRows, 1].Style.Locked = true; // 锁定第一列 - curSheet.Protection.IsProtected = true; + curSheet.Protection.IsProtected = true; curSheet.Protection.AllowFormatColumns = true; // 允许调整列宽 } @@ -596,7 +598,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { var isRequired = tagDepObjtypep.IsRequired;//上级的必填阶段值 //只有当前属性的必填阶段大于等于上级关联的必填阶段时才会去判断自身是不是要必填,不然都没有检查下去的必要 - if(prop.IsRequired >= isRequired) + if (prop.IsRequired >= isRequired) { //取某个位号的工程数据属性 var tagDepProp = allTagProps.FirstOrDefault(x => x.EngineDataID == tag.EngineDataID && x.PropertyName == triggerProName); @@ -612,7 +614,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC } } } - + } } else if (prop.dependency_type.Equals(dependency_type.RequireIfRequired)) @@ -633,7 +635,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC else { //不依赖特定条件,且没有默认值,变色 - SetCellColor(curSheet, curRow, propCol, prop.IsRequired, dependency_type.RequireNone,""); + SetCellColor(curSheet, curRow, propCol, prop.IsRequired, dependency_type.RequireNone, ""); } } /// @@ -643,7 +645,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 行 /// 列 /// 图纸阶段 - private void SetCellColor(ExcelWorksheet curSheet, int row, int col, int? isRequired, dependency_type deType, string strTriggerProName="", Dictionary fillStyleCache = null) + private void SetCellColor(ExcelWorksheet curSheet, int row, int col, int? isRequired, dependency_type deType, string strTriggerProName = "", Dictionary fillStyleCache = null) { curSheet.Cells[row, col].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; @@ -808,7 +810,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC .Where((ed, edp, eo) => !SqlFunc.Contains(eo.ObjectTypeName, "%电缆") && !SqlFunc.Contains(eo.ObjectTypeName, "%图框") && - !SqlFunc.Contains(eo.ObjectTypeName, "%"+ GlobalObject.objectType_Base) && + !SqlFunc.Contains(eo.ObjectTypeName, "%" + GlobalObject.objectType_Base) && !SqlFunc.Contains(eo.ObjectTypeName, "%OPC") && validEngineDataIds.Contains(ed.EngineDataID) ) @@ -1165,7 +1167,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #endregion #region 提交数据 - public async Task LockTag(string projId, string enginedataId, string action) + public async System.Threading.Tasks.Task LockTag(string projId, string enginedataId, string action) { var data = LoginUserInfo.Get(); @@ -1505,6 +1507,8 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var objectTypeTableName = TableName(ProjectEntity.ProjectIndex.ToString()); var objectTypepTableName = TableName(ProjectEntity.ProjectIndex.ToString()); var unitTableName = TableName(ProjectEntity.ProjectIndex.ToString()); + var relTableName = TableName(ProjectEntity.ProjectIndex.ToString()); + var reldataTableName = TableName(ProjectEntity.ProjectIndex.ToString()); var lookupBll = new ec_REFLOOKUPTABLEBLL(); @@ -1558,6 +1562,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var typeTbName = ProjectSugar.TableName(projectId); var dwgTbName = ProjectSugar.TableName(projectId); var pixelTbName = ProjectSugar.TableName(projectId); + var dataitemdetailTableName = TableName(projectId); var allType = SqlSugarHelper.Db.Queryable().AS(typeTbName).ToList(); var systems = new ec_dataitemBLL().GetDetailList(GlobalObject.enumlist_System, "", projectId); @@ -1569,14 +1574,24 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { var cableSystemObj = entity.EngineDataProperty.FirstOrDefault(x => x.PropertyName == GlobalObject.propName_System); - var cableSystem = cableSystemObj == null ? "" : systems.FirstOrDefault(x => x.DataItemName == cableSystemObj.PropertyValue)?.DataItemDetailID; - if (cableSystem != null) + string systemNameAfterDealWith = string.Empty; + var cableSystem =string.Empty; + var topDataItemDetailIDofDwg = string.Empty; + var topDataItemDetailIDofEng = string.Empty; + if (cableSystemObj != null) { - if (dwgObj.DrawingSystem == cableSystem && !string.IsNullOrEmpty(dwgObj.DrawingSystem)) + int index = cableSystemObj.PropertyValue.IndexOf("||"); + systemNameAfterDealWith = index >= 0 ? cableSystemObj.PropertyValue.Substring(0, index) : cableSystemObj.PropertyValue; + cableSystem = systems.FirstOrDefault(x => x.DataItemName == systemNameAfterDealWith)?.DataItemDetailID; + //获取图纸系统的最上级ID + topDataItemDetailIDofDwg = GetTopParentDataItemDetailByID(dataitemdetailTableName, dwgObj.DrawingSystem); + //获取位号系统的最上级ID + topDataItemDetailIDofEng= GetTopParentDataItemDetailByID(dataitemdetailTableName, cableSystem); + if (topDataItemDetailIDofDwg == topDataItemDetailIDofEng && !string.IsNullOrEmpty(dwgObj.DrawingSystem)) { //可以修改 } - else if (string.IsNullOrEmpty(cableSystem)) + else if (string.IsNullOrEmpty(topDataItemDetailIDofEng)) { //不可以 allowPropertyModify = false; @@ -1602,6 +1617,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC } } + //var cableSystem = cableSystemObj == null ? "" : systems.FirstOrDefault(x => x.DataItemName == cableSystemObj.PropertyValue)?.DataItemDetailID; + //if (cableSystem != null) + //{ + + + //} } else { @@ -1715,10 +1736,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC //db.UpdateByNoMap(curEnginedata, $"ec_enginedata_{ProjectEntity.ProjectIndex}", "EngineDataID"); Db.Updateable(curEnginedata).AS($"ec_enginedata_{ProjectEntity.ProjectIndex}").ExecuteCommand(); - + } - engineDataID = curEnginedata.EngineDataID;//更新位号时 + engineDataID = curEnginedata.EngineDataID;//更新位号时 #endregion } else @@ -1774,37 +1795,8 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC validTagProps.Add(engineDataProp); } Db.Insertable(validTagProps).AS($"ec_enginedata_property_{ProjectEntity.ProjectIndex}").ExecuteCommand(); - #endregion + #endregion - #region 新增属性(其他的所有case,值用默认值) - //foreach (var caseEntity in cases.Where(x => x.CaseID != caseID)) - //{ - // //把objectTypep里的一套,和默认值带过来即可 - // var enginedataProps = new List(); - // Db.Queryable().AS(propertyTableName) - // .InnerJoin((a, b) => a.PropertyID == b.PropertyID)//&& !string.IsNullOrEmpty(a.DefaultValue) - // .AS(objectTypepTableName) - // .InnerJoin((a, b, c) => b.ObjectTypeID == c.ObjectTypeID && c.ObjectTypeID == entity.ObjectTypeID) - // .AS(objectTypeTableName) - // .LeftJoin((a, b, c, d) => a.DefaultUnit == d.MeasuringUnitID) - // .AS(unitTableName) - // .Select((a, b, c, d) => new { a, d }) - // .ToList().ForEach(x => - // { - // var enginedataProp = new ec_enginedata_propertyEntity() - // { - // EngineDataID = engineDataID, - // PropertyName = x.a.PropertyName, - // PropertyValue = x.a.DefaultValue, - // MeasuringUnit = x.d.MeasuringUnitName, - // CaseID = caseEntity.CaseID, - // }; - // enginedataProp.Create(); - // enginedataProps.Add(enginedataProp); - // }); - // Db.Insertable(enginedataProps).AS($"ec_enginedata_property_{ProjectEntity.ProjectIndex}").ExecuteCommand(); //231007 - //} - #endregion #region 新增ec panel的记录(除了电缆) var objectType = new ec_objecttypeBLL().GetEntity(addEnginedata.ObjectTypeID, projectId); if (objectType != null && !objectType.ObjectTypeName.EndsWith("电缆") && objectType.IsOOTB != 1) @@ -1830,6 +1822,46 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC First(x => x.DrawingFileID == pixel.DrawingFileID && x.PixelCode == pixel.PixelCode); if (existPixel != null) { + #region TASK #9476 + //是否这个句柄换过位号?换过的话,更新为当前位号,同时要更新相关电缆的from/to + var oldTagId = existPixel.EngineDataID; + var newTagId = engineDataID; + if (oldTagId != newTagId) + { + //句柄换位号主体了 + //原本句柄相关的rel + var relObj = Db.Queryable().AS(relTableName).First(x => x.RelType == enum_RelType.设备_电缆); + if (relObj != null) + { + var existCableConns = Db.Queryable().AS(reldataTableName). + Where(x => x.RelTypeID == relObj.RelTypeID && x.OPCPixel == pixel.PixelCode && (x.RelEngineData1ID == oldTagId || x.RelEngineData2ID == oldTagId)).ToList(); + //这里有问题。 + //比如设备B在多个图上多有句柄P1 P2 P3,且这些句柄都关联了多个电缆C1 C2 C3,那么在rel表里就有3个B的记录 + //这时如果进行提交,句柄P1的主体变为了设备BBB,那么B的所有句柄P1 P2 P3都变为BBB了,没有单独分离出来 C1 C2 C3中的某一个 + + //解决:在进行saveconnection,把设备的句柄存入 + + if (existCableConns != null) + { + //更新rel表 + foreach (var existConn in existCableConns) + { + if (existConn.RelEngineData1ID == oldTagId) + { + existConn.RelEngineData1ID = newTagId; + } + else if (existConn.RelEngineData2ID == oldTagId) + { + existConn.RelEngineData2ID = newTagId; + } + } + //更新电缆属性里的 起始设备 和 终止设备 + //不需要 查询时会自动处理 + Db.Updateable(existCableConns).AS($"ec_enginedata_rel_{ProjectEntity.ProjectIndex}").ExecuteCommand(); + } + } + } + #endregion existPixel.Modify(existPixel.EngineDataPixelID); existPixel.DeleteFlg = 0; existPixel.EngineDataID = engineDataID; @@ -1858,102 +1890,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC - - - #region 电缆规格 - //更新电缆规格 - //var cableTableName = ProjectSugar.TableName(projectId); - //var enginedataTableName = ProjectSugar.TableName(projectId); - //var enginedataPropertyTableName = ProjectSugar.TableName(projectId); - //var cableFormat = SqlSugarHelper.Db.Queryable().AS(cableTableName) - // .InnerJoin((a, b) => a.EngineerDataID == b.EngineDataID).AS(enginedataPropertyTableName) - // .InnerJoin((a, b, c) => b.EngineDataID == c.EngineDataID).AS(enginedataTableName) - // .Where((a, b, c) => b.PropertyName == GlobalObject.propName_CableSpec && b.CaseID == caseID && c.TagNumber == entity.TagNumber) - // .Select((a, b, c) => new { a, b }) - // .First(); - //if (cableFormat != null) - //{ - // var cableID = cableFormat.a.CableID; - // var start = cableFormat.b.PropertyValue.Split('*', 'x', 'X', '✖'); - // if (start.Length >= 2) - // { - // int setCount; - // int wireCount; - // var b1 = int.TryParse(start[0], out setCount); - // var b2 = int.TryParse(start[1], out wireCount); - // if (b1 && b2) - // { - // var cableSetTableName = ProjectSugar.TableName(projectId); - // var cableSetWireTableName = ProjectSugar.TableName(projectId); - // var sets = SqlSugarHelper.Db.Queryable().AS(cableSetTableName).Where(x => x.CableID == cableID).ToList(); - // var wires = SqlSugarHelper.Db.Queryable().AS(cableSetWireTableName).Where(x => sets.Select(Y => Y.CableSetID).Contains(x.CableSetID)).ToList(); - // var setMax = Math.Max(setCount, sets.Count); - // var insSets = new List(); - // var insWires = new List(); - // var delSets = new List(); - // var delWires = new List(); - // for (int i = 0; i < setMax; i++) - // { - // var set = new ec_CableSetEntity(); - // if (i <= setCount - 1 && i <= sets.Count - 1) - // { - // set = sets[i]; - // } - // if (i > setCount - 1) - // { - // var delSet = sets[i]; - // delSets.Add(delSet); - // delWires.AddRange(wires.Where(x => x.CableSetID == delSet.CableSetID).ToList()); - // } - // if (i > sets.Count - 1) - // { - // set = new ec_CableSetEntity() - // { - // CableID = cableID, - // CableSetSeq = i + 1, - // CableSetName = $"Set{i + 1}", - // }; - // set.Create(); - // insSets.Add(set); - // } - // if (!string.IsNullOrEmpty(set.CableSetID)) - // { - // var setWires = wires.Where(x => x.CableSetID == set.CableSetID).ToList(); - // var wireMax = Math.Max(wireCount, setWires.Count); - // for (int j = 0; j < wireMax; j++) - // { - // if (j > wireCount - 1) - // { - // var delWire = setWires[j]; - // delWires.Add(delWire); - // } - // if (j > setWires.Count - 1) - // { - // var wire = new ec_CableSetWireEntity() - // { - // //CableID = cableID, - // CableSetID = set.CableSetID, - // SetLevel = j, - // Wire_Tag = $"W{j + 1}" - // }; - // wire.Create(); - // insWires.Add(wire); - // } - // } - // } - // } - // SqlSugarHelper.Db.Insertable(insSets).AS(cableSetTableName).ExecuteCommand(); - // SqlSugarHelper.Db.Insertable(insWires).AS(cableSetWireTableName).ExecuteCommand(); - // SqlSugarHelper.Db.Deleteable(delWires).AS(cableSetWireTableName).ExecuteCommand(); - // SqlSugarHelper.Db.Deleteable(delSets).AS(cableSetTableName).ExecuteCommand(); - // } - // } - //} - #endregion Db.CommitTran(); } catch (Exception ex) - { + { log4net.LogManager.GetLogger("ERROR").Error(ex.StackTrace + " || " + ex.Message); Db.RollbackTran(); if (ex is ExceptionEx) @@ -2489,6 +2429,38 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC return current.DataItemName; } + /// + /// 找到最上级的DataItemDetailID + /// + /// 表名 + /// 当前的DataItemName + /// 最上层的Name + public string GetTopParentDataItemDetailByID(string DtatTableName, string strDataItemDetailID) + { + // 先找到初始节点 + var current = Db.Queryable().AS(DtatTableName).Where(x => x.DataItemDetailID == strDataItemDetailID).First(); + + // 如果找不到,直接返回 null + if (current == null) + return null; + + // 循环向上查找 + while (current.UpDataItemDetailID != "0") + { + // upDataItemDetailID是上级节点的DataItemDetailID + var parent = Db.Queryable().AS(DtatTableName).Where(x => x.DataItemDetailID == current.UpDataItemDetailID).First(); + + // 如果找不到就返回 null(防止死循环) + if (parent == null) + return null; + + current = parent; + } + + // 返回最上层的 DataItemDetailID(也就是 0对应的ID) + return current.DataItemDetailID; + } + /// /// 过滤掉与图纸系统最上层不一致的 EngineDataID /// @@ -2648,7 +2620,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC // 筛选出“真实设备”,这里排除OPC、通讯器等中转对象 var deviceTags = endpointInfo - .Where(x => !x.objectType.Contains("OPC")) + .Where(x => !x.objectType.Contains(GlobalObject.objectType_OPC)) .Select(x => x.tagNumber) .Distinct() .Take(2) // 只取前两个设备 @@ -2660,5 +2632,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC return result; } + + } } diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataEntity.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataEntity.cs index 50ff8185..33d5aae5 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataEntity.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataEntity.cs @@ -136,6 +136,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC UserInfo userInfo = LoginUserInfo.Get(); this.CreateUserID = userInfo.userId; } + public void Modify() + { + this.UpdateTime = Time.MySqlTime; + UserInfo userInfo = LoginUserInfo.Get(); + this.UpdateUserID = userInfo.userId; + } /// /// 编辑调用 /// diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataService.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataService.cs index 2936a16c..fd6b33b8 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataService.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata/ec_enginedataService.cs @@ -8,6 +8,7 @@ using System.Data; using System.Linq; using System.Text; using System.Windows.Controls.Primitives; +using static Learun.Application.TwoDevelopment.ZZDT_EC.GlobalEnum; using DbType = System.Data.DbType; namespace Learun.Application.TwoDevelopment.ZZDT_EC @@ -63,11 +64,11 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC WHERE t1.DataStatus != '00001' "); if (queryParam["ProjectId"].IsEmpty()) { - strSql.Append(" AND (select count(1) from ec_enginedata_pixel st2 where st2.EngineDataID = t1.EngineDataID) = 0 "); + return new List(); } else { - strSql.Append($" AND (select count(1) from ec_enginedata_pixel_{ProjectEntity.ProjectIndex} st2 where st2.EngineDataID = t1.EngineDataID) = 0 "); + //strSql.Append($" AND (select count(1) from ec_enginedata_pixel_{ProjectEntity.ProjectIndex} st2 where st2.EngineDataID = t1.EngineDataID) = 0 "); } // 虚拟参数 @@ -89,7 +90,22 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC strSql.Append(" AND t1.DataStatus = @DataStatus "); } //return this.BaseRepository().FindList(strSql.ToString(), dp, pagination); - return SqlSugarHelper.Db.SqlQueryable(strSql.ToString()).AddParameters(dp).ToPageList(pagination.page, pagination.rows); + var sql = strSql.ToString(); + var res = SqlSugarHelper.Db.SqlQueryable(sql).AddParameters(dp).ToPageList(pagination.page, pagination.rows); + + var allTagIds = res.Select(x => x.EngineDataID).Distinct().ToList(); + + var pixelTbName = ProjectSugar.TableName(ProjectEntity.ProjectId); + + var allPixels = SqlSugarHelper.Db.Queryable().AS(pixelTbName) + .Where(x => allTagIds.Contains(x.EngineDataID) && x.DeleteFlg !=1) + .ToList(); + var allTagIdsHavingPixel = allPixels.Select(x => x.EngineDataID).Distinct().ToList(); + + var TagNotHavingPixel = allTagIds.Except(allTagIdsHavingPixel).ToList(); + + var res2 = res.Where(x => TagNotHavingPixel.Contains(x.EngineDataID)).ToList(); + return res2; } catch (Exception ex) { @@ -215,7 +231,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC } } } - + #endregion @@ -269,7 +285,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC SqlSugarHelper.Db.Deleteable(chs).AS($"ec_panel_channel_{ProjectEntity.ProjectIndex}").ExecuteCommand(); //SqlSugarHelper.Db.Ado.ExecuteCommand($@" DELETE FROM ec_panel_channel_{ProjectEntity.ProjectIndex} WHERE PanelID = '{panel.PanelID}'"); var wts = SqlSugarHelper.Db.Queryable().AS($"ec_wire_terminal_{ProjectEntity.ProjectIndex}"). - Where(x => terms.Select(y=>y.TermID).Contains(x.TermID)).ToList(); + Where(x => terms.Select(y => y.TermID).Contains(x.TermID)).ToList(); SqlSugarHelper.Db.Deleteable(wts).AS($"ec_wire_terminal_{ProjectEntity.ProjectIndex}").ExecuteCommand(); //SqlSugarHelper.Db.Ado.ExecuteCommand($@" DELETE FROM ec_wire_terminal_{ProjectEntity.ProjectIndex} WHERE PanelID = '{panel.PanelID}'"); } @@ -723,7 +739,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC } } - + /// /// 更新工程数据属性默认值 /// diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelBLL.cs index 64eed1dd..94c0b480 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelBLL.cs @@ -199,11 +199,11 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 获取列表数据 /// /// - public IEnumerable GetList(string queryJson) + public IEnumerable GetList(string queryJson,string projId) { try { - return ec_enginedata_pixelService.GetList(queryJson); + return ec_enginedata_pixelService.GetList(queryJson,projId); } catch (Exception ex) { @@ -400,7 +400,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC .LeftJoin((edp, ede) => edp.EngineDataID == ede.EngineDataID).AS(enginedataTableName) .LeftJoin((edp, ede, eot) => ede.ObjectTypeID == eot.ObjectTypeID).AS(objectTypeTableName) .Where((edp, ede, eot) => edp.DeleteFlg == 0 && edp.DrawingFileID == drawingFileID && pixelEntities.Select(y => y.PixelCode).Contains(edp.PixelCode) - && !eot.FullPathCN.EndsWith("图框") && !eot.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eot.FullPathCN.EndsWith("OPC")) + && !eot.FullPathCN.EndsWith("图框") && !eot.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eot.FullPathCN.EndsWith(GlobalObject.objectType_OPC)) .Select((edp, ede, eot) => edp.EngineDataID) .Distinct() .ToList(); @@ -460,7 +460,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC // 获取所有需要处理的属性(只包含电缆对象,起始设备和终止设备) var cableProperties = AllPropsOfEng .Where(x => x.ObjectTypeName.Contains("电缆") && - (x.PropertyName == "起始设备" || x.PropertyName == "终止设备")) + (x.PropertyName == GlobalObject.propName_From || x.PropertyName == GlobalObject.propName_To)) .ToList(); // 提取所有 CableID @@ -474,36 +474,34 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { if (cableRelDict.TryGetValue(changeprofromto.EngineDataID, out var conn)) { - if (changeprofromto.PropertyName == "起始设备") + if (changeprofromto.PropertyName == GlobalObject.propName_From) { changeprofromto.PropertyValue = conn.End1Tag; } - else if (changeprofromto.PropertyName == "终止设备") + else if (changeprofromto.PropertyName == GlobalObject.propName_To) { changeprofromto.PropertyValue = conn.End2Tag; } } } + + // 构建一个字典,key = (EngineDataID, PropertyID),value = PropertyValue + var propDict = AllPropsOfEng + .GroupBy(x => (x.EngineDataID, x.PropertyID)) + .ToDictionary(g => g.Key, g => g.First().PropertyValue); + //检查必填属性 foreach (var checkproperty in NeedCheckProperties) { - //如果ec_enginedata_propety里面没有必填属性要求的这个属性,就代表没有保存,认为是没有填值,为空 - if (AllPropsOfEng.Where(x => x.EngineDataID == checkproperty.EngineDataID).Select(x => x.PropertyID).Contains(checkproperty.PropertyID)) + var key = (checkproperty.EngineDataID, checkproperty.PropertyID); + if (propDict.TryGetValue(key, out var propertyValue)) { - var PropertyValue = AllPropsOfEng - .FirstOrDefault(x => - x.EngineDataID == checkproperty.EngineDataID && - x.PropertyID == checkproperty.PropertyID) - ?.PropertyValue; - //foreach (var property in AllPropsOfEng) - //{ //如果ec_enginedata_propety里面的EngineDataID等于需要检查对象的EngineDataID,且属性ID也能对上,且属性值为空或者NULL,则认为没有填写 - if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") - { - errText = $"图面有对象【{checkproperty.TagNumber}】在即时更新阶段的必填属性【{checkproperty.PropertyName}】值为空,不能检入,请执行“属性检查”功能对图纸进行属性检查。"; - return res = false; - } - //} + if (string.IsNullOrEmpty(propertyValue) || propertyValue == "0") + { + errText = $"图面有对象【{checkproperty.TagNumber}】在即时更新阶段的必填属性【{checkproperty.PropertyName}】值为空,不能检入,请执行“属性检查”功能对图纸进行属性检查。"; + return res = false; + } } else { @@ -525,7 +523,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC TagNumber = ee.TagNumber, ObjectTypeID = ee.ObjectTypeID, PropertyID = ote.PropertyID, - PropertyName=epe.PropertyName, + PropertyName = epe.PropertyName, PropertyGID = epe.PropertyGID, IsRequired = ote.IsRequired, dependency_type = SqlFunc.IIF(SqlFunc.IsNullOrEmpty(ote.dependency_type), dependency_type.RequireNone, ote.dependency_type), @@ -535,131 +533,140 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC ValueInGroup = false }) .ToList(); + // ====== [1] 提前建索引,避免循环里反复Where ====== + + // AllPropsOfEng 索引: (EngineDataID, PropertyID) -> 属性对象 + var allPropsDict = AllPropsOfEng + .GroupBy(x => (x.EngineDataID, x.PropertyID)) + .ToDictionary(g => g.Key, g => g.First()); + + // quaryNeedCheckPropertiesDependency 索引: (EngineDataID, PropertyID) -> Dependency对象 + var depDict = quaryNeedCheckPropertiesDependency + .GroupBy(x => (x.EngineDataID, x.PropertyID)) + .ToDictionary(g => g.Key, g => g.First()); + + // 索引: (PropertyID, ObjectTypeID) -> Dependency对象 (用于 RequireIf) + var depByPropObjDict = quaryNeedCheckPropertiesDependency + .GroupBy(x => (x.PropertyID, x.ObjectTypeID)) + .ToDictionary(g => g.Key, g => g.First()); + + // 索引: (PropertyGID, EngineDataID) -> List (用于 RequireMutually) + var depByGroupDict = quaryNeedCheckPropertiesDependency + .GroupBy(x => (x.PropertyGID, x.EngineDataID)) + .ToDictionary(g => g.Key, g => g.ToList()); foreach (var checkproperty in quaryNeedCheckPropertiesDependency) { - //先看前置属性必填的情况 + // ----------------- RequireIfRequired ----------------- if (checkproperty.dependency_type == dependency_type.RequireIfRequired && !string.IsNullOrEmpty(checkproperty.trigger_property_id)) { - //获得关联对象是否必填 - var depObjIsNotRequired = quaryNeedCheckPropertiesDependency - .Where(x => x.EngineDataID == checkproperty.EngineDataID - && x.PropertyID == checkproperty.trigger_property_id) - .Select(x => x.IsRequired) - .FirstOrDefault(); - //如果关联对象是必填的,那么就需要检查属性本身的值是不是空或者0 - if (depObjIsNotRequired == 1 && checkproperty.IsRequired == 1)//前置属性即时更新版必填的话,自己的即时更新版也必填,不然本身自己也显示不到EXCEL里面 + if (depDict.TryGetValue((checkproperty.EngineDataID, checkproperty.trigger_property_id), out var depObj) + && depObj.IsRequired == 1 && checkproperty.IsRequired == 1) { - var PropertyValue = AllPropsOfEng - .FirstOrDefault(x => - x.EngineDataID == checkproperty.EngineDataID && - x.PropertyID == checkproperty.PropertyID) - ?.PropertyValue; - //foreach (var property in AllPropsOfEng.Where(x=>x.EngineDataID.Equals(checkproperty.EngineDataID))) - //{ - //判断当前属性的值是不是为空、为NULL还是为0,如果是的话,报错 - if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") + if (allPropsDict.TryGetValue((checkproperty.EngineDataID, checkproperty.PropertyID), out var prop)) + { + var value = prop.PropertyValue; + if (string.IsNullOrEmpty(value) || value == "0") { errText = $"图面有对象【{checkproperty.TagNumber}】,其前置属性设置了必填,所以属性【{checkproperty.PropertyName}】本身也必须填值,不然不能检入,请执行“属性检查”功能对图纸进行属性检查。"; return res = false; } - //} + } } - } - //前置属性符合某种条件时 + // ----------------- RequireIf ----------------- if (checkproperty.dependency_type == dependency_type.RequireIf && !string.IsNullOrEmpty(checkproperty.trigger_property_id) && !string.IsNullOrEmpty(checkproperty.trigger_operator) && !string.IsNullOrEmpty(checkproperty.trigger_value)) { - var triggerOperator = checkproperty.trigger_operator; - var triggerValue = checkproperty.trigger_value; var triggerPropertyId = checkproperty.trigger_property_id; - //先从该对象的属性列表里面找前置条件的那个属性,如果没有找到,证明前置属性为NULL,就是空,那么也就不用继续考虑本身是不是为空了 - if (AllPropsOfEng.Where(x => x.EngineDataID == checkproperty.EngineDataID).Select(x => x.PropertyID).Contains(triggerPropertyId)) + + // 如果前置属性在 AllProps 里面找不到,就直接跳过 + if (allPropsDict.ContainsKey((checkproperty.EngineDataID, triggerPropertyId))) { - //找到上级的Isrequired值 - var upObjectIsRequired = quaryNeedCheckPropertiesDependency.Where(x => x.PropertyID.Equals(triggerPropertyId) && x.ObjectTypeID.Equals(checkproperty.ObjectTypeID)).Select(x => x.IsRequired).FirstOrDefault(); - //当前属性的IsRequired和上级的IsRequired都是即时更新版必填时才可以去做检入时检查 - if (upObjectIsRequired == 1 && checkproperty.IsRequired == 1) + if (depByPropObjDict.TryGetValue((triggerPropertyId, checkproperty.ObjectTypeID), out var upObj) + && upObj.IsRequired == 1 && checkproperty.IsRequired == 1) { - var PropertyValue = AllPropsOfEng - .FirstOrDefault(x => - x.EngineDataID == checkproperty.EngineDataID && - x.PropertyID == checkproperty.PropertyID) - ?.PropertyValue; - //进入循环了,证明能找到前置属性 - //foreach (var property in AllPropsOfEng) - //{ - //先判断当前属性值是不是空或者0,不是的话也就不用去进一步判断了,如果是空或者0,则去看她的前置属性 - if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") + // 当前属性值 + string propertyValue = allPropsDict.TryGetValue((checkproperty.EngineDataID, checkproperty.PropertyID), out var prop) + ? prop.PropertyValue : null; + + if (string.IsNullOrEmpty(propertyValue) || propertyValue == "0") + { + // 找上级属性值 + if (!allPropsDict.TryGetValue((checkproperty.EngineDataID, triggerPropertyId), out var upProp)) { - //取当前属性的上级联动属性值 - var upPropertyValue = AllPropsOfEng?.Where(x => - x?.EngineDataID != null - && x.PropertyID != null - && x.EngineDataID.Equals(checkproperty?.EngineDataID) - && x.PropertyID.Equals(triggerPropertyId)).FirstOrDefault(); - if (upPropertyValue == null) - { - errText = $"图面对象【{checkproperty.TagNumber}】,其属性【{checkproperty.PropertyName}】的前置属性【{triggerPropertyId}】找不到。请管理员确认。"; - return res = false; - } - //如果上级属性值符合条件,那么同时根据上面的判断,当前属性值不是空就是0,那么需要报错 - if ((triggerOperator == "=" && upPropertyValue.PropertyValue.ToUpper().Equals(triggerValue.ToUpper())) || - (triggerOperator == ">" && double.Parse(upPropertyValue.PropertyValue) > double.Parse(triggerValue)) || - (triggerOperator == "<" && double.Parse(upPropertyValue.PropertyValue) < double.Parse(triggerValue)) || - (triggerOperator == "!=" && !upPropertyValue.PropertyValue.ToUpper().Equals(triggerValue.ToUpper()))) - { - errText = $"图面有对象【{checkproperty.TagNumber}】,其前置属性【{upPropertyValue.PropertyName}】符合{triggerOperator}条件,所以属性本身【{checkproperty.PropertyName}】必须填值,不然不能检入,请执行“属性检查”功能对图纸进行属性检查。"; - return res = false; - } + errText = $"图面对象【{checkproperty.TagNumber}】,其属性【{checkproperty.PropertyName}】的前置属性【{triggerPropertyId}】找不到。请管理员确认。"; + return res = false; } - //} + + // 判断触发条件 + bool conditionMet = false; + var triggerValue = checkproperty.trigger_value; + var triggerOperator = checkproperty.trigger_operator; + + switch (triggerOperator) + { + case "=": + conditionMet = upProp.PropertyValue?.Equals(triggerValue, StringComparison.OrdinalIgnoreCase) == true; + break; + case "!=": + conditionMet = !upProp.PropertyValue?.Equals(triggerValue, StringComparison.OrdinalIgnoreCase) == true; + break; + case ">": + if (double.TryParse(upProp.PropertyValue, out var upVal) && + double.TryParse(triggerValue, out var trgVal)) + conditionMet = upVal > trgVal; + break; + case "<": + if (double.TryParse(upProp.PropertyValue, out var upVal2) && + double.TryParse(triggerValue, out var trgVal2)) + conditionMet = upVal2 < trgVal2; + break; + } + + if (conditionMet) + { + errText = $"图面有对象【{checkproperty.TagNumber}】,其前置属性【{upProp.PropertyName}】符合{triggerOperator}条件,所以属性本身【{checkproperty.PropertyName}】必须填值,不然不能检入,请执行“属性检查”功能对图纸进行属性检查。"; + return res = false; + } + } } } } - //最后看组内互斥,检入的话只检查即时更新版的 + // ----------------- RequireMutually ----------------- if (checkproperty.dependency_type == dependency_type.RequireMutually && checkproperty.ValueInGroup == false - && checkproperty.IsRequired==1) + && checkproperty.IsRequired == 1) { - var PgID = string.Empty; - //如果ec_enginedata_propety里面没有必填属性要求的这个属性,就代表没有保存,认为是没有填值,为空 - if (AllPropsOfEng.Where(x => x.EngineDataID == checkproperty.EngineDataID).Select(x => x.PropertyID).Contains(checkproperty.PropertyID)) + if (allPropsDict.TryGetValue((checkproperty.EngineDataID, checkproperty.PropertyID), out var prop)) { - var PropertyValue = AllPropsOfEng - .FirstOrDefault(x => - x.EngineDataID == checkproperty.EngineDataID && - x.PropertyID == checkproperty.PropertyID) - ?.PropertyValue; - //foreach (var property in AllPropsOfEng) - //{ - //如果ec_enginedata_propety里面的EngineDataID等于需要检查对象的EngineDataID,且属性ID也能对上,也属于同一group,且属性值为空或者NULL,则认为没有填写 - if (!string.IsNullOrEmpty(PropertyValue) && PropertyValue != "0") - { - PgID = checkproperty.PropertyGID;//获得有属性值的属性组ID - //break; - } - //} - if (!string.IsNullOrEmpty(PgID)) + var value = prop.PropertyValue; + if (!string.IsNullOrEmpty(value) && value != "0") { - foreach (var propertyvalue in quaryNeedCheckPropertiesDependency - .Where(x => x.PropertyGID == PgID - && x.EngineDataID == checkproperty.EngineDataID - && x.dependency_type == dependency_type.RequireMutually)) + // 有属性值 → 找到组 + var groupKey = (checkproperty.PropertyGID, checkproperty.EngineDataID); + if (depByGroupDict.TryGetValue(groupKey, out var groupList)) { - //把这个对象上只要属于这个检查组的ValueInGroup都打上标记,代表检查组里面至少有一个属性是有值的 - propertyvalue.ValueInGroup = true; + foreach (var dep in groupList) + { + dep.ValueInGroup = true; + } } } } } } - var lstValueGroup = quaryNeedCheckPropertiesDependency.Where(x => x.dependency_type == dependency_type.RequireMutually && x.IsRequired== 1).Select(x => new { x.ValueInGroup, x.EngineDataID }).Distinct().ToList(); + // ====== [3] 组内互斥最后检查 ====== + var lstValueGroup = quaryNeedCheckPropertiesDependency + .Where(x => x.dependency_type == dependency_type.RequireMutually && x.IsRequired == 1) + .Select(x => new { x.ValueInGroup, x.EngineDataID }) + .Distinct() + .ToList(); + foreach (var item in lstValueGroup) { if (item.ValueInGroup == false) @@ -753,7 +760,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC .LeftJoin((edp, ede) => edp.EngineDataID == ede.EngineDataID).AS(enginedataTableName) .LeftJoin((edp, ede, eot) => ede.ObjectTypeID == eot.ObjectTypeID).AS(objectTypeTableName) .Where((edp, ede, eot) => edp.DeleteFlg == 0 && edp.DrawingFileID == drawingFileID - && !eot.FullPathCN.EndsWith("图框") && !eot.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eot.FullPathCN.EndsWith("OPC")) + && !eot.FullPathCN.EndsWith("图框") && !eot.FullPathCN.EndsWith(GlobalObject.objectType_Base) && !eot.FullPathCN.EndsWith(GlobalObject.objectType_OPC)) .Select((edp, ede, eot) => edp.EngineDataID) .Distinct() .ToList(); @@ -812,7 +819,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC // 获取所有需要处理的属性(只包含电缆对象,起始设备和终止设备) var cableProperties = quaryPropertiesOfEng .Where(x => x.ObjectTypeName.Contains("电缆") && - (x.PropertyName == "起始设备" || x.PropertyName == "终止设备")) + (x.PropertyName == GlobalObject.propName_From || x.PropertyName == GlobalObject.propName_To)) .ToList(); // 提取所有 CableID @@ -826,16 +833,17 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { if (cableRelDict.TryGetValue(changeprofromto.EngineDataID, out var conn)) { - if (changeprofromto.PropertyName == "起始设备") + if (changeprofromto.PropertyName == GlobalObject.propName_From) { changeprofromto.PropertyValue = conn.End1Tag; } - else if (changeprofromto.PropertyName == "终止设备") + else if (changeprofromto.PropertyName == GlobalObject.propName_To) { changeprofromto.PropertyValue = conn.End2Tag; } } } + //没有依赖对象但要必填的循环 foreach (var checkproperty in quaryNeedCheckProperties) { @@ -849,12 +857,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC ?.PropertyValue; //foreach (var property in quaryPropertiesOfEng) //{ - //如果ec_enginedata_propety里面的EngineDataID等于需要检查对象的EngineDataID,且属性ID也能对上,且属性值为空或者NULL,则认为没有填写 - if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") - { - errText = "图面有对象在" + reversion + "阶段或者之前阶段的必填属性值为空,不能发布,请执行“属性检查”功能对图纸进行属性检查。"; - return res = false; - } + //如果ec_enginedata_propety里面的EngineDataID等于需要检查对象的EngineDataID,且属性ID也能对上,且属性值为空或者NULL,则认为没有填写 + if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") + { + errText = "图面有对象在" + reversion + "阶段或者之前阶段的必填属性值为空,不能发布,请执行“属性检查”功能对图纸进行属性检查。"; + return res = false; + } //} } else @@ -909,12 +917,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC ?.PropertyValue; //foreach (var property in quaryPropertiesOfEng) //{ - //判断当前属性的值是不是为空、为NULL还是为0,如果是的话,报错 - if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") - { - errText = "图面有对象她的前置属性在" + reversion + "阶段或者再之前阶段设置了必填,所以她必须填值,不然不能发布,请执行“属性检查”功能对图纸进行属性检查。"; - return res = false; - } + //判断当前属性的值是不是为空、为NULL还是为0,如果是的话,报错 + if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") + { + errText = "图面有对象她的前置属性在" + reversion + "阶段或者再之前阶段设置了必填,所以她必须填值,不然不能发布,请执行“属性检查”功能对图纸进行属性检查。"; + return res = false; + } //} } } @@ -945,26 +953,26 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC //进入循环了,证明能找到前置属性 //foreach (var property in quaryPropertiesOfEng) //{ - //先判断当前属性值是不是空或者0,不是的话也就不用去进一步判断了,如果是空或者0,则去看她的前置属性 - if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") + //先判断当前属性值是不是空或者0,不是的话也就不用去进一步判断了,如果是空或者0,则去看她的前置属性 + if (string.IsNullOrEmpty(PropertyValue) || PropertyValue == "0") + { + //取当前属性的上级联动属性值 + var upPropertyValue = quaryPropertiesOfEng?.Where(x => + x?.EngineDataID != null + && x.PropertyID != null + && x.EngineDataID.Equals(checkproperty?.EngineDataID) + && x.PropertyID.Equals(triggerPropertyId)) + .Select(x => x.PropertyValue).FirstOrDefault(); + //如果上级属性值符合条件,那么同时根据上面的判断,当前属性值不是空就是0,那么需要报错 + if ((triggerOperator == "=" && upPropertyValue.ToUpper().Equals(triggerValue.ToUpper())) || + (triggerOperator == ">" && double.Parse(upPropertyValue) > double.Parse(triggerValue)) || + (triggerOperator == "<" && double.Parse(upPropertyValue) < double.Parse(triggerValue)) || + (triggerOperator == "!=" && !upPropertyValue.ToUpper().Equals(triggerValue.ToUpper()))) { - //取当前属性的上级联动属性值 - var upPropertyValue = quaryPropertiesOfEng?.Where(x => - x?.EngineDataID != null - && x.PropertyID != null - && x.EngineDataID.Equals(checkproperty?.EngineDataID) - && x.PropertyID.Equals(triggerPropertyId)) - .Select(x => x.PropertyValue).FirstOrDefault(); - //如果上级属性值符合条件,那么同时根据上面的判断,当前属性值不是空就是0,那么需要报错 - if ((triggerOperator == "=" && upPropertyValue.ToUpper().Equals(triggerValue.ToUpper())) || - (triggerOperator == ">" && double.Parse(upPropertyValue) > double.Parse(triggerValue)) || - (triggerOperator == "<" && double.Parse(upPropertyValue) < double.Parse(triggerValue)) || - (triggerOperator == "!=" && !upPropertyValue.ToUpper().Equals(triggerValue.ToUpper()))) - { - errText = "图面有对象她的前置属性符合某种条件,所以她必须填值,不然不能在" + reversion + "阶段发布,请执行“属性检查”功能对图纸进行属性检查。"; - return res = false; - } + errText = "图面有对象她的前置属性符合某种条件,所以她必须填值,不然不能在" + reversion + "阶段发布,请执行“属性检查”功能对图纸进行属性检查。"; + return res = false; } + } //} } } @@ -985,12 +993,12 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC ?.PropertyValue; //foreach (var property in quaryPropertiesOfEng) //{ - //如果ec_enginedata_propety里面的EngineDataID等于需要检查对象的EngineDataID,且属性ID也能对上,也属于同一group,且属性值为空或者NULL,则认为没有填写 - if (!string.IsNullOrEmpty(PropertyValue) && PropertyValue != "0") - { - PgID = checkproperty.PropertyGID;//获得有属性值的属性组ID - //break; - } + //如果ec_enginedata_propety里面的EngineDataID等于需要检查对象的EngineDataID,且属性ID也能对上,也属于同一group,且属性值为空或者NULL,则认为没有填写 + if (!string.IsNullOrEmpty(PropertyValue) && PropertyValue != "0") + { + PgID = checkproperty.PropertyGID;//获得有属性值的属性组ID + //break; + } //} if (!string.IsNullOrEmpty(PgID)) { @@ -1007,7 +1015,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC } } - var lstValueGroup = quaryNeedCheckPropertiesDependency.Where(x => x.dependency_type == dependency_type.RequireMutually && x.IsRequired<=period).Select(x => x.ValueInGroup).Distinct().ToList(); + var lstValueGroup = quaryNeedCheckPropertiesDependency.Where(x => x.dependency_type == dependency_type.RequireMutually && x.IsRequired <= period).Select(x => x.ValueInGroup).Distinct().ToList(); foreach (var item in lstValueGroup) { if (item == false) @@ -1032,7 +1040,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 表名 /// 当前的DataItemName /// 最上层的Name - public string GetTopParentDataItemDetail(string DtatTableName, string strDataItemName) + private string GetTopParentDataItemDetail(string DtatTableName, string strDataItemName) { // 先找到初始节点 var current = SqlSugarHelper.Db.Queryable().AS(DtatTableName).Where(x => x.DataItemName == strDataItemName).First(); @@ -1150,7 +1158,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 电缆ID(LIST) /// 项目编号 /// 电缆连接信息 - public List GetCableConnListBatch(List cableIds, string projectId) + private List GetCableConnListBatch(List cableIds, string projectId) { ec_enginedata_relBLL relbll = new ec_enginedata_relBLL(); var allRel = relbll.GetList($"{{ProjectId:\"{projectId}\", RelType:\"{(int)enum_RelType.设备_电缆}\"}}") @@ -1212,7 +1220,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC // 筛选出“真实设备”,这里排除OPC、通讯器等中转对象 var deviceTags = endpointInfo - .Where(x => !x.objectType?.Contains("OPC")??false) + .Where(x => !x.objectType?.Contains(GlobalObject.objectType_OPC) ?? false) .Select(x => x.tagNumber) .Where(tag => !string.IsNullOrWhiteSpace(tag)) .Distinct() diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelIBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelIBLL.cs index 12a18e14..e2d78bfd 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelIBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelIBLL.cs @@ -19,7 +19,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 获取列表数据 /// /// - IEnumerable GetList(string queryJson); + IEnumerable GetList(string queryJson,string projId); /// /// 获取工程数据图元表数据 /// diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelService.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelService.cs index 5338facc..8a278954 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelService.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_pixel/ec_enginedata_pixelService.cs @@ -78,7 +78,7 @@ left JOIN ec_enginedata_{ProjectEntity.ProjectIndex} t3 ON t3.EngineDataID = t1. /// /// 是否需要查询出被删的 /// - public IEnumerable GetList(string queryJson, bool NeedDeleted = false) + public IEnumerable GetList(string queryJson, string projId, bool NeedDeleted = false) { try { @@ -93,7 +93,7 @@ left JOIN ec_enginedata_{ProjectEntity.ProjectIndex} t3 ON t3.EngineDataID = t1. else { //var ProjectEntity = this.BaseRepository().FindEntity(queryParam["ProjectId"].ToString()); - var ProjectEntity = new ec_projectBLL().GetEntity(queryParam["ProjectId"].ToString()); + var ProjectEntity = new ec_projectBLL().GetEntity(projId); strSql.Append($@" FROM ec_enginedata_pixel_{ProjectEntity.ProjectIndex} t1 JOIN ec_drawing_file_{ProjectEntity.ProjectIndex} t2 ON t2.DrawingFileID = t1.DrawingFileID JOIN ec_enginedata_{ProjectEntity.ProjectIndex} t3 ON t3.EngineDataID = t1.EngineDataID @@ -553,8 +553,12 @@ left JOIN ec_enginedata_{ProjectEntity.ProjectIndex} t3 ON t3.EngineDataID = t1. SqlSugarHelper.Db.BeginTran(); try { + if (string.IsNullOrWhiteSpace(ProjectId)) + { + return; + } //获取某个图纸上的图元数据 - var existPixels = this.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"DrawingFileID\":\"" + drawingFileID + "\"}", true).ToList(); + var existPixels = this.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"DrawingFileID\":\"" + drawingFileID + "\"}", ProjectId, true).ToList(); ec_projectEntity ProjectEntity = new ec_projectEntity(); if (!string.IsNullOrWhiteSpace(ProjectId)) { @@ -583,32 +587,42 @@ left JOIN ec_enginedata_{ProjectEntity.ProjectIndex} t3 ON t3.EngineDataID = t1. //存在 it.DeleteFlg = 0; } + } - _enginedataPixelRepository.AsUpdateable(existPixels).AS($"ec_enginedata_pixel_{ProjectEntity.ProjectIndex}").ExecuteCommand(); - if (string.IsNullOrWhiteSpace(ProjectId)) + _enginedataPixelRepository.AsUpdateable(existPixels).AS($"ec_enginedata_pixel_{ProjectEntity.ProjectIndex}").ExecuteCommand();//batch commit + + + + //db.ExecuteBySql($@"UPDATE ec_enginedata_{ ProjectEntity.ProjectIndex} T1 + // SET DataStatus = '00001' + // WHERE (SELECT COUNT(*) FROM ec_enginedata_pixel_{ ProjectEntity.ProjectIndex} WHERE EngineDataID = T1.EngineDataID ) <= 0"); + //db.ExecuteBySql($@"UPDATE ec_enginedata_{ProjectEntity.ProjectIndex} T1 + // SET DataStatus = '00002' + // WHERE (SELECT COUNT(*) FROM ec_enginedata_pixel_{ProjectEntity.ProjectIndex} WHERE EngineDataID = T1.EngineDataID ) > 0 AND DataStatus != '00003'"); + + var tagTbName = TableName(ProjectId); + var tags = SqlSugarHelper.Db.Queryable().AS(tagTbName). + Where(t => existPixels.Select(x => x.EngineDataID).Distinct().Contains(t.EngineDataID) && t.DataStatus != "00003").ToList(); + + foreach (var tag in tags) { + tag.DataStatus = "00002";tag.Modify(); } - else - { - //db.ExecuteBySql($@"UPDATE ec_enginedata_{ ProjectEntity.ProjectIndex} T1 - // SET DataStatus = '00001' - // WHERE (SELECT COUNT(*) FROM ec_enginedata_pixel_{ ProjectEntity.ProjectIndex} WHERE EngineDataID = T1.EngineDataID ) <= 0"); - //db.ExecuteBySql($@"UPDATE ec_enginedata_{ProjectEntity.ProjectIndex} T1 - // SET DataStatus = '00002' - // WHERE (SELECT COUNT(*) FROM ec_enginedata_pixel_{ProjectEntity.ProjectIndex} WHERE EngineDataID = T1.EngineDataID ) > 0 AND DataStatus != '00003'"); - foreach (var EngineDataID in existPixels.Select(x => x.EngineDataID).Distinct()) - { - if (EngineDataID != null) - { - SqlSugarHelper.Db.Ado.ExecuteCommand($@"UPDATE ec_enginedata_{ProjectEntity.ProjectIndex} T1 - SET DataStatus = '00002' - WHERE DataStatus != '00003' and EngineDataID='{EngineDataID}'"); - } + SqlSugarHelper.Db.Updateable(tags).AS(tagTbName).UpdateColumns(x => x.DataStatus).ExecuteCommand(); + //foreach (var EngineDataID in existPixels.Select(x => x.EngineDataID).Distinct()) + //{ + // if (EngineDataID != null) + // { + // SqlSugarHelper.Db.Ado.ExecuteCommand($@"UPDATE ec_enginedata_{ProjectEntity.ProjectIndex} T1 + // SET DataStatus = '00002' + // WHERE DataStatus != '00003' and EngineDataID='{EngineDataID}'"); + // } - }; - } + //} + //; + SqlSugarHelper.Db.CommitTran(); } diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relBLL.cs index a354c4ff..0d013c96 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relBLL.cs @@ -13,7 +13,7 @@ using System.Data; using System.Diagnostics; using System.Linq; using System.Text.RegularExpressions; -using System.Threading.Tasks; +using System.Threading.Tasks; using static Learun.Application.TwoDevelopment.ZZDT_EC.ProjectSugar; using static Learun.Util.SqlSugar.SqlSugarHelper; @@ -79,7 +79,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC Where(x => x.DeleteFlg != 1).ToList(); var relTypeTbName = ProjectSugar.TableName(projId); - var relType = Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relType = Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); var propBll = new ec_enginedata_propertyBLL(); @@ -176,7 +176,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC Where(x => x.DeleteFlg != 1).ToList(); var relTypeTbName = ProjectSugar.TableName(projId); - var relType = Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relType = Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); var allTagProps = SqlSugarHelper.Db.Queryable().AS(propTbName).ToList(); @@ -1348,7 +1348,7 @@ Select((a, b, c) => new //根据句柄和图纸,先把工程id查出来先 var drawingID = CablePixelID.DrawingID; var pixelID = CablePixelID.CablePixelID; - var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + pixelID + "\",\"DrawingFileID\":\"" + drawingID + "\"}"). + var EngineDataIDs = pixelServ.GetList("{\"ProjectId\":\"" + ProjectId + "\",\"PixelCode\":\"" + pixelID + "\",\"DrawingFileID\":\"" + drawingID + "\"}", ProjectId). Select(x => x.EngineDataID).Distinct(); if (EngineDataIDs != null && EngineDataIDs.Count() == 1) { @@ -1395,7 +1395,19 @@ Select((a, b, c) => new var End2 = new ec_enginedata_relEntity(); //查单一记录 var existRel = this.GetList("{ProjectId:\"" + ProjectId + "\",RelType:\"" + (int)enum_RelType.设备_电缆 + "\",RelEngineDataID:\"" + CableID + "\"}").ToList(); - if (existRel.Any(x => !string.IsNullOrEmpty(x.OPCPixel))) + //需要换判断了,现在所有东西都有存这个 + var tagIds = existRel.Select(x => x.RelEngineData1ID).ToList(); + tagIds.AddRange(existRel.Select(x => x.RelEngineData2ID).ToList()); + tagIds = tagIds.Where(X => X != CableID).Distinct().ToList(); + + var tbName = ProjectSugar.TableName(ProjectId); + var typeTbName = ProjectSugar.TableName(ProjectId); + var tags = SqlSugarHelper.Db.Queryable().AS(tbName). + InnerJoin((t, t2) => t.ObjectTypeID == t2.ObjectTypeID).AS(typeTbName). + Where(t => tagIds.Contains(t.EngineDataID)). + Select((t, t2) => new { t.EngineDataID, t.TagNumber, t2.ObjectTypeName }).ToList(); + + if (tags.Any(x => x.ObjectTypeName == GlobalObject.objectType_OPC)) { //OPC var tb = ProjectSugar.TableName(ProjectId); @@ -1420,6 +1432,7 @@ Select((a, b, c) => new } else { + //正常情况 existRel = existRel.Where(X => X.RelEngineData1ID != opcId.EngineDataID && X.RelEngineData2ID != opcId.EngineDataID).ToList();//排除opc的,留下电缆的 } } @@ -1444,11 +1457,11 @@ Select((a, b, c) => new } - public class ec_enginedataEntity_2: ec_enginedataEntity + public class ec_enginedataEntity_2 : ec_enginedataEntity { } - public class ec_objecttypeEntity_2: ec_objecttypeEntity + public class ec_objecttypeEntity_2 : ec_objecttypeEntity { } @@ -1470,6 +1483,11 @@ Select((a, b, c) => new var RelEngineData2ID = queryParam["RelEngineData2ID"]?.ToString(); var RelTypeName = queryParam["RelTypeName"]?.ToString(); var RelType = queryParam["RelType"]?.ToString(); + enum_RelType RelEnum = default; + if (!string.IsNullOrEmpty(RelType) && Enum.TryParse(RelType, out RelEnum)) + { + + } var TagNumber = queryParam["TagNumber"]?.ToString(); var tableName = TableName(ProjectId); @@ -1490,8 +1508,8 @@ Select((a, b, c) => new .WhereIF(!string.IsNullOrEmpty(RelEngineData1ID), a => a.RelEngineData1ID == RelEngineData1ID) .WhereIF(!string.IsNullOrEmpty(RelEngineData2ID), a => a.RelEngineData2ID == RelEngineData2ID) .WhereIF(!string.IsNullOrEmpty(RelTypeName), (a, b) => b.RelTypeName == RelTypeName) - .WhereIF(!string.IsNullOrEmpty(RelType), (a, b) => b.RelType == RelType) - .Select((a, b, t1,t2,o1,o2) => new ec_enginedata_relEntity + .WhereIF(!string.IsNullOrEmpty(RelType), (a, b) => b.RelType == RelEnum) + .Select((a, b, t1, t2, o1, o2) => new ec_enginedata_relEntity { EngineDataRelID = a.EngineDataRelID, RelTypeID = a.RelTypeID, @@ -1529,7 +1547,7 @@ Select((a, b, c) => new // dataIds.Add(x.RelEngineData1ID); // dataIds.Add(x.RelEngineData2ID); //}); - + //dataIds.AddRange(list?.Select(x => x.RelEngineData1ID).Distinct()); //dataIds.AddRange(list?.Select(x => x.RelEngineData2ID).Distinct()); //dataIds = dataIds.Distinct().ToList(); @@ -1633,7 +1651,7 @@ Select((a, b, c) => new /// 是否移除已有的,true的话,基本就是确保一对一的这种rel关系 /// /// - public void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List relEngineData2IDs, bool NeedRemove = false) + public void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List relEngineData2IDs, string tagPixelId, bool NeedRemove = false) { try { @@ -1653,7 +1671,8 @@ Select((a, b, c) => new model.Create(); model.RelTypeID = RelTypeID; model.RelEngineData1ID = RelEngineData1ID; - model.RelEngineData2ID = item; + model.RelEngineData2ID = item; + model.OPCPixel = tagPixelId;//普通情况 engineDataRelAdd.Add(model); continue; } @@ -1672,6 +1691,7 @@ Select((a, b, c) => new model.RelTypeID = RelTypeID; model.RelEngineData1ID = RelEngineData1ID; model.RelEngineData2ID = item; + model.OPCPixel = tagPixelId;//普通情况 engineDataRelAdd.Add(model); continue; } @@ -1688,7 +1708,7 @@ Select((a, b, c) => new } //engineDataRelDel = engineDataRel.Except(engineDataRelExcept).ToList(); List delEngineDataRelIDs = new List(); //engineDataRelDel.Select(x => x.EngineDataRelID).ToList(); - ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs); + ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs); //电缆在end1,进行最后的保存 } catch (Exception ex) { @@ -1711,7 +1731,7 @@ Select((a, b, c) => new /// /// 电缆ID,大概率 /// - public void SaveEntitys(string ProjectId, string RelTypeID, List RelEngineData1IDs, string relEngineData2ID, bool NeedRemove = false) + public void SaveEntitys(string ProjectId, string RelTypeID, List RelEngineData1IDs, string relEngineData2ID, string tagPixelId, bool NeedRemove = false) { try { @@ -1726,7 +1746,6 @@ Select((a, b, c) => new foreach (var item in RelEngineData1IDs) { - //判断下是否为OPC if (NeedRemove) { @@ -1737,6 +1756,7 @@ Select((a, b, c) => new model.RelTypeID = RelTypeID; model.RelEngineData1ID = item; model.RelEngineData2ID = relEngineData2ID; + model.OPCPixel = tagPixelId;//普通情况 engineDataRelAdd.Add(model); continue; @@ -1759,6 +1779,7 @@ Select((a, b, c) => new model.RelTypeID = RelTypeID; model.RelEngineData1ID = item; model.RelEngineData2ID = relEngineData2ID; + model.OPCPixel = tagPixelId;//普通情况 engineDataRelAdd.Add(model); continue; } @@ -1775,7 +1796,7 @@ Select((a, b, c) => new } //engineDataRelDel = engineDataRel.Except(engineDataRelExcept).ToList(); List delEngineDataRelIDs = new List(); //engineDataRelDel.Select(x => x.EngineDataRelID).ToList(); - ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs); + ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs);//电缆在end2,进行最后的保存 } catch (Exception ex) { diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relIBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relIBLL.cs index 93c80b9e..cff0f09a 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relIBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relIBLL.cs @@ -35,10 +35,10 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 主键 /// /// - void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List relEngineData2IDs, bool NeedRemove = false); + void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List relEngineData2IDs, string tagPixeId, bool NeedRemove = false); + + void SaveEntitys(string ProjectId, string RelTypeID, List RelEngineData1IDs, string relEngineData2ID, string tagPixeId, bool NeedRemove = false); - void SaveEntitys(string ProjectId, string RelTypeID, List RelEngineData1IDs, string relEngineData2ID, bool NeedRemove = false); - #endregion diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relService.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relService.cs index a06229c8..8cfbcde0 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relService.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_enginedata_rel/ec_enginedata_relService.cs @@ -201,7 +201,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var relTb = ProjectSugar.TableName(ProjId); var relDataTb = ProjectSugar.TableName(ProjId); var relTypes = SqlSugarHelper.Db.Queryable().AS(relTb).ToList(); - var relType = relTypes.FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relType = relTypes.FirstOrDefault(x => x.RelType == enum_RelType.设备_电缆); if (relType != null) { foreach (var cableId in cableIds) diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_notification/ec_notificationBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_notification/ec_notificationBLL.cs index fd4c6423..ee145c26 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_notification/ec_notificationBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_notification/ec_notificationBLL.cs @@ -198,7 +198,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC //DELETE var tagsExisted = ec_EnginedataService.GetListBySQL("", ProjectId).Where(TAG => DateTime.Compare((DateTime)TAG.CreateTime, (DateTime)Drawing.CheckOutTime) < 0).OrderBy(x => x.ObjectTypeName); //图纸上所有的pixel记录 - var pixelsExisted = new ec_enginedata_pixelService().GetList("{\"ProjectId\":\"" + ProjectId + "\",\"DrawingFileID\":\"" + DrawingID + "\"}").ToList(); + var pixelsExisted = new ec_enginedata_pixelService().GetList("{\"ProjectId\":\"" + ProjectId + "\",\"DrawingFileID\":\"" + DrawingID + "\"}",ProjectId).ToList(); // 创建时间 早于 检出时间 foreach (var TAG in tagsExisted) diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeBLL.cs index d2866218..dd7a7754 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeBLL.cs @@ -10,6 +10,7 @@ using System.IO; using System.Linq; using System.Web.Caching; using System.Windows.Input; +using static Learun.Application.TwoDevelopment.ZZDT_EC.GlobalEnum; using static Learun.Application.TwoDevelopment.ZZDT_EC.ProjectSugar; using static Learun.Util.SqlSugar.SqlSugarHelper; @@ -86,7 +87,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC if (dataType.Equals("2"))//2时,才额外需要 { - listPixel = ec_enginedata_pixelBLL.GetList(queryJson).ToList(); + listPixel = ec_enginedata_pixelBLL.GetList(queryJson,projectId).ToList(); listPixel = listPixel.Where(x => x.DeleteFlg != 1).ToList(); } if (!string.IsNullOrEmpty(KeyWord)) diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeEntity.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeEntity.cs index 448d117b..49a45530 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeEntity.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttype/ec_objecttypeEntity.cs @@ -2,6 +2,7 @@ using SqlSugar; using System; using System.Collections.Generic; +using static Learun.Application.TwoDevelopment.ZZDT_EC.GlobalEnum; namespace Learun.Application.TwoDevelopment.ZZDT_EC { /// @@ -181,12 +182,6 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC #endregion } - public enum specialType - { - 未定义 = 0, - 电力一次 = 1, - 电力二次 = 2, - 系统柜 = 3, - } + } diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttypep/ec_objecttypepBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttypep/ec_objecttypepBLL.cs index 7d0b4d92..5a035895 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttypep/ec_objecttypepBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_objecttypep/ec_objecttypepBLL.cs @@ -116,29 +116,54 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC if (!string.IsNullOrEmpty(objectTypeID)) { - RES = RES.Where(X => objectTypeID.Split(',').ToList().Contains(X.ObjectTypeID)).ToList(); + RES = RES.Where(X => objectTypeID.Split(',').Contains(X.ObjectTypeID)).ToList(); } var propBll = new ec_propertyBLL(); var allProp = propBll.GetListRedis(ProjectId); + // 提前构建Dictionary(键为PropertyID,值为对应的AllProp对象) + var allPropDict = allProp.ToDictionary(x => x.PropertyID); var propGroupBll = new ec_propertygBLL(); var allGroup = propGroupBll.GetList("{ProjectId:\"" + ProjectId + "\"}"); + var allGroupDict = allGroup.ToDictionary(x => x.PropertyGID); var unitTypeBll = new ec_measuring_unittypeBLL(); var allUnitType = unitTypeBll.GetList("{ProjectId:\"" + ProjectId + "\"}"); + var allUnitTypeDict = allUnitType.ToDictionary(x => x.MeasuringUnitTypeID); var unitBll = new ec_measuring_unitBLL(); var allUnit = unitBll.GetListRedis(ProjectId); + var allUnitDict = allUnit.ToDictionary(x => x.MeasuringUnitID); var detailBll = new ec_dataitemBLL(); var allDics = detailBll.GetList("{ProjectId:\"" + ProjectId + "\"}"); var allDetails = detailBll.GetDetailList("", "", ProjectId); + var detailsDictGrouped = allDetails.GroupBy(x => x.DataItemID).ToDictionary(g => g.Key, g => g.ToList());//按照DataItemID分组 //strSql.Append($" FROM ec_objecttypep_{ProjectEntity.ProjectIndex} t1 "); if (isLoadExtraData) { foreach (var objectTypeProp in RES) { - var t2 = allProp.FirstOrDefault(x => x.PropertyID == objectTypeProp.PropertyID); - if (t2 == null) { continue; } - var t3 = allGroup.FirstOrDefault(x => x.PropertyGID == t2.PropertyGID); - if (t3 == null) { continue; } - ; + // 用TryGetValue快速查询(O(1)时间) + if (allPropDict.TryGetValue(objectTypeProp.PropertyID, out var t2)) + { + // 找到匹配项,处理t2 + } + else + { + // 未找到匹配项的处理逻辑 + continue; + } + //var t2 = allProp.FirstOrDefault(x => x.PropertyID == objectTypeProp.PropertyID); + //if (t2 == null) { continue; } + if (allGroupDict.TryGetValue(t2.PropertyGID, out var t3)) + { + // 找到匹配项,处理t2 + } + else + { + // 未找到匹配项的处理逻辑 + continue; + } + //var t3 = allGroup.FirstOrDefault(x => x.PropertyGID == t2.PropertyGID); + //if (t3 == null) { continue; } + //; objectTypeProp.PropertyName = t2.PropertyName; objectTypeProp.PropertyNameEN = t2.PropertyNameEN; objectTypeProp.PropertyType = t2.PropertyType; @@ -158,17 +183,26 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC objectTypeProp.PropertyGroupName = t3.PropertyGroupName; objectTypeProp.PropertyGID = t3.PropertyGID; + if (allUnitTypeDict.TryGetValue(t2.MeasuringUnitTypeID, out var t4)) + { + // 找到匹配项,处理t2 + objectTypeProp.MeasuringUnitTypeName = t4.MeasuringUnitTypeName; - objectTypeProp.MeasuringUnitTypeName = allUnitType.FirstOrDefault(x => x.MeasuringUnitTypeID == t2.MeasuringUnitTypeID)?.MeasuringUnitTypeName; - objectTypeProp.DefaultUnitName = allUnit.FirstOrDefault(x => x.MeasuringUnitID == t2.DefaultUnit)?.MeasuringUnitName; + } + if (allUnitDict.TryGetValue(t2.DefaultUnit, out var t5)) + { + objectTypeProp.DefaultUnitName = t5.MeasuringUnitName; + + } if (!string.IsNullOrEmpty(t2.EnumData)) { - var Dic = allDics.FirstOrDefault(X => t2.EnumData == X.DataItemName || t2.EnumData == X.DataItemCode); + + var Dic = allDics.FirstOrDefault(X => t2.EnumData == X.DataItemName || t2.EnumData == X.DataItemCode);//不是按照id来找 if (Dic != null) { - foreach (var detail in allDetails.Where(x => x.DataItemID == Dic.DataItemID)) + foreach (ec_dataitemdetailEntity detail in detailsDictGrouped[Dic.DataItemID])// allDetails.Where(x => x.DataItemID == Dic.DataItemID)) { if (!string.IsNullOrEmpty(detail.DataItemNameEN) && Dic.ShowEN == 1) { @@ -215,16 +249,19 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC { var tObjectType = ProjectSugar.TableName(ProjectId); var tobjTypeAll = SqlSugarHelper.Db.Queryable().AS(tObjectType).ToList(); + var tobjTypeDict = tobjTypeAll.ToDictionary(x => x.ObjectTypeID); foreach (var item in objectTypeID.Split(',')) { - var pObjectType = RES.Where(x => x.ObjectTypeID == item).ToList(); - var tobjType = tobjTypeAll.First(x => x.ObjectTypeID == item); + var pObjectType = RES.Where(x => x.ObjectTypeID == item).ToList();//每种类型下的属性 + var tobjType = tobjTypeDict[item];//每种类型的名字 + // 提前提取所有PropertyName到HashSet(仅需一次遍历) + var propertyNames = new HashSet(pObjectType.Select(x => x.PropertyName));//每种类型下的属性的名字 if (tobjType.ObjectTypeName.EndsWith("电缆")) { - if (!pObjectType.Any(X => X.PropertyName == GlobalObject.propName_parallelCableCombineName)) + if (!propertyNames.Any(X => X == GlobalObject.propName_parallelCableCombineName)) { ec_objecttypepEntity UDF_01 = new ec_objecttypepEntity(); UDF_01.ObjectTypePID = Guid.NewGuid().ToString(); @@ -236,7 +273,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC RES.Add(UDF_01); } - if (!pObjectType.Any(X => X.PropertyName == GlobalObject.propName_parallelCableList)) + if (!propertyNames.Any(X => X == GlobalObject.propName_parallelCableList)) { ec_objecttypepEntity UDF_02 = new ec_objecttypepEntity(); UDF_02.ObjectTypePID = Guid.NewGuid().ToString(); diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_panel_channel/ec_PanelChannelBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_panel_channel/ec_PanelChannelBLL.cs index c20dd98c..0ec9be92 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_panel_channel/ec_PanelChannelBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_panel_channel/ec_PanelChannelBLL.cs @@ -170,7 +170,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC Where((a, b) => allPanelIds.Contains(b.PanelID)). Distinct().ToList(); - var relId = Db.Queryable().AS(relTypeTb).ToList().First(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relId = Db.Queryable().AS(relTypeTb).ToList().First(x => x.RelType == enum_RelType.设备_电缆); var existRels = Db.Queryable().AS(relTb).Where(x => x.RelTypeID == relId.RelTypeID).ToList(); @@ -319,7 +319,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var allEngineData = Db.Queryable().AS(tagTb).ToList(); var allPanels = Db.Queryable().AS(panelTb).ToList(); - var relId = Db.Queryable().AS(relTypeTb).ToList().First(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString()); + var relId = Db.Queryable().AS(relTypeTb).ToList().First(x => x.RelType == enum_RelType.设备_电缆); var newWTCommits = new List(); var SignalCommits = new List(); diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_project_bakup/ec_project_bakupBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_project_bakup/ec_project_bakupBLL.cs index dfa320d8..9b9c756c 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_project_bakup/ec_project_bakupBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_project_bakup/ec_project_bakupBLL.cs @@ -217,7 +217,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC //创建工程数据图元表 baseDAL.Create(sqlitePath); //添加工程数据图元表数据 - baseDAL.Add(new ec_enginedata_pixelService().GetList(queryJson).ToList(), sqlitePath); + baseDAL.Add(new ec_enginedata_pixelService().GetList(queryJson,ProjectId).ToList(), sqlitePath); continue; } if (table == "ec_enginedata") diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeBLL.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeBLL.cs index b6ca06b1..0ed2fcc8 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeBLL.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeBLL.cs @@ -33,11 +33,14 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC var ProjectId = queryParam["ProjectId"]?.ToString(); var RelTypeName = queryParam["RelTypeName"]?.ToString(); var RelType = queryParam["RelType"]?.ToString(); - + enum_RelType RelEnum = default; + if (!string.IsNullOrEmpty(RelType) && Enum.TryParse(RelType, out RelEnum)) + { + } var tableName = TableName(ProjectId); var query = Db.Queryable().AS(tableName) .WhereIF(!string.IsNullOrEmpty(RelTypeName), x => x.RelTypeName.Contains(RelTypeName)) - .WhereIF(!string.IsNullOrEmpty(RelType), x => x.RelType == RelType) + .WhereIF(!string.IsNullOrEmpty(RelType), x => x.RelType == RelEnum) .OrderByDescending(x => x.CreateTime); List list; if (pagination == null) diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeEntity.cs b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeEntity.cs index b231c403..e5a341e8 100644 --- a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeEntity.cs +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/ZZDT_EC/ec_reltype/ec_reltypeEntity.cs @@ -46,7 +46,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC /// 关联类型缩写 /// /// - public string RelType { get; set; } = ""; + public enum_RelType RelType { get; set; } /// /// 创建人 /// diff --git a/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WeChat/Learun.Application.WeChat.csproj.user b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WeChat/Learun.Application.WeChat.csproj.user new file mode 100644 index 00000000..a607660d --- /dev/null +++ b/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WeChat/Learun.Application.WeChat.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/Learun.Framework.Module/Learun.Cache/Learun.Cache.Base/CacheId.cs b/Learun.Framework.Module/Learun.Cache/Learun.Cache.Base/CacheId.cs index 45f46cb5..d1e2d170 100644 --- a/Learun.Framework.Module/Learun.Cache/Learun.Cache.Base/CacheId.cs +++ b/Learun.Framework.Module/Learun.Cache/Learun.Cache.Base/CacheId.cs @@ -138,6 +138,7 @@ #endregion #region 8号库 + public static int IOModule_AutoAssign2Ch { get { return 8; } } #endregion #region 9号库 diff --git a/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/CacheByRedis.cs b/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/CacheByRedis.cs index 1a06e699..826accc9 100644 --- a/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/CacheByRedis.cs +++ b/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/CacheByRedis.cs @@ -33,8 +33,7 @@ namespace Learun.Cache.Redis if (expireTime == null) { expireTime = TimeSpan.FromHours(1); // 如果参数为null,设置为1小时 - } - + } // 先从Redis缓存中获取数据 var cachedData = redisCache.StringGet(cacheKey); if (cachedData != null) diff --git a/SWSDBSchemeUpgradeTool/MainWindow.xaml.cs b/SWSDBSchemeUpgradeTool/MainWindow.xaml.cs index 2b390c0b..588b869a 100644 --- a/SWSDBSchemeUpgradeTool/MainWindow.xaml.cs +++ b/SWSDBSchemeUpgradeTool/MainWindow.xaml.cs @@ -591,7 +591,7 @@ WHERE } catch (Exception ex) { - LogInfo(baseDirectory + logFileName, tableName + " 项目表更新出现问题," + ex.Message); + LogInfo(baseDirectory + logFileName, tableName +"_" + proj.ProjectIndex + " 项目表更新出现问题," + ex.Message); } } } diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/App.g.cs b/SWSDBSchemeUpgradeTool/obj/Debug/App.g.cs deleted file mode 100644 index a0691576..00000000 --- a/SWSDBSchemeUpgradeTool/obj/Debug/App.g.cs +++ /dev/null @@ -1,70 +0,0 @@ -#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "C59FD92DD7F882290C4D1E00897269832FF33C044AE5C3AC38691771009953DB" -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using SWSDBSchemeUpgradeTool; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Automation; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Markup; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Media.Effects; -using System.Windows.Media.Imaging; -using System.Windows.Media.Media3D; -using System.Windows.Media.TextFormatting; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Shell; - - -namespace SWSDBSchemeUpgradeTool { - - - /// - /// App - /// - public partial class App : System.Windows.Application { - - /// - /// InitializeComponent - /// - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public void InitializeComponent() { - - #line 6 "..\..\App.xaml" - this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); - - #line default - #line hidden - } - - /// - /// Application Entry Point. - /// - [System.STAThreadAttribute()] - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public static void Main() { - SWSDBSchemeUpgradeTool.App app = new SWSDBSchemeUpgradeTool.App(); - app.InitializeComponent(); - app.Run(); - } - } -} - diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/App.g.i.cs b/SWSDBSchemeUpgradeTool/obj/Debug/App.g.i.cs deleted file mode 100644 index a0691576..00000000 --- a/SWSDBSchemeUpgradeTool/obj/Debug/App.g.i.cs +++ /dev/null @@ -1,70 +0,0 @@ -#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "C59FD92DD7F882290C4D1E00897269832FF33C044AE5C3AC38691771009953DB" -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using SWSDBSchemeUpgradeTool; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Automation; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Markup; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Media.Effects; -using System.Windows.Media.Imaging; -using System.Windows.Media.Media3D; -using System.Windows.Media.TextFormatting; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Shell; - - -namespace SWSDBSchemeUpgradeTool { - - - /// - /// App - /// - public partial class App : System.Windows.Application { - - /// - /// InitializeComponent - /// - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public void InitializeComponent() { - - #line 6 "..\..\App.xaml" - this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); - - #line default - #line hidden - } - - /// - /// Application Entry Point. - /// - [System.STAThreadAttribute()] - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public static void Main() { - SWSDBSchemeUpgradeTool.App app = new SWSDBSchemeUpgradeTool.App(); - app.InitializeComponent(); - app.Run(); - } - } -} - diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SWSDBSchemeUpgradeTool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 88c5aa17..00000000 Binary files a/SWSDBSchemeUpgradeTool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/MainWindow.g.cs b/SWSDBSchemeUpgradeTool/obj/Debug/MainWindow.g.cs deleted file mode 100644 index 703e941f..00000000 --- a/SWSDBSchemeUpgradeTool/obj/Debug/MainWindow.g.cs +++ /dev/null @@ -1,146 +0,0 @@ -#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "A0C489F14831BC98743B3A71A943EBA949B115892D4776AC738A96131DA29AA4" -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using SWSDBSchemeUpgradeTool; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Automation; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Markup; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Media.Effects; -using System.Windows.Media.Imaging; -using System.Windows.Media.Media3D; -using System.Windows.Media.TextFormatting; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Shell; - - -namespace SWSDBSchemeUpgradeTool { - - - /// - /// MainWindow - /// - public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { - - - #line 12 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.Grid ContentGrid; - - #line default - #line hidden - - - #line 64 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.ProgressBar ProgressBar; - - #line default - #line hidden - - - #line 70 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.Label StatusText; - - #line default - #line hidden - - - #line 75 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.TextBlock StatusText2; - - #line default - #line hidden - - private bool _contentLoaded; - - /// - /// InitializeComponent - /// - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public void InitializeComponent() { - if (_contentLoaded) { - return; - } - _contentLoaded = true; - System.Uri resourceLocater = new System.Uri("/SWSDBSchemeUpgradeTool;component/mainwindow.xaml", System.UriKind.Relative); - - #line 1 "..\..\MainWindow.xaml" - System.Windows.Application.LoadComponent(this, resourceLocater); - - #line default - #line hidden - } - - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] - void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { - switch (connectionId) - { - case 1: - this.ContentGrid = ((System.Windows.Controls.Grid)(target)); - return; - case 2: - this.ProgressBar = ((System.Windows.Controls.ProgressBar)(target)); - return; - case 3: - this.StatusText = ((System.Windows.Controls.Label)(target)); - return; - case 4: - this.StatusText2 = ((System.Windows.Controls.TextBlock)(target)); - return; - case 5: - - #line 86 "..\..\MainWindow.xaml" - ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click); - - #line default - #line hidden - return; - case 6: - - #line 91 "..\..\MainWindow.xaml" - ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click_1); - - #line default - #line hidden - return; - case 7: - - #line 97 "..\..\MainWindow.xaml" - ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click_2); - - #line default - #line hidden - return; - } - this._contentLoaded = true; - } - } -} - diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/MainWindow.g.i.cs b/SWSDBSchemeUpgradeTool/obj/Debug/MainWindow.g.i.cs deleted file mode 100644 index 703e941f..00000000 --- a/SWSDBSchemeUpgradeTool/obj/Debug/MainWindow.g.i.cs +++ /dev/null @@ -1,146 +0,0 @@ -#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "A0C489F14831BC98743B3A71A943EBA949B115892D4776AC738A96131DA29AA4" -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using SWSDBSchemeUpgradeTool; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Automation; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Markup; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Media.Effects; -using System.Windows.Media.Imaging; -using System.Windows.Media.Media3D; -using System.Windows.Media.TextFormatting; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Shell; - - -namespace SWSDBSchemeUpgradeTool { - - - /// - /// MainWindow - /// - public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { - - - #line 12 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.Grid ContentGrid; - - #line default - #line hidden - - - #line 64 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.ProgressBar ProgressBar; - - #line default - #line hidden - - - #line 70 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.Label StatusText; - - #line default - #line hidden - - - #line 75 "..\..\MainWindow.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.TextBlock StatusText2; - - #line default - #line hidden - - private bool _contentLoaded; - - /// - /// InitializeComponent - /// - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public void InitializeComponent() { - if (_contentLoaded) { - return; - } - _contentLoaded = true; - System.Uri resourceLocater = new System.Uri("/SWSDBSchemeUpgradeTool;component/mainwindow.xaml", System.UriKind.Relative); - - #line 1 "..\..\MainWindow.xaml" - System.Windows.Application.LoadComponent(this, resourceLocater); - - #line default - #line hidden - } - - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] - void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { - switch (connectionId) - { - case 1: - this.ContentGrid = ((System.Windows.Controls.Grid)(target)); - return; - case 2: - this.ProgressBar = ((System.Windows.Controls.ProgressBar)(target)); - return; - case 3: - this.StatusText = ((System.Windows.Controls.Label)(target)); - return; - case 4: - this.StatusText2 = ((System.Windows.Controls.TextBlock)(target)); - return; - case 5: - - #line 86 "..\..\MainWindow.xaml" - ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click); - - #line default - #line hidden - return; - case 6: - - #line 91 "..\..\MainWindow.xaml" - ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click_1); - - #line default - #line hidden - return; - case 7: - - #line 97 "..\..\MainWindow.xaml" - ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click_2); - - #line default - #line hidden - return; - } - this._contentLoaded = true; - } - } -} - diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/SQLPreview.g.cs b/SWSDBSchemeUpgradeTool/obj/Debug/SQLPreview.g.cs deleted file mode 100644 index aafc2d41..00000000 --- a/SWSDBSchemeUpgradeTool/obj/Debug/SQLPreview.g.cs +++ /dev/null @@ -1,89 +0,0 @@ -#pragma checksum "..\..\SQLPreview.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "68D1F76124B5320845E5CAEA226A6F687D21C37205B359F167F55D30D3DE8FA5" -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using SWSDBSchemeUpgradeTool; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Automation; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Markup; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Media.Effects; -using System.Windows.Media.Imaging; -using System.Windows.Media.Media3D; -using System.Windows.Media.TextFormatting; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Shell; - - -namespace SWSDBSchemeUpgradeTool { - - - /// - /// SQLPreview - /// - public partial class SQLPreview : System.Windows.Window, System.Windows.Markup.IComponentConnector { - - - #line 12 "..\..\SQLPreview.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.Grid xxx; - - #line default - #line hidden - - private bool _contentLoaded; - - /// - /// InitializeComponent - /// - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public void InitializeComponent() { - if (_contentLoaded) { - return; - } - _contentLoaded = true; - System.Uri resourceLocater = new System.Uri("/SWSDBSchemeUpgradeTool;component/sqlpreview.xaml", System.UriKind.Relative); - - #line 1 "..\..\SQLPreview.xaml" - System.Windows.Application.LoadComponent(this, resourceLocater); - - #line default - #line hidden - } - - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] - void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { - switch (connectionId) - { - case 1: - this.xxx = ((System.Windows.Controls.Grid)(target)); - return; - } - this._contentLoaded = true; - } - } -} - diff --git a/SWSDBSchemeUpgradeTool/obj/Debug/SQLPreview.g.i.cs b/SWSDBSchemeUpgradeTool/obj/Debug/SQLPreview.g.i.cs deleted file mode 100644 index aafc2d41..00000000 --- a/SWSDBSchemeUpgradeTool/obj/Debug/SQLPreview.g.i.cs +++ /dev/null @@ -1,89 +0,0 @@ -#pragma checksum "..\..\SQLPreview.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "68D1F76124B5320845E5CAEA226A6F687D21C37205B359F167F55D30D3DE8FA5" -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using SWSDBSchemeUpgradeTool; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Automation; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Markup; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Media.Effects; -using System.Windows.Media.Imaging; -using System.Windows.Media.Media3D; -using System.Windows.Media.TextFormatting; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Shell; - - -namespace SWSDBSchemeUpgradeTool { - - - /// - /// SQLPreview - /// - public partial class SQLPreview : System.Windows.Window, System.Windows.Markup.IComponentConnector { - - - #line 12 "..\..\SQLPreview.xaml" - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] - internal System.Windows.Controls.Grid xxx; - - #line default - #line hidden - - private bool _contentLoaded; - - /// - /// InitializeComponent - /// - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - public void InitializeComponent() { - if (_contentLoaded) { - return; - } - _contentLoaded = true; - System.Uri resourceLocater = new System.Uri("/SWSDBSchemeUpgradeTool;component/sqlpreview.xaml", System.UriKind.Relative); - - #line 1 "..\..\SQLPreview.xaml" - System.Windows.Application.LoadComponent(this, resourceLocater); - - #line default - #line hidden - } - - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] - void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { - switch (connectionId) - { - case 1: - this.xxx = ((System.Windows.Controls.Grid)(target)); - return; - } - this._contentLoaded = true; - } - } -} - diff --git a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db index 8ed632ad..11e675fa 100644 Binary files a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db and b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db differ diff --git a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-shm b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-shm index 181ea008..31b0d793 100644 Binary files a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-shm and b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-shm differ diff --git a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-wal b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-wal index c53fe8aa..0b6297d7 100644 Binary files a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-wal and b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/CodeChunks.db-wal differ diff --git a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db index 567217bf..ddab609d 100644 Binary files a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db and b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db differ diff --git a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-shm b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-shm index d8b8326a..0e854215 100644 Binary files a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-shm and b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-shm differ diff --git a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-wal b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-wal index e8003a29..05236062 100644 Binary files a/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-wal and b/newFront/c#前端/.vs/SWS.CAD/CopilotIndices/17.13.444.19527/SemanticSymbols.db-wal differ diff --git a/newFront/c#前端/DI-Electrical/App.xaml.cs b/newFront/c#前端/DI-Electrical/App.xaml.cs index b0dd7ffe..4adadc9f 100644 --- a/newFront/c#前端/DI-Electrical/App.xaml.cs +++ b/newFront/c#前端/DI-Electrical/App.xaml.cs @@ -58,6 +58,7 @@ namespace DI_Electrical GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); + GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.Register(); diff --git a/newFront/c#前端/SWS.CAD/Commands.cs b/newFront/c#前端/SWS.CAD/Commands.cs index 2dd0253d..a28f2dcd 100644 --- a/newFront/c#前端/SWS.CAD/Commands.cs +++ b/newFront/c#前端/SWS.CAD/Commands.cs @@ -24,6 +24,7 @@ using Panel = Bricscad.Windows.Panel; using GlobalObject = SWS.Commons.GlobalObject; using SWS.Model; using SWS.Service; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; [assembly: CommandClass(typeof(Commands))] @@ -540,6 +541,8 @@ namespace SWS.CAD //选择的元素返回的属性信息 var ResTagInfosByPixels = new Model.ec_objecttype(); var listPropertys = new List(); + var _objectTypeService = GlobalObject.container.Resolve(); + var _iOModuleService = GlobalObject.container.Resolve(); // 持续选择直到获取有效电缆 bool isValidCable = false; @@ -564,7 +567,7 @@ namespace SWS.CAD { // 获取句柄(Handle 是字符串类型) var handId = (cable.Handle.ToString()); - var _objectTypeService = GlobalObject.container.Resolve(); + _objectTypeService = GlobalObject.container.Resolve(); var res = await _objectTypeService.GetTagInfosByPixels(dwgFile.Id, handId); if (res != null) { @@ -600,8 +603,20 @@ namespace SWS.CAD //Thread.Sleep(2000); if (isValidCable) { - var _iOModuleService = GlobalObject.container.Resolve(); + var ResTagNumberById = await _objectTypeService.GetTagNumberById(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID); + var ObjectTypePListBy = await _objectTypeService.GetObjectTypePListByIds(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID); + string CableSpecification = ObjectTypePListBy.Where(q => q.PropertyName.Equals("电缆规格")).Select(s => s.EnumDataCode).FirstOrDefault(); + CableSpecification = CableSpecification.Substring(0, CableSpecification.Length - 1); + var LatestSerialNumber = await _objectTypeService.GetLatestSerialNumber(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID); + //获取位号的电缆属性,判断是否设置电缆规格 + var TagNumberBys = await _objectTypeService.GetEngineDataListByTags(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber); + var TagNumberBy = TagNumberBys.Where(t => t.TagNumber.Equals(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber)).FirstOrDefault(); + if (string.IsNullOrEmpty(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) + //if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) + { + System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning); return; + } var ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID); //如果配置不存在 if (ResCableEngID == null) @@ -636,6 +651,7 @@ namespace SWS.CAD ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID; ec_Cable.Sets = new List(); int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; for (int i = 0; i < CableSetCount; i++) { ec_CableSet ec_CableSet = new ec_CableSet(); @@ -645,6 +661,7 @@ namespace SWS.CAD int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; for (int j = 0; j < WireCount; j++) { + n++; ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; ec_CableSetWire.SetLevel = j + 1; @@ -653,6 +670,20 @@ namespace SWS.CAD switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) { case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) { Tag = (j + 1).ToString(); @@ -663,12 +694,9 @@ namespace SWS.CAD } else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) { - Tag = (i + 1).ToString(); + Tag = (i + 1) + "-" + (j + 1).ToString(); } break; - case "按电缆对编号": - a = ResTagInfosByPixels.tags.FirstOrDefault().TagNumber; - break; } ec_CableSetWire.Wire_Tag = a + Tag; ec_CableSet.Wires.Add(ec_CableSetWire); @@ -705,6 +733,7 @@ namespace SWS.CAD ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID; ec_Cable.Sets = new List(); int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; for (int i = 0; i < CableSetCount; i++) { ec_CableSet ec_CableSet = new ec_CableSet(); @@ -714,6 +743,7 @@ namespace SWS.CAD int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; for (int j = 0; j < WireCount; j++) { + n++; ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; ec_CableSetWire.SetLevel = j + 1; @@ -722,6 +752,20 @@ namespace SWS.CAD switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) { case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) { Tag = (j + 1).ToString(); @@ -732,12 +776,9 @@ namespace SWS.CAD } else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) { - Tag = (i + 1).ToString(); + Tag = (i + 1) + "-" + (j + 1).ToString(); } break; - case "按电缆对编号": - a = ResTagInfosByPixels.tags.FirstOrDefault().TagNumber; - break; } ec_CableSetWire.Wire_Tag = a + Tag; ec_CableSet.Wires.Add(ec_CableSetWire); @@ -849,20 +890,305 @@ namespace SWS.CAD btnCableSinal.ToolTip = "信号预分配"; btnCableSinal.Text = "信号预分配"; btnCableSinal.ButtonStyle = RibbonButtonStyle.SmallWithText; - btnCableSinal.CommandHandler = new DelegateCommand(x => + btnCableSinal.CommandHandler = new DelegateCommand(async x => { - //打开窗体 - var para = new Prism.Services.Dialogs.DialogParameters(); - var _dialogService = GlobalObject._prismContainer.Resolve(); - _dialogService.ShowDialog(nameof(DialogSignalPredistribution), para, (RES) => + if (GlobalObject.userInfo == null || GlobalObject.curProject == null) { - if (RES.Result == ButtonResult.Yes) + MessageBox.Show("请先登录系统并选择项目!"); + return; + } + + //在SWS系统内打开且不是只读的图纸才可 + var dwgName = General.GetDwgName(); + var dwgFile = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName && a.IsReadOnly == false); + if (dwgFile == null) + { return; } + Document doc = Application.DocumentManager.MdiActiveDocument; + Database db = doc.Database; + Editor ed = doc.Editor; + //选择的元素返回的属性信息 + var ResTagInfosByPixels = new Model.ec_objecttype(); + var listPropertys = new List(); + var _objectTypeService = GlobalObject.container.Resolve(); + var _iOModuleService = GlobalObject.container.Resolve(); + // 持续选择直到获取有效电缆 + bool isValidCable = false; + + try + { + #region 选择电缆 + // 创建选择选项(禁用回车确认) + PromptEntityOptions options = new PromptEntityOptions("\n请单击选择电缆: "); + options.AllowNone = false; // 禁止空选 + + // 执行选择(直接单击生效) + PromptEntityResult resultEntity = ed.GetEntity(options); + //WindowVisibility = System.Windows.Visibility.Hidden; + + while (resultEntity.Status == PromptStatus.OK) { + using (Transaction tr = db.TransactionManager.StartTransaction()) + { + // 获取选中的电缆实体 + Entity cable = tr.GetObject(resultEntity.ObjectId, OpenMode.ForRead) as Entity; + //if (cable != null&&cable.XData != null) + if (cable != null) + { + // 获取句柄(Handle 是字符串类型) + var handId = (cable.Handle.ToString()); + var res = await _objectTypeService.GetTagInfosByPixels(dwgFile.Id, handId); + if (res != null) + { + if (res.Count == 1) + { + var item = res[0]; + var objTypeName = item.ObjectTypeName; + if (objTypeName.Contains("电缆")) + { + ResTagInfosByPixels = item; + isValidCable = true; // 校验通过 + ed.WriteMessage($"\n已选择电缆:{ResTagInfosByPixels.tags.FirstOrDefault().TagNumber}"); + } + + } + } + + } + tr.Commit(); + } + if (isValidCable) + { + break; + } + else + { + ed.WriteMessage($"\n已选择电缆:"); + resultEntity = ed.GetEntity(options); + } } - else if (RES.Result == ButtonResult.No) - { } - }); + #endregion + + + //Thread.Sleep(2000); + if (isValidCable) + { + var ResTagNumberById = await _objectTypeService.GetTagNumberById(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID); + var ObjectTypePListBy = await _objectTypeService.GetObjectTypePListByIds(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID); + string CableSpecification = ObjectTypePListBy.Where(q => q.PropertyName.Equals("电缆规格")).Select(s => s.EnumDataCode).FirstOrDefault(); + CableSpecification = CableSpecification.Substring(0, CableSpecification.Length - 1); + var LatestSerialNumber = await _objectTypeService.GetLatestSerialNumber(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID); + //获取位号的电缆属性,判断是否设置电缆规格 + var TagNumberBys = await _objectTypeService.GetEngineDataListByTags(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber); + var TagNumberBy = TagNumberBys.Where(t => t.TagNumber.Equals(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber)).FirstOrDefault(); + if(string.IsNullOrEmpty(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) + //if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) + { + System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning); return; + + } + var ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID); + //如果配置不存在 + if (ResCableEngID == null) + { + listPropertys = new List(); + System.Windows.MessageBoxResult result = System.Windows.MessageBox.Show($"是否为通讯母线?", "KunHengCAD", System.Windows.MessageBoxButton.OKCancel, System.Windows.MessageBoxImage.Question); + if (result == System.Windows.MessageBoxResult.OK) + { + listPropertys = new List(); + Dictionary pulldownlist; + + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对数", GroupName = "基本参数", PropertyValue = "1", ControlTypeName = PROPERTYType.TextBox, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "每电缆对芯数", GroupName = "基本参数", PropertyValue = "2", ControlTypeName = PROPERTYType.TextBox, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对编号前缀", GroupName = "基本参数", PropertyValue = "Set", ControlTypeName = PROPERTYType.TextBox, }); + pulldownlist = new Dictionary(); + pulldownlist.Add("数字", "数字"); + pulldownlist.Add("字母", "字母"); + pulldownlist.Add("电缆对序号", "电缆对序号"); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号类型", GroupName = "电芯参数", PropertyValue = "数字", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, }); + pulldownlist = new Dictionary(); + pulldownlist.Add("按电缆编号", "按电缆编号"); + pulldownlist.Add("按电缆对编号", "按电缆对编号"); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号规则", GroupName = "电芯参数", PropertyValue = "按电缆对编号", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电芯编号前缀", GroupName = "电芯参数", PropertyValue = "C", ControlTypeName = PROPERTYType.TextBox, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "极性", GroupName = "电芯参数", PropertyValue = "+,-,s", ControlTypeName = PROPERTYType.TextBox, }); + //显示属性弹窗 + var ReslistPro = ShowPropertyMessage("新建" + ResTagInfosByPixels.tags.FirstOrDefault().TagNumber + "电缆配置", listPropertys); + if (ReslistPro == null || ReslistPro.Count() == 0) return; + ec_Cable ec_Cable = new ec_Cable(); + ec_Cable.CableClass = "homerun";//母线 + ec_Cable.Cable_Format = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault(); + ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID; + ec_Cable.Sets = new List(); + int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; + for (int i = 0; i < CableSetCount; i++) + { + ec_CableSet ec_CableSet = new ec_CableSet(); + ec_CableSet.CableSetName = ReslistPro.Where(p => p.DisplayText.Equals("电缆对编号前缀")).Select(p => p.PropertyValue).FirstOrDefault() + (i + 1); + ec_CableSet.CableSetSeq = i + 1; + ec_CableSet.Wires = new List(); + int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; + for (int j = 0; j < WireCount; j++) + { + n++; + ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); + ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; + ec_CableSetWire.SetLevel = j + 1; + string a = ReslistPro.Where(p => p.DisplayText.Equals("电芯编号前缀")).Select(p => p.PropertyValue).FirstOrDefault();//组成线号名的前缀 + string Tag = "";//线号名的中间部分 + switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) + { + case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = (j + 1).ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + j); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + (j + 1).ToString(); + } + break; + } + ec_CableSetWire.Wire_Tag = a + Tag; + ec_CableSet.Wires.Add(ec_CableSetWire); + } + ec_Cable.Sets.Add(ec_CableSet); + } + var httpres = await _iOModuleService.CreateCableByProfile(ec_Cable); + ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID); + } + else + { + listPropertys = new List(); + Dictionary pulldownlist; + + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对数", GroupName = "基本参数", PropertyValue = "10", ControlTypeName = PROPERTYType.TextBox, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "每电缆对芯数", GroupName = "基本参数", PropertyValue = "2", ControlTypeName = PROPERTYType.TextBox, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对编号前缀", GroupName = "基本参数", PropertyValue = "Set", ControlTypeName = PROPERTYType.TextBox, }); + pulldownlist = new Dictionary(); + pulldownlist.Add("数字", "数字"); + pulldownlist.Add("字母", "字母"); + pulldownlist.Add("电缆对序号", "电缆对序号"); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号类型", GroupName = "电芯参数", PropertyValue = "数字", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, }); + pulldownlist = new Dictionary(); + pulldownlist.Add("按电缆编号", "按电缆编号"); + pulldownlist.Add("按电缆对编号", "按电缆对编号"); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号规则", GroupName = "电芯参数", PropertyValue = "按电缆对编号", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电芯编号前缀", GroupName = "电芯参数", PropertyValue = "C", ControlTypeName = PROPERTYType.TextBox, }); + listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "极性", GroupName = "电芯参数", PropertyValue = "+,-,s", ControlTypeName = PROPERTYType.TextBox, }); + //显示属性弹窗 + var ReslistPro = ShowPropertyMessage("新建" + ResTagInfosByPixels.tags.FirstOrDefault().TagNumber + "电缆配置", listPropertys); + if (ReslistPro == null || ReslistPro.Count() == 0) return; + ec_Cable ec_Cable = new ec_Cable(); + ec_Cable.CableClass = "conventional";//常规电缆 + ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID; + ec_Cable.Sets = new List(); + int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; + for (int i = 0; i < CableSetCount; i++) + { + ec_CableSet ec_CableSet = new ec_CableSet(); + ec_CableSet.CableSetName = ReslistPro.Where(p => p.DisplayText.Equals("电缆对编号前缀")).Select(p => p.PropertyValue).FirstOrDefault() + (i + 1); + ec_CableSet.CableSetSeq = i + 1; + ec_CableSet.Wires = new List(); + int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; + for (int j = 0; j < WireCount; j++) + { + n++; + ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); + ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; + ec_CableSetWire.SetLevel = j + 1; + string a = ReslistPro.Where(p => p.DisplayText.Equals("电芯编号前缀")).Select(p => p.PropertyValue).FirstOrDefault();//组成线号名的前缀 + string Tag = "";//线号名的中间部分 + switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) + { + case "按电缆编号"://所有的电缆对中的电芯一起编号 + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n-1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i+1)+"-"+ n.ToString(); + } + break; + case "按电缆对编号"://一个电缆对中线号按顺序编号,另一个电缆对中线号重新从1开始编号 + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = (j + 1).ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + j); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i+1) + "-" + (j+1).ToString(); + } + break; + } + ec_CableSetWire.Wire_Tag = a + Tag; + ec_CableSet.Wires.Add(ec_CableSetWire); + } + ec_Cable.Sets.Add(ec_CableSet); + } + var httpres = await _iOModuleService.CreateCableByProfile(ec_Cable); + ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID); + } + } + if (ResCableEngID != null) + { + + IntPtr cadHandle = Bricscad.ApplicationServices.Application.MainWindow.Handle; + //打开窗体 + var para = new Prism.Services.Dialogs.DialogParameters(); + //para.Add(GlobalObject.dialogPar.para1.ToString(), "6e2919e4-28cd-4fb6-9035-10b2ff0e30fb"); + para.Add(GlobalObject.dialogPar.info.ToString(), cadHandle); + + para.Add(GlobalObject.dialogPar.para1.ToString(), ResCableEngID); + para.Add(GlobalObject.dialogPar.para2.ToString(), ResTagInfosByPixels.tags.FirstOrDefault().TagNumber); + var _dialogService = GlobalObject._prismContainer.Resolve(); + _dialogService.ShowDialog(nameof(DialogSignalPredistribution), para, (RES) => + { + if (RES.Result == ButtonResult.Yes) + { + + } + else if (RES.Result == ButtonResult.No) + { } + }); + } + + } + + } + catch (System.Exception ex) + { + ed.WriteMessage($"\n错误: {ex.Message}"); + } }); btnCableSinal.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CableSinal.png"); btnCableSinal.Id = "信号预分配"; diff --git a/newFront/c#前端/SWS.CAD/Event/ScrollToItemEvent.cs b/newFront/c#前端/SWS.CAD/Event/ScrollToItemEvent.cs new file mode 100644 index 00000000..be965b2d --- /dev/null +++ b/newFront/c#前端/SWS.CAD/Event/ScrollToItemEvent.cs @@ -0,0 +1,9 @@ +using Newtonsoft.Json.Linq; +using Prism.Events; + +namespace SWS.CAD.Event +{ + public class ScrollToItemEvent: PubSubEvent + { + } +} diff --git a/newFront/c#前端/SWS.CAD/GlobalObje.cs b/newFront/c#前端/SWS.CAD/GlobalObje.cs index f45a552e..3e72df60 100644 --- a/newFront/c#前端/SWS.CAD/GlobalObje.cs +++ b/newFront/c#前端/SWS.CAD/GlobalObje.cs @@ -156,7 +156,7 @@ namespace SWS.CAD if (_dwgSystem == null) { - var serv = GlobalObje.container.Resolve(); + var serv = GlobalObject.container.Resolve(); var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingSystem.ToString())); var res2 = res.Result; var res3 = DataItemDetailsToTree(res2); @@ -244,11 +244,11 @@ namespace SWS.CAD para1, para2 } - public static IUnityContainer container; - public static IContainerExtension _prismContainer; - public static HttpClient client; - public static loginRes userInfo; - public static List Users; + //public static IUnityContainer container; + //public static IContainerExtension _prismContainer; + //public static HttpClient client; + //public static loginRes userInfo; + //public static List Users; public static bool isConfigIniCreateBySys = true; //public static string drawingFileId; @@ -322,27 +322,27 @@ namespace SWS.CAD } #endregion - #region 根据ID获取用户名称 - /// - /// 根据ID获取用户名称 - /// - /// - /// - public static string GetUserNameById(string id) - { - if (string.IsNullOrEmpty(id)) - { return ""; } - var user = Users.FirstOrDefault(a => a.F_UserId == id || a.F_Account == id); - if (user != null) - { return user.F_RealName; } - else - { - return ""; - //user = GlobalObject.Users.FirstOrDefault(a => a.F_Account == id); - //return user != null ? user.F_RealName : ""; - } - } - #endregion + //#region 根据ID获取用户名称 + ///// + ///// 根据ID获取用户名称 + ///// + ///// + ///// + //public static string GetUserNameById(string id) + //{ + // if (string.IsNullOrEmpty(id)) + // { return ""; } + // var user = Users.FirstOrDefault(a => a.F_UserId == id || a.F_Account == id); + // if (user != null) + // { return user.F_RealName; } + // else + // { + // return ""; + // //user = GlobalObject.Users.FirstOrDefault(a => a.F_Account == id); + // //return user != null ? user.F_RealName : ""; + // } + //} + //#endregion #region 查找子控件 diff --git a/newFront/c#前端/SWS.CAD/SWS.CAD.csproj b/newFront/c#前端/SWS.CAD/SWS.CAD.csproj index 865e319d..1419120f 100644 --- a/newFront/c#前端/SWS.CAD/SWS.CAD.csproj +++ b/newFront/c#前端/SWS.CAD/SWS.CAD.csproj @@ -167,6 +167,7 @@ + diff --git a/newFront/c#前端/SWS.CAD/Start.cs b/newFront/c#前端/SWS.CAD/Start.cs index e6ec30b6..a3ae1d18 100644 --- a/newFront/c#前端/SWS.CAD/Start.cs +++ b/newFront/c#前端/SWS.CAD/Start.cs @@ -55,6 +55,7 @@ namespace SWS.CAD GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); + GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); diff --git a/newFront/c#前端/SWS.CAD/ViewModels/DialogIODistributionVM/DialogIODistributionViewModel.cs b/newFront/c#前端/SWS.CAD/ViewModels/DialogIODistributionVM/DialogIODistributionViewModel.cs index 5a78706a..fe8399c7 100644 --- a/newFront/c#前端/SWS.CAD/ViewModels/DialogIODistributionVM/DialogIODistributionViewModel.cs +++ b/newFront/c#前端/SWS.CAD/ViewModels/DialogIODistributionVM/DialogIODistributionViewModel.cs @@ -10,6 +10,7 @@ using System.Windows.Threading; using Bricscad.ApplicationServices; using Bricscad.EditorInput; using OfficeOpenXml; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; using Prism.Events; using Prism.Ioc; using Prism.Services.Dialogs; @@ -56,6 +57,8 @@ namespace SWS.CAD.ViewModels RaisePropertyChanged(nameof(SelectedTreeNode)); UpdateChannelInfos(); + var path = FindNodePath(PanelTreels, _SelectedTreeNode); + _eventAggregator.GetEvent().Publish(path); } } @@ -279,7 +282,7 @@ namespace SWS.CAD.ViewModels { ChannelInfo c = new ChannelInfo(); //电缆位号,电缆对,电缆线号,极性 - foreach (var Term in child.Terms) + foreach (var Term in child.Terms.OrderBy(p => p.Term_Seq).ToList()) { index++; c.Index.Add(index.ToString()); @@ -302,7 +305,8 @@ namespace SWS.CAD.ViewModels c.Polaritys.Add(new ec_WireTerminal()); } } - c.Terms.AddRange(child.Terms); + //端子号 + c.Terms.AddRange(child.Terms.OrderBy(p => p.Term_Seq).ToList()); //关联信号 c.Signal = child.Signal; if (child.Signal != null) @@ -333,14 +337,14 @@ namespace SWS.CAD.ViewModels } catch (Exception ex) { - System.Windows.MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error); + System.Windows.MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error); } finally { IsBusy = false; } - - + + } #endregion @@ -523,6 +527,44 @@ namespace SWS.CAD.ViewModels } #endregion + #region 查找节点路径 + public List FindNodePath(ObservableCollection nodes, TreeModel targetNode) + { + List path = new List(); + FindNodePathRecursive(nodes, targetNode, path); + return path; + } + + private bool FindNodePathRecursive(IEnumerable nodes, TreeModel targetNode, List currentPath) + { + foreach (var node in nodes) + { + currentPath.Add(node.Text); + if (node == targetNode) return true; // 找到目标节点,返回True并结束搜索 + if (node.ChildNodes.Count > 0 && FindNodePathRecursive(node.ChildNodes, targetNode, currentPath)) + return true; // 在子节点中继续搜索并找到目标节点,返回True并结束搜索 + currentPath.RemoveAt(currentPath.Count - 1); // 回溯,尝试下一个兄弟节点或父节点的其他兄弟节点 + } + return false; // 没有找到目标节点,返回False + } + #endregion + + #region 通过id查找项 + private TreeModel FindTreeModelById(IEnumerable TreeModels, string id) + { + foreach (var Tree in TreeModels) + { + if (Tree.ID == id) + return Tree; + + var foundInChildren = FindTreeModelById(Tree.ChildNodes, id); + if (foundInChildren != null) + return foundInChildren; + } + + return null; + } + #endregion #region 树形结构右键点击事件 public ICommand MouseRightCmd => new DelegateCommand(MouseRight_Click); @@ -685,13 +727,14 @@ namespace SWS.CAD.ViewModels DataItemName = listPro.Where(p => p.DisplayText.Equals("位置名称")).Select(p => p.PropertyValue).FirstOrDefault(), OrderID = int.Parse(listPro.Where(p => p.DisplayText.Equals("排序号")).Select(p => p.PropertyValue).FirstOrDefault()), }; - var httpres = await _dataItemService.SaveDetailForm(ent); - if (httpres != null) + var httpres = await _dataItemService.SaveDetailForm(ent) as learunHttpRes; + if (httpres.code != 200) { - System.Windows.MessageBox.Show(httpres.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; + System.Windows.MessageBox.Show(httpres.info.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; } PanelTreels.Clear(); PanelTreels.AddRange(await _iOModuleService.GetPanelTree()); + SelectedTreeNode = FindNodeByNodeId(PanelTreels, httpres.data.DataItemID); } else if (RES.Result == ButtonResult.No) { } @@ -881,13 +924,15 @@ namespace SWS.CAD.ViewModels } #endregion - var httpres = await _iOModuleService.CreatePanelStripByProfile(e); - if (httpres != null) + var httpres = await _iOModuleService.CreatePanelStripByProfile(e) as learunHttpRes; + if (httpres.code != 200) { - System.Windows.MessageBox.Show(httpres.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; + System.Windows.MessageBox.Show(httpres.info.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; } PanelTreels.Clear(); PanelTreels.AddRange(await _iOModuleService.GetPanelTree()); + SelectedTreeNode = FindTreeModelById(PanelTreels, httpres.data.StripID); + } else if (RES.Result == ButtonResult.No) { } @@ -940,13 +985,14 @@ namespace SWS.CAD.ViewModels DataItemName = listPro.Where(p => p.DisplayText.Equals("位置名称")).Select(p => p.PropertyValue).FirstOrDefault(), OrderID = int.Parse(listPro.Where(p => p.DisplayText.Equals("排序号")).Select(p => p.PropertyValue).FirstOrDefault()), }; - var httpres = await _dataItemService.SaveDetailForm(ent); - if (httpres != null) + var httpres = await _dataItemService.SaveDetailForm(ent) as learunHttpRes; + if (httpres.code != 200) { - System.Windows.MessageBox.Show(httpres.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; + System.Windows.MessageBox.Show(httpres.info.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; } PanelTreels.Clear(); PanelTreels.AddRange(await _iOModuleService.GetPanelTree()); + SelectedTreeNode = FindNodeByNodeId(PanelTreels, httpres.info); } else if (RES.Result == ButtonResult.No) { } @@ -974,6 +1020,7 @@ namespace SWS.CAD.ViewModels { if (RES.Result == ButtonResult.Yes) { + var tempID = SelectedTreeNode.ID; var listPro = RES.Parameters.GetValue>(GlobalObject.dialogPar.para1.ToString()); ec_PanelStrip ent = new ec_PanelStrip() @@ -985,12 +1032,13 @@ namespace SWS.CAD.ViewModels StripID = StripIDValue, }; var httpres = await _iOModuleService.SavePanelStrip(ent); - if (httpres != null) + if (httpres!= null) { System.Windows.MessageBox.Show(httpres.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; } PanelTreels.Clear(); PanelTreels.AddRange(await _iOModuleService.GetPanelTree()); + SelectedTreeNode = FindNodeByNodeId(PanelTreels, tempID); } else if (RES.Result == ButtonResult.No) { } @@ -1017,7 +1065,15 @@ namespace SWS.CAD.ViewModels MessageBoxResult result = System.Windows.MessageBox.Show($"确定删除[{SelectedTreeNode.Text}]节点以及子节点吗", "KunHengCAD", MessageBoxButton.OKCancel, MessageBoxImage.Question); if (result == MessageBoxResult.OK) { + var tempParentId = SelectedTreeNode.parentId; var httpres = await _iOModuleService.DeletePanelStrip(SelectedTreeNode.ID); + if (httpres!=null) + { + System.Windows.MessageBox.Show(httpres.ToString(), "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; + } + PanelTreels.Clear(); + PanelTreels.AddRange(await _iOModuleService.GetPanelTree()); + SelectedTreeNode = FindTreeModelById(PanelTreels, tempParentId); } } return; @@ -1069,7 +1125,8 @@ namespace SWS.CAD.ViewModels //获取位号的电缆属性,判断是否设置电缆规格 var TagNumberBys = await _objectTypeService.GetEngineDataListByTags(selectTagNumberOB.TagNumber); var TagNumberBy = TagNumberBys.Where(t => t.TagNumber.Equals(selectTagNumberOB.TagNumber)).FirstOrDefault(); - if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) + if (string.IsNullOrEmpty(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) + //if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) { System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; @@ -1108,6 +1165,7 @@ namespace SWS.CAD.ViewModels ec_Cable.EngineerDataID = selectTagNumberOB.EngineDataID; ec_Cable.Sets = new List(); int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; for (int i = 0; i < CableSetCount; i++) { ec_CableSet ec_CableSet = new ec_CableSet(); @@ -1117,6 +1175,7 @@ namespace SWS.CAD.ViewModels int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; for (int j = 0; j < WireCount; j++) { + n++; ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; ec_CableSetWire.SetLevel = j + 1; @@ -1125,6 +1184,20 @@ namespace SWS.CAD.ViewModels switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) { case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) { Tag = (j + 1).ToString(); @@ -1135,12 +1208,9 @@ namespace SWS.CAD.ViewModels } else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) { - Tag = (i + 1).ToString(); + Tag = (i + 1) + "-" + (j + 1).ToString(); } break; - case "按电缆对编号": - a = selectTagNumberOB.TagNumber; - break; } ec_CableSetWire.Wire_Tag = a + Tag; ec_CableSet.Wires.Add(ec_CableSetWire); @@ -1177,6 +1247,7 @@ namespace SWS.CAD.ViewModels ec_Cable.EngineerDataID = selectTagNumberOB.EngineDataID; ec_Cable.Sets = new List(); int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; for (int i = 0; i < CableSetCount; i++) { ec_CableSet ec_CableSet = new ec_CableSet(); @@ -1186,6 +1257,7 @@ namespace SWS.CAD.ViewModels int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; for (int j = 0; j < WireCount; j++) { + n++; ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; ec_CableSetWire.SetLevel = j + 1; @@ -1194,6 +1266,20 @@ namespace SWS.CAD.ViewModels switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) { case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) { Tag = (j + 1).ToString(); @@ -1204,12 +1290,9 @@ namespace SWS.CAD.ViewModels } else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) { - Tag = (i + 1).ToString(); + Tag = (i + 1) + "-" + (j + 1).ToString(); } break; - case "按电缆对编号": - a = selectTagNumberOB.TagNumber; - break; } ec_CableSetWire.Wire_Tag = a + Tag; ec_CableSet.Wires.Add(ec_CableSetWire); @@ -1502,11 +1585,12 @@ namespace SWS.CAD.ViewModels //获取位号的电缆属性,判断是否设置电缆规格 var TagNumberBys = await _objectTypeService.GetEngineDataListByTags(resTagNumberListByPixels.TagNumber); var TagNumberBy = TagNumberBys.Where(t => t.TagNumber.Equals(resTagNumberListByPixels.TagNumber)).FirstOrDefault(); + if (string.IsNullOrEmpty(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) //if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault())) - //{ - // System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; + { + System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning); return; - //} + } //获取电缆的配置,没有则创建新配置 var CableBy = await _iOModuleService.GetCableByEngID(resTagNumberListByPixels?.EngineDataID); if (CableBy == null) @@ -1540,6 +1624,7 @@ namespace SWS.CAD.ViewModels ec_Cable.EngineerDataID = resTagNumberListByPixels.EngineDataID; ec_Cable.Sets = new List(); int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; for (int i = 0; i < CableSetCount; i++) { ec_CableSet ec_CableSet = new ec_CableSet(); @@ -1549,6 +1634,7 @@ namespace SWS.CAD.ViewModels int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; for (int j = 0; j < WireCount; j++) { + n++; ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; ec_CableSetWire.SetLevel = j + 1; @@ -1557,6 +1643,20 @@ namespace SWS.CAD.ViewModels switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) { case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) { Tag = (j + 1).ToString(); @@ -1567,12 +1667,9 @@ namespace SWS.CAD.ViewModels } else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) { - Tag = (i + 1).ToString(); + Tag = (i + 1) + "-" + (j + 1).ToString(); } break; - case "按电缆对编号": - a = resTagNumberListByPixels.TagNumber; - break; } ec_CableSetWire.Wire_Tag = a + Tag; ec_CableSet.Wires.Add(ec_CableSetWire); @@ -1609,6 +1706,7 @@ namespace SWS.CAD.ViewModels ec_Cable.EngineerDataID = resTagNumberListByPixels.EngineDataID; ec_Cable.Sets = new List(); int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0; + int n = 0; for (int i = 0; i < CableSetCount; i++) { ec_CableSet ec_CableSet = new ec_CableSet(); @@ -1618,6 +1716,7 @@ namespace SWS.CAD.ViewModels int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0; for (int j = 0; j < WireCount; j++) { + n++; ec_CableSetWire ec_CableSetWire = new ec_CableSetWire(); ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)]; ec_CableSetWire.SetLevel = j + 1; @@ -1626,6 +1725,20 @@ namespace SWS.CAD.ViewModels switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault()) { case "按电缆编号": + if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) + { + Tag = n.ToString(); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母")) + { + Tag = Tag + (char)('A' + (n - 1)); + } + else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) + { + Tag = (i + 1) + "-" + n.ToString(); + } + break; + case "按电缆对编号": if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字")) { Tag = (j + 1).ToString(); @@ -1636,12 +1749,9 @@ namespace SWS.CAD.ViewModels } else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号")) { - Tag = (i + 1).ToString(); + Tag = (i + 1) + "-" + (j + 1).ToString(); } break; - case "按电缆对编号": - a = resTagNumberListByPixels.TagNumber; - break; } ec_CableSetWire.Wire_Tag = a + Tag; ec_CableSet.Wires.Add(ec_CableSetWire); @@ -2055,7 +2165,7 @@ namespace SWS.CAD.ViewModels if (result == MessageBoxResult.OK) { var httpres = await _iOModuleService.DeletePanelChannel(SelectedChannelInfo.ChannelID); - if (httpres!=null) + if (httpres != null) { System.Windows.MessageBox.Show(httpres, "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; @@ -2531,8 +2641,8 @@ namespace SWS.CAD.ViewModels ent.Signals = new List(); ent.Signals.Add(SelectedChannelInfo.Signal); //解除信号 - var data = await _wireGroupService.SaveSignals(ent); - if (data != null) + var data = await _wireGroupService.SaveSignals(ent) as learunHttpRes>; + if (data.code ==200) { ChannelInfos.Clear(); UpdateChannelInfos(); diff --git a/newFront/c#前端/SWS.CAD/ViewModels/DialogSignalPredistributionViewModel.cs b/newFront/c#前端/SWS.CAD/ViewModels/DialogSignalPredistributionViewModel.cs index f571491f..8f100e4e 100644 --- a/newFront/c#前端/SWS.CAD/ViewModels/DialogSignalPredistributionViewModel.cs +++ b/newFront/c#前端/SWS.CAD/ViewModels/DialogSignalPredistributionViewModel.cs @@ -1,29 +1,208 @@  +using Prism.Events; using Prism.Ioc; using Prism.Services.Dialogs; +using SWS.CAD.Event; using SWS.CAD.ViewModels.myViewModelBase; using SWS.CAD.Views; using SWS.CAD.Views.CustomControl; using SWS.Commons; +using SWS.Model; +using SWS.Service; using System; +using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; using System.Windows.Input; +using Telerik.Windows.Controls; using Unity; -using DelegateCommand = Prism.Commands.DelegateCommand; namespace SWS.CAD.ViewModels { public class DialogSignalPredistributionViewModel : DialogBase, IDialogAware { - private string objectTypeId; + #region 字段 + private ObservableCollection _PanelTreels = new ObservableCollection(); /// - /// 新建位号 + /// 页面左侧树形结构数据 /// - public ICommand Command_NewTagNumber { get; set; } + public ObservableCollection PanelTreels + { + get { return _PanelTreels; } + set { _PanelTreels = value; RaisePropertyChanged(nameof(PanelTreels)); } + } + + private Model.TreeModel _SelectedTreeNode; + /// + /// 当前选中的树形节点 + /// + public Model.TreeModel SelectedTreeNode + { + get { return _SelectedTreeNode; } + set + { + _SelectedTreeNode = value; + RaisePropertyChanged(nameof(SelectedTreeNode)); + var path= FindNodePath(PanelTreels, _SelectedTreeNode); + _eventAggregator.GetEvent().Publish(path); + } + } + + private ObservableCollection _SignalPredistributionInfos = new ObservableCollection(); + /// + /// 表格数据 + /// + public ObservableCollection SignalPredistributionInfos + { + get { return _SignalPredistributionInfos; } + set + { + _SignalPredistributionInfos = value; + RaisePropertyChanged(nameof(SignalPredistributionInfos)); + } + } + + + private string _SelectedOption1; + /// + /// 是否通讯母线 + /// + public string SelectedOption1 + { + get { return _SelectedOption1; } + set + { + _SelectedOption1 = value; + RaisePropertyChanged(nameof(SelectedOption1)); + } + } + + private string _SelectedOption2; + /// + /// 选择的信号类型 + /// + public string SelectedOption2 + { + get { return _SelectedOption2; } + set + { + _SelectedOption2 = value; + SignalColumnName = value; + RaisePropertyChanged(nameof(SelectedOption2)); + } + } + + private string _SignalColumnName; + /// + /// 信号类型列的列名 + /// + public string SignalColumnName + { + get { return _SignalColumnName; } + set + { + _SignalColumnName = value; + RaisePropertyChanged(nameof(SignalColumnName)); + if (value.Equals("Digital")) + { + SignalTypeColumn = new ObservableCollection() { "无公共端接线(断开报警NC)", "无公共端接线(闭合报警NO)", "带公共端接线(断开报警NC)", "带公共端接线(闭合报警NO)" }; + } + else if (value.Equals("4-20mA")) + { + SignalTypeColumn = new ObservableCollection() { "无源", "有源" }; + } + else if (value.Equals("-10V-10V")) + { + SignalTypeColumn = new ObservableCollection() { "无源", "有源" }; + } + else if (value.Equals("PT100")) + { + SignalTypeColumn = new ObservableCollection() { "量程100", "量程150", "量程200", "量程600" }; + } + else if (value.Equals("Pulse")) + { + SignalTypeColumn = new ObservableCollection() { "脉冲信号" }; + } + } + } + + + + private List _CommunicationFormats = new List() { "RS485", "RS482", "TCP/IP", "MQTT" }; + /// + /// 通讯格式集合 + /// + public List CommunicationFormats + { + get { return _CommunicationFormats; } + set + { + _CommunicationFormats = value; + RaisePropertyChanged(nameof(CommunicationFormats)); + } + } + + private string _CommunicationFormat = "RS485"; + /// + /// 通讯格式 + /// + public string CommunicationFormat + { + get { return _CommunicationFormat; } + set + { + _CommunicationFormat = value; + RaisePropertyChanged(nameof(CommunicationFormat)); + } + } + + private ObservableCollection _SignalTypeColumn; + /// + /// 信号类型列的下拉列表 + /// + public ObservableCollection SignalTypeColumn + { + get { return _SignalTypeColumn; } + set + { + _SignalTypeColumn = value; + RaisePropertyChanged(nameof(SignalTypeColumn)); + if (SignalPredistributionInfos != null) + { + foreach (var item in SignalPredistributionInfos) + { + item.SignalType = _SignalTypeColumn.FirstOrDefault(); + } + } + } + } + private List _InorOuts = new List() { "输出", "输入" }; + /// + /// 输入/输出列的下拉列表 + /// + public List InorOuts + { + get { return _InorOuts; } + set + { + _InorOuts = value; + RaisePropertyChanged(nameof(InorOuts)); + } + } + + #endregion + + IOModuleService _iOModuleService; + IEventAggregator _eventAggregator; + public DialogSignalPredistributionViewModel() { - title = "电缆信号预分配"; + _iOModuleService = GlobalObject.container.Resolve(); + _eventAggregator = GlobalObject.container.Resolve(); + } public string Title => ""; @@ -38,16 +217,157 @@ namespace SWS.CAD.ViewModels { } - - - public void OnDialogOpened(IDialogParameters parameters) + + private ec_Cable CableBy; + public async void OnDialogOpened(IDialogParameters parameters) { - //listTags = parameters.GetValue>(GlobalObject.dialogPar.info.ToString()); - objectTypeId = parameters.GetValue(GlobalObject.dialogPar.id.ToString()); + title = $"电缆信号({parameters.GetValue(GlobalObject.dialogPar.para2.ToString())})预分配"; + //树形结构数据 + PanelTreels.AddRange(await _iOModuleService.GetPanelTree()); + //电缆信息 + CableBy = parameters.GetValue(GlobalObject.dialogPar.para1.ToString()); + //是否母线 + if (CableBy.CableClass.Equals("homerun")) + { + SelectedOption1 = "是"; + } + else if (CableBy.CableClass.Equals("conventional") || CableBy.CableClass.Equals("")) + { + SelectedOption1 = "否"; + + } + //设置默认信号类型 + if (string.IsNullOrEmpty(CableBy.PreAssignIOType)) + { + SelectedOption2 = "Digital"; + } + else + { + SelectedOption2 = CableBy.PreAssignIOType; + } + + //设置表格数据 + int index = 0; + foreach (var Set in CableBy.Sets) + { + SignalPredistributionInfo predistributionInfo = new SignalPredistributionInfo(); + predistributionInfo.CablePair = Set.CableSetName; + foreach (var Wire in Set.Wires) + { + index++; + predistributionInfo.Index.Add(index.ToString()); + predistributionInfo.CableWires.Add(Wire); + predistributionInfo.Polaritys.Add(Wire); + } + if (string.IsNullOrEmpty(Set.PreAssignIOTypeDetail)) + { + predistributionInfo.SignalType = SignalTypeColumn.FirstOrDefault(); + } + else + { + predistributionInfo.SignalType = Set.PreAssignIOTypeDetail; + } + predistributionInfo.ChineseDescription = Set.PreAssignGroup_Desc; + predistributionInfo.EnglishDescription = Set.PreAssignGroup_Desc_EN; + + if (string.IsNullOrEmpty(Set.PreAssignInOrOut)) + { + predistributionInfo.InorOut = InorOuts.FirstOrDefault(); + } + else + { + predistributionInfo.InorOut = Set.PreAssignInOrOut; + } + predistributionInfo.SensorCode = Set.PreAssignSensorCode; + + + SignalPredistributionInfos.Add(predistributionInfo); + } + //是否预关联,有则选中节点 + foreach (var Panel in PanelTreels) + { + if (!string.IsNullOrEmpty(Panel.ID)) + { + if (Panel.ID.Equals(CableBy.PanelID)) + { + SelectedTreeNode = Panel; + break; + } + } + foreach (var Child in Panel.ChildNodes) + { + if (!string.IsNullOrEmpty(Child.ID)) + { + if (Child.ID.Equals(CableBy.PanelID)) + { + SelectedTreeNode = Child; + break; + } + } + } + } + + } - public override void ExecuteOKCommandAsync(object para) + public override async void ExecuteOKCommandAsync(object para) { + //创建SaveCable接口实例 + ec_Cable newCable = new ec_Cable(); + if (SelectedOption1.Equals("是")) + { + newCable.CableClass = "homerun"; + newCable.PreAssignIOType = CommunicationFormat; + } + else + { + newCable.CableClass = "conventional"; + newCable.PreAssignIOType = SelectedOption2; + } + + newCable.CableID = CableBy.CableID; + newCable.EngineerDataID = CableBy.EngineerDataID; + if (SelectedTreeNode != null) + { + newCable.PanelID = SelectedTreeNode.ID; + } + else + { + MessageBox.Show("请选择系统柜!", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + newCable.UpdateUserID = GlobalObject.userInfo.userId; + newCable.Sets = new List(); + foreach (var CableBySet in CableBy.Sets) + { + ec_CableSet newCableSet = new ec_CableSet(); + newCableSet.CableSetID = CableBySet.CableSetID; + newCableSet.CableSetName = CableBySet.CableSetName; + newCableSet.CableSetSeq = CableBySet.CableSetSeq; + newCableSet.IsConned = CableBySet.IsConned; + newCableSet.PreAssignGroup_Desc = SignalPredistributionInfos.FirstOrDefault(s => s.CablePair.Equals(CableBySet.CableSetName)).ChineseDescription; + newCableSet.PreAssignGroup_Desc_EN = SignalPredistributionInfos.FirstOrDefault(s => s.CablePair.Equals(CableBySet.CableSetName)).EnglishDescription; + newCableSet.PreAssignIOTypeDetail = SignalPredistributionInfos.FirstOrDefault(s => s.CablePair.Equals(CableBySet.CableSetName)).SignalType; + newCableSet.PreAssignInOrOut = SignalPredistributionInfos.FirstOrDefault(s => s.CablePair.Equals(CableBySet.CableSetName)).InorOut; + newCableSet.PreAssignSensorCode = SignalPredistributionInfos.FirstOrDefault(s => s.CablePair.Equals(CableBySet.CableSetName)).SensorCode; + newCableSet.Wires = new List(); + foreach (var wire in CableBySet.Wires) + { + ec_CableSetWire newWire = new ec_CableSetWire(); + newWire.Polarity = wire.Polarity; + newWire.SetLevel = 0; + newWire.WireID = wire.WireID; + newWire.Wire_Tag = wire.Wire_Tag; + newWire.Wire_Color_ID = wire.Wire_Color_ID; + newWire.PreAssignChannelTermNo = SignalPredistributionInfos.FirstOrDefault(s => s.CablePair.Equals(CableBySet.CableSetName)).CableWires.FirstOrDefault(c => c.Wire_Tag.Equals(wire.Wire_Tag)).PreAssignChannelTermNo; + + newCableSet.Wires.Add(newWire); + } + newCable.Sets.Add(newCableSet); + } + + var httpres = await _iOModuleService.SaveCable(newCable); + IDialogParameters res = new Prism.Services.Dialogs.DialogParameters(); //res.Add(GlobalObject.dialogPar.info.ToString(), TagNumber); RequestClose.Invoke(new DialogResult(ButtonResult.Yes, res)); @@ -65,8 +385,199 @@ namespace SWS.CAD.ViewModels } this.Dispose(); } + #region 方法 + public ICommand ButtonCmd => new DelegateCommand(Button_Click); + /// + /// 页面左侧按钮 + /// + /// + public virtual async void Button_Click(object parameter) + { + #region 清除配置 + if (parameter.ToString().Equals("清除配置")) + { + + MessageBoxResult result = MessageBox.Show($"确定删除“{ CableBy.TagNumber}”电缆配置?", "KunHengCAD", MessageBoxButton.OKCancel, MessageBoxImage.Question); + if (result == MessageBoxResult.OK) + { + var httpres = await _iOModuleService.DeleteCableProfile(CableBy.CableID); + if (httpres == null) + { + RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); + this.Dispose(); + } + } + return; + } + #endregion + + #region 指定中英文 + if (parameter.ToString().Equals("指定中英文")) + { + //SelectedTreeNode = PanelTreels[2].ChildNodes.LastOrDefault(); + return; + } + #endregion + } + + + #region 查找节点路径 + public List FindNodePath(ObservableCollection nodes, TreeModel targetNode) + { + List path = new List(); + FindNodePathRecursive(nodes, targetNode, path); + return path; + } + + private bool FindNodePathRecursive(IEnumerable nodes, TreeModel targetNode, List currentPath) + { + foreach (var node in nodes) + { + currentPath.Add(node.Text); + if (node == targetNode) return true; // 找到目标节点,返回True并结束搜索 + if (node.ChildNodes.Count > 0 && FindNodePathRecursive(node.ChildNodes, targetNode, currentPath)) + return true; // 在子节点中继续搜索并找到目标节点,返回True并结束搜索 + currentPath.RemoveAt(currentPath.Count - 1); // 回溯,尝试下一个兄弟节点或父节点的其他兄弟节点 + } + return false; // 没有找到目标节点,返回False + } + #endregion + + + + #endregion } + public class SignalPredistributionInfo : DialogBase + { + #region 字段 + private ObservableCollection _Index = new ObservableCollection(); + /// + /// 序号集合 + /// + public ObservableCollection Index + { + get { return _Index; } + set { _Index = value; } + } + + private string _CablePair; + /// + /// 电缆对 + /// + public string CablePair + { + get { return _CablePair; } + set { _CablePair = value; } + } + + private ObservableCollection _CableWires = new ObservableCollection(); + /// + /// 电缆线号 + /// + public ObservableCollection CableWires + { + get { return _CableWires; } + set { _CableWires = value; } + } + + private ObservableCollection _Polaritys = new ObservableCollection(); + /// + /// 极性 + /// + public ObservableCollection Polaritys + { + get { return _Polaritys; } + set + { + _Polaritys = value; + RaisePropertyChanged(nameof(Polaritys)); + } + } + + private string _SignalType; + /// + /// 信号类型 + /// + public string SignalType + { + get { return _SignalType; } + set + { + _SignalType = value; + RaisePropertyChanged(nameof(SignalType)); + } + } + + + private string _ChineseDescription; + /// + /// 中文描述 + /// + public string ChineseDescription + { + get { return _ChineseDescription; } + set + { + _ChineseDescription = value; + RaisePropertyChanged(nameof(ChineseDescription)); + } + } + + private string _EnglishDescription; + /// + /// 英文描述 + /// + public string EnglishDescription + { + get { return _EnglishDescription; } + set + { + _EnglishDescription = value; + RaisePropertyChanged(nameof(EnglishDescription)); + } + } + + private string _InorOut; + /// + /// 输入/输出 + /// + public string InorOut + { + get { return _InorOut; } + set + { + _InorOut = value; + RaisePropertyChanged(nameof(InorOut)); + } + } + + private string _SensorCode; + /// + /// 传感器编号 + /// + public string SensorCode + { + get { return _SensorCode; } + set + { + _SensorCode = value; + RaisePropertyChanged(nameof(SensorCode)); + } + } + + + private ObservableCollection _Terms = new ObservableCollection(); + /// + /// 端子号集合 + /// + public ObservableCollection Terms + { + get { return _Terms; } + set { _Terms = value; } + } + #endregion + } } diff --git a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml index 6e8fb602..d9d29926 100644 --- a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml +++ b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml @@ -248,7 +248,6 @@ - @@ -265,7 +264,6 @@ - @@ -283,7 +281,6 @@ - @@ -503,6 +500,7 @@ Margin="5" telerik:StyleManager.Theme="Office_Blue" AllowDrop="True" AutoScrollToSelectedItem="True" IsVirtualizing="True" + telerik:TextSearch.TextPath="Text" > diff --git a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml.cs b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml.cs index 6e56e1e7..16f301ee 100644 --- a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml.cs +++ b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogIODistributions/DialogIODistribution.xaml.cs @@ -1,12 +1,17 @@  using System; +using System.Collections.Generic; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; +using Prism.Events; +using SWS.CAD.Event; using SWS.CAD.ViewModels; +using SWS.Commons; using Telerik.Windows.Controls; +using Unity; namespace SWS.CAD.Views.Dialog { @@ -15,10 +20,14 @@ namespace SWS.CAD.Views.Dialog /// public partial class DialogIODistribution : UserControl { + IEventAggregator _eventAggregator; + public DialogIODistribution() { InitializeComponent(); DataContext = new DialogIODistributionViewModel(); + _eventAggregator = GlobalObject.container.Resolve(); + _eventAggregator.GetEvent().Subscribe(ScrollToSelectedItem, ThreadOption.UIThread, true); } private void RadTreeView_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) @@ -83,5 +92,13 @@ namespace SWS.CAD.Views.Dialog return source as T; } + // 滚动到选中项 + private void ScrollToSelectedItem(object path) + { + var pathls = path as List; + var ph = string.Join("\\", pathls); + treeView1.BringPathIntoView(ph); + } + } } diff --git a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml index 6cb5dd6b..2e526ce3 100644 --- a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml +++ b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml @@ -6,8 +6,9 @@ xmlns:prism="http://prismlibrary.com/" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:local="clr-namespace:SWS.CAD.Views.Dialog" + xmlns:cvt="clr-namespace:SWS.Commons.Helper.Converter;assembly=SWS.Commons" xmlns:CustomControl="clr-namespace:SWS.CustomControl;assembly=SWS.CustomControl" - Width="1000" Height="800" + Width="1000" Height="790" mc:Ignorable="d" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + Header="信号类型" + Style="{StaticResource SecondGroupStyle1}"> - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + - - + - - - - - - - - - - - - + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml.cs b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml.cs index 7330e671..c38053d8 100644 --- a/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml.cs +++ b/newFront/c#前端/SWS.CAD/Views/Dialog/DialogSignalPredistribution.xaml.cs @@ -12,6 +12,13 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; +using System.Windows.Threading; +using Prism.Events; +using SWS.CAD.Event; +using SWS.Commons; +using SWS.Model; +using Telerik.Windows.Controls; +using Unity; namespace SWS.CAD.Views.Dialog { @@ -20,9 +27,23 @@ namespace SWS.CAD.Views.Dialog /// public partial class DialogSignalPredistribution : UserControl { + IEventAggregator _eventAggregator; + public DialogSignalPredistribution() { InitializeComponent(); + _eventAggregator = GlobalObject.container.Resolve(); + _eventAggregator.GetEvent().Subscribe(ScrollToSelectedItem, ThreadOption.UIThread, true); + } + + // 滚动到选中项 + private void ScrollToSelectedItem(object path) + { + var pathls = path as List; + var ph = string.Join("\\", pathls); + treeView1.BringPathIntoView(ph); } } + + } diff --git a/newFront/c#前端/SWS.Commons/GlobalObject.cs b/newFront/c#前端/SWS.Commons/GlobalObject.cs index 52481c86..4cae166c 100644 --- a/newFront/c#前端/SWS.Commons/GlobalObject.cs +++ b/newFront/c#前端/SWS.Commons/GlobalObject.cs @@ -85,6 +85,7 @@ namespace SWS.Commons public static List designTree = new List(); #endregion + public enum DBConst { /// diff --git a/newFront/c#前端/SWS.Commons/Helper/Converter/RadioButtonValueConverter.cs b/newFront/c#前端/SWS.Commons/Helper/Converter/RadioButtonValueConverter.cs new file mode 100644 index 00000000..fa72d695 --- /dev/null +++ b/newFront/c#前端/SWS.Commons/Helper/Converter/RadioButtonValueConverter.cs @@ -0,0 +1,36 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using SWS.Model; + +namespace SWS.Commons.Helper.Converter +{ + public class RadioButtonValueConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string isChecked) + { + if (isChecked.Equals(parameter.ToString())) + { + return true; + } + else + { + return false; + } + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is bool isChecked) + { + return parameter.ToString(); + } + return parameter.ToString(); + } + } +} diff --git a/newFront/c#前端/SWS.Commons/SWS.Commons.csproj b/newFront/c#前端/SWS.Commons/SWS.Commons.csproj index d8396683..af3be2d4 100644 --- a/newFront/c#前端/SWS.Commons/SWS.Commons.csproj +++ b/newFront/c#前端/SWS.Commons/SWS.Commons.csproj @@ -106,6 +106,7 @@ + diff --git a/newFront/c#前端/SWS.Electrical/Start.cs b/newFront/c#前端/SWS.Electrical/Start.cs index b12a7f41..d51f8c4a 100644 --- a/newFront/c#前端/SWS.Electrical/Start.cs +++ b/newFront/c#前端/SWS.Electrical/Start.cs @@ -65,6 +65,7 @@ namespace SWS.Electrical GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); + GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); GlobalObject._prismContainer.RegisterDialog(); diff --git a/newFront/c#前端/SWS.Service/ConfigService.cs b/newFront/c#前端/SWS.Service/ConfigService.cs index 4d2b4110..8b224cde 100644 --- a/newFront/c#前端/SWS.Service/ConfigService.cs +++ b/newFront/c#前端/SWS.Service/ConfigService.cs @@ -51,7 +51,9 @@ namespace SWS.Service //directory = data["Profile"]["strLocalWorkDir"]; address = IniHelper.ReadValueFromIniFile("Profile", "strIPAddress"); - port = int.Parse(IniHelper.ReadValueFromIniFile("Profile", "nPort")); + string portString = IniHelper.ReadValueFromIniFile("Profile", "nPort"); + int.TryParse(portString?.Trim(), out port); + //port = int.Parse(IniHelper.ReadValueFromIniFile("Profile", "nPort")); directory = IniHelper.ReadValueFromIniFile("Profile", "strLocalWorkDir"); } diff --git a/newFront/c#前端/SWS.Service/DataItemService.cs b/newFront/c#前端/SWS.Service/DataItemService.cs index 0cd7fb75..eb9459e2 100644 --- a/newFront/c#前端/SWS.Service/DataItemService.cs +++ b/newFront/c#前端/SWS.Service/DataItemService.cs @@ -50,16 +50,16 @@ namespace SWS.Service public async Task SaveDetailForm(ec_dataitemdetail entity) { var res = await this.PostBodyAsync($"DataItemApi/SaveDetailForm?ProjectId={GlobalObject.curProject?.ProjectId}", entity); - if (res.code == 200) - { - //return res.info; - return null; - } - else - { - return res.info; // 返回错误信息 - } - + //if (res.code == 200) + //{ + // //return res.info; + // return null; + //} + //else + //{ + // return res.info; // 返回错误信息 + //} + return res; } } } diff --git a/newFront/c#前端/SWS.Service/IOModuleService.cs b/newFront/c#前端/SWS.Service/IOModuleService.cs index aa1eab8f..7fc4aff5 100644 --- a/newFront/c#前端/SWS.Service/IOModuleService.cs +++ b/newFront/c#前端/SWS.Service/IOModuleService.cs @@ -139,16 +139,16 @@ namespace SWS.Service public async Task CreatePanelStripByProfile(ec_PanelStrip entity) { var res = await this.PostBodyAsync($"IOModuleApi/CreatePanelStripByProfile?projId={GlobalObject.curProject?.ProjectId}", entity); - if (res.code == 200) - { - //return res.info; - return null; - } - else - { - return res.info; // 返回错误信息 - } - + //if (res.code == 200) + //{ + // //return res.info; + // return null; + //} + //else + //{ + // return res.info; // 返回错误信息 + //} + return res; } public async Task DeletePanel(string PanelID) diff --git a/newFront/c#前端/SWS.WPF/SWS.WPF.csproj b/newFront/c#前端/SWS.WPF/SWS.WPF.csproj index 47f9463f..761f1452 100644 --- a/newFront/c#前端/SWS.WPF/SWS.WPF.csproj +++ b/newFront/c#前端/SWS.WPF/SWS.WPF.csproj @@ -126,6 +126,7 @@ + @@ -137,6 +138,9 @@ CustomDialogWindow.xaml + + DialogAssociatedSignal.xaml + DialogAllOutputSignal.xaml @@ -200,6 +204,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogAssociatedSignalViewModel.cs b/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogAssociatedSignalViewModel.cs new file mode 100644 index 00000000..4fb07ae9 --- /dev/null +++ b/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogAssociatedSignalViewModel.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Windows.Input; +using Prism.Services.Dialogs; +using Prism.Ioc; +using SWS.Commons; +using SWS.Model; +using SWS.Service; +using SWS.WPF.Views; +using Telerik.Windows.Controls; +using Unity; +using DialogParameters = Prism.Services.Dialogs.DialogParameters; +using System.Windows; + +namespace SWS.WPF.ViewModels +{ + public class DialogAssociatedSignalViewModel : DialogBase, IDialogAware + { + #region 属性 + private ObservableCollection _MySignals = new ObservableCollection(); + /// + /// 表格数据源 + /// + public ObservableCollection MySignals + { + get { return _MySignals; } + set { _MySignals = value; RaisePropertyChanged(nameof(MySignals)); } + } + private SignalManagementInfo _SelectedSignal; + /// + /// 选中行 + /// + public SignalManagementInfo SelectedSignal + { + get { return _SelectedSignal; } + set { _SelectedSignal = value; RaisePropertyChanged(nameof(SelectedSignal)); } + } + + + private string _Info; + /// + /// 列表上方文字 + /// + public string Info + { + get { return _Info; } + set { _Info = value; RaisePropertyChanged(nameof(Info)); } + } + + private Visibility _IsVisibility = Visibility.Collapsed; + /// + /// 控制取消关联按钮是否可见 + /// + public Visibility IsVisibility + { + get { return _IsVisibility; } + set + { + _IsVisibility = value; + RaisePropertyChanged(nameof(IsVisibility)); + } + } + + /// + /// 信号接口服务 + /// + WireGroupService _wireGroupService; + + public DialogSignalNotice SignalNoticeView { get; set; } + + + + + + #endregion + + + public DialogAssociatedSignalViewModel() + { + + _wireGroupService = GlobalObject.container.Resolve(); + } + + + public string Title => ""; + + public event Action RequestClose; + + public bool CanCloseDialog() + { + return true; + } + + public void OnDialogClosed() + { + + } + + public async void OnDialogOpened(IDialogParameters parameters) + { + title = parameters.GetValue(GlobalObject.dialogPar.title.ToString()); + Info = parameters.GetValue(GlobalObject.dialogPar.info.ToString()); + + + var signals = parameters.GetValue>(GlobalObject.dialogPar.para1.ToString()); + foreach (var item in signals) + { + if (title.Equals("信号选择框")) + { + if (item.type.Equals("信号")) + { + MySignals.Add(item); + } + } + else if (title.Equals("信号关联列表")) + { + MySignals.Add(item); + IsVisibility = Visibility.Visible; + } + + } + + } + public override void ExecuteOKCommandAsync(object para) + { + IDialogParameters par = new DialogParameters(); + if (title.Equals("信号选择框")) + { + if (SelectedSignal == null) + { + MessageBox.Show("请选择一个信号!"); + return; + } + } + else if (title.Equals("信号关联列表")) + { + //如何是取消关联,则把取消的列表传回去 + par.Add(GlobalObject.dialogPar.para2.ToString(), CancelAssociationls); + } + + par.Add(GlobalObject.dialogPar.para1.ToString(), SelectedSignal); + DialogResult result = new DialogResult(ButtonResult.Yes, par); + RequestClose.Invoke(result); + } + public override void ExecuteCloseCommand(object parameter) + { + if (parameter as string == "ClickNo") + { + DialogResult result = new DialogResult(ButtonResult.No); + RequestClose.Invoke(result); + } + else + { + DialogResult result = new DialogResult(ButtonResult.Cancel); + RequestClose.Invoke(result); + } + this.Dispose(); + } + + //全局的取消关联列表 + List CancelAssociationls = new List(); + public ICommand CancelAssociationCmd => new DelegateCommand(CancelAssociation_Click); + /// + /// 取消关联按钮的点击事件 + /// + /// + public virtual void CancelAssociation_Click(object parameter) + { + CancelAssociationls.Add(SelectedSignal); + MySignals.Remove(SelectedSignal); + } + } + public class AssociatedSignalInfo : ViewModelBase + { + #region 字段 + private string _Group_Name; + /// + /// CH.NO + /// + public string Group_Name + { + get { return _Group_Name; } + set { _Group_Name = value; RaisePropertyChanged(nameof(Group_Name)); } + } + + private string _Group_Desc_EN; + /// + /// 英文描述 + /// + public string Group_Desc_EN + { + get { return _Group_Desc_EN; } + set { _Group_Desc_EN = value; RaisePropertyChanged(nameof(Group_Desc_EN)); } + } + private string _Group_Desc; + /// + /// 中文描述 + /// + public string Group_Desc + { + get { return _Group_Desc; } + set { _Group_Desc = value; RaisePropertyChanged(nameof(Group_Desc)); } + } + + private string _IO_Type; + /// + /// 信号类型 + /// + public string IO_Type + { + get { return _IO_Type; } + set { _IO_Type = value; RaisePropertyChanged(nameof(IO_Type)); } + } + + private string _Alarm_LL; + + public string Alarm_LL + { + get { return _Alarm_LL; } + set { _Alarm_LL = value; RaisePropertyChanged(nameof(Alarm_LL)); } + } + private string _Alarm_L; + + public string Alarm_L + { + get { return _Alarm_L; } + set { _Alarm_L = value; RaisePropertyChanged(nameof(Alarm_L)); } + } + private string _Alarm_H; + + public string Alarm_H + { + get { return _Alarm_H; } + set { _Alarm_H = value; RaisePropertyChanged(nameof(Alarm_H)); } + } + private string _Alarm_HH; + + public string Alarm_HH + { + get { return _Alarm_HH; } + set { _Alarm_HH = value; RaisePropertyChanged(nameof(Alarm_HH)); } + } + + private string _SENSOR_CODE; + /// + /// 传感器编号 + /// + public string SENSOR_CODE + { + get { return _SENSOR_CODE; } + set { _SENSOR_CODE = value; RaisePropertyChanged(nameof(SENSOR_CODE)); } + } + + #endregion + + + public AssociatedSignalInfo(ec_Wire_Group ec_Wire_Group) + { + + } + } + + + +} diff --git a/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogSignalManagementViewModel.cs b/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogSignalManagementViewModel.cs index 786fe771..16fc16bd 100644 --- a/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogSignalManagementViewModel.cs +++ b/newFront/c#前端/SWS.WPF/ViewModels/DialogSignalManagementVM/DialogSignalManagementViewModel.cs @@ -347,11 +347,11 @@ namespace SWS.WPF.ViewModels } } - private DateTime _ReviewTime; + private DateTime? _ReviewTime; /// /// 送审时间 /// - public DateTime ReviewTime + public DateTime? ReviewTime { get { return _ReviewTime; } set { _ReviewTime = value; @@ -359,11 +359,11 @@ namespace SWS.WPF.ViewModels } } - private DateTime _ConstructionTime; + private DateTime? _ConstructionTime; /// /// 施工时间 /// - public DateTime ConstructionTime + public DateTime? ConstructionTime { get { return _ConstructionTime; } set { _ConstructionTime = value; @@ -371,6 +371,33 @@ namespace SWS.WPF.ViewModels } } + private Visibility _IsReviewTimeVisibility = Visibility.Visible; + /// + /// 控制送审时间是否可见 + /// + public Visibility IsReviewTimeVisibility + { + get { return _IsReviewTimeVisibility; } + set + { + _IsReviewTimeVisibility = value; + RaisePropertyChanged(nameof(IsReviewTimeVisibility)); + } + } + + private Visibility _IsConstructionTimeVisibility = Visibility.Visible; + /// + /// 控制施工时间是否可见 + /// + public Visibility IsConstructionTimeVisibility + { + get { return _IsConstructionTimeVisibility; } + set + { + _IsConstructionTimeVisibility = value; + RaisePropertyChanged(nameof(IsConstructionTimeVisibility)); + } + } private readonly DispatcherTimer _timer = new DispatcherTimer(); @@ -423,6 +450,10 @@ namespace SWS.WPF.ViewModels //DateTime startTime = DateTime.Now; //设置信号源 signals = await _wireGroupService.GetSignals(GlobalObject.curProject.ProjectId, false); + if (signals == null) + { + signals = new List(); + } //TimeSpan duration = DateTime.Now - startTime; //System.Windows.MessageBox.Show($"Time taken: {duration.Seconds} milliseconds"); count = signals.Count().ToString(); @@ -448,28 +479,29 @@ namespace SWS.WPF.ViewModels IsAssociated = parameters.GetValue(GlobalObject.dialogPar.info.ToString()); //获取送审时间和施工时间 - ReviewTime = (DateTime)GlobalObject.curProject.IO_predicted_issue; - ConstructionTime = (DateTime)GlobalObject.curProject.IO_predicted_construct; - + ReviewTime = GlobalObject.curProject.IO_predicted_issue; + ConstructionTime = GlobalObject.curProject.IO_predicted_issue; + if (ReviewTime == null) IsReviewTimeVisibility = Visibility.Collapsed; + if (ConstructionTime == null) IsConstructionTimeVisibility = Visibility.Collapsed; // 获取当前时间 DateTime currentTime = DateTime.Now; // 初始化倒计时时间 - ReviewCountdown.TimeRemaining = (TimeSpan)(ReviewTime - currentTime); - ReviewCountdown.IsActive = true; + ReviewCountdown.TimeRemaining = ReviewTime==null? TimeSpan.Zero:(TimeSpan)(ReviewTime - currentTime); + ReviewCountdown.IsActive = ReviewTime == null ?false: true; if (ReviewCountdown.TimeRemaining<= TimeSpan.Zero) { - if ((DateTime)GlobalObject.curProject.IO_real_issue == null) + if (GlobalObject.curProject.IO_real_issue == null && GlobalObject.curProject.IO_predicted_issue!=null) { System.Windows.MessageBox.Show($"送审时间已过期: {ReviewCountdown.TimeRemaining:%d}天 {ReviewCountdown.TimeRemaining:hh\\:mm\\:ss}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } } - ConstructionCountdown.TimeRemaining = (TimeSpan)(ConstructionTime - currentTime); + ConstructionCountdown.TimeRemaining = ConstructionTime==null? TimeSpan.Zero:(TimeSpan)(ConstructionTime - currentTime); - ConstructionCountdown.IsActive = true; + ConstructionCountdown.IsActive = ConstructionTime == null ? false: true; if (ConstructionCountdown.TimeRemaining <= TimeSpan.Zero) { - if ((DateTime)GlobalObject.curProject.IO_real_construct == null) + if (GlobalObject.curProject.IO_real_construct == null&& GlobalObject.curProject.IO_predicted_issue!=null) { System.Windows.MessageBox.Show($"施工时间已过期: {ConstructionCountdown.TimeRemaining:%d}天 {ConstructionCountdown.TimeRemaining:hh\\:mm\\:ss}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); @@ -1346,25 +1378,25 @@ namespace SWS.WPF.ViewModels para.Add(GlobalObject.dialogPar.title.ToString(), "信号选择框"); para.Add(GlobalObject.dialogPar.info.ToString(), "请选择要关联的信号:"); para.Add(GlobalObject.dialogPar.para1.ToString(), smInfols); - _dialogService.ShowDialog(nameof(DialogSignalSelect), para, (RES) => + _dialogService.ShowDialog(nameof(DialogAssociatedSignal), para, (RES) => { if (RES.Result == ButtonResult.Yes) { - var signal = RES.Parameters.GetValue(GlobalObject.dialogPar.para1.ToString()); + var signal = RES.Parameters.GetValue(GlobalObject.dialogPar.para1.ToString()); if (!string.IsNullOrEmpty(SelectedSmInfo.LinkedID)) { var LinkedIDs = SelectedSmInfo.LinkedID.Split(',').ToList(); LinkedIDs.RemoveAll(item => string.IsNullOrEmpty(item)); - if (!LinkedIDs.Contains(signal.SignalId)) + if (!LinkedIDs.Contains(signal.Wire_Group_ID)) { - LinkedIDs.Add(signal.SignalId); + LinkedIDs.Add(signal.Wire_Group_ID); } SelectedSmInfo.LinkedID = string.Join(",", LinkedIDs); } else { - SelectedSmInfo.LinkedID = signal.SignalId; + SelectedSmInfo.LinkedID = signal.Wire_Group_ID; } SelectedSmInfo.IsModified = true; System.Windows.MessageBox.Show("关联成功", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); @@ -1397,15 +1429,15 @@ namespace SWS.WPF.ViewModels para.Add(GlobalObject.dialogPar.title.ToString(), "信号关联列表"); para.Add(GlobalObject.dialogPar.info.ToString(), "下面是信号关联列表"); para.Add(GlobalObject.dialogPar.para1.ToString(), sminfols); - _dialogService.ShowDialog(nameof(DialogSignalSelect), para, (RES) => + _dialogService.ShowDialog(nameof(DialogAssociatedSignal), para, (RES) => { if (RES.Result == ButtonResult.Yes) { - var signals = RES.Parameters.GetValue>(GlobalObject.dialogPar.para2.ToString()); + var signals = RES.Parameters.GetValue>(GlobalObject.dialogPar.para2.ToString()); signals.ForEach(s => { - var signalid = s.SignalId; + var signalid = s.Wire_Group_ID; if (LinkedIDs.Contains(signalid)) { LinkedIDs.Remove(signalid); diff --git a/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogAssociatedSignal.xaml b/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogAssociatedSignal.xaml new file mode 100644 index 00000000..d3a2bcd6 --- /dev/null +++ b/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogAssociatedSignal.xaml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogAssociatedSignal.xaml.cs b/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogAssociatedSignal.xaml.cs new file mode 100644 index 00000000..f62ea689 --- /dev/null +++ b/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogAssociatedSignal.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SWS.WPF.Views +{ + /// + /// DialogAssociatedSignal.xaml 的交互逻辑 + /// + public partial class DialogAssociatedSignal : UserControl + { + public DialogAssociatedSignal() + { + InitializeComponent(); + } + } +} diff --git a/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogSignalManagement.xaml b/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogSignalManagement.xaml index 2dce5d6b..80deca53 100644 --- a/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogSignalManagement.xaml +++ b/newFront/c#前端/SWS.WPF/Views/DialogSignalManagements/DialogSignalManagement.xaml @@ -220,49 +220,41 @@ Foreground="White" Style="{StaticResource sysLabel}" Text="{Binding pojectName}" /> - - - - - + + + + + - - - - - + + + + + diff --git a/newFront/c#前端/SWS.WPF/obj/Debug/SWS.WPF.g.resources b/newFront/c#前端/SWS.WPF/obj/Debug/SWS.WPF.g.resources index 2fe4e2e2..bf10d726 100644 Binary files a/newFront/c#前端/SWS.WPF/obj/Debug/SWS.WPF.g.resources and b/newFront/c#前端/SWS.WPF/obj/Debug/SWS.WPF.g.resources differ diff --git a/newFront/c#前端/SWS.WPF/obj/Debug/Views/DialogSignalManagements/DialogSignalManagement.g.i.cs b/newFront/c#前端/SWS.WPF/obj/Debug/Views/DialogSignalManagements/DialogSignalManagement.g.i.cs index 4ef1de5d..b9234fef 100644 --- a/newFront/c#前端/SWS.WPF/obj/Debug/Views/DialogSignalManagements/DialogSignalManagement.g.i.cs +++ b/newFront/c#前端/SWS.WPF/obj/Debug/Views/DialogSignalManagements/DialogSignalManagement.g.i.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "F05F8EFCE0FDA8526127C3C8FC25192B1D13876C84EA73B5F724F982994B8768" +#pragma checksum "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D4B655A725F9DA5CEF801330CC2E000E8A952FC6E92D22159739897F8A32A6A6" //------------------------------------------------------------------------------ // // 此代码由工具生成。 @@ -86,7 +86,7 @@ namespace SWS.WPF.Views { #line hidden - #line 236 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" + #line 233 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock txtReviewCountdown; @@ -94,7 +94,7 @@ namespace SWS.WPF.Views { #line hidden - #line 259 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" + #line 252 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock txtConstructionCountdown; @@ -102,7 +102,7 @@ namespace SWS.WPF.Views { #line hidden - #line 314 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" + #line 308 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal SWS.CustomControl.IconButton PopupButton; @@ -110,7 +110,7 @@ namespace SWS.WPF.Views { #line hidden - #line 325 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" + #line 318 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Primitives.Popup CustomPopup; @@ -118,7 +118,7 @@ namespace SWS.WPF.Views { #line hidden - #line 376 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" + #line 367 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal SWS.CustomControl.IconButton myButton; @@ -126,7 +126,7 @@ namespace SWS.WPF.Views { #line hidden - #line 409 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" + #line 400 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal Telerik.Windows.Controls.RadTreeListView RadGridView1;