예제 #1
0
    def onSave(self):
        # 根据id查找工作面
        work_surf = SQLClientHelper.GetWorkSurfById(self.work_surf_id)
        work_surf_id = work_surf.id
        if work_surf_id <= 0:
            UiHelper.MessageBox(u'sorry,出了点问题,请联系技术人员(错误码:P3)!')
            return

        # 提取钻场参数
        hdpp = SQLClientHelper.GetHighDrillingPoreParamByForeignKey(
            'work_surf_id', work_surf_id)

        if hdpp.id <= 0:
            hdpp = HighDrillingPoreParam()
            hdpp.work_surf_id = work_surf_id

        hdpp.lk, ok = self.ui.lk.text().toDouble()
        hdpp.lc, ok = self.ui.lc.text().toDouble()
        hdpp.lw, ok = self.ui.lw.text().toDouble()
        hdpp.beta, ok = self.ui.beta.text().toDouble()
        hdpp.n1, ok = self.ui.n1.text().toDouble()
        hdpp.n2, ok = self.ui.n2.text().toDouble()

        # 保存到数据库
        ret = False
        if work_surf_id <= 0:
            ret = SQLClientHelper.AddHighDrillingPoreParam(hdpp) > 0
        else:
            ret = SQLClientHelper.UpdateHighDrillingPoreParam(hdpp)

        if ret:
            UiHelper.MessageBox(u'更新数据成功!')
        else:
            UiHelper.MessageBox(u'sorry,出了点问题,请联系技术人员(错误码:P4)!')
예제 #2
0
    def onSave(self):
        # 当前选中的工作面
        index = self.ui.work_surf.currentIndex()
        if index < 0: return

        work_surf_id, ok = self.ui.work_surf.itemData(index).toInt()
        work_surf = SQLClientHelper.GetWorkSurfById(work_surf_id)
        if work_surf.id <= 0:
            UiHelper.MessageBox(u'请选择一个工作面!')
            return

        # 提取钻场参数
        hdsp = SQLClientHelper.GetHighDrillingSiteParamByForeignKey(
            'work_surf_id', work_surf.id)
        if hdsp.id <= 0:
            UiHelper.MessageBox(u'sorry, 出了点问题,请联系技术人员(错误码:U1')
            return

        hdsp.l1, ok = self.ui.l1.text().toDouble()
        hdsp.l2, ok = self.ui.l2.text().toDouble()
        hdsp.lg, ok = self.ui.lg.text().toDouble()

        # 保存钻场数据到数据库
        if not SQLClientHelper.UpdateHighDrillingSiteParam(hdsp):
            UiHelper.MessageBox(u'sorry, 出了点问题,请联系技术人员(错误码:U2')
            return

        # 从数据库中提取钻孔参数数据
        hdpp = SQLClientHelper.GetHighDrillingPoreParamByForeignKey(
            'work_surf_id', work_surf.id)
        if hdpp.id <= 0:
            UiHelper.MessageBox(u'sorry, 出了点问题,请联系技术人员(错误码:U3')
            return

        # 删除与钻孔参数关联的所有高位抽采钻孔
        pore_id_lists = SQLClientHelper.GetHighDrillingPoreIdListByForeignKey(
            'high_drilling_pore_param_id', hdpp.id)
        SQLClientHelper.DeleteMoreHighDrillingPore(pore_id_lists)

        # 保存abc列表中的钻孔
        pores = self.getPores(self.ui.abc, hdpp.id)
        # 集中提交到数据库
        SQLClientHelper.AddMoreHighDrillingPore(pores)

        # bcd
        pores = self.getPores(self.ui.bcd, hdpp.id)
        # 集中提交到数据库
        SQLClientHelper.AddMoreHighDrillingPore(pores)

        UiHelper.MessageBox(u'保存高抽巷钻场和钻孔数据成功!')
        # self.accept()
        pass
예제 #3
0
    def fillDatas(self):
        # 根据id查找工作面
        work_surf = SQLClientHelper.GetWorkSurfById(self.work_surf_id)
        if work_surf.id <= 0:
            UiHelper.MessageBox(u'sorry,出了点问题,请联系技术人员(错误码:Q1)!')
            return

        # 提取钻场参数
        hdpp = SQLClientHelper.GetHighDrillingPoreParamByForeignKey(
            'work_surf_id', work_surf.id)
        if hdpp.id <= 0:
            UiHelper.MessageBox(u'sorry, 出了点问题,请联系技术人员(错误码:Q2')
            return

        self.ui.lk.setText(u'%.1f' % hdpp.lk)
        self.ui.lc.setText(u'%.1f' % hdpp.lc)
        self.ui.lw.setText(u'%.1f' % hdpp.lw)
        self.ui.beta.setText(u'%.1f' % hdpp.beta)
        self.ui.ld.setText(u'%.1f' % hdpp.ld)
        self.ui.n2.setText(u'%.1f' % hdpp.n1)
        self.ui.n1.setText(u'%.1f' % hdpp.n2)
예제 #4
0
    def onWorkSurfChanged(self, index):
        work_surf_id, ok = self.ui.work_surf.itemData(index).toInt()
        work_surf = SQLClientHelper.GetWorkSurfById(work_surf_id)
        if work_surf.id <= 0: return
        work_area = SQLClientHelper.GetWorkAreaById(work_surf.work_area_id)
        if work_area.id <= 0: return
        coal = SQLClientHelper.GetCoalById(work_area.coal_id)
        if coal.id <= 0: return

        # 填充高抽巷钻场的数据
        hdsp = SQLClientHelper.GetHighDrillingSiteParamByForeignKey(
            'work_surf_id', work_surf_id)
        if hdsp.id <= 0:
            self.ui.l1.setText(u'0.0')
            self.ui.l2.setText(u'0.0')
            self.ui.lg.setText(u'0.0')
        else:
            self.ui.l1.setText(u'%.1f' % hdsp.l1)
            self.ui.l2.setText(u'%.1f' % hdsp.l2)
            self.ui.lg.setText(u'%.1f' % hdsp.lg)

        # 填充高抽巷钻孔的数据
        hdpp = SQLClientHelper.GetHighDrillingPoreParamByForeignKey(
            'work_surf_id', work_surf_id)
        # 清空abc和bcd表格
        self.ui.abc.clearContents()
        self.ui.bcd.clearContents()
        # 测试代码
        # self.ui.abc.setRowCount(5)
        # self.ui.abc.setItem(0, 0, QtGui.QTableWidgetItem('1'))
        # self.ui.abc.setItem(0, 1, QtGui.QTableWidgetItem('2'))
        # self.ui.abc.setItem(0, 2, QtGui.QTableWidgetItem('3'))
        # self.ui.abc.setItem(0, 3, QtGui.QTableWidgetItem('4'))
        # return
        if hdpp.id > 0:
            # 查找abc范围的钻孔(type=0表示abc区域)
            abc_pore_lists = SQLClientHelper.GetHighDrillingPoreListByField2(
                'high_drilling_pore_param_id', str(hdpp.id), 'pore_type',
                str(0))
            # 设置行数
            self.ui.abc.setRowCount(len(abc_pore_lists))
            for i, pore in enumerate(abc_pore_lists):
                self.ui.abc.setItem(i, 0,
                                    QtGui.QTableWidgetItem(u'%d' % pore.num))
                self.ui.abc.setItem(
                    i, 1, QtGui.QTableWidgetItem(u'%1.f' % pore.length))
                self.ui.abc.setItem(
                    i, 2, QtGui.QTableWidgetItem(u'%.1f' % pore.angle))
                # self.ui.abc.setItem(i, 3, QtGui.QTableWidgetItem(u'%.1f' % pore.azimuth_angle))

            # 查找bcd范围的钻孔(type=1表示bcd区域)
            bcd_pore_lists = SQLClientHelper.GetHighDrillingPoreListByField2(
                'high_drilling_pore_param_id', str(hdpp.id), 'pore_type',
                str(1))
            # 设置行数
            self.ui.abc.setRowCount(len(bcd_pore_lists))
            for i, pore in enumerate(bcd_pore_lists):
                self.ui.abc.setItem(i, 0,
                                    QtGui.QTableWidgetItem(u'%d' % pore.num))
                self.ui.abc.setItem(
                    i, 1, QtGui.QTableWidgetItem(u'%1.f' % pore.length))
                self.ui.abc.setItem(
                    i, 2, QtGui.QTableWidgetItem(u'%.1f' % pore.angle))
예제 #5
0
    def onDrillPore(self):
        # 当前选中的工作面
        index = self.ui.work_surf.currentIndex()
        if index < 0: return

        work_surf_id, ok = self.ui.work_surf.itemData(index).toInt()
        work_surf = SQLClientHelper.GetWorkSurfById(work_surf_id)
        if work_surf.id <= 0:
            UiHelper.MessageBox(u'请选择一个工作面!')
            return

        # 读取界面上的Lg数据
        Lg, ok = self.ui.lg.text().toDouble()

        # 显示对话框
        dlg = HighDrillingPoreDlg(work_surf.id)
        # 传入到对话框中用于计算
        # 这个设计存在一个bug,如果当前界面上的数据Lg没有保存
        # 然后我们把Lg传到HighDrillingPoreDlg对话框里
        # 假若用户在弹出对话框里点"保存",
        # 然后退出本对话框时没有点"保存"
        # 这时会出现数据前后不一致的情况
        dlg.Lg = Lg
        dlg.exec_()

        # 清空钻孔列表
        self.ui.abc.clearContents()
        self.ui.bcd.clearContents()

        # 从数据库中提取钻孔参数数据
        hdpp = SQLClientHelper.GetHighDrillingPoreParamByForeignKey(
            'work_surf_id', work_surf.id)
        if hdpp.id <= 0: return

        # 计算一些重要参数(后续会用到)
        Lc, Ld, beta, n1, n2 = hdpp.lc, hdpp.ld, hdpp.beta, hdpp.n1, hdpp.n2
        n = n1 + n2
        Lk = Lc + Lg
        c = radians(beta) / (n + 1)

        # 计算并保存钻孔数据到abc列表
        self.ui.abc.setRowCount(n1)
        for i in range(n1):
            k = i + 1
            beta_i = k * c  # 角度
            Lz_i = Lk / cos(beta_i)  # 长度

            # 添加到表格中
            self.ui.abc.setItem(i, 0, QtGui.QTableWidgetItem(u'%d' % k))
            self.ui.abc.setItem(i, 1, QtGui.QTableWidgetItem(u'%.1f' % Lz_i))
            self.ui.abc.setItem(i, 2, QtGui.QTableWidgetItem(u'%.1f' % beta_i))

        # 计算并保存钻孔数据到bcd列表
        self.ui.bcd.setRowCount(n2)
        for i in range(n2):
            k = i + 1 + n1
            beta_i = k * c  # 角度
            Lz_i = Ld / sin(beta_i)  # 长度

            # 添加到表格中
            self.ui.bcd.setItem(i, 0, QtGui.QTableWidgetItem(u'%d' % k))
            self.ui.bcd.setItem(i, 1, QtGui.QTableWidgetItem(u'%.1f' % Lz_i))
            self.ui.bcd.setItem(i, 2, QtGui.QTableWidgetItem(u'%.1f' % beta_i))