프로젝트

일반

사용자정보

개정판 0eefef3d

ID0eefef3db2362353734a828ce19e116aaed4c180
상위 bf9e8432
하위 0d4b3dee

이지연이(가) 약 3년 전에 추가함

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

클립보드 이미지 추가 (최대 크기: 500 MB)