프로젝트

일반

사용자정보

개정판 af52cf95

IDaf52cf959dddd8e0eb1a30311a15de71ccb602db
상위 64a8e508
하위 d6848762, 08811885

백흠경이(가) 4년 이상 전에 추가함

엑셀 파일에서 HMB 테이타를 읽어오도록 수정

Change-Id: I2263cd8aae996563e95bfd24bae59ee126f45c30

차이점 보기:

DTI_PID/DTI_PID/AppDocData.py
2480 2480
            CodeTable.clearTables()
2481 2481

  
2482 2482
    @staticmethod
2483
    def save_hmb_data(hmb_list: list):
2484
        import uuid
2485

  
2486
        app_doc_data = AppDocData.instance()
2487
        with app_doc_data.project.database.connect() as conn:
2488
            try:
2489
                cursor = conn.cursor()
2490
                sql = 'delete from HMB'
2491
                cursor.execute(sql)
2492

  
2493
                for hmb in hmb_list:
2494
                    sql = f"insert into HMB(UID, StreamNumber) values(?,?)"
2495
                    params = (str(hmb.uid) if hmb.uid else str(uuid.uuid4()), hmb.stream_no)
2496
                    affected = cursor.execute(sql, params)
2497
            except Exception as ex:
2498
                # Roll back any change if something goes wrong
2499
                conn.rollback()
2500

  
2501
                from App import App
2502
                message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
2503
                          f"{sys.exc_info()[-1].tb_lineno}"
2504
                App.mainWnd().addMessage.emit(MessageType.Error, message)
2505

  
2506
    @staticmethod
2483 2507
    def get_hmb_data_from(file_path: str):
2484 2508
        """get hmb data from pap database if file_path is given otherwise get hmb data from id2 database"""
2485 2509

  
DTI_PID/DTI_PID/HMBDialog.py
129 129

  
130 130
    def on_open_hmb_file(self):
131 131
        """open hmb file"""
132
        import openpyxl
133
        from HMBTable import HMBData
132 134

  
133 135
        options = QFileDialog.Options()
134 136
        options |= QFileDialog.DontUseNativeDialog
135
        file, _ = QFileDialog.getOpenFileName(self, self.tr('Import', "Select PAP File"),
136
                                               os.getcwd(), "pap files (*.pap)", options=options)
137
        file, _ = QFileDialog.getOpenFileName(self, self.tr('Import', "Select Excel File"),
138
                                               os.getcwd(), "excel files (*.xlsx)", options=options)
137 139
        if file:
138 140
            self.ui.lineEditHMBFilePath.setText(file)
139
            self.fill_hmb_data(file)
141

  
142
            doc = openpyxl.load_workbook(file)
143
            sheet = doc.active
144

  
145
            hmb_list = []
146

  
147
            # get max row count
148
            max_row = sheet.max_row
149
            # get max column count
150
            max_column = sheet.max_column
151
            for col in range(2, max_column + 1):
152
                stream_no = sheet.cell(row=1, column=col)
153
                from_ = sheet.cell(row=2, column=col)
154
                to_ = sheet.cell(row=3, column=col)
155

  
156
                hmb = HMBData()
157
                hmb.stream_no = stream_no.value
158
                hmb_list.append(hmb)
159

  
160
            app_doc_data = AppDocData.instance()
161
            app_doc_data.save_hmb_data(hmb_list)
162

  
163
            self.fill_hmb_data(None)
140 164

  
141 165
    def accept(self):
142 166
        """accept dialog"""
DTI_PID/DTI_PID/StreamlineDialog.py
22 22
        self.ui.setupUi(self)
23 23
        self.ui.splitterHorizontal.setSizes([200, 700])
24 24

  
25
        self.fill_hmb_data()
26

  
25 27
        self.ui.buttonBox.button(QDialogButtonBox.Ok).setIcon(QIcon(':/newPrefix/OK.svg'))
26 28
        self.ui.buttonBox.button(QDialogButtonBox.Cancel).setIcon(QIcon(':/newPrefix/Remove.svg'))
27 29

  
30
    def fill_hmb_data(self):
31
        """load hmb data and fill table view"""
32
        import uuid
33

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

  
84
        model.setHorizontalHeaderLabels(['UID', 'Stream No',
85
                                         'StreamDescription', 'DATACASE', 'STREAMPHASE',
86
                                         'Unitno', 'OVERALLVAPORFRACTION', 'OVERALLTEMPERATURE', 'OVERALLPRESSURE',
87
                                         'OVERALLMOLECULARWEIGHT', 'OVERALLMOLARFLOW', 'OVERALLMASSFLOW',
88
                                         'OVERALLACTUALVOLUMEFLOW', 'OVERALLMASSDENSITY', 'OVERALLVISCOSITY',
89
                                         'OVERALLMASSHEATCAPACITY', 'OVERALLHEATFLOW', 'OverallMassEnthalpy',
90
                                         'OverallSp.Gravity', 'OverallAPIGravity', 'OverallCriticalPressure',
91
                                         'OverallCriticalTemperature', 'OverallUOPKfactor',
92
                                         'LIQUIDMOLEFRACTION', 'VaporTemperature', 'VaporPressure',
93
                                         'VaporPseudocriticalTemperature', 'VaporPseudocriticalPressure',
94
                                         'VAPORMOLARRATE', 'VAPORMASSRATE', 'VAPORACTUALVOLUMERATE',
95
                                         'VAPORSTD.VOLUMERATE', 'VAPORMOLECULARWEIGHT', 'VaporHeatFlow',
96
                                         'VAPORCOMPRESSIBILITY', 'VAPORSPECIFICENTHALPY',
97
                                         'VAPORSPECIFICHEATCAPACITY', 'IDEALVAPORSPECIFICHEATRATIO',
98
                                         'VAPORACTUALDENSITY', 'VAPORTHERMALCONDUCTIVITY', 'VAPORVISCOSITY',
99
                                         'LiquidTemperature', 'LiquidPressure',
100
                                         'LiquidPseudocriticalTemperature', 'LiquidPseudocriticalPressure',
101
                                         'LIQUIDMOLARRATE', 'LIQUIDMASSRATE', 'LIQUIDACTUALVOLUMEFLOW',
102
                                         'LIQUIDSTD.VOLUMEFLOW', 'LIQUIDMOLECULARWEIGHT', 'LiquidHeatFlow',
103
                                         'LIQUIDSPECIFICENTHALPY', 'LIQUIDBoilingPointPressureatStreamT',
104
                                         'LIQUIDSPECIFICHEATCAPACITY', 'LIQUIDACTUALDENSITY',
105
                                         'LiquidStdDensity', 'LiquidSpecificGravity@15°C',
106
                                         'LIQUIDSURFACETENSION', 'LIQUIDTHERMALCONDUCTIVITY', 'LIQUIDVISCOSITY',
107
                                         'AQUEOUSPseudocriticalTemperature', 'AQUEOUSPseudocriticalPressure',
108
                                         'AQUEOUSMOLARRATE', 'AQUEOUSMASSRATE', 'AQUEOUSACTUALVOLUMEFLOW',
109
                                         'AQUEOUSSTD.LIQUIDFLOW', 'AQUEOUSMolecularWeight', 'AQUEOUSHeatFlow',
110
                                         'AQUEOUSSPECIFICENTHALPY', 'AQUEOUSBoilingPointPressureatStreamT',
111
                                         'AQUEOUSSPECIFICHEATCAPACITY', 'AQUEOUSACTUALDENSITY', 'AQUEOUSStdDensity',
112
                                         'AQUEOUSSpecificGravity@15°C', 'AQUEOUSSURFACETENSION',
113
                                         'AQUEOUSTHERMALCONDUCTIVITY', 'AQUEOUSVISCOSITY', 'DataSource'])
114
        self.ui.tableViewStreamNo.setModel(model)
115
        self.ui.tableViewStreamNo.resizeColumnsToContents()
116
        self.ui.tableViewStreamNo.setEditTriggers(QAbstractItemView.NoEditTriggers)
117
        for col in range(self.ui.tableViewStreamNo.model().columnCount()):
118
            self.ui.tableViewStreamNo.setColumnHidden(col, col != 1)  # hide all columns except index is 1
119

  
28 120
    def accept(self):
29 121
        QDialog.accept(self)
30 122

  
DTI_PID/DTI_PID/UI/Streamline.ui
14 14
   <string>Streamline</string>
15 15
  </property>
16 16
  <layout class="QGridLayout" name="gridLayout_3">
17
   <item row="2" column="0">
17
   <item row="1" column="0">
18 18
    <widget class="QDialogButtonBox" name="buttonBox">
19 19
     <property name="orientation">
20 20
      <enum>Qt::Horizontal</enum>
......
24 24
     </property>
25 25
    </widget>
26 26
   </item>
27
   <item row="1" column="0">
27
   <item row="0" column="0">
28 28
    <layout class="QGridLayout" name="gridLayout">
29 29
     <item row="4" column="0">
30 30
      <widget class="QSplitter" name="splitterHorizontal">
......
71 71
     </item>
72 72
    </layout>
73 73
   </item>
74
   <item row="0" column="0">
75
    <layout class="QGridLayout" name="gridLayout_2">
76
     <item row="0" column="0">
77
      <widget class="QLabel" name="label">
78
       <property name="text">
79
        <string>HMB Excel File Path : </string>
80
       </property>
81
      </widget>
82
     </item>
83
     <item row="0" column="1">
84
      <widget class="QLineEdit" name="lineEdit"/>
85
     </item>
86
     <item row="0" column="2">
87
      <widget class="QToolButton" name="toolButtonExcelFile">
88
       <property name="text">
89
        <string/>
90
       </property>
91
       <property name="icon">
92
        <iconset resource="../res/MainWindow.qrc">
93
         <normaloff>:/newPrefix/File.svg</normaloff>:/newPrefix/File.svg</iconset>
94
       </property>
95
      </widget>
96
     </item>
97
    </layout>
98
   </item>
99 74
  </layout>
100 75
 </widget>
101 76
 <resources>
DTI_PID/DTI_PID/UI/Streamline_UI.py
20 20
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
21 21
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
22 22
        self.buttonBox.setObjectName("buttonBox")
23
        self.gridLayout_3.addWidget(self.buttonBox, 2, 0, 1, 1)
23
        self.gridLayout_3.addWidget(self.buttonBox, 1, 0, 1, 1)
24 24
        self.gridLayout = QtWidgets.QGridLayout()
25 25
        self.gridLayout.setObjectName("gridLayout")
26 26
        self.splitterHorizontal = QtWidgets.QSplitter(StreamlineDialog)
......
50 50
        self.toolButtonAddFromTo.setObjectName("toolButtonAddFromTo")
51 51
        self.horizontalLayout.addWidget(self.toolButtonAddFromTo)
52 52
        self.gridLayout.addLayout(self.horizontalLayout, 1, 0, 1, 1)
53
        self.gridLayout_3.addLayout(self.gridLayout, 1, 0, 1, 1)
54
        self.gridLayout_2 = QtWidgets.QGridLayout()
55
        self.gridLayout_2.setObjectName("gridLayout_2")
56
        self.label = QtWidgets.QLabel(StreamlineDialog)
57
        self.label.setObjectName("label")
58
        self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
59
        self.lineEdit = QtWidgets.QLineEdit(StreamlineDialog)
60
        self.lineEdit.setObjectName("lineEdit")
61
        self.gridLayout_2.addWidget(self.lineEdit, 0, 1, 1, 1)
62
        self.toolButtonExcelFile = QtWidgets.QToolButton(StreamlineDialog)
63
        self.toolButtonExcelFile.setText("")
64
        icon1 = QtGui.QIcon()
65
        icon1.addPixmap(QtGui.QPixmap(":/newPrefix/File.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
66
        self.toolButtonExcelFile.setIcon(icon1)
67
        self.toolButtonExcelFile.setObjectName("toolButtonExcelFile")
68
        self.gridLayout_2.addWidget(self.toolButtonExcelFile, 0, 2, 1, 1)
69
        self.gridLayout_3.addLayout(self.gridLayout_2, 0, 0, 1, 1)
53
        self.gridLayout_3.addLayout(self.gridLayout, 0, 0, 1, 1)
70 54

  
71 55
        self.retranslateUi(StreamlineDialog)
72 56
        self.buttonBox.accepted.connect(StreamlineDialog.accept)
......
76 60
    def retranslateUi(self, StreamlineDialog):
77 61
        _translate = QtCore.QCoreApplication.translate
78 62
        StreamlineDialog.setWindowTitle(_translate("StreamlineDialog", "Streamline"))
79
        self.label.setText(_translate("StreamlineDialog", "HMB Excel File Path : "))
80 63
import MainWindow_rc

내보내기 Unified diff

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