示例#1
0
 def preview(self):
     if self.pre_check.isChecked():
         s = QMessageBox.question(
             self, '提交处理单', '<自审人:{}>, <提交时间:{}>'.format(
                 user_info.get_value('USERNAME'),
                 datetime.now().strftime('%Y-%m-%d %H:%M')))
         if s == QMessageBox.Yes:
             contents = [
                 ctl.toPlainText().replace(' ', '')
                 for ctl in (self.result, self.correctiveaciton,
                             self.precaution)
             ]
             contents.append(self.parts.text())
             if all(contents):
                 self.save()  # update db
             else:
                 QMessageBox.warning(self, '处理信息不全',
                                     '完成原因分析,纠正措施,预防措施及需参与的评审部门后提交!')
                 self.pre_check.setChecked(False)
         else:
             self.pre_check.setChecked(False)
     else:
         s = QMessageBox.question(
             self, '撤销提交', '<自审人:{}>, <提交时间:{}>'.format(
                 user_info.get_value('USERNAME'),
                 datetime.now().strftime('%Y-%m-%d %H:%M')))
         if s == QMessageBox.Yes:
             self.save()  # update db
         else:
             self.pre_check.setChecked(True)
示例#2
0
 def save_pre_info(self):
     try:
         row = self.pre_tbl_view.currentIndex().row()
         unpass_id = int(self.model_pre.item(row, 0).text())
         part = user_info.get_value('PART')
         pre_information = self.txt_pre_info.toPlainText()
         if pre_information.replace(' ', ''):
             _db = MysqlDb()
             sql_pre_chk = "UPDATE 不合格品登记 SET {}评审=True WHERE ID={}" \
                           "".format(part, unpass_id)
             sql_pre_info = "UPDATE 状态标记 SET {}评审信息='{}' WHERE ID={}" \
                            "".format(part, pre_information, unpass_id)
             with _db:
                 try:
                     _db._cursor.execute(sql_pre_chk)
                     _db._cursor.execute(sql_pre_info)
                     eval('self.{}.setText(pre_information)'
                          ''.format(
                              dict(
                                  zip(FIELDS_IN_TAB2.values(),
                                      FIELDS_IN_TAB2.keys()))[part +
                                                              '评审信息']))
                     _db._cnn.commit()
                     QMessageBox.information(self, 'Information', '已保存!')
                     self._load_tbl_pre_data()
                 except Exception as e:
                     _db._cnn.rollback()
                     user_info.log2txt(
                         '提交写入评审信息时出现错误<save_pre_info>:<{}>'.format(e))
                     QMessageBox.critical(self, 'Mistake', '系统错误未保存!')
     except Exception as e:
         user_info.log2txt('试图保存评审信息时出现错误<save_pre_info>:<{}>'.format(e))
         pass
示例#3
0
 def _load_tbl_pre_data(self):
     current_part = user_info.get_value('PART')
     other_fields = ','.join(FIELDS_PRE[2:-2])
     # fields will be ['ID', '本部评审', '批号', '不良品名称', '客户', '生产日期', '数量Kg', '不良品种类', 'Review Finish', 'To_General']
     if current_part != '总经办' and current_part != '质量部':
         pre_info_sql = "SELECT a.ID,IF({2}评审=TRUE,'完成','未完成'),{0},IF(review_finish=TRUE,'YES','NO'),IF(g_m_rev=TRUE,'YES','NO') " \
                        "FROM 不合格品登记 a INNER JOIN 状态标记 b ON a.ID=b.ID " \
                        "WHERE b_m_rev=TRUE " \
                        "AND case_closed_flag=False " \
                        "AND FIND_IN_SET('{1}',part_need_review)" \
                        "".format(other_fields, current_part, current_part)
         self.set_tbl_pre(FIELDS_PRE, pre_info_sql)
     elif current_part == '质量部':
         pre_info_sql = "SELECT a.ID,IF({2}评审=TRUE,'完成','未完成'),{0},IF(review_finish=TRUE,'YES','NO'),IF(g_m_rev=TRUE,'YES','NO') " \
                        "FROM 不合格品登记 a INNER JOIN 状态标记 b ON a.ID=b.ID " \
                        "WHERE b_m_rev=TRUE " \
                        "AND case_closed_flag=False " \
                        "".format(other_fields, current_part, current_part)
         self.set_tbl_pre(FIELDS_PRE, pre_info_sql)
     elif current_part == '总经办':
         general_fields = [
             'ID', '本部评审', '批号', '不良品名称', '客户', '生产日期', '数量Kg', '不良品种类'
         ]
         pre_info_sql = "SELECT a.ID,IF({2}评审=TRUE,'YES','NO'),{0} " \
                        "FROM 不合格品登记 a INNER JOIN 状态标记 b ON a.ID=b.ID " \
                        "WHERE g_m_rev=TRUE " \
                        "AND case_closed_flag=False " \
                        "".format(other_fields, current_part, current_part)
         self.set_tbl_pre(general_fields, pre_info_sql)
示例#4
0
 def processtrigger_tbl_unpass(self, act):
     row = self.tbl_unpass.currentIndex().row()
     if row != -1:
         unpass_id = int(self.model_unpass.item(row, 0).text())
         to_parts = user_info.get_value('PARTS')[:-1]
         sql = ''
         try:
             _db = MysqlDb()
             with _db:
                 if act.text() in to_parts:
                     sql = "UPDATE 状态标记 SET caseto_by_QA='{}' WHERE ID={}".format(
                         act.text(), unpass_id)
                 elif act.text() == 'Delete':
                     sql = 'DELETE FROM 不合格品登记 WHERE ID = %d' % unpass_id
                     try:
                         _db.modify_db("DELETE FROM 状态标记 WHERE ID = %d" %
                                       unpass_id)
                     except Exception as e:
                         user_info.log2txt(e)
                 elif act.text() == 'Start Department Review':
                     sql = "UPDATE 状态标记 SET b_m_rev=True WHERE ID={}".format(
                         unpass_id)
                 elif act.text() == '刷新':
                     self.set_tbl_unpass(TBL_UNPASS_SQL)
                 elif act.text() == '输入处理意见':
                     idea_dia = IdeaDialog(self,
                                           user_info.get_value('USERNAME'),
                                           user_info.get_value('PART'),
                                           unpass_id)
                     idea_dia.show()
                 _db.modify_db(sql)
                 self.fuzzy_search()
         except Exception as e:
             user_info.log2txt(
                 '右键操作不合格清单列表<ID={}>时出现错误<processtrigger_tbl_unpass>:<{}>'.
                 format(unpass_id, e))
             pass
示例#5
0
    def rclick_tbl_pre(self):
        popMenu = QMenu()
        action_to_gm = QAction('Start General Review')
        action_to_gm.setIcon(QIcon('icons/general_manager_128px.ico'))
        action_review_finish = QAction('Flag Review Finish')
        action_review_finish.setIcon(QIcon('icons/confirm128px.ico'))
        popMenu.addAction(action_to_gm)
        popMenu.addAction(action_review_finish)

        if user_info.get_value('PART') != '质量部':
            action_to_gm.setEnabled(False)
            action_review_finish.setEnabled(False)

        popMenu.triggered.connect(self.processtrigger_tbl_pre)
        popMenu.exec_(QCursor.pos())
示例#6
0
 def rclick_tbl_unpass(self):
     popMenu = QMenu()
     submenu_caseto = QMenu('CaseTo')
     submenu_caseto.setIcon(QIcon('icons/user.ico'))
     for part in user_info.get_value('PARTS')[:-1]:
         submenu_caseto.addAction(QAction(part, self))
     action_del = QAction('Delete', self)
     action_del.setIcon(QIcon('icons/delete_file_32px.ico'))
     action_part_preview = QAction('Start Department Review', self)
     action_part_preview.setIcon(QIcon('icons/parameterreview_32px.ico'))
     action_flush = QAction('刷新', self)
     action_flush.setIcon(QIcon('icons/dir.png'))
     action_typeidea = QAction('输入处理意见', self)
     action_typeidea.setIcon(QIcon('icons/input_tablet_32px.ico'))
     if user_info.get_value('PART') != '质量部':
         for ctl in [action_del, action_part_preview, submenu_caseto]:
             ctl.setEnabled(False)
     popMenu.addMenu(submenu_caseto)
     popMenu.addAction(action_del)
     popMenu.addAction(action_part_preview)
     popMenu.addAction(action_flush)
     popMenu.addAction(action_typeidea)
     popMenu.triggered.connect(self.processtrigger_tbl_unpass)
     popMenu.exec_(QCursor.pos())
示例#7
0
 def tab_changed(self, index):
     self.txt_pre_info.setPlainText('')
     self.show_review_doc.clear()
     if index == 0:
         if user_info.get_value('PART') == '质量部':
             self.save_unpass.setVisible(True)
             self.show_test_win.setVisible(True)
         else:
             self.save_unpass.setVisible(False)
             self.show_test_win.setVisible(False)
     elif index == 1:
         # set privileges
         if not user_info.get_value('PRIVILEGE'):
             self.btn_save_pre.setEnabled(False)
         try:
             self._load_tbl_pre_data()
         except Exception as e:
             user_info.log2txt(e)
         self.txt_pre_info.setEnabled(False)
         self.btn_save_pre.clicked.connect(self.save_pre_info)
     elif index == 2:
         self._load_on_follow_view_data()
         self.on_follow_view.clicked.connect(self.show_deal_method)
         self.follow_btn_search.clicked.connect(self.search_follow_item)
示例#8
0
 def save_new_pwd(self):
     pwd = self.line_pwd_one.text()
     pwd_again = self.line_pwd_again.text()
     if pwd == pwd_again and pwd:
         user_name = user_info.get_value('USERNAME')
         print(user_name)
         sql = 'UPDATE 用户 SET 密码="{}" WHERE 用户名="{}"'.format(pwd, user_name)
         try:
             db = MysqlDb()
             with db:
                 db.modify_db(sql)
             QMessageBox.information(self, '完成提示', '密码修改成功!')
         except Exception as e:
             user_info.log2txt('更改用户密码时错误:<{}>'.format(e))
     else:
         QMessageBox.warning(self, '错误提示', '输入有误!')
         self.show()  # keep use this dialog when need not quit
示例#9
0
 def save(self):
     if self.ID.text():
         username = user_info.get_value('USERNAME')
         save_time = datetime.now().strftime('%Y-%m-%d %H:%M')
         _db = MysqlDb()
         with _db:
             sql = "UPDATE 不合格品登记 " \
                   "SET 原因分析='{0}',纠正措施='{1}',预防措施='{2}',自审人='{3}',自审时间='{4}',责任自审={5} " \
                   "WHERE ID={6}".format(self.result.toPlainText(),
                                         self.correctiveaciton.toPlainText(),
                                         self.precaution.toPlainText(), username,
                                         save_time, self.pre_check.isChecked(),
                                         int(self.ID.text()))
             _db.modify_db(sql)
         QMessageBox.information(self, 'Information', '已保存')
         self.person.setText(username)
         self.pre_time.setText(save_time)
示例#10
0
    def rclick_follow_view(self):
        popMenu = QMenu()
        action_close_case = QAction('Close Case')
        action_close_case.setIcon(QIcon('icons/delete_file_32px.ico'))
        action_add_method = QAction('添加处置')
        action_add_method.setIcon(QIcon('icons/dealidea.ico'))
        action_flush = QAction('刷新')
        action_flush.setIcon(QIcon('icons/dir.png'))

        popMenu.addAction(action_close_case)
        popMenu.addAction(action_add_method)
        popMenu.addAction(action_flush)

        if user_info.get_value('PART') != '质量部':
            action_close_case.setEnabled(False)

        popMenu.triggered.connect(self.processtrigger_follow_view)
        popMenu.exec_(QCursor.pos())
示例#11
0
    def show_unpass_item(self):
        row = self.tbl_unpass.currentIndex().row()
        unpass_id = int(self.model_unpass.item(
            row, 0).text())  # pos(row, 0) the first column
        try:
            _db = MysqlDb()
            with _db:
                fd = ','.join(list(FIELDS_IN_TAB1.values())[1:])
                sql = "SELECT a.ID,{0} FROM" \
                      " 不合格品登记 a LEFT JOIN 状态标记 b " \
                      "ON a.ID=b.ID " \
                      "WHERE a.ID={1}".format(fd, unpass_id)
                _rst = _db.get_rst(sql)
            values = list(_rst[0].values())
            fd = list(FIELDS_IN_TAB1.keys())
            for i in range(len(fd)):
                try:
                    v = values[i] if values[i] is not None else ''
                    exec_str = 'self.{}.setText(str(v))'.format(fd[i])
                    if fd[i] == 'pre_check':
                        exec_str = 'self.{}.setChecked(v)'.format(fd[i])
                    elif fd[i] == 'prodate':
                        exec_str = 'self.{}.setText(v.strftime("%Y-%m-%d"))'.format(
                            fd[i])
                    eval(exec_str)
                except Exception as e:
                    user_info.log2txt(
                        '单击显示不合格项目<ID={}>时出现错误<show_unpass_item>:<{}>'.format(
                            unpass_id, e))
                    pass
        except Exception as e:
            user_info.log2txt(e)

        if self.person.text() != '' and self.person.text(
        ) != user_info.get_value('USERNAME'):
            self.btn_save.setEnabled(False)
            self.pre_check.setEnabled(False)
            self.btn_slparts.setEnabled(False)
        else:
            self.btn_save.setEnabled(True)
            self.pre_check.setEnabled(True)
            self.btn_slparts.setEnabled(True)
示例#12
0
 def save_method(self):
     deal_id = self.line_deal_id.text()
     id = self.line_unpass_id.text()
     method = self.txt_deal_method.toPlainText()
     deal_qty = self.line_deal_qty.text()
     deal_qty = float(deal_qty) if deal_qty else 0
     deal_date = self.date_deal.text()
     person = user_info.get_value('USERNAME')
     wr_time = datetime.now().__format__("%Y-%m-%d %H:%M")
     if deal_date and deal_qty and method:
         sql = "INSERT INTO fcase_deallog VALUES('{}',{},'{}','{}','{}','{}','{}')" \
               "".format(deal_id, id, method, deal_qty, deal_date, person, wr_time)
         db = MysqlDb()
         with db:
             try:
                 db.modify_db(sql)
                 self.parent.show_deal_method()
                 self.close()
             except Exception as e:
                 user_info.log2txt('添加新的处理(id=<{}>)记录时<error>: {}'.format(
                     id, e))
示例#13
0
 def _pre_sign(self):
     old_cont = self.txt_pre_info.toPlainText()
     sign_info = "\t>>>{}\n\t>>>{}" \
                 "".format(user_info.get_value('USERNAME'),
                           datetime.now().strftime("%Y-%m-%d %H:%M"))
     self.txt_pre_info.setPlainText(old_cont + '\n' + sign_info)