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 deup = SQLClientHelper.GetDesignEvalUnitPartitionByForeignKey('work_surf_id', work_surf_id) if deup.id <= 0: deup = DesignEvalUnitPartition() deup.work_surf_id = work_surf_id deup_id = SQLClientHelper.AddDesignEvalUnitPartition(deup) deup = SQLClientHelper.GetDesignEvalUnitPartitionById(deup_id) if deup.id <= 0:return # 填充评价单元划分数据 # 这里做了点手脚,所有的数据都放在design_eval_unit_partition表里面,并没有从其它的coal、worksurf里读取数据,仅仅保持了与工作面的外键关系 self.ui.l1.setText(u'%.1f' % deup.l1) self.ui.l2.setText(u'%.1f' % deup.l2) self.ui.l.setText(u'%.1f' % deup.l) self.ui.w.setText(u'%.1f' % deup.w) self.ui.h.setText(u'%.1f' % deup.h) self.ui.r.setText(u'%.1f' % deup.r) self.ui.t.setText(u'%.1f' % deup.t) self.ui.v.setText(u'%d' % int(deup.v)) # 填充煤层数据 self.ui.thick.setText(u'%.1f' % coal.thick) self.ui.dip_angle.setText(u'%.1f' % coal.dip_angle)
def design_eval_unit(partition_id): # 查询得到评价单元划分 deup = SQLClientHelper.GetDesignEvalUnitPartitionById(partition_id) if deup.id <= 0: return # 删除所有与划分id号关联的评价单元 eval_unit_id_lists = SQLClientHelper.GetDesignEvalUnitIdListByForeignKey( 'design_eval_unit_partition_id', partition_id) SQLClientHelper.DeleteMoreDesignEvalUnit(eval_unit_id_lists) # 工作面顺槽长度Ln、巷道掘进速度V、巷道终点钻孔的抽采时间T、抽采半径R Ln, V, T, R = deup.l, deup.v, deup.t, deup.r # 计算各单元边界线与巷道交点到巷道起点的距离 Li = Lf(Ln, T, V) print Li # 计算各单元的起点抽采时间 g = lambda x: int(round(1.0 * (Ln - x) / V + T)) Ti = [g(x) for x in Li] # 评价单元写入到数据库 print u'单元号\tLi(m)\tTi(d)' for i, (x, t) in enumerate(zip(Li, Ti)): print u'%d\t%.1f\t%d' % (i + 1, x, t) a_eval_unit = DesignEvalUnit() a_eval_unit.num = i + 1 a_eval_unit.l = x a_eval_unit.t = t a_eval_unit.design_eval_unit_partition_id = partition_id SQLClientHelper.AddDesignEvalUnit(a_eval_unit)
def test_design_eval_unit(): # 指定一个设计id partition_id = 21 # 查询得到评价单元划分 deup = SQLClientHelper.GetDesignEvalUnitPartitionById(partition_id) if deup.id <= 0: return # 工作面顺槽长度Ln、巷道掘进速度V、巷道终点钻孔的抽采时间T、抽采半径R Ln, V, T, R = deup.l, deup.v, deup.t, deup.r # 计算各单元边界线与巷道交点到巷道起点的距离 Li = Lf(Ln, T, V) # 计算各单元的起点抽采时间 g = lambda x: int(round(1.0 * (Ln - x) / V + T)) Ti = [g(x) for x in Li] # 评价单元写入到数据库 print u'单元号\tLi(m)\tTi(d)' for i, (x, t) in enumerate(zip(Li, Ti)): print u'%d\t%.1f\t%d' % (i + 1, x, t) a_eval_unit = DesignEvalUnit() a_eval_unit.num = i + 1 a_eval_unit.l = x a_eval_unit.t = t a_eval_unit.design_eval_unit_partition_id = partition_id SQLClientHelper.AddDesignEvalUnit(a_eval_unit)