class OutStorageWidget(MySearchWidget):
    def __init__(self):
        super().__init__()
        self.select_conditions = ["ProductID", "OutNO"]

    def setupUi(self, OutStorageForm):
        OutStorageForm.setObjectName("OutStorageForm")
        OutStorageForm.resize(1171, 813)
        self.verticalLayout = QtWidgets.QVBoxLayout(OutStorageForm)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(OutStorageForm)
        font = QtGui.QFont()
        font.setPointSize(16)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.addOutStorageButton = QtWidgets.QPushButton(OutStorageForm)
        self.addOutStorageButton.setObjectName("addOutStorageButton")
        self.horizontalLayout_5.addWidget(self.addOutStorageButton)
        self.selectOutStorageInfo = QtWidgets.QPushButton(OutStorageForm)
        self.selectOutStorageInfo.setObjectName("selectOutStorageInfo")
        self.horizontalLayout_5.addWidget(self.selectOutStorageInfo)
        self.alterOutStorageInfo = QtWidgets.QPushButton(OutStorageForm)
        self.alterOutStorageInfo.setObjectName("alterOutStorageInfo")
        self.horizontalLayout_5.addWidget(self.alterOutStorageInfo)
        self.horizontalLayout_3.addLayout(self.horizontalLayout_5)
        self.deleteOutStorageInfo = QtWidgets.QPushButton(OutStorageForm)
        self.deleteOutStorageInfo.setObjectName("deleteOutStorageInfo")
        self.horizontalLayout_3.addWidget(self.deleteOutStorageInfo)
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setSpacing(7)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.searchEdit = QtWidgets.QLineEdit(OutStorageForm)
        self.searchEdit.setMaximumSize(QtCore.QSize(500, 16777215))
        self.searchEdit.setObjectName("searchEdit")
        self.horizontalLayout.addWidget(self.searchEdit)
        self.searchButton = QtWidgets.QPushButton(OutStorageForm)
        self.searchButton.setObjectName("searchButton")
        self.horizontalLayout.addWidget(self.searchButton)
        self.comboBox = QtWidgets.QComboBox(OutStorageForm)
        self.comboBox.setInsertPolicy(QtWidgets.QComboBox.InsertAtTop)
        self.comboBox.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.horizontalLayout.addWidget(self.comboBox)
        self.horizontalLayout_3.addLayout(self.horizontalLayout)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.tableView = QtWidgets.QTableView(OutStorageForm)
        self.tableView.setObjectName("tableView")
        self.verticalLayout.addWidget(self.tableView)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(OutStorageForm)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.jumpEdit = QtWidgets.QLineEdit(OutStorageForm)
        self.jumpEdit.setMaximumSize(QtCore.QSize(50, 50))
        self.jumpEdit.setMaxLength(9999)
        self.jumpEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.jumpEdit.setObjectName("jumpEdit")
        self.horizontalLayout_2.addWidget(self.jumpEdit)
        self.totalPageLabel = QtWidgets.QLabel(OutStorageForm)
        self.totalPageLabel.setObjectName("totalPageLabel")
        self.horizontalLayout_2.addWidget(self.totalPageLabel)
        self.jumpButton = QtWidgets.QPushButton(OutStorageForm)
        self.jumpButton.setObjectName("jumpButton")
        self.horizontalLayout_2.addWidget(self.jumpButton)
        self.previousButton = QtWidgets.QPushButton(OutStorageForm)
        self.previousButton.setObjectName("previousButton")
        self.horizontalLayout_2.addWidget(self.previousButton)
        self.nextButton = QtWidgets.QPushButton(OutStorageForm)
        self.nextButton.setObjectName("nextButton")
        self.horizontalLayout_2.addWidget(self.nextButton)
        self.horizontalLayout_4.addLayout(self.horizontalLayout_2)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem2)
        self.verticalLayout.addLayout(self.horizontalLayout_4)

        self.retranslateUi(OutStorageForm)
        self.comboBox.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(OutStorageForm)

    def retranslateUi(self, OutStorageForm):
        _translate = QtCore.QCoreApplication.translate
        OutStorageForm.setWindowTitle(_translate("OutStorageForm", "出库管理"))
        self.label.setText(_translate("OutStorageForm", "出库信息查询"))
        self.addOutStorageButton.setText(_translate("OutStorageForm",
                                                    "新建出库信息"))
        self.selectOutStorageInfo.setText(
            _translate("OutStorageForm", "查看产品出库信息"))
        self.alterOutStorageInfo.setText(_translate("OutStorageForm",
                                                    "修改出库信息"))
        self.deleteOutStorageInfo.setText(
            _translate("OutStorageForm", "删除出库信息"))
        self.searchButton.setText(_translate("OutStorageForm", "查询"))
        self.comboBox.setItemText(0, _translate("OutStorageForm", "按产品编号查询"))
        self.comboBox.setItemText(1, _translate("OutStorageForm", "按出库编号查询"))
        self.label_2.setText(_translate("OutStorageForm", "跳转至第"))
        self.jumpEdit.setText(_translate("OutStorageForm", "1"))
        self.totalPageLabel.setText(
            _translate("OutStorageForm",
                       "/  " + str(self.queryModel.totalPage) + "  页"))
        self.jumpButton.setText(_translate("OutStorageForm", "跳转"))
        self.previousButton.setText(_translate("OutStorageForm", "上一页"))
        self.nextButton.setText(_translate("OutStorageForm", "下一页"))
        # tableView数据设置
        headerRow = [
            "出库编号", "产品编号", "出库库房", "出库日期", "出库数量", "登记人", "使用人", "使用部门"
        ]
        self.tableView.setModel(self.queryModel)
        self.queryModel = MySearchTableModel("T_Out_Detail", headerRow)
        self.queryModel = MySearchTableModel("T_Out_Detail", headerRow)
        self.tableView.setModel(self.queryModel)
        self.header = CheckBoxHeader()
        self.tableView.setHorizontalHeader(self.header)
        self.header.clicked.connect(self.queryModel.headerClick)
        self.tableView.horizontalHeader().setStretchLastSection(True)
        self.tableView.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        self.tableView.setModel(self.queryModel)
        # 按钮绑定事件
        self.addOutStorageButton.clicked.connect(
            lambda: self.addButtonEvent(AddOutStorage()))
        # 增加
        self.searchButton.clicked.connect(self.searchButtonEvent)
        # 查看
        self.selectOutStorageInfo.clicked.connect(
            lambda: self.selectButtonEvent(SelectOutStorage()))
        # 修改
        self.alterOutStorageInfo.clicked.connect(
            lambda: self.updateButtonEvent(AlterOutStorage()))

        # 下面是无需改动的按钮
        # 删除按钮
        self.deleteOutStorageInfo.clicked.connect(self.deleteButtonEvent)
        # 上一页
        self.previousButton.clicked.connect(self.preButtonEvent)
        # 下一页
        self.nextButton.clicked.connect(self.nextButtonEvent)
        # 跳转按钮
        self.jumpButton.clicked.connect(self.jumpButtonEvent)
        # 添加查询
        self.searchButton.clicked.connect(self.searchButtonEvent)

    def addButtonEvent(self, Widget):
        logger = logToFile()
        UserId = getCurrentUserId()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了添加按钮,试图在 " + str(tableName) +
                    " 表中添加数据项")
        form = QDialog()
        w = Widget
        w.setupUi(form)
        form.show()
        a = form.exec_()
        # 如果对话框关闭,则对查询数据进行更行
        if a == 0:
            self.queryModel.refreshPage()
            self.queryModel.update()
            self.updateUI()

    def selectButtonEvent(self, Widget):
        """
        hsj 根据批次中的产品编号查询产品详细信息
        :param Widget: 要显示的窗体
        :return:
        """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()
        productDiglog = Widget
        form = QDialog()
        productDiglog.setupUi(form)
        productDiglog.setData(result)
        form.show()
        form.exec()

    def deleteButtonEvent(self):
        """
        hsj 删除按钮绑定事件
        :return:
        """
        # print(self.queryModel.checkList.count("Checked"))
        # 如果没有选中数据,则提示无数据

        logger = logToFile()
        UserId = getCurrentUserId()
        data = self.queryModel.getAllCheckedData()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了删除按钮,试图删除 " + str(tableName) +
                    " 表中的数据:" + str(data))

        if self.queryModel.checkList.count("Checked") == 0:
            logger.info("用户:" + str(UserId) + " 删除失败(没有选择要删除的数据)")
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            return
        a = QMessageBox.information(QDialog(), "提示", "是否确认删除?",
                                    QMessageBox.Yes, QMessageBox.No)
        if a == QMessageBox.No:
            logger.info("用户:" + str(UserId) + " 取消了删除")
            return
        self.queryModel.deleteOut()
        self.queryModel.update()
        self.updateBottomWidget()
class SelectMRWidget(MySearchWidget):
    # 李振
    def __init__(self):
        super(SelectMRWidget, self).__init__()
        self.select_conditions = ["MrID","MwID", "ProductID"]

    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1171, 813)
        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(Form)
        font = QtGui.QFont()
        font.setPointSize(16)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
     
        self.addProductButton = QtWidgets.QPushButton(Form)
        self.addProductButton.setObjectName("addProductButton")
        self.horizontalLayout_5.addWidget(self.addProductButton)

        self.selectProductComponent = QtWidgets.QPushButton(Form)
        self.selectProductComponent.setObjectName("selectProductComponent")
        self.horizontalLayout_5.addWidget(self.selectProductComponent)

        self.alterProductButton = QtWidgets.QPushButton(Form)
        self.alterProductButton.setObjectName("alterProductButton")
        self.horizontalLayout_5.addWidget(self.alterProductButton)
        self.horizontalLayout_3.addLayout(self.horizontalLayout_5)

        self.deleteProductButton = QtWidgets.QPushButton(Form)
        self.deleteProductButton.setObjectName("deleteProductButton")
        self.horizontalLayout_3.addWidget(self.deleteProductButton)

        self.selectDocument = QtWidgets.QPushButton(Form)
        self.selectDocument.setObjectName("selectDocument")
        self.horizontalLayout_3.addWidget(self.selectDocument)

        # self.printProductButton = QtWidgets.QPushButton(Form)
        # self.printProductButton.setObjectName("printProductButton")
        # self.horizontalLayout_3.addWidget(self.printProductButton)

        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setSpacing(7)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.searchEdit = QtWidgets.QLineEdit(Form)
        self.searchEdit.setMaximumSize(QtCore.QSize(500, 16777215))
        self.searchEdit.setObjectName("searchEdit")
        self.horizontalLayout.addWidget(self.searchEdit)
        self.searchButton = QtWidgets.QPushButton(Form)
        self.searchButton.setObjectName("searchButton")
        self.horizontalLayout.addWidget(self.searchButton)
        self.comboBox = QtWidgets.QComboBox(Form)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.horizontalLayout.addWidget(self.comboBox)
        self.horizontalLayout_3.addLayout(self.horizontalLayout)
        self.verticalLayout.addLayout(self.horizontalLayout_3)


        # self.tableView = QtWidgets.QTableView(Form)
        # self.tableView.setObjectName("tableView")
        # self.verticalLayout.addWidget(self.tableView)

        # 中间手动代码部分 表格UI构建
        self.db = openDB()
        self.tableView = QTableView()


        # hsj 自动义的tableModel
        # headerRow = ["维保记录ID", "维保方式ID", "维保方式名称", "维保时间",
        #              "维保部位", "维保负责人", "维保确认人", "维保效果", "创建人员",
        #              "创建时间", "修改人员", "修改时间", "备注","编号"]

        headerRow = ["维保记录编号","产品编号","产品名称", "维保方式编号","维保方式名称", "维保时间",
                     "维保部位", "维保负责人", "维保效果", "备注"]
        self.queryModel = MySearchTableModel("MaintenanceRecord", headerRow)

        self.tableView.setModel(self.queryModel)

        self.header = CheckBoxHeader()
        self.tableView.setHorizontalHeader(self.header)
        self.header.clicked.connect(self.queryModel.headerClick)
        self.tableView.horizontalHeader().setStretchLastSection(True)
        self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.tableView.setModel(self.queryModel)
        self.verticalLayout.addWidget(self.tableView)



        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.jumpEdit = QtWidgets.QLineEdit(Form)
        self.jumpEdit.setMaximumSize(QtCore.QSize(50, 50))
        self.jumpEdit.setMaxLength(9999)
        self.jumpEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.jumpEdit.setObjectName("jumpEdit")
        self.horizontalLayout_2.addWidget(self.jumpEdit)
        self.totalPageLabel = QtWidgets.QLabel(Form)
        self.totalPageLabel.setObjectName("totalPageLabel")
        self.horizontalLayout_2.addWidget(self.totalPageLabel)
        self.jumpButton = QtWidgets.QPushButton(Form)
        self.jumpButton.setObjectName("jumpButton")
        self.horizontalLayout_2.addWidget(self.jumpButton)
        self.previousButton = QtWidgets.QPushButton(Form)
        self.previousButton.setObjectName("previousButton")
        self.horizontalLayout_2.addWidget(self.previousButton)
        self.nextButton = QtWidgets.QPushButton(Form)
        self.nextButton.setObjectName("nextButton")
        self.horizontalLayout_2.addWidget(self.nextButton)
        self.horizontalLayout_4.addLayout(self.horizontalLayout_2)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem2)
        self.verticalLayout.addLayout(self.horizontalLayout_4)

        self.retranslateUi(Form)
        self.comboBox.setCurrentIndex(0)
        self.bindButton()
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "维保记录查询"))
        self.addProductButton.setText(_translate("Form", "新建维保记录"))
        self.selectProductComponent.setText(_translate("Form", "查看维保记录"))
        self.alterProductButton.setText(_translate("Form", "修改维保记录"))
        self.deleteProductButton.setText(_translate("Form", "删除维保记录"))
        # self.printProductButton.setText(_translate("Form", "打印"))
        self.selectDocument.setText(_translate("Form", "查看文档"))

        self.searchButton.setText(_translate("Form", "查询"))
        self.comboBox.setItemText(0, _translate("Form", "按维保记录编号查询"))
        self.comboBox.setItemText(1, _translate("Form", "按维保方式编号查询"))
        self.comboBox.setItemText(2, _translate("Form", "按产品编号查询"))
        self.label_2.setText(_translate("Form", "跳转至第"))
        self.jumpEdit.setText(_translate("Form", "1"))

        self.totalPageLabel.setText(_translate("Form", "/  " + str(self.queryModel.totalPage) + "  页"))

        self.jumpButton.setText(_translate("Form", "跳转"))
        self.previousButton.setText(_translate("Form", "上一页"))
        self.nextButton.setText(_translate("Form", "下一页"))

    def bindButton(self):
        """
        hsj 绑定按钮
        :return:
        """
        # # 删除按钮
        self.deleteProductButton.clicked.connect(self.deleteButtonEvent)
        # # 新建按钮
        self.addProductButton.clicked.connect(lambda :self.addButtonEvent(AddMRWidget()))
        # # 查看产品
        self.selectProductComponent.clicked.connect(lambda: self.selectButtonEvent(SelectSingleMRWidget()))
        # 修改按钮
        self.alterProductButton.clicked.connect(lambda :self.updateButtonEvent(AddMRWidget()))
        # 查询文档
        self.selectDocument.clicked.connect(self.selectDocumentEvent)
        # 上一页
        self.previousButton.clicked.connect(self.preButtonEvent)
        # 下一页
        self.nextButton.clicked.connect(self.nextButtonEvent)
        # 跳转按钮
        self.jumpButton.clicked.connect(self.jumpButtonEvent)
        # 添加查询
        self.searchButton.clicked.connect(self.searchButtonEvent)

    def deleteButtonEvent(self):
        """
        hsj 删除批次按钮绑定事件
        :return:
        """
        # print(self.queryModel.checkList.count("Checked"))
        # 如果没有选中数据,则提示无数据
        logger = logToFile()
        UserId = getCurrentUserId()
        data = self.queryModel.getAllCheckedData()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了删除按钮,试图删除 " + str(tableName) + " 表中的数据:" + str(data))

        if self.queryModel.checkList.count("Checked") == 0:
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!", QMessageBox.Yes, QMessageBox.Yes)
            logger.info("用户:" + str(UserId) + " 删除失败(没有选择要删除的数据)")
            return
        a = QMessageBox.information(QDialog(), "提示", "是否确认删除?", QMessageBox.Yes, QMessageBox.No)
        if a == QMessageBox.No:
            logger.info("用户:" + str(UserId) + " 取消删除")
            return
        logger.info("用户:" + str(UserId) + " 删除了" + str(tableName) + "中选中的数据:" + str(data))
        self.queryModel.deleteMR()
        self.queryModel.update()
        self.updateBottomWidget()

    def selectButtonEvent(self, Widget):
        """
        hsj 根据批次中的产品Id查询产品详细信息
        :param Widget: 要显示的窗体
        :return:
        """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()
        productDiglog = Widget
        form = QDialog()
        productDiglog.setupUi(form)
        productDiglog.setData(result)
        form.show()
        form.exec()

    def selectDocumentEvent(self):
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()
        path = result[14]
        import os
        if path == "选择文档" or path == "" or not os.path.isfile(path):
            QMessageBox.information(QDialog(), "提示", "文件不存在!", QMessageBox.Yes, QMessageBox.Yes)
            return
        os.startfile(path)
Exemplo n.º 3
0
class SearchMWWidget(MySearchWidget):
    def __init__(self):
        super(MySearchWidget,self).__init__()
        self.select_conditions = ["ProductID", "ProductName", "MaintenanceWayID"]
        self.document_list = list()


    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(777, 813)
        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(Form)
        font = QtGui.QFont()
        font.setPointSize(16)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
       
        self.addMaintenanceWayButton = QtWidgets.QPushButton(Form)  
        self.addMaintenanceWayButton.setObjectName("addMaintenanceWayButton")
        self.horizontalLayout_7.addWidget(self.addMaintenanceWayButton)
       
        self.selectMaintenanceWay = QtWidgets.QPushButton(Form)
        self.selectMaintenanceWay.setObjectName("selectMaintenanceWay")     
        self.horizontalLayout_7.addWidget(self.selectMaintenanceWay)
    
        self.alterMaintenanceWayButton = QtWidgets.QPushButton(Form)
        self.alterMaintenanceWayButton.setObjectName("alterMaintenanceWayButton")
        self.horizontalLayout_7.addWidget(self.alterMaintenanceWayButton)
     
        self.horizontalLayout_6.addLayout(self.horizontalLayout_7)
        self.deleteMaintenanceWayButton = QtWidgets.QPushButton(Form)
        self.deleteMaintenanceWayButton.setObjectName("deleteMaintenanceWayButton")
        self.horizontalLayout_6.addWidget(self.deleteMaintenanceWayButton)
        
        self.printProductButton = QtWidgets.QPushButton(Form)
        self.printProductButton.setObjectName("printProductButton")
        self.horizontalLayout_6.addWidget(self.printProductButton)
        
        
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_8.setSpacing(7)
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_8.addItem(spacerItem)
        self.searchEdit = QtWidgets.QLineEdit(Form)
        self.searchEdit.setMaximumSize(QtCore.QSize(500, 16777215))
        self.searchEdit.setObjectName("searchEdit")
        self.horizontalLayout_8.addWidget(self.searchEdit)
        self.searchButton = QtWidgets.QPushButton(Form)
        self.searchButton.setObjectName("searchButton")
        self.horizontalLayout_8.addWidget(self.searchButton)
        self.comboBox = QtWidgets.QComboBox(Form)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.horizontalLayout_8.addWidget(self.comboBox)
        self.horizontalLayout_6.addLayout(self.horizontalLayout_8)
        self.verticalLayout.addLayout(self.horizontalLayout_6)

        # # 中间手动代码部分 表格UI构建
        self.db = openDB()
        self.tableView = QTableView()

        # hsj 自动义的tableModel
        # headerRow = ["维保方式", "产品编号","维保方式名称","初次维保时间",
        #              "维保间隔时间(天)", "维保到期前多少天提醒(天)", "创建人员",
        #              "创建时间", "修改人员", "修改时间", "备注","编号"]

        headerRow = ["维保方式编号", "维保方式名称","产品编号","产品名称","产品代号","维保间隔时间","维保到期提醒","最近维保时间"]
        self.queryModel = MySearchTableModel("MaintenanceWay", headerRow)
        # 这里有个setModel
        self.tableView.setModel(self.queryModel)

        self.header = CheckBoxHeader()
        self.tableView.setHorizontalHeader(self.header)
        self.header.clicked.connect(self.queryModel.headerClick)
        self.tableView.horizontalHeader().setStretchLastSection(True)
        self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        # 这里也有setModel
        self.tableView.setModel(self.queryModel)
        self.verticalLayout.addWidget(self.tableView)


        self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_9.addItem(spacerItem1)
        self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_10.setObjectName("horizontalLayout_10")
        self.label_3 = QtWidgets.QLabel(Form)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_10.addWidget(self.label_3)
        self.jumpEdit = QtWidgets.QLineEdit(Form)
        self.jumpEdit.setMaximumSize(QtCore.QSize(50, 50))
        self.jumpEdit.setMaxLength(9999)
        self.jumpEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.jumpEdit.setObjectName("jumpEdit")
        self.horizontalLayout_10.addWidget(self.jumpEdit)
        self.totalPageLabel = QtWidgets.QLabel(Form)
        self.totalPageLabel.setObjectName("totalPageLabel")
        self.horizontalLayout_10.addWidget(self.totalPageLabel)
        self.jumpButton = QtWidgets.QPushButton(Form)
        self.jumpButton.setObjectName("jumpButton")
        self.horizontalLayout_10.addWidget(self.jumpButton)
        self.previousButton = QtWidgets.QPushButton(Form)
        self.previousButton.setObjectName("previousButton")
        self.horizontalLayout_10.addWidget(self.previousButton)
        self.nextButton = QtWidgets.QPushButton(Form)
        self.nextButton.setObjectName("nextButton")
        self.horizontalLayout_10.addWidget(self.nextButton)
        self.horizontalLayout_9.addLayout(self.horizontalLayout_10)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_9.addItem(spacerItem2)
        self.verticalLayout.addLayout(self.horizontalLayout_9)

        self.retranslateUi(Form)
        self.comboBox.setCurrentIndex(0)
        # 这里绑定按钮
        self.bindButton()

        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "维保方式查询"))

        self.addMaintenanceWayButton.setText(_translate("Form", "新建维保方式"))
        self.selectMaintenanceWay.setText(_translate("Form", "查看维保方式"))
        self.alterMaintenanceWayButton.setText(_translate("Form", "修改维保方式"))
        self.deleteMaintenanceWayButton.setText(_translate("Form", "删除维保方式"))
        self.printProductButton.setText(_translate("Form", "打印"))

        self.searchButton.setText(_translate("Form", "查询"))
        self.comboBox.setItemText(0, _translate("Form", "按产品编号查询"))
        self.comboBox.setItemText(1, _translate("Form", "按产品名称查询"))
        self.comboBox.setItemText(2, _translate("Form", "按维保方式编号查询"))

        self.label_3.setText(_translate("Form", "跳转至第"))
        self.jumpEdit.setText(_translate("Form", "1"))

        self.totalPageLabel.setText(_translate("Form", "/  " + str(self.queryModel.totalPage) + "  页"))

        self.jumpButton.setText(_translate("Form", "跳转"))
        self.previousButton.setText(_translate("Form", "上一页"))
        self.nextButton.setText(_translate("Form", "下一页"))

    def bindButton(self):
        """
        hsj 绑定按钮
        :return:
        """
        # # 删除按钮
        self.deleteMaintenanceWayButton.clicked.connect(self.deleteButtonEvent)
        # # 新建按钮
        self.addMaintenanceWayButton.clicked.connect(lambda: self.addButtonEvent(AddMWWidget()))
        # # 查看产品
        self.selectMaintenanceWay.clicked.connect(lambda :self.selectButtonEvent(SelectSingleMWWidget()))
        # 修改按钮
        self.alterMaintenanceWayButton.clicked.connect(lambda: self.updateButtonEvent(AddMWWidget()))

        # 打印按钮
        self.printProductButton.clicked.connect(self.printButtonEvent)

        # 上一页
        self.previousButton.clicked.connect(self.preButtonEvent)
        # 下一页
        self.nextButton.clicked.connect(self.nextButtonEvent)
        # 跳转按钮
        self.jumpButton.clicked.connect(self.jumpButtonEvent)
        # 查询按钮
        self.searchButton.clicked.connect(self.searchButtonEvent)


    def deleteButtonEvent(self):
        """
        hsj 删除批次按钮绑定事件
        :return:
        """
        # print(self.queryModel.checkList.count("Checked"))
        # 如果没有选中数据,则提示无数据
        logger = logToFile()
        UserId = getCurrentUserId()
        data = self.queryModel.getAllCheckedData()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了删除按钮,试图删除 " + str(tableName) + " 表中的数据:" + str(data))

        if self.queryModel.checkList.count("Checked") == 0:
            logger.info("用户:" + str(UserId) + " 删除失败(没有选择要删除的数据)")
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!", QMessageBox.Yes, QMessageBox.Yes)
            return
        a = QMessageBox.information(QDialog(), "提示", "是否确认删除?", QMessageBox.Yes, QMessageBox.No)
        if a == QMessageBox.No:
            logger.info("用户:" + str(UserId) + " 取消删除")
            return
        logger.info("用户:" + str(UserId) + " 删除了" + str(tableName) + "中选中的数据:" + str(data))
        # self.queryModel.deleteProduct()
        self.queryModel.deleteMW()
        self.queryModel.update()
        self.updateBottomWidget()

    def selectButtonEvent(self, Widget):
        """
        hsj 根据批次中的产品Id查询产品详细信息
        :param Widget: 要显示的窗体
        :return:
        """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()
        productDiglog = Widget
        form = QDialog()
        productDiglog.setupUi(form)
        productDiglog.setData(result)
        form.show()
        form.exec()


    # 在表格逻辑中找
    def delelteExactID(self,id):
        """
        李振
        :return:
        """
        db = openDB()
        query = QSqlQuery()
        #print("这里执行了:")
        for i, isSelected in enumerate(self.checkList):
            if isSelected == "Checked":
                sql = "DELETE FROM MaintenanceWay WHERE ProductID = '%s'" % id
                query.exec(sql)
        db.commit()
        self.refreshPage()

    def printButtonEvent(self):

        """
       打印按钮绑定事件
       :return:
        """
        try:
            # 如果没有选中数据,则提示无数据
            if self.queryModel.checkList.count("Checked") == 0:
                QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!", QMessageBox.Yes, QMessageBox.Yes)
                return
            results = self.queryModel.selectMultipleTable()
            for i, result in enumerate(results):
                w = MWPrinterWidget()
                w.setData(result)
                screen = w.Dialog.grab()
                screen.save("./test/%s.png" % (i))
                # break
                # w.Dialog.show()
                # w.Dialog.exec()
                # break
            # if self.document_list:
            #     for i in self.document_list:
            #         os.remove(i)
            # self.delelePdf()
            # 新建PDF文件夹
            if not os.path.exists("C:\\Users\\Public\\Documents\\PDF"):
                path = r'C:\\Users\\Public\\Documents'
                os.mkdir(path + './PDF')

            date_str = QDateTime.currentDateTime().toString("yyyy-MM-dd-hh-mm-ss")
            documentName = "C:\\Users\\Public\\Documents\\PDF\\" + date_str + ".pdf"
            self.makePdf(documentName, [("./test/" + imgFileName) for imgFileName in os.listdir('./test/') if imgFileName.endswith("png")])
            self.deleteImage(r"./test")
            QMessageBox.information(QDialog(), "提示", "文件已保存为pdf格式,请在打开pdf后进行打印!pdf保存位置为:%s" % (documentName), QMessageBox.Yes, QMessageBox.Yes)
            os.startfile(documentName)
            self.document_list.append(documentName)
            # win32api.ShellExecute(
            #     0,
            #     "print",
            #     documentName,
            #     #
            #     # If this is None, the default printer will
            #     # be used anyway.
            #     #
            #     '/d:"%s"' % win32print.GetDefaultPrinter(),
            #     ".",
            #     0
            # )

        except Exception as e:
            print(e)

    def delelePdf(self):
        # 删除指定目录中的PDF
        for parent, dirnames, filenames in os.walk('C:\\Users\\Public\\Documents\\PDF'):
            for fn in filenames:
                if fn.lower().endswith('.pdf'):
                    os.remove(os.path.join(parent, fn))

    def makePdf(self, pdfFileName, listPages):

        #print(listPages[0])
        cover = Image.open(listPages[0])
        width, height = cover.size

        pdf = FPDF(unit = "pt", format = [width, height])

        for page in listPages:
            pdf.add_page()
            pdf.image(page, 0, 0)

        pdf.output(pdfFileName, "F")

    def deleteImage(self, dir):
        del_list = os.listdir(dir)
        for f in del_list:
            file_path = os.path.join(dir, f)
            if os.path.isfile(file_path):
                os.remove(file_path)
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)
Exemplo n.º 4
0
class SelectProductWidget(MySearchWidget):
    def __init__(self):
        super(SelectProductWidget, self).__init__()
        self.select_conditions = ["ProductName", "Registerer", "BatchNO"]

    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1171, 854)
        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(Form)
        font = QtGui.QFont()
        font.setPointSize(16)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.addProductButton = QtWidgets.QPushButton(Form)
        self.addProductButton.setObjectName("addProductButton")
        self.horizontalLayout_5.addWidget(self.addProductButton)
        self.selectProductButton = QtWidgets.QPushButton(Form)
        self.selectProductButton.setObjectName("selectProductButton")
        self.horizontalLayout_5.addWidget(self.selectProductButton)
        self.alterProductButton = QtWidgets.QPushButton(Form)
        self.alterProductButton.setObjectName("alterProductButton")
        self.horizontalLayout_5.addWidget(self.alterProductButton)
        self.horizontalLayout_3.addLayout(self.horizontalLayout_5)
        self.deleteProductButton = QtWidgets.QPushButton(Form)
        self.deleteProductButton.setObjectName("deleteProductButton")
        self.horizontalLayout_3.addWidget(self.deleteProductButton)
        self.documentButton = QtWidgets.QPushButton(Form)
        self.documentButton.setObjectName("documentButton")
        self.horizontalLayout_3.addWidget(self.documentButton)
        self.selectComponentButton = QtWidgets.QPushButton(Form)
        self.selectComponentButton.setObjectName("selectComponentButton")
        self.horizontalLayout_3.addWidget(self.selectComponentButton)
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setSpacing(7)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.searchEdit = QtWidgets.QLineEdit(Form)
        self.searchEdit.setMaximumSize(QtCore.QSize(500, 16777215))
        self.searchEdit.setObjectName("searchEdit")
        self.horizontalLayout.addWidget(self.searchEdit)
        self.searchButton = QtWidgets.QPushButton(Form)
        self.searchButton.setObjectName("searchButton")
        self.horizontalLayout.addWidget(self.searchButton)
        self.comboBox = QtWidgets.QComboBox(Form)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.horizontalLayout.addWidget(self.comboBox)
        self.horizontalLayout_3.addLayout(self.horizontalLayout)
        self.verticalLayout.addLayout(self.horizontalLayout_3)

        # 中间手动代码部分 表格UI构建
        self.db = openDB()
        self.tableView = QTableView()
        # hsj 自动义的tableModel
        headerRow = [
            "产品编号", "产品名称", "产品代号", "批次编号", "库存数量", "接收日期", "接收人", "接收单位",
            "交付日期", "交付人", "交付单位"
        ]
        self.queryModel = MySearchTableModel("T_Product_New", headerRow)
        self.tableView.setModel(self.queryModel)
        self.header = CheckBoxHeader()
        self.tableView.setHorizontalHeader(self.header)
        self.header.clicked.connect(self.queryModel.headerClick)
        self.tableView.horizontalHeader().setStretchLastSection(True)
        self.tableView.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        self.tableView.setModel(self.queryModel)
        self.verticalLayout.addWidget(self.tableView)

        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.jumpEdit = QtWidgets.QLineEdit(Form)
        self.jumpEdit.setMaximumSize(QtCore.QSize(50, 50))
        self.jumpEdit.setMaxLength(9999)
        self.jumpEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.jumpEdit.setObjectName("jumpEdit")
        self.horizontalLayout_2.addWidget(self.jumpEdit)
        self.totalPageLabel = QtWidgets.QLabel(Form)
        self.totalPageLabel.setObjectName("totalPageLabel")
        self.horizontalLayout_2.addWidget(self.totalPageLabel)
        self.jumpButton = QtWidgets.QPushButton(Form)
        self.jumpButton.setObjectName("jumpButton")
        self.horizontalLayout_2.addWidget(self.jumpButton)
        self.previousButton = QtWidgets.QPushButton(Form)
        self.previousButton.setObjectName("previousButton")
        self.horizontalLayout_2.addWidget(self.previousButton)
        self.nextButton = QtWidgets.QPushButton(Form)
        self.nextButton.setObjectName("nextButton")
        self.horizontalLayout_2.addWidget(self.nextButton)
        self.horizontalLayout_4.addLayout(self.horizontalLayout_2)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem2)
        self.verticalLayout.addLayout(self.horizontalLayout_4)

        self.retranslateUi(Form)
        self.comboBox.setCurrentIndex(0)
        self.bindButton()
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "产品信息创建"))
        self.addProductButton.setText(_translate("Form", "新建产品信息"))
        self.selectProductButton.setText(_translate("Form", "查看产品信息"))
        self.alterProductButton.setText(_translate("Form", "修改产品信息"))
        self.deleteProductButton.setText(_translate("Form", "删除产品信息"))
        self.documentButton.setText(_translate("Form", "查看文档"))
        self.selectComponentButton.setText(_translate("Form", "查看产品组件"))
        self.searchButton.setText(_translate("Form", "查询"))
        self.comboBox.setItemText(0, _translate("Form", "按产品名称查询"))
        self.comboBox.setItemText(1, _translate("Form", "按接收人查询"))
        self.comboBox.setItemText(2, _translate("Form", "按批次号查询"))
        self.label_2.setText(_translate("Form", "跳转至第"))
        self.jumpEdit.setText(_translate("Form", "1"))
        self.totalPageLabel.setText(
            _translate("Form", "/  " + str(self.queryModel.totalPage) + "  页"))
        self.jumpButton.setText(_translate("Form", "跳转"))
        self.previousButton.setText(_translate("Form", "上一页"))
        self.nextButton.setText(_translate("Form", "下一页"))

    def bindButton(self):
        """
        hsj 绑定按钮
        :return:
        """
        # # 删除按钮
        self.deleteProductButton.clicked.connect(self.deleteButtonEvent)
        # # 新建按钮
        self.addProductButton.clicked.connect(
            lambda: self.addButtonEvent(AddProductWidget()))
        # # 查看产品
        self.selectProductButton.clicked.connect(
            lambda: self.selectDetailButtonEvent(AddProductWidget()))
        # 修改按钮
        self.alterProductButton.clicked.connect(
            lambda: self.updateButtonEvent(AddProductWidget()))
        # 上一页
        self.previousButton.clicked.connect(self.preButtonEvent)
        # 下一页
        self.nextButton.clicked.connect(self.nextButtonEvent)
        # 跳转按钮
        self.jumpButton.clicked.connect(self.jumpButtonEvent)
        # 添加查询
        self.searchButton.clicked.connect(self.searchButtonEvent)
        self.documentButton.clicked.connect(self.selectDocumentEvent)

        # self.selectComponentButton.clicked.connect(self.selectComponentButtonEvent)
        self.selectComponentButton.clicked.connect(
            self.selectComponentButtonEventTest)

    def selectComponentButtonEventTest(self):
        a = self.isCorrect()
        if a == 0:
            return
        productID, productName = self.queryModel.getSelectedID()
        t = TreeWidget(productID, productName)
        if not t.isNone:
            t.show()
            t.exec()

    def selectDocumentEvent(self):
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()
        path = result[-1]
        import os
        if path == "选择文档" or path == "" or not os.path.isfile(path):
            QMessageBox.information(QDialog(), "提示", "文件不存在!", QMessageBox.Yes,
                                    QMessageBox.Yes)
            return
        os.startfile(path)
        # QMessageBox.information(QDialog(), "提示", "文件已打开!", QMessageBox.Yes, QMessageBox.Yes)

    def selectComponentButtonEvent(self):
        """
       hsj 搜索产品的相关组件
       :return:
       """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        select_num = self.queryModel.selectNum()
        db = openDB()
        queryModel = QSqlQueryModel()
        query = QSqlQuery()
        sql = "SELECT * FROM T_ProductComponent_New WHERE ProductID = '%s'" % (
            self.queryModel.data_list[select_num][0])
        # print(sql)
        query.exec(sql)
        if not query.next():
            QMessageBox.information(QDialog(), "提示", "该产品无其他组件!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        queryModel.setQuery(
            "SELECT * FROM T_ProductComponent_New WHERE ProductID = '%s'" %
            (self.queryModel.data_list[select_num][0]))
        headerRow = [
            "组件ID", "产品ID", "组件代号", "组件名称", "父节点ID", "组件类型", "组件数量", "寿命类型",
            "寿命", "据到期提醒", "最初维保时间", "维保间隔", "距维保提醒"
        ]
        for i in range(len(headerRow)):
            queryModel.setHeaderData(i, Qt.Horizontal, headerRow[i])
        form = QDialog()
        tableView = QTableView()
        tableView.setModel(queryModel)
        tableView.show()
        tableView.horizontalHeader().setStretchLastSection(True)
        layout = QVBoxLayout()
        layout.addWidget(tableView)
        form.setLayout(layout)
        form.showMaximized()
        form.exec()

    def deleteButtonEvent(self):
        """
        hsj 删除批次按钮绑定事件
        :return:
        """
        # print(self.queryModel.checkList.count("Checked"))
        # 如果没有选中数据,则提示无数据
        logger = logToFile()
        UserId = getCurrentUserId()
        data = self.queryModel.getAllCheckedData()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了删除按钮,试图删除 " + str(tableName) +
                    " 表中的数据:" + str(data))
        if self.queryModel.checkList.count("Checked") == 0:
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            logger.info("用户:" + str(UserId) + " 删除失败(没有选择要删除的数据)")
            return
        a = QMessageBox.information(QDialog(), "提示", "删除产品将会导致关联的数据删除,是否确认删除?",
                                    QMessageBox.Yes, QMessageBox.No)
        if a == QMessageBox.No:
            return
        logger.info("用户:" + str(UserId) + " 删除了" + str(tableName) + "中选中的数据:" +
                    str(data))

        self.queryModel.deleteProduct()
        # self.queryModel.searchRefreshPage()
        self.updateBottomWidget()
        self.queryModel.refreshPage()
        self.queryModel.update()
class MySearchWidget(object):
    def __init__(self):

        # 搜索关键列的列表 一般大小为3
        self.select_conditions = []
        # 在setupUi中进行重写
        self.queryModel = MySearchTableModel("T_Knowladge_Base_Mangement",
                                             ["Num"])
        self.totalPageLabel = QtWidgets.QLabel()
        self.totalPageLabel.setObjectName("totalPageLabel")

        self.jumpEdit = QtWidgets.QLineEdit()
        self.jumpEdit.setMaximumSize(QtCore.QSize(50, 50))

    def setupUi(self, Form):
        pass

    def retranslateUi(self, Form):
        pass

    def updateUI(self):
        """
        hsj 跳转的后更新
        :return:
        """
        self.totalPageLabel.setText("/  " + str(self.queryModel.totalPage) +
                                    "  页")
        self.jumpEdit.setText(str(self.queryModel.currentPage + 1))

    def bindButton(self):
        """
        hsj 绑定按钮
        :return:
        """
        pass

    def deleteButtonEvent(self):
        """
        hsj 删除批次按钮绑定事件
        :return:
        """
        # print(self.queryModel.checkList.count("Checked"))
        # 如果没有选中数据,则提示无数据
        if self.queryModel.checkList.count("Checked") == 0:
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            return
        a = QMessageBox.information(QDialog(), "提示", "是否确认删除?",
                                    QMessageBox.Yes, QMessageBox.No)
        if a == QMessageBox.No:
            return
        self.queryModel.delete()
        self.queryModel.update()

    def addButtonEvent(self, Widget):
        """
        hsj 新建
        :param Widget: 要显示的窗体
        :return:
        """
        form = QDialog()
        w = Widget
        w.setupUi(form)
        form.show()
        a = form.exec_()
        # 如果对话框关闭,则对查询数据进行更行
        if a == 0:
            self.queryModel.refreshPage()
            self.queryModel.update()
            self.updateUI()

    def selectButtonEvent(self, Widget):
        """
        hsj 根据批次中的产品Id查询产品详细信息
        :param Widget: 要显示的窗体
        :return:
        """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTableForeign()
        #print('re:',result)
        productDiglog = Widget
        form = QDialog()
        productDiglog.setupUi(form)
        productDiglog.setData(result)
        form.show()
        form.exec()

    def updateButtonEvent(self, Widget):
        """
        hsj 修改产品批次信息
        :param Widget: 要显示的窗体
        :return:
        """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()
        batchDialog = Widget
        form = QDialog()
        batchDialog.setupUi(form)
        batchDialog.updateData(result, self.queryModel)
        form.show()
        a = form.exec()
        # 如果对话框关闭,则对查询数据进行更行
        if a == 0:
            self.queryModel.refreshPage()
            self.queryModel.update()

    def preButtonEvent(self):
        """
        hsj 上一页按钮事件
        :return:
        """
        if self.queryModel.currentPage == 0:
            QMessageBox.information(QDialog(), "提示", "已经是第一页!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        else:
            self.queryModel.prePage()
            self.queryModel.update()
            self.updateUI()

    def nextButtonEvent(self):
        """
        hsj 下一页按钮事件
        :return:
        """
        if (self.queryModel.currentPage + 1) == self.queryModel.totalPage:
            QMessageBox.information(QDialog(), "提示", "已经是最后一页!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        else:
            self.queryModel.nextPage()
            self.queryModel.update()
            self.updateUI()

    def jumpButtonEvent(self):
        """
        hsj 跳转按钮事件
        :return:
        """
        objectPage = self.jumpEdit.text()
        if not objectPage.isdigit():
            QMessageBox.information(QDialog(), "提示", "跳转输入的不是数字,请正确填写后重试!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        else:
            objectPage = int(objectPage)
            if objectPage <= 0 or objectPage > self.queryModel.totalPage:
                QMessageBox.information(QDialog(), "提示", "跳转输入超出范围,请正确填写后重试!",
                                        QMessageBox.Yes, QMessageBox.Yes)
                return
            else:
                self.queryModel.currentPage = objectPage - 1
                self.queryModel.setCurrentData()
                self.queryModel.update()
                self.updateUI()

    def searchButtonEvent(self):
        """
        hsj 输入查询条件查询按钮事件
        :return:
        """
        content = self.searchEdit.text()
        if content == "":
            print(111)
            self.queryModel.refreshPage()
            self.queryModel.update()
        else:
            n = self.comboBox.currentIndex()
            self.queryModel.searchTable(self.select_conditions[n], content)
            self.updateUI()

    def isCorrect(self):
        """
        hsj 判断复选框是否选中一个数据
        :return:
        """
        if self.queryModel.checkList.count("Checked") == 0:
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            return 0
        elif self.queryModel.checkList.count("Checked") > 1:
            QMessageBox.warning(QDialog(), "警告", "数据过多,请选中一条后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            return 0
        else:
            return 1
class MySearchWidget(object):
    def __init__(self):

        # 搜索关键列的列表 一般大小为3
        self.select_conditions = []
        # 在setupUi中进行重写
        self.queryModel = MySearchTableModel("T_Product_New", ["ProductID"])
        self.totalPageLabel = QtWidgets.QLabel()
        self.totalPageLabel.setObjectName("totalPageLabel")

        self.jumpEdit = QtWidgets.QLineEdit()
        self.jumpEdit.setMaximumSize(QtCore.QSize(50, 50))

    def setupUi(self, Form):
        pass

    def retranslateUi(self, Form):
        pass

    def updateUI(self):
        """
        hsj 跳转的后更新
        :return:
        """
        self.totalPageLabel.setText("/  " + str(self.queryModel.totalPage) +
                                    "  页")
        self.jumpEdit.setText(str(self.queryModel.currentPage + 1))

    def bindButton(self):
        """
        hsj 绑定按钮
        :return:
        """
        pass

    def deleteButtonEvent(self):
        """
        hsj 删除批次按钮绑定事件
        :return:
        """
        # print(self.queryModel.checkList.count("Checked"))
        # 如果没有选中数据,则提示无数据
        logger = logToFile()
        UserId = getCurrentUserId()
        data = self.queryModel.getAllCheckedData()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了删除按钮,试图删除 " + str(tableName) +
                    " 表中的数据:" + str(data))
        if self.queryModel.checkList.count("Checked") == 0:
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            logger.info("用户:" + str(UserId) + " 删除失败(没有选择要删除的数据)")
            return
        a = QMessageBox.information(QDialog(), "提示", "是否确认删除?",
                                    QMessageBox.Yes, QMessageBox.No)
        if a == QMessageBox.No:
            logger.info("用户:" + str(UserId) + " 取消了删除")
            return
        logger.info("用户:" + str(UserId) + " 删除了" + str(tableName) + "中选中的数据:" +
                    str(data))

        self.queryModel.delete()
        self.queryModel.update()
        self.updateBottomWidget()

    def addButtonEvent(self, Widget):
        """
        hsj 新建
        :param Widget: 要显示的窗体
        :return:
        """
        # logger = logToFile()
        # UserId = getCurrentUserId()
        # tableName = self.queryModel.table
        # logger.info("用户:" + str(UserId) + " 点击了添加按钮,试图在 " + str(tableName) + " 表中添加数据项")

        form = QDialog()
        w = Widget
        w.setupUi(form)
        form.show()
        a = form.exec_()
        # 如果对话框关闭,则对查询数据进行更行
        if a == 0:
            self.queryModel.refreshPage()
            self.queryModel.update()
            self.updateUI()

    # def selectButtonEvent(self, Widget):
    #     """
    #     hsj 根据批次中的产品Id查询产品详细信息
    #     :param Widget: 要显示的窗体
    #     :return:
    #     """
    #     # 判断复选框是否只选中一个
    #     a = self.isCorrect()
    #     if a == 0:
    #         return
    #     result = self.queryModel.selectSingleTableForeign()
    #     productDiglog = Widget
    #     form = QDialog()
    #     productDiglog.setupUi(form)
    #     productDiglog.setData(result)
    #     form.show()
    #     form.exec()

    def updateButtonEvent(self, Widget):
        """
        hsj 修改信息
        :param Widget: 要显示的窗体
        :return:
        """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()

        logger = logToFile()
        UserId = getCurrentUserId()
        tableName = self.queryModel.table
        logger.info("用户:" + str(UserId) + " 点击了更新按钮,试图更新 " + str(tableName) +
                    " 表中的原数据:" + str(result))

        batchDialog = Widget
        form = QDialog()
        batchDialog.setupUi(form)
        batchDialog.updateData(result, self.queryModel)
        form.show()
        a = form.exec()

        # 如果对话框关闭,则对查询数据进行更行
        if a == 0:
            self.queryModel.refreshPage()
            self.queryModel.update()

    def selectDetailButtonEvent(self, Widget):
        """
       hsj 修改产品批次信息
       :param Widget: 要显示的窗体
       :return:
       """
        # 判断复选框是否只选中一个
        a = self.isCorrect()
        if a == 0:
            return
        result = self.queryModel.selectSingleTable()

        batchDialog = Widget
        form = QDialog()
        batchDialog.setupUi(form)
        batchDialog.showData(result, self.queryModel)
        form.show()
        a = form.exec()
        # 如果对话框关闭,则对查询数据进行更行
        if a == 0:
            self.queryModel.refreshPage()
            self.queryModel.update()

    def preButtonEvent(self):
        """
            hsj 上一页按钮事件
            :return:
            """
        if self.queryModel.currentPage == 0:
            QMessageBox.information(QDialog(), "提示", "已经是第一页!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        else:
            self.queryModel.prePage()
            self.queryModel.update()
            self.updateUI()

    def nextButtonEvent(self):
        """
        hsj 下一页按钮事件
        :return:
        """
        if (self.queryModel.currentPage + 1) >= self.queryModel.totalPage:
            QMessageBox.information(QDialog(), "提示", "已经是最后一页!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        else:
            self.queryModel.nextPage()
            self.queryModel.update()
            self.updateUI()

    def jumpButtonEvent(self):
        """
        hsj 跳转按钮事件
        :return:
        """
        objectPage = self.jumpEdit.text()
        if not objectPage.isdigit():
            QMessageBox.information(QDialog(), "提示", "跳转输入的不是数字,请正确填写后重试!",
                                    QMessageBox.Yes, QMessageBox.Yes)
            return
        else:
            objectPage = int(objectPage)
            if objectPage <= 0 or objectPage > self.queryModel.totalPage:
                QMessageBox.information(QDialog(), "提示", "跳转输入超出范围,请正确填写后重试!",
                                        QMessageBox.Yes, QMessageBox.Yes)
                return
            else:
                self.queryModel.currentPage = objectPage - 1
                self.queryModel.setCurrentData()
                self.queryModel.update()
                self.updateUI()

    def searchButtonEvent(self):
        """
        hsj 输入查询条件查询按钮事件
        :return:
        """
        content = self.searchEdit.text()
        if content == "":
            self.queryModel.refreshPage()
            self.queryModel.update()
        else:
            n = self.comboBox.currentIndex()
            self.queryModel.searchTable(self.select_conditions[n], content)
            self.updateUI()

    def isCorrect(self):
        """
        hsj 判断复选框是否选中一个数据
        :return:
        """
        if self.queryModel.checkList.count("Checked") == 0:
            QMessageBox.warning(QDialog(), "警告", "没有数据被选中,请选中后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            return 0
        elif self.queryModel.checkList.count("Checked") > 1:
            QMessageBox.warning(QDialog(), "警告", "数据过多,请选中一条后重试!",
                                QMessageBox.Yes, QMessageBox.Yes)
            return 0
        else:
            return 1

    def updateBottomWidget(self):
        # 更新查询界面底下控件
        self.totalPageLabel.setText("/  " + str(self.queryModel.totalPage) +
                                    "  页")
        self.jumpEdit.setText(str(self.queryModel.currentPage + 1))