TASK #9476
This commit is contained in:
parent
e96f397f4f
commit
1f6ac157b7
@ -373,7 +373,7 @@ namespace Learun.Application.Web.AppApi
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="projectId">项目ID</param>
|
/// <param name="projectId">项目ID</param>
|
||||||
/// <param name="drawingFileID">图纸文件ID</param>
|
/// <param name="drawingFileID">图纸文件ID</param>
|
||||||
/// <param name="pixelCodes">图元编号集合(用,连接)</param>
|
/// <param name="pixelCodes">图元编号集合(用,连接)。正常就1个</param>
|
||||||
/// <param name="caseID">工况ID</param>
|
/// <param name="caseID">工况ID</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -591,44 +591,55 @@ namespace Learun.Application.Web.AppApi
|
|||||||
var propTbName = ProjectSugar.TableName<ec_enginedata_propertyEntity>(projectId);
|
var propTbName = ProjectSugar.TableName<ec_enginedata_propertyEntity>(projectId);
|
||||||
|
|
||||||
var allUser = SqlSugarHelper.Db.Queryable<UserEntity>().ToList();
|
var allUser = SqlSugarHelper.Db.Queryable<UserEntity>().ToList();
|
||||||
|
var userDict = allUser.ToDictionary(x => x.F_UserId, x => x.F_RealName);
|
||||||
var pixelAll = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).Where(x => x.DrawingFileID == drawingFileID && x.DeleteFlg != 1).ToList();
|
var pixelAll = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().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 pixelObjs = pixelAll.Where(x => pixelCodes.Split(',').ToList().Contains(x.PixelCode)).ToList();
|
||||||
|
|
||||||
var tagIds = pixelObjs.Select(x => x.EngineDataID).Distinct().ToList();
|
var tagIds = pixelObjs.Select(x => x.EngineDataID).Distinct().ToList();
|
||||||
var tagAll = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(tagTbName).OrderBy(x => x.TagNumber).ToList();
|
var tagAll = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().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 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 typeIds = tagObjs.Select(x => x.ObjectTypeID).Distinct().ToList();
|
||||||
var typeAll = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(typeTbName).ToList();
|
var typeAll = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(typeTbName).ToList();
|
||||||
var typeObjs = typeAll.Where(x => typeIds.Contains(x.ObjectTypeID)).ToList();
|
var typeObjs = typeAll.Where(x => typeIds.Contains(x.ObjectTypeID)).ToList();
|
||||||
|
|
||||||
var tagPropAll = SqlSugarHelper.Db.Queryable<ec_enginedata_propertyEntity>().AS(propTbName).Where(x => tagIds.Contains(x.EngineDataID)).ToList();
|
var tagPropAll = SqlSugarHelper.Db.Queryable<ec_enginedata_propertyEntity>().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 objectTypeProps2 = objectTypePBll.GetObjectTypePById(string.Join(",", typeIds), projectId, true);//最频繁的那个接口
|
||||||
|
var typePropDictByType = objectTypeProps2.GroupBy(x => x.ObjectTypeID).ToDictionary(g => g.Key, g => g.ToList());
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
foreach (var objectType in typeObjs)
|
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();
|
objectType.tags = tagDictByType[objectType.ObjectTypeID]; // 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;
|
|
||||||
}
|
|
||||||
//每个位号的属性信息
|
//每个位号的属性信息
|
||||||
foreach (var tag in objectType.tags)
|
foreach (var tag in objectType.tags)
|
||||||
{
|
{
|
||||||
|
tag.CreateUserName = userDict[tag.CreateUserID];// allUser.FirstOrDefault(x => x.F_UserId == item.CreateUserID)?.F_RealName;
|
||||||
|
|
||||||
tag.EngineDataID = tag.EngineDataID;
|
tag.EngineDataProperty = tagPropDictByTag[tag.EngineDataID];// tagPropAll.Where(x => x.EngineDataID == tag.EngineDataID).ToList();
|
||||||
tag.EngineDataProperty = tagPropAll.Where(x => x.EngineDataID == tag.EngineDataID).ToList();
|
|
||||||
tag.ObjectTypeName = objectType.ObjectTypeName;
|
tag.ObjectTypeName = objectType.ObjectTypeName;
|
||||||
|
|
||||||
if (objectType.ObjectTypeName.EndsWith("电缆"))
|
if (objectType.ObjectTypeName.EndsWith("电缆"))
|
||||||
{
|
{
|
||||||
//电缆from to
|
//电缆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 == GlobalObject.propName_From))
|
if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_From))
|
||||||
{
|
{
|
||||||
@ -640,7 +651,7 @@ namespace Learun.Application.Web.AppApi
|
|||||||
};
|
};
|
||||||
newProp.Create();
|
newProp.Create();
|
||||||
|
|
||||||
ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp);
|
ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp);//增加 起始设备
|
||||||
tag.EngineDataProperty.Add(newProp);
|
tag.EngineDataProperty.Add(newProp);
|
||||||
}
|
}
|
||||||
if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_To))
|
if (!tag.EngineDataProperty.Any(X => X.PropertyName == GlobalObject.propName_To))
|
||||||
@ -653,7 +664,7 @@ namespace Learun.Application.Web.AppApi
|
|||||||
};
|
};
|
||||||
newProp.Create();
|
newProp.Create();
|
||||||
|
|
||||||
ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp);
|
ec_enginedata_propertyBLL.InsertTagProp(projectId, tag.EngineDataID, newProp);////增加 终止设备
|
||||||
tag.EngineDataProperty.Add(newProp);
|
tag.EngineDataProperty.Add(newProp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -671,10 +682,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
|
//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)
|
if (objectType.IsSerialNumber == 1)
|
||||||
|
@ -77,7 +77,7 @@ namespace Learun.Application.Web.AppApi
|
|||||||
relData.RelEngineData2ID
|
relData.RelEngineData2ID
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
ec_relDataBLL.SaveEntitys(ProjectId, relData.RelTypeID, relData.RelEngineData1ID, relData.End2IDs);
|
ec_relDataBLL.SaveEntitys(ProjectId, relData.RelTypeID, relData.RelEngineData1ID, relData.End2IDs,relData.OPCPixel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -547,13 +547,13 @@ namespace Learun.Application.Web.AppApi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (relData.IsEnd1)
|
if (relData.IsEnd1)//电缆的起始端连接信息,设备在end1,电缆在end2
|
||||||
{
|
{
|
||||||
ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, new List<string> { TagID }, CableID, true);
|
ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, new List<string> { TagID }, CableID, relData.TagPixelID, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, CableID, new List<string> { TagID }, true);
|
ec_relDataBLL.SaveEntitys(ProjectId, RelTypeID, CableID, new List<string> { TagID }, relData.TagPixelID, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers
|
|||||||
public ActionResult SaveForm(string ProjectId, string RelTypeID, string RelEngineData1ID, string strEntity)
|
public ActionResult SaveForm(string ProjectId, string RelTypeID, string RelEngineData1ID, string strEntity)
|
||||||
{
|
{
|
||||||
List<string> relEngineData2IDs = strEntity.ToList<string>();
|
List<string> relEngineData2IDs = strEntity.ToList<string>();
|
||||||
ec_enginedata_relIBLL.SaveEntitys(ProjectId, RelTypeID, RelEngineData1ID, relEngineData2IDs);
|
ec_enginedata_relIBLL.SaveEntitys(ProjectId, RelTypeID, RelEngineData1ID, relEngineData2IDs,"");
|
||||||
return Success("保存成功!");
|
return Success("保存成功!");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -1123,7 +1123,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers
|
|||||||
//电缆的from to是根据甲板号的order顺序来的,高优先级的就属于from
|
//电缆的from to是根据甲板号的order顺序来的,高优先级的就属于from
|
||||||
int? FromOrder = -1; int? ToOrder = -1;
|
int? FromOrder = -1; int? ToOrder = -1;
|
||||||
#region From
|
#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))
|
if (!string.IsNullOrEmpty(cableFromId))
|
||||||
{
|
{
|
||||||
var cableFromObj = Equips.FirstOrDefault(x => x.EngineDataID == cableFromId);
|
var cableFromObj = Equips.FirstOrDefault(x => x.EngineDataID == cableFromId);
|
||||||
@ -1174,7 +1174,7 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region To
|
#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))
|
if (!string.IsNullOrEmpty(cableEndId))
|
||||||
{
|
{
|
||||||
var cableEndObj = Equips.FirstOrDefault(x => x.EngineDataID == cableEndId);
|
var cableEndObj = Equips.FirstOrDefault(x => x.EngineDataID == cableEndId);
|
||||||
@ -1570,8 +1570,8 @@ namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers
|
|||||||
(eep, ee, eo, edf, edc, edp) => eep.EngineDataID == edp.EngineDataID
|
(eep, ee, eo, edf, edc, edp) => eep.EngineDataID == edp.EngineDataID
|
||||||
)
|
)
|
||||||
.LeftJoin(subQuery, (eep, ee, eo, edf, edc, edp,dde)=> edp.甲板号 == dde.DataItemName)
|
.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 == 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("OPC") && dwgIdCos.Contains(eep.DrawingFileID) && 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
|
.GroupBy((eep, ee, eo, edf, edc, edp, dde) => new
|
||||||
{
|
{
|
||||||
edc.DrawingCatalogueNO,
|
edc.DrawingCatalogueNO,
|
||||||
|
@ -131,7 +131,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
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("图框")
|
||||||
&& !x.FullPathCN.EndsWith(GlobalObject.objectType_Base)
|
&& !x.FullPathCN.EndsWith(GlobalObject.objectType_Base)
|
||||||
&& !x.FullPathCN.EndsWith("OPC")).Distinct().ToList();
|
&& !x.FullPathCN.EndsWith(GlobalObject.objectType_OPC)).Distinct().ToList();
|
||||||
var allPropDef = Db.Queryable<ec_propertyEntity>().AS(propT).ToList();
|
var allPropDef = Db.Queryable<ec_propertyEntity>().AS(propT).ToList();
|
||||||
//var allObjectTypeP = Db.Queryable<ec_objecttypepEntity>().AS(objectTypeP_T).ToList();
|
//var allObjectTypeP = Db.Queryable<ec_objecttypepEntity>().AS(objectTypeP_T).ToList();
|
||||||
var allObjectTypeP = new ec_objecttypepBLL().GetObjectTypePById("", projectId, true).ToList();
|
var allObjectTypeP = new ec_objecttypepBLL().GetObjectTypePById("", projectId, true).ToList();
|
||||||
@ -1816,10 +1816,29 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
var relObj = Db.Queryable<ec_reltypeEntity>().AS(relTableName).First(x => x.RelType == "0");
|
var relObj = Db.Queryable<ec_reltypeEntity>().AS(relTableName).First(x => x.RelType == "0");
|
||||||
if (relObj != null) {
|
if (relObj != null) {
|
||||||
var existCableConns = Db.Queryable<ec_enginedata_relEntity>().AS(reldataTableName).
|
var existCableConns = Db.Queryable<ec_enginedata_relEntity>().AS(reldataTableName).
|
||||||
Where(x => x.RelTypeID == relObj.RelTypeID && (x.RelEngineData1ID == oldTagId || x.RelEngineData2ID == oldTagId)).ToList();
|
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的记录
|
//比如设备B在多个图上多有句柄P1 P2 P3,且这些句柄都关联了多个电缆C1 C2 C3,那么在rel表里就有3个B的记录
|
||||||
//这时如果进行提交,句柄P1的主体变为了设备BBB,那么B的所有句柄P1 P2 P3都变为BBB了,没有单独分离出来 C1 C2 C3中的某一个
|
//这时如果进行提交,句柄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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//更新电缆属性里的 起始设备 和 终止设备
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -2549,7 +2568,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
|
|
||||||
// 筛选出“真实设备”,这里排除OPC、通讯器等中转对象
|
// 筛选出“真实设备”,这里排除OPC、通讯器等中转对象
|
||||||
var deviceTags = endpointInfo
|
var deviceTags = endpointInfo
|
||||||
.Where(x => !x.objectType.Contains("OPC"))
|
.Where(x => !x.objectType.Contains(GlobalObject.objectType_OPC))
|
||||||
.Select(x => x.tagNumber)
|
.Select(x => x.tagNumber)
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.Take(2) // 只取前两个设备
|
.Take(2) // 只取前两个设备
|
||||||
|
@ -400,7 +400,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
.LeftJoin<ec_enginedataEntity>((edp, ede) => edp.EngineDataID == ede.EngineDataID).AS<ec_enginedataEntity>(enginedataTableName)
|
.LeftJoin<ec_enginedataEntity>((edp, ede) => edp.EngineDataID == ede.EngineDataID).AS<ec_enginedataEntity>(enginedataTableName)
|
||||||
.LeftJoin<ec_objecttypeEntity>((edp, ede, eot) => ede.ObjectTypeID == eot.ObjectTypeID).AS<ec_objecttypeEntity>(objectTypeTableName)
|
.LeftJoin<ec_objecttypeEntity>((edp, ede, eot) => ede.ObjectTypeID == eot.ObjectTypeID).AS<ec_objecttypeEntity>(objectTypeTableName)
|
||||||
.Where((edp, ede, eot) => edp.DeleteFlg == 0 && edp.DrawingFileID == drawingFileID && pixelEntities.Select(y => y.PixelCode).Contains(edp.PixelCode)
|
.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)
|
.Select((edp, ede, eot) => edp.EngineDataID)
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -753,7 +753,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
.LeftJoin<ec_enginedataEntity>((edp, ede) => edp.EngineDataID == ede.EngineDataID).AS<ec_enginedataEntity>(enginedataTableName)
|
.LeftJoin<ec_enginedataEntity>((edp, ede) => edp.EngineDataID == ede.EngineDataID).AS<ec_enginedataEntity>(enginedataTableName)
|
||||||
.LeftJoin<ec_objecttypeEntity>((edp, ede, eot) => ede.ObjectTypeID == eot.ObjectTypeID).AS<ec_objecttypeEntity>(objectTypeTableName)
|
.LeftJoin<ec_objecttypeEntity>((edp, ede, eot) => ede.ObjectTypeID == eot.ObjectTypeID).AS<ec_objecttypeEntity>(objectTypeTableName)
|
||||||
.Where((edp, ede, eot) => edp.DeleteFlg == 0 && edp.DrawingFileID == drawingFileID
|
.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)
|
.Select((edp, ede, eot) => edp.EngineDataID)
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -1212,7 +1212,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
|
|
||||||
// 筛选出“真实设备”,这里排除OPC、通讯器等中转对象
|
// 筛选出“真实设备”,这里排除OPC、通讯器等中转对象
|
||||||
var deviceTags = endpointInfo
|
var deviceTags = endpointInfo
|
||||||
.Where(x => !x.objectType?.Contains("OPC") ?? false)
|
.Where(x => !x.objectType?.Contains(GlobalObject.objectType_OPC) ?? false)
|
||||||
.Select(x => x.tagNumber)
|
.Select(x => x.tagNumber)
|
||||||
.Where(tag => !string.IsNullOrWhiteSpace(tag))
|
.Where(tag => !string.IsNullOrWhiteSpace(tag))
|
||||||
.Distinct()
|
.Distinct()
|
||||||
|
@ -1348,7 +1348,7 @@ Select((a, b, c) => new
|
|||||||
//根据句柄和图纸,先把工程id查出来先
|
//根据句柄和图纸,先把工程id查出来先
|
||||||
var drawingID = CablePixelID.DrawingID;
|
var drawingID = CablePixelID.DrawingID;
|
||||||
var pixelID = CablePixelID.CablePixelID;
|
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();
|
Select(x => x.EngineDataID).Distinct();
|
||||||
if (EngineDataIDs != null && EngineDataIDs.Count() == 1)
|
if (EngineDataIDs != null && EngineDataIDs.Count() == 1)
|
||||||
{
|
{
|
||||||
@ -1395,7 +1395,19 @@ Select((a, b, c) => new
|
|||||||
var End2 = new ec_enginedata_relEntity();
|
var End2 = new ec_enginedata_relEntity();
|
||||||
//查单一记录
|
//查单一记录
|
||||||
var existRel = this.GetList("{ProjectId:\"" + ProjectId + "\",RelType:\"" + (int)enum_RelType.设备_电缆 + "\",RelEngineDataID:\"" + CableID + "\"}").ToList();
|
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<ec_enginedataEntity>(ProjectId);
|
||||||
|
var typeTbName = ProjectSugar.TableName<ec_objecttypeEntity>(ProjectId);
|
||||||
|
var tags = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(tbName).
|
||||||
|
InnerJoin<ec_objecttypeEntity>((t, t2) => t.ObjectTypeID == t2.ObjectTypeID).AS<ec_objecttypeEntity>(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
|
//OPC
|
||||||
var tb = ProjectSugar.TableName<ec_enginedata_pixelEntity>(ProjectId);
|
var tb = ProjectSugar.TableName<ec_enginedata_pixelEntity>(ProjectId);
|
||||||
@ -1420,6 +1432,7 @@ Select((a, b, c) => new
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//正常情况
|
||||||
existRel = existRel.Where(X => X.RelEngineData1ID != opcId.EngineDataID && X.RelEngineData2ID != opcId.EngineDataID).ToList();//排除opc的,留下电缆的
|
existRel = existRel.Where(X => X.RelEngineData1ID != opcId.EngineDataID && X.RelEngineData2ID != opcId.EngineDataID).ToList();//排除opc的,留下电缆的
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1633,7 +1646,7 @@ Select((a, b, c) => new
|
|||||||
/// <param name="NeedRemove">是否移除已有的,true的话,基本就是确保一对一的这种rel关系</param>
|
/// <param name="NeedRemove">是否移除已有的,true的话,基本就是确保一对一的这种rel关系</param>
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List<string> relEngineData2IDs, bool NeedRemove = false)
|
public void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List<string> relEngineData2IDs, string tagPixelId, bool NeedRemove = false)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -1688,7 +1701,7 @@ Select((a, b, c) => new
|
|||||||
}
|
}
|
||||||
//engineDataRelDel = engineDataRel.Except(engineDataRelExcept).ToList();
|
//engineDataRelDel = engineDataRel.Except(engineDataRelExcept).ToList();
|
||||||
List<string> delEngineDataRelIDs = new List<string>(); //engineDataRelDel.Select(x => x.EngineDataRelID).ToList();
|
List<string> delEngineDataRelIDs = new List<string>(); //engineDataRelDel.Select(x => x.EngineDataRelID).ToList();
|
||||||
ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs);
|
ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs); //电缆在end1,进行最后的保存
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -1711,7 +1724,7 @@ Select((a, b, c) => new
|
|||||||
/// <param name="RelEngineData1IDs"></param>
|
/// <param name="RelEngineData1IDs"></param>
|
||||||
/// <param name="relEngineData2ID">电缆ID,大概率</param>
|
/// <param name="relEngineData2ID">电缆ID,大概率</param>
|
||||||
/// <param name="NeedRemove"></param>
|
/// <param name="NeedRemove"></param>
|
||||||
public void SaveEntitys(string ProjectId, string RelTypeID, List<string> RelEngineData1IDs, string relEngineData2ID, bool NeedRemove = false)
|
public void SaveEntitys(string ProjectId, string RelTypeID, List<string> RelEngineData1IDs, string relEngineData2ID, string tagPixelId, bool NeedRemove = false)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -1726,7 +1739,6 @@ Select((a, b, c) => new
|
|||||||
|
|
||||||
foreach (var item in RelEngineData1IDs)
|
foreach (var item in RelEngineData1IDs)
|
||||||
{
|
{
|
||||||
//判断下是否为OPC
|
|
||||||
|
|
||||||
if (NeedRemove)
|
if (NeedRemove)
|
||||||
{
|
{
|
||||||
@ -1759,6 +1771,7 @@ Select((a, b, c) => new
|
|||||||
model.RelTypeID = RelTypeID;
|
model.RelTypeID = RelTypeID;
|
||||||
model.RelEngineData1ID = item;
|
model.RelEngineData1ID = item;
|
||||||
model.RelEngineData2ID = relEngineData2ID;
|
model.RelEngineData2ID = relEngineData2ID;
|
||||||
|
model.OPCPixel = tagPixelId;
|
||||||
engineDataRelAdd.Add(model);
|
engineDataRelAdd.Add(model);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1775,7 +1788,7 @@ Select((a, b, c) => new
|
|||||||
}
|
}
|
||||||
//engineDataRelDel = engineDataRel.Except(engineDataRelExcept).ToList();
|
//engineDataRelDel = engineDataRel.Except(engineDataRelExcept).ToList();
|
||||||
List<string> delEngineDataRelIDs = new List<string>(); //engineDataRelDel.Select(x => x.EngineDataRelID).ToList();
|
List<string> delEngineDataRelIDs = new List<string>(); //engineDataRelDel.Select(x => x.EngineDataRelID).ToList();
|
||||||
ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs);
|
ec_enginedata_relService.SaveEntity(ProjectId, engineDataRelAdd, delEngineDataRelIDs);//电缆在end2,进行最后的保存
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -35,9 +35,9 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
/// <param name="keyValue">主键</param>
|
/// <param name="keyValue">主键</param>
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List<string> relEngineData2IDs, bool NeedRemove = false);
|
void SaveEntitys(string ProjectId, string RelTypeID, string RelEngineData1ID, List<string> relEngineData2IDs, string tagPixeId, bool NeedRemove = false);
|
||||||
|
|
||||||
void SaveEntitys(string ProjectId, string RelTypeID, List<string> RelEngineData1IDs, string relEngineData2ID, bool NeedRemove = false);
|
void SaveEntitys(string ProjectId, string RelTypeID, List<string> RelEngineData1IDs, string relEngineData2ID, string tagPixeId, bool NeedRemove = false);
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -116,29 +116,54 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
if (!string.IsNullOrEmpty(objectTypeID))
|
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 propBll = new ec_propertyBLL();
|
||||||
var allProp = propBll.GetListRedis(ProjectId);
|
var allProp = propBll.GetListRedis(ProjectId);
|
||||||
|
// 提前构建Dictionary(键为PropertyID,值为对应的AllProp对象)
|
||||||
|
var allPropDict = allProp.ToDictionary(x => x.PropertyID);
|
||||||
var propGroupBll = new ec_propertygBLL();
|
var propGroupBll = new ec_propertygBLL();
|
||||||
var allGroup = propGroupBll.GetList("{ProjectId:\"" + ProjectId + "\"}");
|
var allGroup = propGroupBll.GetList("{ProjectId:\"" + ProjectId + "\"}");
|
||||||
|
var allGroupDict = allGroup.ToDictionary(x => x.PropertyGID);
|
||||||
var unitTypeBll = new ec_measuring_unittypeBLL();
|
var unitTypeBll = new ec_measuring_unittypeBLL();
|
||||||
var allUnitType = unitTypeBll.GetList("{ProjectId:\"" + ProjectId + "\"}");
|
var allUnitType = unitTypeBll.GetList("{ProjectId:\"" + ProjectId + "\"}");
|
||||||
|
var allUnitTypeDict = allUnitType.ToDictionary(x => x.MeasuringUnitTypeID);
|
||||||
var unitBll = new ec_measuring_unitBLL();
|
var unitBll = new ec_measuring_unitBLL();
|
||||||
var allUnit = unitBll.GetListRedis(ProjectId);
|
var allUnit = unitBll.GetListRedis(ProjectId);
|
||||||
|
var allUnitDict = allUnit.ToDictionary(x => x.MeasuringUnitID);
|
||||||
var detailBll = new ec_dataitemBLL();
|
var detailBll = new ec_dataitemBLL();
|
||||||
var allDics = detailBll.GetList("{ProjectId:\"" + ProjectId + "\"}");
|
var allDics = detailBll.GetList("{ProjectId:\"" + ProjectId + "\"}");
|
||||||
var allDetails = detailBll.GetDetailList("", "", 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 ");
|
//strSql.Append($" FROM ec_objecttypep_{ProjectEntity.ProjectIndex} t1 ");
|
||||||
if (isLoadExtraData)
|
if (isLoadExtraData)
|
||||||
{
|
{
|
||||||
foreach (var objectTypeProp in RES)
|
foreach (var objectTypeProp in RES)
|
||||||
{
|
{
|
||||||
var t2 = allProp.FirstOrDefault(x => x.PropertyID == objectTypeProp.PropertyID);
|
// 用TryGetValue快速查询(O(1)时间)
|
||||||
if (t2 == null) { continue; }
|
if (allPropDict.TryGetValue(objectTypeProp.PropertyID, out var t2))
|
||||||
var t3 = allGroup.FirstOrDefault(x => x.PropertyGID == t2.PropertyGID);
|
{
|
||||||
if (t3 == null) { continue; }
|
// 找到匹配项,处理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.PropertyName = t2.PropertyName;
|
||||||
objectTypeProp.PropertyNameEN = t2.PropertyNameEN;
|
objectTypeProp.PropertyNameEN = t2.PropertyNameEN;
|
||||||
objectTypeProp.PropertyType = t2.PropertyType;
|
objectTypeProp.PropertyType = t2.PropertyType;
|
||||||
@ -158,17 +183,26 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
|
|
||||||
objectTypeProp.PropertyGroupName = t3.PropertyGroupName;
|
objectTypeProp.PropertyGroupName = t3.PropertyGroupName;
|
||||||
objectTypeProp.PropertyGID = t3.PropertyGID;
|
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))
|
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)
|
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)
|
if (!string.IsNullOrEmpty(detail.DataItemNameEN) && Dic.ShowEN == 1)
|
||||||
{
|
{
|
||||||
@ -215,16 +249,19 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
{
|
{
|
||||||
var tObjectType = ProjectSugar.TableName<ec_objecttypeEntity>(ProjectId);
|
var tObjectType = ProjectSugar.TableName<ec_objecttypeEntity>(ProjectId);
|
||||||
var tobjTypeAll = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(tObjectType).ToList();
|
var tobjTypeAll = SqlSugarHelper.Db.Queryable<ec_objecttypeEntity>().AS(tObjectType).ToList();
|
||||||
|
var tobjTypeDict = tobjTypeAll.ToDictionary(x => x.ObjectTypeID);
|
||||||
|
|
||||||
foreach (var item in objectTypeID.Split(','))
|
foreach (var item in objectTypeID.Split(','))
|
||||||
{
|
{
|
||||||
var pObjectType = RES.Where(x => x.ObjectTypeID == item).ToList();
|
var pObjectType = RES.Where(x => x.ObjectTypeID == item).ToList();//每种类型下的属性
|
||||||
var tobjType = tobjTypeAll.First(x => x.ObjectTypeID == item);
|
var tobjType = tobjTypeDict[item];//每种类型的名字
|
||||||
|
|
||||||
|
// 提前提取所有PropertyName到HashSet(仅需一次遍历)
|
||||||
|
var propertyNames = new HashSet<string>(pObjectType.Select(x => x.PropertyName));//每种类型下的属性的名字
|
||||||
|
|
||||||
if (tobjType.ObjectTypeName.EndsWith("电缆"))
|
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();
|
ec_objecttypepEntity UDF_01 = new ec_objecttypepEntity();
|
||||||
UDF_01.ObjectTypePID = Guid.NewGuid().ToString();
|
UDF_01.ObjectTypePID = Guid.NewGuid().ToString();
|
||||||
@ -236,7 +273,7 @@ namespace Learun.Application.TwoDevelopment.ZZDT_EC
|
|||||||
RES.Add(UDF_01);
|
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();
|
ec_objecttypepEntity UDF_02 = new ec_objecttypepEntity();
|
||||||
UDF_02.ObjectTypePID = Guid.NewGuid().ToString();
|
UDF_02.ObjectTypePID = Guid.NewGuid().ToString();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user