개정판 59a3b95b
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