프로젝트

일반

사용자정보

개정판 f975a538

IDf975a5387f9969cad616d7e591ae7fba6acb2675
상위 5c306d67
하위 f3668e2d, 6e00d69a

gaqhf 이(가) 6년 이상 전에 추가함

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