개정판 f975a538
dev issue #627: edit line data ui and logic
DTI_PID/DTI_PID/AppDocData.py | ||
---|---|---|
1638 | 1638 |
# Get a cursor object |
1639 | 1639 |
cursor = conn.cursor() |
1640 | 1640 | |
1641 |
sql = 'select DISTINCT(documentName) from LINE_DATA_LIST'
|
|
1641 |
sql = 'select DISTINCT(PNID_NO) from LINE_DATA_LIST'
|
|
1642 | 1642 | |
1643 | 1643 |
cursor.execute(sql) |
1644 | 1644 |
rows = cursor.fetchall() |
... | ... | |
1671 | 1671 |
# Get a cursor object |
1672 | 1672 |
cursor = conn.cursor() |
1673 | 1673 | |
1674 |
sql = 'select UID, lineNo, nominalDiameter, fluidCode, tagSeqNo, insulationPurpose, streamNo, phase, pressure, temperature, documentName from LINE_DATA_LIST'
|
|
1674 |
sql = 'select UID, LINE_SIZE, LINE_SYMBOL, LINE_NO, LINE_CLASS, LINE_ROUTING_FROM, LINE_ROUTING_TO, SERVICE_FLUID, SERVICE_DENSITY, SERVICE_STATE, OPERATION_CONDITION_TEMP, OPERATION_CONDITION_PRESS, DESIGN_CONDITION_TEMP, DESIGN_CONDITION_PRESS, TEST_CONDITION_TEMP, TEST_CONDITION_PRESS, INSUL_CODE, PAINT_CODE, NDE_CODE, PWHT, PNID_NO from LINE_DATA_LIST'
|
|
1675 | 1675 |
if docName is not None: |
1676 | 1676 |
sql += " where documentName = '{}'".format(docName) |
1677 | 1677 | |
... | ... | |
1708 | 1708 |
cursor = conn.cursor() |
1709 | 1709 |
|
1710 | 1710 |
for data in dataLists: |
1711 |
sql = "insert or replace into LINE_DATA_LIST(UID, lineNo, nominalDiameter, fluidCode, tagSeqNo, insulationPurpose, streamNo, phase, pressure, temperature, documentName) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
|
|
1712 |
param = (data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10])
|
|
1711 |
sql = "insert or replace into LINE_DATA_LIST(UID, LINE_SIZE, LINE_SYMBOL, LINE_NO, LINE_CLASS, LINE_ROUTING_FROM, LINE_ROUTING_TO, SERVICE_FLUID, SERVICE_DENSITY, SERVICE_STATE, OPERATION_CONDITION_TEMP, OPERATION_CONDITION_PRESS, DESIGN_CONDITION_TEMP, DESIGN_CONDITION_PRESS, TEST_CONDITION_TEMP, TEST_CONDITION_PRESS, INSUL_CODE, PAINT_CODE, NDE_CODE, PWHT, PNID_NO) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
|
|
1712 |
param = tuple(data)
|
|
1713 | 1713 |
cursor.execute(sql, param) |
1714 | 1714 | |
1715 | 1715 |
conn.commit() |
DTI_PID/DTI_PID/ItemDataExportDialog.py | ||
---|---|---|
69 | 69 |
instTable = self.ui.tableWidgetInstrumentDataList |
70 | 70 | |
71 | 71 |
# Table Header Label 설정 |
72 |
self.lineColumnList = ['UID', 'LINENO', 'NOMINALDIAMETER', 'FLUIDCODE', 'TAGSEQNO', 'INSULATIONPURPOSE', 'STREAMNO', 'PHASE', 'PRESSURE', 'TEMPERATURE', 'DOCUMENTNAME']
|
|
72 |
self.lineColumnList = ['UID', 'LINE_SIZE', 'LINE_SYMBOL', 'LINE_NO', 'LINE_CLASS', 'LINE_ROUTING_FROM', 'LINE_ROUTING_TO', 'SERVICE_FLUID', 'SERVICE_DENSITY', 'SERVICE_STATE', 'OPERATION_CONDITION_TEMP', 'OPERATION_CONDITION_PRESS', 'DESIGN_CONDITION_TEMP', 'DESIGN_CONDITION_PRESS', 'TEST_CONDITION_TEMP', 'TEST_CONDITION_PRESS', 'INSUL_CODE', 'PAINT_CODE', 'NDE_CODE', 'PWHT', 'PNID_NO']
|
|
73 | 73 |
self.equipColumnList = ['UID', 'NAME', 'PRESSURE', 'TEMPERATURE', 'DOCUMENTNAME'] |
74 | 74 |
self.instColumnList = ['UID', 'NAME', 'VARIABLECODE', 'TYPEMODIFIER', 'TAGSEQNO', 'TAGSUFFIX', 'DOCUMENTNAME'] |
75 | 75 | |
76 |
lineTable.setHorizontalHeaderLabels(['UID', 'Line No', 'Nominal\r\nDiameter', 'Fluid Code', 'Tag Seq No', 'Insulation\r\nPurpose', 'Stream No', 'Phase', 'Pressure', 'Temperature', 'Document Name'])
|
|
76 |
lineTable.setHorizontalHeaderLabels(['UID', 'LINE_SIZE', 'LINE_SYMBOL', 'LINE_NO', 'LINE_CLASS', 'LINE_ROUTING_FROM', 'LINE_ROUTING_TO', 'SERVICE_FLUID', 'SERVICE_DENSITY', 'SERVICE_STATE', 'OPERATION_CONDITION_TEMP', 'OPERATION_CONDITION_PRESS', 'DESIGN_CONDITION_TEMP', 'DESIGN_CONDITION_PRESS', 'TEST_CONDITION_TEMP', 'TEST_CONDITION_PRESS', 'INSUL_CODE', 'PAINT_CODE', 'NDE_CODE', 'PWHT', 'PNID_NO'])
|
|
77 | 77 |
equipTable.setHorizontalHeaderLabels(['UID', 'Name', 'Pressure', 'Temperature', 'Document Name']) |
78 | 78 |
instTable.setHorizontalHeaderLabels(['UID', 'Name', 'Variable Code', 'Type Modifier', 'Tag Seq No', 'Tag Suffix', 'Document Name']) |
79 | 79 |
# Table Header 크기 설정 |
... | ... | |
112 | 112 |
rowCount = lineTable.rowCount() |
113 | 113 |
lineNo = [] |
114 | 114 |
for row in range(rowCount): |
115 |
lineNo.append(lineTable.item(row, 1).text())
|
|
115 |
lineNo.append(lineTable.item(row, 3).text())
|
|
116 | 116 | |
117 | 117 |
for line in self.sceneLineData.keys(): |
118 | 118 |
# 중복 (어떻게 할지) |
... | ... | |
123 | 123 |
rowCount += 1 |
124 | 124 |
lineTable.setRowCount(rowCount) |
125 | 125 |
lineData = self.sceneLineData[line] |
126 |
lineData[0] = '' |
|
126 | 127 | |
127 |
index = self.lineColumnList.index('DOCUMENTNAME') |
|
128 |
widgetItem = QTableWidgetItem(docData.imgName) |
|
129 |
widgetItem.setBackground(QColor(int(134), int(229), int(127))) |
|
130 |
lineTable.setItem(rowCount - 1, index, widgetItem) |
|
128 |
for index in range(len(lineData)): |
|
129 |
widgetItem = QTableWidgetItem(lineData[index] if lineData[index] is not None else '') |
|
130 |
if widgetItem.text() != '': |
|
131 |
widgetItem.setBackground(QColor(int(134), int(229), int(127))) |
|
132 |
lineTable.setItem(rowCount - 1, index, widgetItem) |
|
131 | 133 | |
132 |
for data in lineData: |
|
133 |
columnName = data[0].upper().replace(' ', '') |
|
134 |
if self.lineColumnList.count(columnName): |
|
135 |
index = self.lineColumnList.index(columnName) |
|
136 |
widgetItem = QTableWidgetItem(data[1] if data[1] is not None else '') |
|
137 |
if widgetItem.text() != '': |
|
138 |
widgetItem.setBackground(QColor(int(134), int(229), int(127))) |
|
139 |
lineTable.setItem(rowCount - 1, index, widgetItem) |
|
140 | 134 | |
141 | 135 | |
142 | 136 |
''' |
... | ... | |
160 | 154 |
items = [item for item in self.parent.graphicsView.scene.items() if type(item) is QEngineeringLineNoTextItem] |
161 | 155 |
for item in items: |
162 | 156 |
text = item.text() |
163 |
attrs = item.getLineNoAttributes(True) |
|
164 |
|
|
165 |
self.sceneLineData[text] = attrs |
|
157 |
self.sceneLineData[text] = item.getLineDataList() |
|
166 | 158 | |
167 | 159 |
''' |
168 | 160 |
@brief save Datas |
... | ... | |
197 | 189 |
if widgetItem is not None: |
198 | 190 |
dataList.append(widgetItem.text()) |
199 | 191 |
else: |
200 |
if columnIndex == 0: |
|
201 |
dataList.append(str(uuid.uuid4())) |
|
202 |
else: |
|
203 |
dataList.append('') |
|
192 |
dataList.append('') |
|
204 | 193 | |
194 |
dataList[0] = str(uuid.uuid4()) |
|
205 | 195 |
dataLists.append(dataList) |
206 | 196 |
|
207 | 197 |
docData.setLineDataList(dataLists) |
DTI_PID/DTI_PID/ItemDataExport_UI.py | ||
---|---|---|
24 | 24 |
self.gridLayout_3 = QtWidgets.QGridLayout(self.tabLineList) |
25 | 25 |
self.gridLayout_3.setObjectName("gridLayout_3") |
26 | 26 |
self.tableWidgetLineDataList = QtWidgets.QTableWidget(self.tabLineList) |
27 |
self.tableWidgetLineDataList.setColumnCount(11)
|
|
27 |
self.tableWidgetLineDataList.setColumnCount(21)
|
|
28 | 28 |
self.tableWidgetLineDataList.setObjectName("tableWidgetLineDataList") |
29 | 29 |
self.tableWidgetLineDataList.setRowCount(0) |
30 | 30 |
self.tableWidgetLineDataList.verticalHeader().setVisible(False) |
DTI_PID/DTI_PID/Scripts/LINE_DATA_LIST.sql | ||
---|---|---|
1 | 1 |
CREATE TABLE IF NOT EXISTS LINE_DATA_LIST ( |
2 | 2 |
UID TEXT, |
3 |
lineNo TEXT, |
|
4 |
nominalDiameter TEXT, |
|
5 |
fluidCode TEXT, |
|
6 |
tagSeqNo TEXT, |
|
7 |
insulationPurpose TEXT, |
|
8 |
streamNo TEXT, |
|
9 |
phase TEXT, |
|
10 |
pressure TEXT, |
|
11 |
temperature TEXT, |
|
12 |
documentName TEXT, |
|
13 |
CONSTRAINT LINE_DATA_LIST_PK PRIMARY KEY (lineNo) |
|
3 |
LINE_SIZE TEXT, |
|
4 |
LINE_SYMBOL TEXT, |
|
5 |
LINE_NO TEXT, |
|
6 |
LINE_CLASS TEXT, |
|
7 |
LINE_ROUTING_FROM TEXT, |
|
8 |
LINE_ROUTING_TO TEXT, |
|
9 |
SERVICE_FLUID TEXT, |
|
10 |
SERVICE_DENSITY TEXT, |
|
11 |
SERVICE_STATE TEXT, |
|
12 |
OPERATION_CONDITION_TEMP TEXT, |
|
13 |
OPERATION_CONDITION_PRESS TEXT, |
|
14 |
DESIGN_CONDITION_TEMP TEXT, |
|
15 |
DESIGN_CONDITION_PRESS TEXT, |
|
16 |
TEST_CONDITION_TEMP TEXT, |
|
17 |
TEST_CONDITION_PRESS TEXT, |
|
18 |
INSUL_CODE TEXT, |
|
19 |
PAINT_CODE TEXT, |
|
20 |
NDE_CODE TEXT, |
|
21 |
PWHT TEXT, |
|
22 |
PNID_NO TEXT, |
|
23 | ||
24 |
CONSTRAINT LINE_DATA_LIST_PK PRIMARY KEY (LINE_NO) |
|
14 | 25 |
); |
15 |
CREATE UNIQUE INDEX IF NOT EXISTS LINE_DATA_LIST_TAG_NO_IDX ON LINE_DATA_LIST (lineNo); |
|
26 |
CREATE UNIQUE INDEX IF NOT EXISTS LINE_DATA_LIST_TAG_NO_IDX ON LINE_DATA_LIST (LINE_NO); |
DTI_PID/DTI_PID/Shapes/QEngineeringLineNoTextItem.py | ||
---|---|---|
19 | 19 |
from AppDocData import AppDocData |
20 | 20 |
from EngineeringTextItem import QEngineeringTextItem |
21 | 21 | |
22 |
lineColumnList = ['UID', 'LINENO', 'NOMINALDIAMETER', 'FLUIDCODE', 'TAGSEQNO', 'INSULATIONPURPOSE', 'STREAMNO', 'PHASE', 'PRESSURE', 'TEMPERATURE', 'DOCUMENTNAME']
|
|
22 |
lineColumnList = ['UID', 'LINE_SIZE', 'LINE_SYMBOL', 'LINE_NO', 'LINE_CLASS', 'LINE_ROUTING_FROM', 'LINE_ROUTING_TO', 'SERVICE_FLUID', 'SERVICE_DENSITY', 'SERVICE_STATE', 'OPERATION_CONDITION_TEMP', 'OPERATION_CONDITION_PRESS', 'DESIGN_CONDITION_TEMP', 'DESIGN_CONDITION_PRESS', 'TEST_CONDITION_TEMP', 'TEST_CONDITION_PRESS', 'INSUL_CODE', 'PAINT_CODE', 'NDE_CODE', 'PWHT', 'PNID_NO']
|
|
23 | 23 | |
24 | 24 |
class QEngineeringLineNoTextItem(QEngineeringTextItem): |
25 | 25 | |
... | ... | |
235 | 235 |
global lineColumnList |
236 | 236 | |
237 | 237 |
docData = AppDocData.instance() |
238 |
attrs = self.getLineNoAttributes(True)
|
|
239 |
attrs.append(('DOCUMENTNAME', docData.imgName))
|
|
240 |
attrs.append(('UID', str(uuid.uuid4())))
|
|
241 |
dataList = []
|
|
238 |
docData.setLineDataList([self.getLineDataList])
|
|
239 |
except Exception as ex:
|
|
240 |
return str(self.uid)
|
|
241 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
|
|
242 | 242 | |
243 |
for index in range(len(lineColumnList)): |
|
244 |
value = '' |
|
245 |
for attr in attrs: |
|
246 |
attrName = attr[0].upper().replace(' ', '') |
|
247 |
if lineColumnList[index] == attrName: |
|
248 |
value = attr[1] if attr[1] is not None else '' |
|
249 |
break |
|
243 |
''' |
|
244 |
@brief return Line Data List |
|
245 |
@author kyouho |
|
246 |
@date 2018.08.14 |
|
247 |
''' |
|
248 |
def getLineDataList(self): |
|
249 |
dataList = [] |
|
250 |
try: |
|
251 |
import uuid |
|
252 |
global lineColumnList |
|
250 | 253 | |
251 |
dataList.append(value) |
|
254 |
docData = AppDocData.instance() |
|
255 |
attrs = self.getLineNoAttributes(True) |
|
252 | 256 | |
253 |
docData.setLineDataList([dataList]) |
|
257 |
for index in range(len(lineColumnList)): |
|
258 |
dataList.append('') |
|
259 | ||
260 |
dataList[0] = str(uuid.uuid4()) |
|
261 |
dataList[20] = docData.imgName |
|
262 | ||
263 |
for attr in attrs: |
|
264 |
attrName = attr[0].upper().replace(' ', '') |
|
265 |
data = attr[1] if attr[1] is not None else '' |
|
266 |
if attrName == 'NOMINALDIAMETER': |
|
267 |
dataList[1] = data |
|
268 |
elif attrName == 'FLUIDCODE': |
|
269 |
dataList[7] = data |
|
270 |
elif attrName == 'TAGSEQNO': |
|
271 |
dataList[4] = data |
|
272 |
elif attrName == 'INSULATIONPURPOSE': |
|
273 |
dataList[16] = data |
|
274 |
elif attrName == 'STREAMNO': |
|
275 |
pass |
|
276 |
elif attrName == 'LINENO': |
|
277 |
dataList[3] = data |
|
278 |
elif attrName == '': |
|
279 |
pass |
|
280 |
elif attrName == '': |
|
281 |
pass |
|
282 |
elif attrName == '': |
|
283 |
pass |
|
284 |
|
|
254 | 285 |
except Exception as ex: |
255 |
return str(self.uid) |
|
256 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
286 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
287 | ||
288 |
return dataList |
DTI_PID/DTI_PID/UI/ItemDataExport.ui | ||
---|---|---|
32 | 32 |
<item row="0" column="0"> |
33 | 33 |
<widget class="QTableWidget" name="tableWidgetLineDataList"> |
34 | 34 |
<property name="columnCount"> |
35 |
<number>11</number>
|
|
35 |
<number>21</number>
|
|
36 | 36 |
</property> |
37 | 37 |
<attribute name="verticalHeaderVisible"> |
38 | 38 |
<bool>false</bool> |
... | ... | |
48 | 48 |
<column/> |
49 | 49 |
<column/> |
50 | 50 |
<column/> |
51 |
<column/> |
|
52 |
<column/> |
|
53 |
<column/> |
|
54 |
<column/> |
|
55 |
<column/> |
|
56 |
<column/> |
|
57 |
<column/> |
|
58 |
<column/> |
|
59 |
<column/> |
|
60 |
<column/> |
|
51 | 61 |
</widget> |
52 | 62 |
</item> |
53 | 63 |
</layout> |
내보내기 Unified diff