禅道二开 - 统计报表扩展

  • 需求背景:
    • 禅道开源版没有报表自定义功能,但是接测试负责人的需求,需要在项目维度下对各个项目的需求实现率进行统计掌握,方便构建模型以供后续工作进行参考

扩展效果

image.png

涉及修改的文件&思路

字库

    • 老规矩 按照禅道二开的拓展规则进行拓展
    • module/report/ext/lang/zh-cn/report_extend.php
    • report_extend.php 为扩展字库文件,名称任意。
<?php


// FIXME 增加需求实现率字段
$lang->report->projectStoryRate   = $lang->projectCommon . '需求实现率汇总表';

// FIXME 依据项目状态进行统计 需求实现情况。  细分为 进行中,已关闭
$lang->report->closedProject = '已关闭' . $lang->projectCommon;
$lang->report->processProject   = '进行中' . $lang->projectCommon;

// FIXME 增加报表种类超链接
$lang->reportList->project->lists[13] = $lang->projectCommon . '需求实现率汇总表|report|projectstoryrate';

// FIXME 需求实现率字段
$lang->report->storyRate = '需求实现率';

controler

    • 同样,按照规则,扩展目录为 module/report/ext/control/projectstoryrate.php
    • 此时名称不可任意命名 control 类名对应着 所渲染的视图名称,即,control 类名 是与 所渲染的前端页面名称是一致的,见下图
    • image.png
<?php


/**
 * Create a bug.
 *
 * @param  int    $productID
 * @param  string $branch
 * @param  string $extras       others params, forexample, projectID=10,moduleID=10
 * @access public
 * @return void
 */
include '../../control.php';   // 将 report模块下的 原生的control类引入
class myReport extends report  // 采用继承拓展的方式来对control下的方法进行拓展
{
    /*  进行自定义方法补充  */
    /**
     * Product information report.
     *
     * @access public
     * @return void
     */
    public function projectStoryRate($status = '')  // 名称任意,命名规则参照原control类采用驼峰命名法
    {
        // 字库读取
        $this->app->loadLang('project');                // 读取 project模块下的字库
        $this->app->loadLang('story');                      // 读取 story 模块下的字库
        
        $this->view->title      = $this->lang->report->projectStoryRate;  // 字库取值渲染到页面  - title
        
        $this->view->position[] = $this->lang->report->projectStoryRate;  // 控制左侧边栏选中效果。
        // 产品查询结果渲染到前端页面并用变量 products 进行保存,可直接在view文件中进行引用 查询ok
        $this->view->projects   = $this->report->getStoryRate($status);  //$this->module名->方法名 这种调用方式是直接调用模块下的某个方法
        $this->view->users      = $this->loadModel('user')->getPairs('noletter|noclosed'); // getPairs 取得用户的key/value 数组
        $this->view->submenu    = 'project';   // 传给view 文件中的submenu字段,组成侧边导航栏
        $this->view->status = $status;  // 查询条件,由前端从传进来
        $this->display();  // 渲染到对应视图文件 即  projectstoryrate.html.php
    }
}

model & sql编写

    • 接前面control中调用方法,接着对model层进行扩展,同样按照规则进行拓展,
    • 路径 module/report/ext/model/getStoryRate.php
<?php
public function getStoryRate($status)
{
    // 编写sql查询到所有的project,用于前端页面展示传值
    // conditions 为project_status
    // 思路 ,按照 project_status 进行筛选展示结果。
    /*
     * 思路梳理
     * 查到所有的项目信息 ok
     * 查到所有项目的需求信息 ok
     * 项目信息与需求信息进行合并成为一个数组,返回给前端。not yet
     */

    $projects = $this->dao->select('*')->from(TABLE_PROJECT)
        ->where('deleted')->eq(0)
        ->beginIF($status)->andWhere('status')->eq($status)->fi()
        ->fetchAll('id');
    // 查询到项目关联的需求信息 主要是个数
    /*
    select
    *
   from
    zt_story as story
    left join zt_projectstory
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值