개정판 0eefef3d
issue #000: Air Fin Cooler Rule 적용중
Change-Id: I9c1cb07a2ace38e96d96989421459fccd3a3836d
DTI_PID/ID2PSN/PSN.cs | ||
---|---|---|
252 | 252 |
{ |
253 | 253 |
try |
254 | 254 |
{ |
255 |
int afcTagNum = 0; |
|
256 |
|
|
255 | 257 |
#region EquipmentAirFinCooler Info |
256 | 258 |
EquipmentAirFinCoolerInfo EquipmentAirFinCooler = new EquipmentAirFinCoolerInfo(); |
257 | 259 |
DataTable dtEquipmentAirFinCooler = DB.SelectAirFinCoolerSetting(); |
... | ... | |
266 | 268 |
} |
267 | 269 |
#endregion |
268 | 270 |
|
269 |
foreach(EquipmentAirFinCoolerItem item in EquipmentAirFinCooler.EquipmentAirFinCoolerItem) |
|
271 |
DataRow[] airFinCoolerRows = PipeSystemNetwork.Select("AFC = 'P1'"); |
|
272 |
foreach (DataRow dataRow in airFinCoolerRows) |
|
270 | 273 |
{ |
271 |
DataRow[] airFinCoolerRows = PipeSystemNetwork.Select(string.Format(" From_Data Like '{0}%' OR To_Data Like '{0}%'", item.Name)); |
|
272 |
foreach (DataRow dataRow in airFinCoolerRows) |
|
274 |
afcTagNum++; |
|
275 |
PSNItem PSNItem = PSNItems.Find(x => x.PSN_OID() == dataRow["OID"].ToString()); |
|
276 |
DataRow[] pathItemRows = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}'", dataRow["OID"].ToString())); |
|
277 |
List<string> lstViewPipeSystemNetwork_OID = pathItemRows.Select(x => x.Field<string>("ViewPipeSystemNetwork_OID")).Distinct().ToList(); |
|
278 |
//ViewPipeSystemNetwork_OID |
|
279 |
string MainLineTag = ""; |
|
280 |
if (dataRow["Type"].ToString() == "E2E") |
|
281 |
{ |
|
282 |
MainLineTag = "M"; |
|
283 |
dataRow["AFC"] = "P3"; |
|
284 |
} |
|
285 |
else if (dataRow["Type"].ToString() == "E2B" || dataRow["Type"].ToString() == "B2E") |
|
273 | 286 |
{ |
274 |
PSNItem PSNItem = PSNItems.Find(x => x.PSN_OID() == dataRow["OID"].ToString()); |
|
275 |
DataRow[] pathItemRows = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}'", dataRow["OID"].ToString())); |
|
276 |
foreach(DataRow dr in pathItemRows) |
|
287 |
int bCount = 0; |
|
288 |
foreach (string viewOID in lstViewPipeSystemNetwork_OID) |
|
289 |
{ |
|
290 |
if (viewOID == dataRow["OID"].ToString()) |
|
291 |
continue; |
|
292 |
|
|
293 |
DataRow dr = PipeSystemNetwork.Select(string.Format("OID = '{0}'", viewOID)).First(); |
|
294 |
if (dr.Field<string>("AFC") != "P1") |
|
295 |
{ |
|
296 |
bCount++; |
|
297 |
string[] arr = dr.Field<string>("AFC").Split('_'); |
|
298 |
if (arr.Length == 1) |
|
299 |
dr["AFC"] = arr[0] + "_1"; |
|
300 |
else |
|
301 |
{ |
|
302 |
dr["AFC"] = arr[0] + "_" + Convert.ToInt32(arr[1]) + 1; |
|
303 |
afcTagNum++; |
|
304 |
DataRow[] viewpathItemRows = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}'", viewOID)); |
|
305 |
foreach (DataRow viewdr in viewpathItemRows) |
|
306 |
{ |
|
307 |
viewdr["EqpGroupTag"] = dataRow["Pipeline_OID"].ToString() + string.Format("-{0}", string.Format("{0:D5}", afcTagNum)); //ATG Sequence No Rule 여쭤봐야함. |
|
308 |
viewdr["MainLineTag"] = "M"; |
|
309 |
} |
|
310 |
} |
|
311 |
|
|
312 |
} |
|
313 |
} |
|
314 |
|
|
315 |
if(bCount == 1) |
|
277 | 316 |
{ |
278 |
dr["EqpGroupTag"] = dataRow["Pipeline_OID"].ToString(); //ATG Sequence No Rule 여쭤봐야함. |
|
279 |
} |
|
317 |
MainLineTag = "M"; |
|
318 |
// dataRow["AFC"] = "P3"; |
|
319 |
} |
|
320 |
|
|
321 |
} |
|
322 |
|
|
323 |
foreach (DataRow dr in pathItemRows) |
|
324 |
{ |
|
325 |
dr["EqpGroupTag"] = dataRow["Pipeline_OID"].ToString() + string.Format("-{0}", string.Format("{0:D5}", afcTagNum)); //ATG Sequence No Rule 여쭤봐야함. |
|
326 |
dr["MainLineTag"] = MainLineTag; |
|
327 |
} |
|
328 |
} |
|
329 |
|
|
330 |
foreach (DataRow dataRow in airFinCoolerRows) |
|
331 |
{ |
|
332 |
DataRow[] pathItemRows = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}' AND MainLineTag = ''", dataRow["OID"].ToString())); |
|
333 |
//ML이 공란인 PSN - P1이 있다면 해당 Pathitem에 P3인 psn이 있는지 확인 : 해당 값은 전부 돌린후 확인 가능하기 때문에 다시 조회 |
|
334 |
if (pathItemRows.Count() > 0) |
|
335 |
{ |
|
336 |
List<string> lstViewPipeSystemNetwork_OID = pathItemRows.Select(x => x.Field<string>("ViewPipeSystemNetwork_OID")).Distinct().ToList(); |
|
337 |
List<string> lstpsn = new List<string>(); |
|
338 |
string EqpGroupTag = string.Empty; |
|
339 |
foreach (string viewOID in lstViewPipeSystemNetwork_OID) |
|
340 |
{ |
|
341 |
if (dataRow["OID"].ToString() == viewOID) |
|
342 |
{ |
|
343 |
//lstViewPipeSystemNetwork_OID.Remove(viewOID); |
|
344 |
continue; |
|
345 |
} |
|
346 |
DataRow viewPSN = null; |
|
347 |
if (PipeSystemNetwork.Select(string.Format("OID = '{0}' AND AFC = 'P3'", viewOID)).Count() > 0) |
|
348 |
viewPSN = PipeSystemNetwork.Select(string.Format("OID = '{0}' AND AFC = 'P3'", viewOID)).First(); |
|
349 |
|
|
350 |
if (viewPSN != null) |
|
351 |
{ |
|
352 |
EqpGroupTag = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}'", viewOID)).First().Field<string>("EqpGroupTag"); |
|
353 |
foreach (DataRow dr in pathItemRows) |
|
354 |
{ |
|
355 |
dr["EqpGroupTag"] = EqpGroupTag; |
|
356 |
|
|
357 |
if (!string.IsNullOrEmpty(dr.Field<string>("ViewPipeSystemNetwork_OID")) && !lstpsn.Contains("ViewPipeSystemNetwork_OID")) |
|
358 |
lstpsn.Add(dr.Field<string>("ViewPipeSystemNetwork_OID")); |
|
359 |
} |
|
360 |
} |
|
361 |
|
|
362 |
} |
|
363 |
|
|
364 |
while(lstpsn.Count() != 0) |
|
365 |
{ |
|
366 |
foreach(string psn in lstpsn) |
|
367 |
{ |
|
368 |
DataRow[] rule4pathItems = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}'", psn)); |
|
369 |
foreach (DataRow dr in rule4pathItems) |
|
370 |
{ |
|
371 |
dr["EqpGroupTag"] = EqpGroupTag; |
|
372 |
|
|
373 |
if (!string.IsNullOrEmpty(dr.Field<string>("ViewPipeSystemNetwork_OID")) && !lstpsn.Contains("ViewPipeSystemNetwork_OID")) |
|
374 |
lstpsn.Add(dr.Field<string>("ViewPipeSystemNetwork_OID")); |
|
375 |
} |
|
376 |
|
|
377 |
lstpsn.Remove(psn); |
|
378 |
} |
|
379 |
|
|
380 |
} |
|
381 |
} |
|
382 |
|
|
383 |
} |
|
384 |
|
|
385 |
//DataRow[] = PipeSystemNetwork.Select("AFC = 'P1'"); |
|
386 |
foreach(DataRow dr in PipeSystemNetwork.Rows) |
|
387 |
{ |
|
388 |
DataRow[] pathItemRows = PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}' AND MainLineTag = 'M'", dr["OID"].ToString())); |
|
389 |
if(pathItemRows.Count() > 0) |
|
390 |
{ |
|
391 |
if(dr["Type"].ToString() == "HD2") |
|
392 |
{ |
|
393 |
List<string> lstViewPipeSystemNetwork_OID = pathItemRows.Select(x => x.Field<string>("ViewPipeSystemNetwork_OID")).Distinct().ToList(); |
|
394 |
foreach(string viewpsn in lstViewPipeSystemNetwork_OID) |
|
395 |
{ |
|
396 |
if (PipeSystemNetwork.Select(string.Format("OID = '{0}' AND AFC = 'P2'", viewpsn)).Count() > 0) |
|
397 |
{ |
|
398 |
foreach(DataRow dataRow in pathItemRows.Where(x => x.Field<string>("ViewPipeSystemNetwork_OID") == viewpsn)) |
|
399 |
{ |
|
400 |
dataRow["EGTConnectedPoint"] = "1"; |
|
401 |
} |
|
402 |
} |
|
403 |
} |
|
404 |
} |
|
405 |
else if(dr["Type"].ToString() == "E2B" || dr["Type"].ToString() == "B2E" || dr["Type"].ToString() == "E2E") |
|
406 |
{ |
|
407 |
List<string> lstViewPipeSystemNetwork_OID = pathItemRows.Select(x => x.Field<string>("ViewPipeSystemNetwork_OID")).Distinct().ToList(); |
|
408 |
string lastP1 = string.Empty; |
|
409 |
foreach (string viewpsn in lstViewPipeSystemNetwork_OID) |
|
410 |
{ |
|
411 |
if (viewpsn == dr["OID"].ToString()) |
|
412 |
continue; |
|
413 |
|
|
414 |
if (PipeSystemNetwork.Select(string.Format("OID = '{0}' AND AFC = 'P1'", viewpsn)).Length == 0) |
|
415 |
continue; |
|
416 |
|
|
417 |
DataRow rows = PipeSystemNetwork.Select(string.Format("OID = '{0}' AND AFC = 'P1'", viewpsn)).First(); |
|
418 |
if(rows != null) |
|
419 |
{ |
|
420 |
lastP1 = viewpsn; |
|
421 |
} |
|
422 |
} |
|
423 |
|
|
424 |
if(!string.IsNullOrEmpty(lastP1)) |
|
425 |
{ |
|
426 |
bool bCheck = false; |
|
427 |
foreach (DataRow dataRow in pathItemRows) |
|
428 |
{ |
|
429 |
if (bCheck) |
|
430 |
dataRow["EqpGroupTag"] = string.Empty; |
|
431 |
|
|
432 |
if (dataRow.Field<string>("ViewPipeSystemNetwork_OID").Equals(lastP1)) |
|
433 |
{ |
|
434 |
bCheck = true; |
|
435 |
dataRow["EGTConnectedPoint"] = 1; |
|
436 |
} |
|
437 |
} |
|
438 |
} |
|
439 |
} |
|
280 | 440 |
} |
281 | 441 |
} |
282 | 442 |
} |
... | ... | |
1163 | 1323 |
pipeSystemNetworkDT.Columns.Add("IncludingVirtualData", typeof(string)); |
1164 | 1324 |
pipeSystemNetworkDT.Columns.Add("PSNAccuracy", typeof(string)); |
1165 | 1325 |
pipeSystemNetworkDT.Columns.Add("Pocket", typeof(string)); |
1326 |
pipeSystemNetworkDT.Columns.Add("AFC", typeof(string)); |
|
1166 | 1327 |
|
1167 | 1328 |
DataTable topologySetDT = new DataTable(); |
1168 | 1329 |
topologySetDT.Columns.Add("OID", typeof(string)); |
... | ... | |
1268 | 1429 |
} |
1269 | 1430 |
#endregion |
1270 | 1431 |
|
1432 |
#region EquipmentAirFinCooler Info |
|
1433 |
EquipmentAirFinCoolerInfo EquipmentAirFinCooler = new EquipmentAirFinCoolerInfo(); |
|
1434 |
DataTable dtEquipmentAirFinCooler = DB.SelectAirFinCoolerSetting(); |
|
1435 |
foreach (DataRow row in dtEquipmentAirFinCooler.Rows) |
|
1436 |
{ |
|
1437 |
//pump type도 마찬가지? |
|
1438 |
EquipmentAirFinCooler.EquipmentAirFinCoolerItem.Add(new EquipmentAirFinCoolerItem() |
|
1439 |
{ |
|
1440 |
Type = row["Type"].ToString(), |
|
1441 |
Name = row["Name"].ToString() |
|
1442 |
}); |
|
1443 |
} |
|
1444 |
#endregion |
|
1445 |
|
|
1271 | 1446 |
// key = 미입력 branch |
1272 | 1447 |
Dictionary<Item, Item> startBranchDic = new Dictionary<Item, Item>(); |
1273 | 1448 |
Dictionary<Item, Item> endBranchDic = new Dictionary<Item, Item>(); |
... | ... | |
1357 | 1532 |
foreach (Item item in group.Items) |
1358 | 1533 |
{ |
1359 | 1534 |
string VgTag = string.Empty; |
1535 |
|
|
1360 | 1536 |
if (ValveGrouping.ValveGroupItems.Where(x => x.SppidSymbolName == item.Name).Count() > 0) |
1361 | 1537 |
{ |
1362 | 1538 |
ValveGroupItem valveitem = ValveGrouping.ValveGroupItems.Where(x => x.SppidSymbolName == item.Name).First(); |
... | ... | |
1466 | 1642 |
newRow["ViewPipeSystemNetwork_OID"] = branchItem.PSNItem.PSN_OID(); |
1467 | 1643 |
|
1468 | 1644 |
newRow["PipeRun_OID"] = item.LineNumber != null ? item.LineNumber.Name : string.Empty; |
1469 |
|
|
1645 |
newRow["EGTConnectedPoint"] = 0; |
|
1470 | 1646 |
pathItemsDT.Rows.Add(newRow); |
1471 | 1647 |
} |
1648 |
|
|
1649 |
|
|
1472 | 1650 |
void CreateSequenceDataDataRow(string itemOID) |
1473 | 1651 |
{ |
1474 | 1652 |
DataRow newRow = sequenceDataDT.NewRow(); |
... | ... | |
1479 | 1657 |
|
1480 | 1658 |
sequenceDataDT.Rows.Add(newRow); |
1481 | 1659 |
} |
1660 |
|
|
1482 | 1661 |
void CreatePipeSystemNetworkDataRow() |
1483 | 1662 |
{ |
1484 | 1663 |
LineNumber lineNumber = item.Document.LineNumbers.Find(x => x.UID == item.Owner); |
... | ... | |
1746 | 1925 |
} |
1747 | 1926 |
|
1748 | 1927 |
newRow["Pocket"] = Pocket; |
1749 |
|
|
1928 |
string AFC = "P2"; |
|
1929 |
if(PSNItem.StartType == PSNType.Equipment && From_item.Equipment != null) |
|
1930 |
{ |
|
1931 |
if (EquipmentAirFinCooler.EquipmentAirFinCoolerItem.Where(x => x.Name.Equals(From_item.Equipment.Name)).Count() > 0) |
|
1932 |
AFC = "P1"; |
|
1933 |
} |
|
1934 |
|
|
1935 |
if (PSNItem.EndType == PSNType.Equipment && To_item.Equipment != null) |
|
1936 |
{ |
|
1937 |
if (EquipmentAirFinCooler.EquipmentAirFinCoolerItem.Where(x => x.Name.Equals(To_item.Equipment.Name)).Count() > 0) |
|
1938 |
AFC = "P1"; |
|
1939 |
} |
|
1940 |
|
|
1941 |
newRow["AFC"] = AFC; |
|
1750 | 1942 |
pipeSystemNetworkDT.Rows.Add(newRow); |
1751 | 1943 |
} |
1752 | 1944 |
} |
... | ... | |
2538 | 2730 |
newRow["PipeSystemNetwork_OID"] = itemRow["PipeSystemNetwork_OID"]; |
2539 | 2731 |
newRow["ViewPipeSystemNetwork_OID"] = itemRow["ViewPipeSystemNetwork_OID"]; |
2540 | 2732 |
newRow["PipeRun_OID"] = itemRow["PipeRun_OID"]; |
2541 |
|
|
2733 |
|
|
2734 |
newRow["EGTConnectedPoint"] = 0; |
|
2542 | 2735 |
return newRow; |
2543 | 2736 |
} |
2544 | 2737 |
} |
... | ... | |
2772 | 2965 |
result = "ENDOFHEADER"; |
2773 | 2966 |
else if (EndType == PSNType.Branch) |
2774 | 2967 |
{ |
2775 |
|
|
2776 |
|
|
2777 | 2968 |
//if (!item.MissingLineNumber && item.Relations.Last().Item.LineNumber != null && !string.IsNullOrEmpty(item.Relations.Last().Item.LineNumber.Name)) |
2778 | 2969 |
if (!item.MissingLineNumber2 && item.Relations.Last().Item.LineNumber != null && !string.IsNullOrEmpty(item.Relations.Last().Item.LineNumber.Name)) |
2779 | 2970 |
result = item.Relations.Last().Item.LineNumber.Name; |
내보내기 Unified diff