프로젝트

일반

사용자정보

개정판 59a3b95b

ID59a3b95b7ce9b53886f333ed0571abd2954dbb32
상위 2f121b7a
하위 f6966a92

함의성이(가) 4년 이상 전에 추가함

issue #1461: test import save load, accept button need check

Change-Id: I5c0588a8492bf41bd12b7bf05f7ce4bcbf1e0ca9

차이점 보기:

DTI_PID/DTI_PID/AppDocData.py
2494 2494
                sql = 'delete from Stream_No'
2495 2495
                cursor.execute(sql)
2496 2496

  
2497
                """stream no save"""
2498
                sql = f'insert into Stream_No(UID, Stream_No, From, To) values(?,?,?)'
2499
                params = (str(hmb.uid) if hmb.uid else str(uuid.uuid4()), hmb.stream_no, hmb.hfrom, hmb.hto)
2500
                cursor.execute(sql, params)
2501

  
2502 2497
                first = True
2503 2498
                for hmb in hmb_list:
2504 2499
                    if first:
2505 2500
                        """save hmb data catalog""" 
2506 2501
                        for data in hmb.data:
2507
                            sql = f"insert into HMB_LIST(UID, Name, Unit) values(?,?,?)"
2508
                            params = (str(uuid.uuid4()), data.name, data.unit)
2502
                            sql = f"insert into HMB_LIST(UID, Name, Unit, [index]) values(?,?,?,?)"
2503
                            params = (str(uuid.uuid4()), data.name, data.unit, data.index)
2509 2504
                            cursor.execute(sql, params)
2510 2505
                        first = False
2511 2506

  
2507
                    """stream no save"""
2508
                    sql = f'insert into Stream_No(UID, Stream_No, [From], [To]) values(?,?,?,?)'
2509
                    hmb.uid = hmb.uid if hmb.uid else str(uuid.uuid4())
2510
                    params = (str(hmb.uid), hmb.stream_no, hmb.hfrom, hmb.hto)
2511
                    cursor.execute(sql, params)
2512

  
2512 2513
                    """save hmb data value"""
2513 2514
                    for data in hmb.data:
2514 2515
                        sql = f"insert into HMB_Value(UID, HMB_LIST_UID, Stream_No_UID, Value) values(?,(select UID from HMB_LIST where Name=?),?,?)"
2515
                        params = (str(uuid.uuid4()), data.name, hmb.stream_no, data.unit)
2516
                        params = (str(uuid.uuid4()), data.name, hmb.uid, data.value)
2516 2517
                        cursor.execute(sql, params)
2517 2518
            except Exception as ex:
2518 2519
                # Roll back any change if something goes wrong
......
2527 2528
    def get_hmb_data_from(file_path: str):
2528 2529
        """get hmb data from pap database if file_path is given otherwise get hmb data from id2 database"""
2529 2530

  
2531
        from HMBTable import HMBData
2532

  
2530 2533
        if not file_path:
2531 2534
            app_doc_data = AppDocData.instance()
2532 2535
            with app_doc_data.project.database.connect() as conn:
2533 2536
                try:
2534 2537
                    cursor = conn.cursor()
2535
                    sql = 'select * from HMB'
2538
                    sql = f"SELECT v.Value, r.Name, r.Unit, r.[index], s.Stream_No, s.[From], s.[To], s.UID FROM " \
2539
                            f"HMB_VALUE v " \
2540
                            f"INNER JOIN HMB_LIST r ON v.HMB_LIST_UID=r.UID " \
2541
                            f"INNER JOIN Stream_No s ON v.Stream_No_UID=s.UID " \
2542
                            f"ORDER BY s.stream_no"
2536 2543
                    cursor.execute(sql)
2537 2544
                    rows = cursor.fetchall()
2538
                    return rows
2545

  
2546
                    hmbs = HMBData.from_row(rows)
2547
                    return hmbs
2539 2548
                except Exception as ex:
2540 2549
                    # Roll back any change if something goes wrong
2541 2550
                    conn.rollback()
DTI_PID/DTI_PID/HMBDialog.py
44 44
        """load hmb data and fill table view"""
45 45
        import uuid
46 46

  
47
        rows = AppDocData.get_hmb_data_from(file_path)
47
        hmbs = AppDocData.get_hmb_data_from(file_path)
48
        if not hmbs:
49
            return
50

  
48 51
        model = QStandardItemModel()
49
        for row in rows:
50
            UID = row['UID'] if row['UID'] else str(uuid.uuid4())
51
            items = [QStandardItem(UID), QStandardItem(row['StreamNumber']),
52
                     QStandardItem(row['StreamDescription']), QStandardItem(row['DATACASE']),
53
                     QStandardItem(row['STREAMPHASE']), QStandardItem(row['Unitno']),
54
                     QStandardItem(row['OVERALLVAPORFRACTION']), QStandardItem(row['OVERALLTEMPERATURE']),
55
                     QStandardItem(row['OVERALLPRESSURE']), QStandardItem(row['OVERALLMOLECULARWEIGHT']),
56
                     QStandardItem(row['OVERALLMOLARFLOW']), QStandardItem(row['OVERALLMASSFLOW']),
57
                     QStandardItem(row['OVERALLACTUALVOLUMEFLOW']), QStandardItem(row['OVERALLMASSDENSITY']),
58
                     QStandardItem(row['OVERALLVISCOSITY']), QStandardItem(row['OVERALLMASSHEATCAPACITY']),
59
                     QStandardItem(row['OVERALLHEATFLOW']), QStandardItem(row['OverallMassEnthalpy']),
60
                     QStandardItem(row['OverallSp.Gravity']), QStandardItem(row['OverallAPIGravity']),
61
                     QStandardItem(row['OverallCriticalPressure']), QStandardItem(row['OverallCriticalTemperature']),
62
                     QStandardItem(row['OverallUOPKfactor']), QStandardItem(row['LIQUIDMOLEFRACTION']),
63
                     QStandardItem(row['VaporTemperature']), QStandardItem(row['VaporPressure']),
64
                     QStandardItem(row['VaporPseudocriticalTemperature']),
65
                     QStandardItem(row['VaporPseudocriticalPressure']), QStandardItem(row['VAPORMOLARRATE']),
66
                     QStandardItem(row['VAPORMASSRATE']), QStandardItem(row['VAPORACTUALVOLUMERATE']),
67
                     QStandardItem(row['VAPORSTD.VOLUMERATE']), QStandardItem(row['VAPORMOLECULARWEIGHT']),
68
                     QStandardItem(row['VaporHeatFlow']), QStandardItem(row['VAPORCOMPRESSIBILITY']),
69
                     QStandardItem(row['VAPORSPECIFICENTHALPY']), QStandardItem(row['VAPORSPECIFICHEATCAPACITY']),
70
                     QStandardItem(row['IDEALVAPORSPECIFICHEATRATIO']), QStandardItem(row['VAPORACTUALDENSITY']),
71
                     QStandardItem(row['VAPORTHERMALCONDUCTIVITY']), QStandardItem(row['VAPORVISCOSITY']),
72
                     QStandardItem(row['LiquidTemperature']), QStandardItem(row['LiquidPressure']),
73
                     QStandardItem(row['LiquidPseudocriticalTemperature']),
74
                     QStandardItem(row['LiquidPseudocriticalPressure']),
75
                     QStandardItem(row['LIQUIDMOLARRATE']), QStandardItem(row['LIQUIDMASSRATE']),
76
                     QStandardItem(row['LIQUIDACTUALVOLUMEFLOW']), QStandardItem(row['LIQUIDSTD.VOLUMEFLOW']),
77
                     QStandardItem(row['LIQUIDMOLECULARWEIGHT']), QStandardItem(row['LiquidHeatFlow']),
78
                     QStandardItem(row['LIQUIDSPECIFICENTHALPY']),
79
                     QStandardItem(row['LIQUIDBoilingPointPressureatStreamT']),
80
                     QStandardItem(row['LIQUIDSPECIFICHEATCAPACITY']), QStandardItem(row['LIQUIDACTUALDENSITY']),
81
                     QStandardItem(row['LiquidStdDensity']), QStandardItem(row['LiquidSpecificGravity@15°C']),
82
                     QStandardItem(row['LIQUIDSURFACETENSION']), QStandardItem(row['LIQUIDTHERMALCONDUCTIVITY']),
83
                     QStandardItem(row['LIQUIDVISCOSITY']), QStandardItem(row['AQUEOUSPseudocriticalTemperature']),
84
                     QStandardItem(row['AQUEOUSPseudocriticalPressure']), QStandardItem(row['AQUEOUSMOLARRATE']),
85
                     QStandardItem(row['AQUEOUSMASSRATE']), QStandardItem(row['AQUEOUSACTUALVOLUMEFLOW']),
86
                     QStandardItem(row['AQUEOUSSTD.LIQUIDFLOW']), QStandardItem(row['AQUEOUSMolecularWeight']),
87
                     QStandardItem(row['AQUEOUSHeatFlow']), QStandardItem(row['AQUEOUSSPECIFICENTHALPY']),
88
                     QStandardItem(row['AQUEOUSBoilingPointPressureatStreamT']),
89
                     QStandardItem(row['AQUEOUSSPECIFICHEATCAPACITY']),
90
                     QStandardItem(row['AQUEOUSACTUALDENSITY']), QStandardItem(row['AQUEOUSStdDensity']),
91
                     QStandardItem(row['AQUEOUSSpecificGravity@15°C']),
92
                     QStandardItem(row['AQUEOUSSURFACETENSION']),
93
                     QStandardItem(row['AQUEOUSTHERMALCONDUCTIVITY']), QStandardItem(row['AQUEOUSVISCOSITY']),
94
                     QStandardItem(row['DataSource'])]
52
        for hmb in hmbs:
53
            UID = hmb.uid
54
            STREAM_NO = hmb.stream_no
55
            items = [QStandardItem(UID), QStandardItem(STREAM_NO)]
56

  
57
            header = ['UID', 'StreamNumber']
58
            for data in sorted(hmb.data, key=lambda param:param.index):
59
                header.append(data.name + ' (' + data.unit + ')')
60
                items.append(QStandardItem(data.value))
95 61
            model.appendRow(items)
96 62

  
97
        model.setHorizontalHeaderLabels(['UID', 'StreamNumber', 'StreamDescription', 'DATACASE', 'STREAMPHASE',
98
                                         'Unitno', 'OVERALLVAPORFRACTION', 'OVERALLTEMPERATURE', 'OVERALLPRESSURE',
99
                                         'OVERALLMOLECULARWEIGHT', 'OVERALLMOLARFLOW', 'OVERALLMASSFLOW',
100
                                         'OVERALLACTUALVOLUMEFLOW', 'OVERALLMASSDENSITY', 'OVERALLVISCOSITY',
101
                                         'OVERALLMASSHEATCAPACITY', 'OVERALLHEATFLOW', 'OverallMassEnthalpy',
102
                                         'OverallSp.Gravity', 'OverallAPIGravity', 'OverallCriticalPressure',
103
                                         'OverallCriticalTemperature', 'OverallUOPKfactor',
104
                                         'LIQUIDMOLEFRACTION', 'VaporTemperature', 'VaporPressure',
105
                                         'VaporPseudocriticalTemperature', 'VaporPseudocriticalPressure',
106
                                         'VAPORMOLARRATE', 'VAPORMASSRATE', 'VAPORACTUALVOLUMERATE',
107
                                         'VAPORSTD.VOLUMERATE', 'VAPORMOLECULARWEIGHT', 'VaporHeatFlow',
108
                                         'VAPORCOMPRESSIBILITY', 'VAPORSPECIFICENTHALPY',
109
                                         'VAPORSPECIFICHEATCAPACITY', 'IDEALVAPORSPECIFICHEATRATIO',
110
                                         'VAPORACTUALDENSITY', 'VAPORTHERMALCONDUCTIVITY', 'VAPORVISCOSITY',
111
                                         'LiquidTemperature', 'LiquidPressure',
112
                                         'LiquidPseudocriticalTemperature', 'LiquidPseudocriticalPressure',
113
                                         'LIQUIDMOLARRATE', 'LIQUIDMASSRATE', 'LIQUIDACTUALVOLUMEFLOW',
114
                                         'LIQUIDSTD.VOLUMEFLOW', 'LIQUIDMOLECULARWEIGHT', 'LiquidHeatFlow',
115
                                         'LIQUIDSPECIFICENTHALPY', 'LIQUIDBoilingPointPressureatStreamT',
116
                                         'LIQUIDSPECIFICHEATCAPACITY', 'LIQUIDACTUALDENSITY',
117
                                         'LiquidStdDensity', 'LiquidSpecificGravity@15°C',
118
                                         'LIQUIDSURFACETENSION', 'LIQUIDTHERMALCONDUCTIVITY', 'LIQUIDVISCOSITY',
119
                                         'AQUEOUSPseudocriticalTemperature', 'AQUEOUSPseudocriticalPressure',
120
                                         'AQUEOUSMOLARRATE', 'AQUEOUSMASSRATE', 'AQUEOUSACTUALVOLUMEFLOW',
121
                                         'AQUEOUSSTD.LIQUIDFLOW', 'AQUEOUSMolecularWeight', 'AQUEOUSHeatFlow',
122
                                         'AQUEOUSSPECIFICENTHALPY', 'AQUEOUSBoilingPointPressureatStreamT',
123
                                         'AQUEOUSSPECIFICHEATCAPACITY', 'AQUEOUSACTUALDENSITY', 'AQUEOUSStdDensity',
124
                                         'AQUEOUSSpecificGravity@15°C', 'AQUEOUSSURFACETENSION',
125
                                         'AQUEOUSTHERMALCONDUCTIVITY', 'AQUEOUSVISCOSITY', 'DataSource'])
63
        model.setHorizontalHeaderLabels(header)
64

  
126 65
        self.ui.tableViewHMB.setModel(model)
127 66
        self.ui.tableViewHMB.resizeColumnsToContents()
128 67
        self.ui.tableViewHMB.setEditTriggers(QAbstractItemView.NoEditTriggers)
......
165 104
                    unit = sheet.cell(row=row, column=2).value if sheet.cell(row=row, column=2).value else ''
166 105
                    value = sheet.cell(row=row, column=col).value if sheet.cell(row=row, column=col).value else ''
167 106

  
168
                    data.append(StreamData(name, unit, value))
107
                    data.append(StreamData(name, unit, value, row))
169 108

  
170 109
                hmb.data = data
171 110
                hmb_list.append(hmb)
DTI_PID/DTI_PID/HMBTable.py
7 7

  
8 8

  
9 9
class StreamData:
10
    def __init__(self, name, unit='', value=''):
10
    def __init__(self, name, unit='', value='', index=0):
11 11
        self.name = name
12 12
        self.unit = unit
13 13
        self.value = value
14
        self.index = index
14 15

  
15 16

  
16 17
class HMBData:
......
153 154
        self._stream_no = value
154 155

  
155 156
    @staticmethod
156
    def from_row(row):
157
    def from_row(rows):
157 158
        """create hmb data from database record"""
158
        hmb = HMBData()
159
        hmb._uid = row['UID']
160
        hmb._stream_no = row['StreamNumber']
161
        hmb.DATACASE = row['DATACASE']
162
        hmb.STREAMPHASE = row['STREAMPHASE']
163
        hmb.Unitno = row['Unitno']
164

  
165
        return hmb
159
        if rows:
160
            pre_no = rows[0]['Stream_No']
161

  
162
        data_list = []
163
        datas = []
164

  
165
        for row in rows:
166
            if row['Stream_No'] == pre_no:
167
                datas.append(row)
168
            else:
169
                pre_no = row['Stream_No']
170
                data_list.append(datas)
171
                datas = [row]
172

  
173
        hmbs = []
174
        for datas in data_list:
175
            hmb = HMBData(datas[0]['UID'])
176
            hmb.stream_no = datas[0]['Stream_No']
177
            hmb.hfrom = datas[0]['From']
178
            hmb.hto = datas[0]['To']
179

  
180
            hmb_data = []
181
            for _data in datas:
182
                name = _data['Name']
183
                unit = _data['Unit']
184
                value = _data['Value']
185
                index = _data['index']
186
                hmb_data.append(StreamData(name, unit, value, index))
187

  
188
            hmb.data = hmb_data
189
            hmbs.append(hmb)
190

  
191
        return hmbs
166 192

  
167 193

  
168 194
class HMBTable:

내보내기 Unified diff

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