bi->builtin->charts = array(); $config->bi->builtin->charts[] = array ( 'id' => 1001, 'name' => '年度总结-登录次数', 'code' => 'annualSummary_countLogin', 'dimension' => '1', 'type' => 'card', 'group' => '0', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'login', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1002, 'name' => '年度总结-操作次数', 'code' => 'annualSummary_countAction', 'dimension' => '1', 'type' => 'card', 'group' => '0', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'allAction', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1003, 'name' => '年度总结-消耗工时', 'code' => 'annualSummary_consumed', 'dimension' => '1', 'type' => 'card', 'group' => '0', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'consumed', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1004, 'name' => '年度总结-待办数', 'code' => 'annualSummary_countTodo', 'dimension' => '1', 'type' => 'card', 'group' => '0', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'todo', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1005, 'name' => '年度总结-贡献数', 'code' => 'annualSummary_countContributions', 'dimension' => '1', 'type' => 'card', 'group' => '0', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'num', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1006, 'name' => '年度总结-贡献数据', 'code' => 'annualSummary_contributions', 'dimension' => '1', 'type' => 'bar', 'group' => '0', 'sql' => << array ( 'xaxis' => array ( array('field' => 'objectType', 'name' => '对象类型') ), 'yaxis' => array ( array('type' => 'agg', 'field' => 'create', 'agg' => 'sum', 'name' => '创建', 'valOrAgg' => 'sum'), array('type' => 'value', 'field' => 'edit', 'agg' => 'sum', 'name' => '编辑', 'valOrAgg' => 'sum') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1007, 'name' => '年度总结-能力雷达图', 'code' => 'annualSummary_capabilityRadar', 'dimension' => '1', 'type' => 'radar', 'group' => '0', 'sql' => << array ( 'group' => array ( array('field' => 'dimension', 'name' => '维度') ), 'metric' => array ( array('type' => 'value', 'field' => 'num', 'agg' => 'value', 'name' => '产品管理', 'key' => 'product', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'num', 'agg' => 'value', 'name' => '项目管理', 'key' => 'project', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'num', 'agg' => 'value', 'name' => '研发', 'key' => 'dev', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'num', 'agg' => 'value', 'name' => '测试', 'key' => 'qa', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'num', 'agg' => 'value', 'name' => '其他', 'key' => 'other', 'valOrAgg' => 'value') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1008, 'name' => '年度总结-迭代数据', 'code' => 'annualSummary_executions', 'dimension' => '1', 'type' => 'table', 'group' => '0', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '迭代名称'), array('field' => 'finishedStory', 'valOrAgg' => 'value', 'name' => '完成需求数'), array('field' => 'finishedTask', 'valOrAgg' => 'value', 'name' => '完成任务数'), array('field' => 'resolvedBug', 'valOrAgg' => 'value', 'name' => '解决Bug数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1009, 'name' => '年度总结-产品数据', 'code' => 'annualSummary_products', 'dimension' => '1', 'type' => 'table', 'group' => '0', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '产品名称'), array('field' => 'plan', 'valOrAgg' => 'value', 'name' => '计划数'), array('field' => 'requirement', 'valOrAgg' => 'value', 'name' => '创建用户需求数'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '创建需求数'), array('field' => 'closedStory', 'valOrAgg' => 'value', 'name' => '关闭需求数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1010, 'name' => '年度总结-任务状态分布', 'code' => 'annualSummary_taskStatus', 'dimension' => '1', 'type' => 'pie', 'group' => '0', 'sql' => << array ( 'group' => array ( array('field' => 'status', 'name' => '状态') ), 'metric' => array ( array('type' => 'agg', 'field' => 'id', 'agg' => 'count', 'name' => '任务数', 'valOrAgg' => 'count') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1011, 'name' => '年度总结-每月任务操作情况', 'code' => 'annualSummary_monthlyTaskAction', 'dimension' => '1', 'type' => 'bar', 'group' => '0', 'sql' => << array ( 'xaxis' => array ( array('field' => 'actionDate', 'name' => '日期', 'group' => 'value') ), 'yaxis' => array ( array('type' => 'agg', 'field' => 'opened', 'agg' => 'sum', 'name' => '创建', 'valOrAgg' => 'sum'), array('type' => 'agg', 'field' => 'started', 'agg' => 'sum', 'name' => '开始', 'valOrAgg' => 'sum'), array('type' => 'agg', 'field' => 'finished', 'agg' => 'sum', 'name' => '完成', 'valOrAgg' => 'sum'), array('type' => 'agg', 'field' => 'paused', 'agg' => 'sum', 'name' => '暂停', 'valOrAgg' => 'sum'), array('type' => 'agg', 'field' => 'activated', 'agg' => 'sum', 'name' => '激活', 'valOrAgg' => 'sum'), array('type' => 'agg', 'field' => 'canceled', 'agg' => 'sum', 'name' => '取消', 'valOrAgg' => 'sum'), array('type' => 'agg', 'field' => 'closed', 'agg' => 'sum', 'name' => '关闭', 'valOrAgg' => 'sum') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1012, 'name' => '年度总结-需求状态分布', 'code' => 'annualSummary_storyStatus', 'dimension' => '1', 'type' => 'pie', 'group' => '0', 'sql' => << array ( 'group' => array ( array('field' => 'status', 'name' => '状态') ), 'metric' => array ( array('type' => 'agg', 'field' => 'id', 'agg' => 'count', 'name' => '需求数', 'valOrAgg' => 'count') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1013, 'name' => '年度总结-每月需求操作情况', 'code' => 'annualSummary_monthlyStoryAction', 'dimension' => '1', 'type' => 'bar', 'group' => '0', 'sql' => << array ( 'xaxis' => array ( array('field' => 'actionDate', 'name' => '日期', 'group' => 'value') ), 'yaxis' => array ( array('type' => 'value', 'field' => 'opened', 'agg' => 'value', 'name' => '创建', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'activated', 'agg' => 'value', 'name' => '激活', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'changed', 'agg' => 'value', 'name' => '变更', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'closed', 'agg' => 'value', 'name' => '关闭', 'valOrAgg' => 'value') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1014, 'name' => '年度总结-Bug状态分布', 'code' => 'annualSummary_bugStatus', 'dimension' => '1', 'type' => 'pie', 'group' => '0', 'sql' => << array ( 'group' => array ( array('field' => 'status', 'name' => '状态') ), 'metric' => array ( array('type' => 'agg', 'field' => 'id', 'agg' => 'count', 'name' => 'Bug数', 'valOrAgg' => 'count') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1015, 'name' => '年度总结-每月Bug操作情况', 'code' => 'annualSummary_monthlyBugAction', 'dimension' => '1', 'type' => 'bar', 'group' => '0', 'sql' => << array ( 'xaxis' => array ( array('field' => 'actionDate', 'name' => '日期', 'group' => 'value') ), 'yaxis' => array ( array('type' => 'value', 'field' => 'opened', 'agg' => 'value', 'name' => '创建', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'bugconfirmed', 'agg' => 'value', 'name' => '确认', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'activated', 'agg' => 'value', 'name' => '激活', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'resolved', 'agg' => 'value', 'name' => '解决', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'closed', 'agg' => 'value', 'name' => '关闭', 'valOrAgg' => 'value') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1016, 'name' => '年度总结-用例结果分布', 'code' => 'annualSummary_caseResult', 'dimension' => '1', 'type' => 'pie', 'group' => '0', 'sql' => << array ( 'group' => array ( array('field' => 'status', 'name' => '状态') ), 'metric' => array ( array('type' => 'agg', 'field' => 'id', 'agg' => 'count', 'name' => '个数', 'valOrAgg' => 'count') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1017, 'name' => '年度总结-每月用例操作情况', 'code' => 'annualSummary_monthlyCaseAction', 'dimension' => '1', 'type' => 'bar', 'group' => '0', 'sql' => << array ( 'xaxis' => array ( array('field' => 'actionDate', 'name' => '日期', 'group' => 'value') ), 'yaxis' => array ( array('type' => 'value', 'field' => 'createdCases', 'agg' => 'value', 'name' => '创建', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'toBugCases', 'agg' => 'value', 'name' => '转Bug', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'runCases', 'agg' => 'value', 'name' => '执行', 'valOrAgg' => 'value') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1018, 'name' => '宏观数据-一级项目集个数', 'code' => 'macro_countTopProgram', 'dimension' => '1', 'type' => 'card', 'group' => '45', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'fields' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1019, 'name' => '宏观数据-项目个数', 'code' => 'macro_countProject', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1020, 'name' => '宏观数据-产品个数', 'code' => 'macro_countProduct', 'dimension' => '1', 'type' => 'card', 'group' => '47', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1021, 'name' => '宏观数据-计划个数', 'code' => 'macro_countPlan', 'dimension' => '1', 'type' => 'card', 'group' => '48', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1022, 'name' => '宏观数据-执行个数', 'code' => 'macro_countExecution', 'dimension' => '1', 'type' => 'card', 'group' => '49', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1023, 'name' => '宏观数据-发布个数', 'code' => 'macro_countRelease', 'dimension' => '1', 'type' => 'card', 'group' => '50', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1024, 'name' => '宏观数据-需求个数', 'code' => 'macro_countStory', 'dimension' => '1', 'type' => 'card', 'group' => '51', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1025, 'name' => '宏观数据-任务个数', 'code' => 'macro_countTask', 'dimension' => '1', 'type' => 'card', 'group' => '52', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1026, 'name' => '宏观数据-缺陷个数', 'code' => 'macro_countBug', 'dimension' => '1', 'type' => 'card', 'group' => '53', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1027, 'name' => '宏观数据-文档个数', 'code' => 'macro_countDoc', 'dimension' => '1', 'type' => 'card', 'group' => '54', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1028, 'name' => '宏观数据-现有人员个数', 'code' => 'macro_activeAccounts', 'dimension' => '1', 'type' => 'card', 'group' => '55', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1029, 'name' => '宏观数据-累计消耗工时', 'code' => 'macro_consumed', 'dimension' => '1', 'type' => 'card', 'group' => '55', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'consumed', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1030, 'name' => '宏观数据-禅道使用时长', 'code' => 'macro_useZentao', 'dimension' => '1', 'type' => 'card', 'group' => '58', 'sql' => << 0 THEN CONCAT(years, '年', days, '天') ELSE CONCAT(days, '天') END AS period from ( SELECT firstDay, CURRENT_DATE AS today, CAST(EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM firstDay) AS DECIMAL) AS years, MOD( CAST( (EXTRACT(MONTH FROM CURRENT_DATE) - EXTRACT(MONTH FROM firstDay)) * 30 + (EXTRACT(DAY FROM CURRENT_DATE) - EXTRACT(DAY FROM firstDay)) + 365 AS DECIMAL ), 365 ) days FROM (SELECT cast(`value` as DATE) AS firstDay FROM zt_config WHERE `owner` = 'system' AND `key` = 'installedDate') AS subquery ) data EOT , 'settings' => array ( 'value' => array('type' => 'value', 'field' => 'period', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1031, 'name' => '宏观数据-需求完成率', 'code' => 'macro_storyFinishedRate', 'dimension' => '1', 'type' => 'waterpolo', 'group' => '36', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'count', 'goal' => 'id', 'conditions' => array ( array('field' => 'bugstatus', 'condition' => 'eq', 'value' => 'done') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '编号', 'object' => 'story', 'field' => 'id', 'type' => 'number'), 'bugstatus' => array('name' => 'bugstatus', 'object' => 'story', 'field' => 'bugstatus', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => '编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'bugstatus' => array('zh-cn' => 'Bug状态', 'zh-tw' => '', 'en' => 'bugstatus', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1032, 'name' => '宏观数据-Bug修复率', 'code' => 'macro_bugFixedRate', 'dimension' => '1', 'type' => 'waterpolo', 'group' => '44', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'count', 'goal' => 'id', 'conditions' => array ( array('field' => 'bugstatus', 'condition' => 'eq', 'value' => 'done') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => 'Bug编号', 'object' => 'bug', 'field' => 'id', 'type' => 'number'), 'bugstatus' => array('name' => 'bugstatus', 'object' => 'bug', 'field' => 'bugstatus', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => 'Bug编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'bugstatus' => array('zh-cn' => 'Bug状态', 'zh-tw' => '', 'en' => 'bugstatus', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1033, 'name' => '宏观数据-未完成的一级项目集个数', 'code' => 'macro_countTopProgram_undone', 'dimension' => '1', 'type' => 'card', 'group' => '45', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1034, 'name' => '宏观数据-未完成的需求', 'code' => 'macro_countStory_undone', 'dimension' => '1', 'type' => 'card', 'group' => '51', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1035, 'name' => '宏观数据-未完成的产品', 'code' => 'macro_countProduct_undone', 'dimension' => '1', 'type' => 'card', 'group' => '47', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1036, 'name' => '宏观数据-未完成的项目', 'code' => 'macro_countProject_undone', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1037, 'name' => '宏观数据-未完成的计划', 'code' => 'macro_countPlan_undone', 'dimension' => '1', 'type' => 'card', 'group' => '48', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1038, 'name' => '宏观数据-未完成的执行', 'code' => 'macro_countExecution_undone', 'dimension' => '1', 'type' => 'card', 'group' => '49', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1039, 'name' => '宏观数据-未完成的缺陷', 'code' => 'macro_countBug_undone', 'dimension' => '1', 'type' => 'card', 'group' => '53', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1040, 'name' => '宏观数据-未完成的任务', 'code' => 'macro_countTask_undone', 'dimension' => '1', 'type' => 'card', 'group' => '52', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1041, 'name' => '宏观数据-项目集数据概览', 'code' => 'macro_programOverview', 'dimension' => '1', 'type' => 'table', 'group' => '64', 'sql' => << 1 GROUP BY topProgram ) AS t2 ON t1.id = t2.topProgram LEFT JOIN zt_product AS t3 ON t1.id = t3.program AND t3.deleted = '0' AND t3.shadow = '0' AND t3.vision = 'rnd' LEFT JOIN ( SELECT product, COUNT(1) AS story, COUNT(CASE WHEN status = 'done' THEN 1 END) AS finishedStory FROM zt_story WHERE deleted = '0' AND type = 'story' GROUP BY product ) AS t4 ON t3.id = t4.product LEFT JOIN ( SELECT product, COUNT(1) AS `release` FROM zt_release WHERE deleted = '0' GROUP BY product ) AS t5 ON t3.id = t5.product LEFT JOIN ( SELECT product, COUNT(1) AS bug, COUNT(CASE WHEN status = 'fixed' THEN 1 END) AS fixedBug FROM zt_bug WHERE deleted = '0' GROUP BY product ) AS t6 ON t3.id = t6.product LEFT JOIN ( SELECT t1.topProgram, COUNT(DISTINCT t1.project) AS project, SUM(COALESCE(t2.task, 0)) AS task, SUM(COALESCE(t3.execution, 0)) AS execution FROM ( SELECT CAST(SUBSTRING(path FROM 2 FOR (POSITION(',' IN SUBSTRING(path FROM 2)) - 1)) AS DECIMAL) AS topProgram, id AS project FROM zt_project WHERE deleted = '0' AND type = 'project' ) AS t1 LEFT JOIN ( SELECT COUNT(1) AS task, project FROM zt_task WHERE deleted = '0' GROUP BY project ) AS t2 ON t1.project = t2.project LEFT JOIN ( SELECT COUNT(1) AS execution, project FROM zt_project WHERE deleted = '0' AND type IN ('sprint', 'stage', 'kanban') AND multiple = '1' GROUP BY project ) AS t3 ON t1.project = t3.project GROUP BY t1.topProgram ) AS t7 ON t1.id = t7.topProgram WHERE t1.deleted = '0' AND t1.type = 'program' AND t1.grade = 1 GROUP BY t1.name EOT , 'settings' => array ( 'group' => array(), 'column' => array ( array('field' => 'topProgram', 'valOrAgg' => 'value', 'name' => '一级项目集'), array('field' => 'subProgram', 'valOrAgg' => 'value', 'name' => '子项目集数'), array('field' => 'product', 'valOrAgg' => 'value', 'name' => '产品数'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '研发需求数'), array('field' => 'bug', 'valOrAgg' => 'value', 'name' => 'Bug数'), array('field' => 'release', 'valOrAgg' => 'value', 'name' => '发布数'), array('field' => 'project', 'valOrAgg' => 'value', 'name' => '项目数'), array('field' => 'execution', 'valOrAgg' => 'value', 'name' => '执行数'), array('field' => 'task', 'valOrAgg' => 'value', 'name' => '任务数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1042, 'name' => '宏观数据-项目集需求完成率与Bug修复率', 'code' => 'macro_programStoryFinishedRateAndBugFixedRate', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '45', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'topProgram', 'name' => 'topProgram', 'group' => '') ), 'yaxis' => array ( array('field' => 'storyDoneRate', 'name' => 'storyDoneRate', 'valOrAgg' => 'sum'), array('field' => 'bugSolvedRate', 'name' => 'bugSolvedRate', 'valOrAgg' => 'sum') ) ) ), 'filters' => array(), 'fields' => array ( 'topProgram' => array('name' => 'topProgram', 'object' => 'bug', 'field' => 'topProgram', 'type' => 'string'), 'doneStory' => array('name' => 'doneStory', 'object' => 'bug', 'field' => 'doneStory', 'type' => 'number'), 'allStory' => array('name' => 'allStory', 'object' => 'bug', 'field' => 'allStory', 'type' => 'number'), 'storyDoneRate' => array('name' => 'storyDoneRate', 'object' => 'bug', 'field' => 'storyDoneRate', 'type' => 'number'), 'solvedBug' => array('name' => 'solvedBug', 'object' => 'bug', 'field' => 'solvedBug', 'type' => 'number'), 'allBug' => array('name' => 'allBug', 'object' => 'bug', 'field' => 'allBug', 'type' => 'number'), 'bugSolvedRate' => array('name' => 'bugSolvedRate', 'object' => 'bug', 'field' => 'bugSolvedRate', 'type' => 'number') ), 'langs' => array ( 'topProgram' => array('zh-cn' => '一级项目集', 'zh-tw' => '', 'en' => 'topProgram', 'de' => '', 'fr' => ''), 'doneStory' => array('zh-cn' => '完成需求数', 'zh-tw' => '', 'en' => 'doneStory', 'de' => '', 'fr' => ''), 'allStory' => array('zh-cn' => '需求数', 'zh-tw' => '', 'en' => 'allStory', 'de' => '', 'fr' => ''), 'storyDoneRate' => array('zh-cn' => '需求完成率', 'zh-tw' => '', 'en' => 'storyDoneRate', 'de' => '', 'fr' => ''), 'solvedBug' => array('zh-cn' => '解决bug数', 'zh-tw' => '', 'en' => 'solvedBug', 'de' => '', 'fr' => ''), 'allBug' => array('zh-cn' => 'bug数', 'zh-tw' => '', 'en' => 'allBug', 'de' => '', 'fr' => ''), 'bugSolvedRate' => array('zh-cn' => 'bug修复率', 'zh-tw' => '', 'en' => 'bugSolvedRate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1043, 'name' => '宏观数据-公司项目集状态分布', 'code' => 'macro_programStatus', 'dimension' => '1', 'type' => 'pie', 'group' => '45', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'status', 'name' => '状态', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => '项目ID', 'valOrAgg' => 'count') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'status' => array('name' => '状态', 'object' => 'project', 'field' => 'status', 'type' => 'option') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => '状态', 'zh-tw' => '', 'en' => 'status', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1044, 'name' => '宏观数据-公司项目状态分布', 'code' => 'macro_projectStatus', 'dimension' => '1', 'type' => 'pie', 'group' => '38', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'status', 'name' => '状态', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => '项目ID', 'valOrAgg' => 'count') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'status' => array('name' => '状态', 'object' => 'project', 'field' => 'status', 'type' => 'option') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => '状态', 'zh-tw' => '', 'en' => 'status', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1045, 'name' => '宏观数据-产品数据概览', 'code' => 'macro_productOverview', 'dimension' => '1', 'type' => 'table', 'group' => '63', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'program', 'valOrAgg' => 'value', 'name' => '一级项目集'), array('field' => 'productLine', 'valOrAgg' => 'value', 'name' => '产品线'), array('field' => 'product', 'valOrAgg' => 'value', 'name' => '产品'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '需求数'), array('field' => 'bug', 'valOrAgg' => 'value', 'name' => 'Bug数'), array('field' => 'plan', 'valOrAgg' => 'value', 'name' => '计划数'), array('field' => 'release', 'valOrAgg' => 'value', 'name' => '发布数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1046, 'name' => '宏观数据-产品需求完成率', 'code' => 'macro_productStoryFinishedRate', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'product', 'name' => '所属产品', 'group' => '') ), 'yaxis' => array ( array('field' => 'closedRate', 'name' => 'closedRate', 'valOrAgg' => 'sum') ) ) ), 'filters' => array(), 'fields' => array ( 'product' => array('name' => '所属产品', 'object' => 'story', 'field' => 'product', 'type' => 'string'), 'program' => array('name' => 'program', 'object' => 'story', 'field' => 'program', 'type' => 'string'), 'productLine' => array('name' => 'productLine', 'object' => 'story', 'field' => 'productLine', 'type' => 'string'), 'closedStory' => array('name' => '需求:%s 已关闭,将不会被关闭。', 'object' => 'story', 'field' => 'closedStory', 'type' => 'string'), 'totalStory' => array('name' => 'totalStory', 'object' => 'story', 'field' => 'totalStory', 'type' => 'string'), 'closedRate' => array('name' => 'closedRate', 'object' => 'story', 'field' => 'closedRate', 'type' => 'number') ), 'langs' => array ( 'product' => array('zh-cn' => '所属产品', 'zh-tw' => '', 'en' => 'product', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'productLine' => array('zh-cn' => '产品线', 'zh-tw' => '', 'en' => 'productLine', 'de' => '', 'fr' => ''), 'closedStory' => array('zh-cn' => '完成需求数', 'zh-tw' => '', 'en' => 'closedStory', 'de' => '', 'fr' => ''), 'totalStory' => array('zh-cn' => '需求数', 'zh-tw' => '', 'en' => 'totalStory', 'de' => '', 'fr' => ''), 'closedRate' => array('zh-cn' => '需求完成率', 'zh-tw' => '', 'en' => 'closedRate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1047, 'name' => '宏观数据-产品Bug修复率', 'code' => 'macro_productBugFixedRate', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '44', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'product', 'name' => '所属产品', 'group' => '') ), 'yaxis' => array ( array('field' => 'fixedRate', 'name' => '修复率', 'valOrAgg' => 'sum') ) ) ), 'filters' => array(), 'fields' => array ( 'product' => array('name' => '所属产品', 'object' => 'bug', 'field' => 'product', 'type' => 'string'), 'program' => array('name' => 'program', 'object' => 'bug', 'field' => 'program', 'type' => 'string'), 'productLine' => array('name' => 'productLine', 'object' => 'bug', 'field' => 'productLine', 'type' => 'string'), 'fixedBug' => array('name' => 'fixedBug', 'object' => 'bug', 'field' => 'fixedBug', 'type' => 'string'), 'totalBug' => array('name' => 'totalBug', 'object' => 'bug', 'field' => 'totalBug', 'type' => 'string'), 'fixedRate' => array('name' => '修复率', 'object' => 'bug', 'field' => 'fixedRate', 'type' => 'number') ), 'langs' => array ( 'product' => array('zh-cn' => '所属产品', 'zh-tw' => '', 'en' => 'product', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'productLine' => array('zh-cn' => '产品线', 'zh-tw' => '', 'en' => 'productLine', 'de' => '', 'fr' => ''), 'fixedBug' => array('zh-cn' => '修复bug数', 'zh-tw' => '', 'en' => 'fixedBug', 'de' => '', 'fr' => ''), 'totalBug' => array('zh-cn' => 'bug数', 'zh-tw' => '', 'en' => 'totalBug', 'de' => '', 'fr' => ''), 'fixedRate' => array('zh-cn' => 'bug修复率', 'zh-tw' => '', 'en' => 'fixedRate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1049, 'name' => '宏观数据-部门人员分布图', 'code' => 'macro_deptAccountStatus', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'deptName', 'name' => 'deptName', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array(), 'fields' => array ( 'deptName' => array('name' => 'deptName', 'object' => 'false', 'field' => 'deptName', 'type' => 'object'), 'count' => array('name' => 'count', 'object' => 'false', 'field' => 'count', 'type' => 'object'), 'deptOrder' => array('name' => 'deptOrder', 'object' => 'false', 'field' => 'deptOrder', 'type' => 'object') ), 'langs' => array ( 'deptName' => array('zh-cn' => '部门', 'zh-tw' => '', 'en' => 'deptName', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '人数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => ''), 'deptOrder' => array('zh-cn' => '顺序', 'zh-tw' => '', 'en' => 'deptOrder', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1050, 'name' => '宏观数据-公司角色分布图', 'code' => 'macro_roleStatus', 'dimension' => '1', 'type' => 'pie', 'group' => '56', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'role', 'name' => '职位', 'group' => '') ), 'metric' => array ( array('field' => 'account', 'name' => '用户名', 'valOrAgg' => 'count') ) ) ), 'filters' => array(), 'fields' => array ( 'account' => array('name' => '用户名', 'object' => 'user', 'field' => 'account', 'type' => 'string'), 'role' => array('name' => '职位', 'object' => 'user', 'field' => 'role', 'type' => 'string') ), 'langs' => array ( 'account' => array('zh-cn' => '用户名', 'zh-tw' => '', 'en' => 'account', 'de' => '', 'fr' => ''), 'role' => array('zh-cn' => '职位', 'zh-tw' => '', 'en' => 'role', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1051, 'name' => '宏观数据-人员工龄分布图', 'code' => 'macro_workingStatus', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << DATE_SUB(NOW(), INTERVAL 1 YEAR) union SELECT count(1) as count, '1-3年' as joinDate FROM zt_user WHERE deleted = '0' AND `join` > DATE_SUB(NOW(), INTERVAL 3 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 1 YEAR) union SELECT count(1) as count, '3-5年' as joinDate FROM zt_user WHERE deleted = '0' AND `join` > DATE_SUB(NOW(), INTERVAL 5 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 3 YEAR) union SELECT count(1) as count, '5-10年' as joinDate FROM zt_user WHERE deleted = '0' AND `join` > DATE_SUB(NOW(), INTERVAL 10 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 5 YEAR) union SELECT count(1) as count, '10年以上' as joinDate FROM zt_user WHERE deleted = '0' AND `join` < DATE_SUB(NOW(), INTERVAL 10 YEAR) AND LEFT(`join`, 4) != '0000' union SELECT count(1) as count, '未知' as joinDate FROM zt_user WHERE deleted = '0' AND LEFT(`join`, 4) = '0000' EOT , 'settings' => array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'joinDate', 'name' => 'joinDate', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array(), 'fields' => array ( 'count' => array('name' => 'count', 'object' => 'user', 'field' => 'count', 'type' => 'string'), 'joinDate' => array('name' => 'joinDate', 'object' => 'user', 'field' => 'joinDate', 'type' => 'string') ), 'langs' => array ( 'count' => array('zh-cn' => '人数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => ''), 'joinDate' => array('zh-cn' => '工龄', 'zh-tw' => '', 'en' => 'joinDate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1055, 'name' => '年度新增-一级项目集个数', 'code' => 'annualCreated_countTopProgram', 'dimension' => '1', 'type' => 'card', 'group' => '45', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1056, 'name' => '年度新增-产品个数', 'code' => 'annualCreated_countProduct', 'dimension' => '1', 'type' => 'card', 'group' => '47', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1057, 'name' => '年度新增-需求个数', 'code' => 'annualCreated_countStory', 'dimension' => '1', 'type' => 'card', 'group' => '51', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1058, 'name' => '年度新增-Bug个数', 'code' => 'annualCreated_countBug', 'dimension' => '1', 'type' => 'card', 'group' => '53', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1059, 'name' => '年度新增-计划个数', 'code' => 'annualCreated_countPlan', 'dimension' => '1', 'type' => 'card', 'group' => '48', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1060, 'name' => '年度新增-项目个数', 'code' => 'annualCreated_countProject', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1061, 'name' => '年度新增-执行个数', 'code' => 'annualCreated_countExecution', 'dimension' => '1', 'type' => 'card', 'group' => '49', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1062, 'name' => '年度新增-任务数', 'code' => 'annualCreated_countTask', 'dimension' => '1', 'type' => 'card', 'group' => '52', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1063, 'name' => '年度新增-文档个数', 'code' => 'annualCreated_countDoc', 'dimension' => '1', 'type' => 'card', 'group' => '54', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1064, 'name' => '年度新增-发布个数', 'code' => 'annualCreated_countRelease', 'dimension' => '1', 'type' => 'card', 'group' => '50', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1065, 'name' => '年度新增-人员个数', 'code' => 'annualCreated_countAccount', 'dimension' => '1', 'type' => 'card', 'group' => '56', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'account', 'agg' => 'count'), 'title' => array('type' => 'text', 'realname' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1066, 'name' => '年度新增-完成项目数', 'code' => 'annualCreated_countPorject_finished', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1067, 'name' => '年度新增-完成执行数', 'code' => 'annualCreated_countExecution_finished', 'dimension' => '1', 'type' => 'card', 'group' => '49', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1068, 'name' => '年度新增-完成发布数', 'code' => 'annualCreated_countRelease_finished', 'dimension' => '1', 'type' => 'card', 'group' => '50', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1069, 'name' => '年度新增-完成需求数', 'code' => 'annualCreated_countStory_finished', 'dimension' => '1', 'type' => 'card', 'group' => '51', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1070, 'name' => '年度新增-解决Bug数', 'code' => 'annualCreated_countBug_fixed', 'dimension' => '1', 'type' => 'card', 'group' => '53', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1071, 'name' => '年度新增-完成任务数', 'code' => 'annualCreated_countTask_finished', 'dimension' => '1', 'type' => 'card', 'group' => '52', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1072, 'name' => '年度新增-投入工时数', 'code' => 'annualCreated_consumed', 'dimension' => '1', 'type' => 'card', 'group' => '57', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'consumed', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1073, 'name' => '年度新增-项目集年度新增数据汇总表', 'code' => 'annualCreated_programOverview_created', 'dimension' => '1', 'type' => 'table', 'group' => '64', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'topProgram', 'valOrAgg' => 'value', 'name' => '一级项目集'), array('field' => 'product', 'valOrAgg' => 'value', 'name' => '产品数'), array('field' => 'plan', 'valOrAgg' => 'value', 'name' => '计划数'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '需求数'), array('field' => 'bug', 'valOrAgg' => 'value', 'name' => 'Bug数'), array('field' => 'release', 'valOrAgg' => 'value', 'name' => '发布数'), array('field' => 'doc', 'valOrAgg' => 'value', 'name' => '文档数') ), 'filter' => array() ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1074, 'name' => '年度新增-项目集年度完成数据概览', 'code' => 'annualCreated_programOverview_finished', 'dimension' => '1', 'type' => 'table', 'group' => '64', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'topProgram', 'valOrAgg' => 'value', 'name' => '一级项目集'), array('field' => 'projectA', 'valOrAgg' => 'value', 'name' => '项目数'), array('field' => 'executionA', 'valOrAgg' => 'value', 'name' => '执行数'), array('field' => 'release', 'valOrAgg' => 'value', 'name' => '发布数'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '需求数'), array('field' => 'bug', 'valOrAgg' => 'value', 'name' => 'Bug数') ), 'filter' => array() ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1075, 'name' => '年度新增-产品年度新增数据汇总表', 'code' => 'annualCreated_productOverview_created', 'dimension' => '1', 'type' => 'table', 'group' => '63', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '产品'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '需求数'), array('field' => 'bug', 'valOrAgg' => 'value', 'name' => 'Bug数'), array('field' => 'plan', 'valOrAgg' => 'value', 'name' => '计划数'), array('field' => 'release', 'valOrAgg' => 'value', 'name' => '发布数') ), 'filter' => array() ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1076, 'name' => '年度新增-产品年度完成数据汇总表', 'code' => 'annualCreated_productOverview_finished', 'dimension' => '1', 'type' => 'table', 'group' => '63', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '产品'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '需求数'), array('field' => 'bug', 'valOrAgg' => 'value', 'name' => 'Bug数'), array('field' => 'plan', 'valOrAgg' => 'value', 'name' => '计划数'), array('field' => 'release', 'valOrAgg' => 'value', 'name' => '发布数') ), 'filter' => array() ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1077, 'name' => '年度新增-需求年度新增和完成趋势图', 'code' => 'annualCreated_storyTendency', 'dimension' => '1', 'type' => 'line', 'group' => '36', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array ( array('field' => 'newStory', 'name' => '继续添加研发需求', 'valOrAgg' => 'sum'), array('field' => 'closedStory', 'name' => '需求:%s 已关闭,将不会被关闭。', 'valOrAgg' => 'sum') ), 'rotateX' => 'notuse' ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年度') ), 'fields' => array ( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'story', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'story', 'field' => 'month', 'type' => 'number'), 'newStory' => array('name' => '继续添加研发需求', 'object' => 'story', 'field' => 'newStory', 'type' => 'string'), 'closedStory' => array('name' => '需求:%s 已关闭,将不会被关闭。', 'object' => 'story', 'field' => 'closedStory', 'type' => 'string') ), 'langs' => array ( 'YEARMONTH' => array('zh-cn' => 'YEARMONTH', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年度', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'newStory' => array('zh-cn' => '新增需求数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'closedStory' => array('zh-cn' => '完成需求数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1078, 'name' => '年度新增-Bug年度新增和解决趋势图', 'code' => 'annualCreated_bugTendency', 'dimension' => '1', 'type' => 'line', 'group' => '44', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array ( array('field' => 'newBug', 'name' => 'newBug', 'valOrAgg' => 'sum'), array('field' => 'fixedBug', 'name' => 'fixedBug', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年度') ), 'fields' => array ( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'bug', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'bug', 'field' => 'month', 'type' => 'number'), 'newBug' => array('name' => 'newBug', 'object' => 'bug', 'field' => 'newBug', 'type' => 'string'), 'fixedBug' => array('name' => 'fixedBug', 'object' => 'bug', 'field' => 'fixedBug', 'type' => 'string') ), 'langs' => array ( 'YEARMONTH' => array('zh-cn' => '', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年度', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'newBug' => array('zh-cn' => '新增Bug数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'fixedBug' => array('zh-cn' => '解决Bug数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1079, 'name' => '年度新增-任务年度新增和完成趋势图', 'code' => 'annualCreated_taskTendency', 'dimension' => '1', 'type' => 'line', 'group' => '39', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array ( array('field' => 'newTask', 'name' => 'newTask', 'valOrAgg' => 'sum'), array('field' => 'closedTask', 'name' => 'closedTask', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年度') ), 'fields' => array ( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'task', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'task', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'task', 'field' => 'month', 'type' => 'string'), 'newTask' => array('name' => 'newTask', 'object' => 'task', 'field' => 'newTask', 'type' => 'string'), 'closedTask' => array('name' => 'closedTask', 'object' => 'task', 'field' => 'closedTask', 'type' => 'string') ), 'langs' => array ( 'YEARMONTH' => array('zh-cn' => 'YEARMONTH', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年度', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'newTask' => array('zh-cn' => '新增任务数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'closedTask' => array('zh-cn' => '完成任务数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1080, 'name' => '年度新增-项目年度新增和完成趋势图', 'code' => 'annualCreated_projectTendency', 'dimension' => '1', 'type' => 'line', 'group' => '38', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array ( array('field' => 'newProject', 'name' => 'newProject', 'valOrAgg' => 'sum'), array('field' => 'closedProject', 'name' => '已关闭的项目', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年度') ), 'fields' => array ( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'project', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'project', 'field' => 'month', 'type' => 'string'), 'newProject' => array('name' => 'newProject', 'object' => 'project', 'field' => 'newProject', 'type' => 'string'), 'closedProject' => array('name' => '已关闭的项目', 'object' => 'project', 'field' => 'closedProject', 'type' => 'string') ), 'langs' => array ( 'YEARMONTH' => array('zh-cn' => 'YEARMONTH', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年度', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'newProject' => array('zh-cn' => '新增项目数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'closedProject' => array('zh-cn' => '完成项目数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1081, 'name' => '年度新增-执行年度新增和完成趋势图', 'code' => 'annualCreated_executionTendency', 'dimension' => '1', 'type' => 'line', 'group' => '40', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array ( array('field' => 'newExecution', 'name' => 'newExecution', 'valOrAgg' => 'sum'), array('field' => 'closedExecution', 'name' => 'closedExecution', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年度') ), 'fields' => array ( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'project', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'project', 'field' => 'month', 'type' => 'string'), 'newExecution' => array('name' => 'newExecution', 'object' => 'project', 'field' => 'newExecution', 'type' => 'string'), 'closedExecution' => array('name' => 'closedExecution', 'object' => 'project', 'field' => 'closedExecution', 'type' => 'string') ), 'langs' => array ( 'YEARMONTH' => array('zh-cn' => 'YEARMONTH', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年度', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'newExecution' => array('zh-cn' => '新增执行数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'closedExecution' => array('zh-cn' => '完成执行数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1082, 'name' => '年度新增-产品发布次数年度趋势图', 'code' => 'annualCreated_releaseTendency', 'dimension' => '1', 'type' => 'line', 'group' => '37', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array ( array('field' => 'release', 'name' => 'release', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年度') ), 'fields' => array ( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'release', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'release', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'release', 'field' => 'month', 'type' => 'string'), 'release' => array('name' => 'release', 'object' => 'release', 'field' => 'release', 'type' => 'string') ), 'langs' => array ( 'YEARMONTH' => array('zh-cn' => 'YEARMONTH', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年度', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'release' => array('zh-cn' => '发布次数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1083, 'name' => '年度新增-年度投入产出比', 'code' => 'annualCreated_IORatio', 'dimension' => '1', 'type' => 'line', 'group' => '45', 'sql' => << array ( 'xaxis' => array ( array('field' => 'month', 'name' => '月份', 'group' => 'value') ), 'yaxis' => array ( array('type' => 'value', 'field' => 'ratio', 'agg' => 'value', 'name' => '投入产出比', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'story', 'agg' => 'value', 'name' => '需求交付', 'valOrAgg' => 'value'), array('type' => 'value', 'field' => 'consumed', 'agg' => 'value', 'name' => '工时消耗', 'valOrAgg' => 'value') ) ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 1085, 'name' => '年度排行-项目集-预算投入榜', 'code' => 'annualRank_programBudget', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '41', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'budget', 'name' => '预算', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'budget' => array('name' => '预算', 'object' => 'project', 'field' => 'budget', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目集编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'budget' => array('zh-cn' => '项目集预算', 'zh-tw' => '', 'en' => 'budget', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1086, 'name' => '年度排行-项目集-人员投入榜', 'code' => 'annualRank_programPersonnel', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '41', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'setName', 'name' => 'setName', 'group' => '') ), 'yaxis' => array ( array('field' => 'number', 'name' => 'number', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'user', 'field' => 'year', 'type' => 'number'), 'number' => array('name' => 'number', 'object' => 'user', 'field' => 'number', 'type' => 'string'), 'setName' => array('name' => 'setName', 'object' => 'user', 'field' => 'setName', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'number' => array('zh-cn' => '人员数量', 'zh-tw' => '', 'en' => 'number', 'de' => '', 'fr' => ''), 'setName' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'setName', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1087, 'name' => '年度排行-项目集-工时消耗榜', 'code' => 'annualRank_programConsumed', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '41', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'consumed', 'name' => '总计消耗', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'effort', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'consumed' => array('name' => '总计消耗', 'object' => 'task', 'field' => 'consumed', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目集编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'consumed' => array('zh-cn' => '项目集总计消耗', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1088, 'name' => '年度排行-项目集-新增需求条目榜', 'code' => 'annualRank_programStoryCount_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'story' => array('name' => '研发需求', 'object' => 'story', 'field' => 'story', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目集编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '新增研发需求计数', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1089, 'name' => '年度排行-项目集-新增需求规模榜', 'code' => 'annualRank_programStoryEstimate_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'story' => array('name' => '研发需求', 'object' => 'story', 'field' => 'story', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目集编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '新增研发需求规模', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1090, 'name' => '年度排行-项目集-新增Bug条目榜', 'code' => 'annualRank_programBug_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '44', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'bug', 'name' => 'Bug列表', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'bug' => array('name' => 'Bug列表', 'object' => 'project', 'field' => 'bug', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目集编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'bug' => array('zh-cn' => '新增Bug计数', 'zh-tw' => '', 'en' => 'bug', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1091, 'name' => '年度排行-项目集-完成需求条目榜', 'code' => 'annualRank_programStoryCount_finished', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '43', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'story' => array('name' => '研发需求', 'object' => 'story', 'field' => 'story', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目集编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '完成研发需求求和', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1092, 'name' => '年度排行-项目集-完成需求规模榜', 'code' => 'annualRank_programStoryEstimate_finished', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'story' => array('name' => '研发需求', 'object' => 'story', 'field' => 'story', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '研发需求预计工时求和', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1093, 'name' => '年度排行-项目集-修复Bug条目榜', 'code' => 'annualRank_programBug_fixed', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '44', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'program', 'name' => 'program', 'group' => '') ), 'yaxis' => array ( array('field' => 'bug', 'name' => 'Bug列表', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'program' => array('name' => 'program', 'object' => 'zt_project', 'field' => 'program', 'type' => 'string'), 'bug' => array('name' => 'Bug列表', 'object' => 'project', 'field' => 'bug', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'program' => array('zh-cn' => '项目集名称', 'zh-tw' => '', 'en' => 'program', 'de' => '', 'fr' => ''), 'bug' => array('zh-cn' => 'Bug计数', 'zh-tw' => '', 'en' => 'bug', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1094, 'name' => '年度排行-项目-工期榜', 'code' => 'annualRank_projectDuration', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '42', 'sql' => <<= `year`) OR (status = 'closed' AND YEAR(realEnd) >= `year`)) ORDER BY `year`, duration desc LIMIT 999999 EOT , 'settings' => array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => '项目名称', 'group' => '') ), 'yaxis' => array ( array('field' => 'duration', 'name' => 'duration', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => '编号', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'name' => array('name' => '项目名称', 'object' => 'project', 'field' => 'name', 'type' => 'string'), 'status' => array('name' => '状态', 'object' => 'project', 'field' => 'status', 'type' => 'option'), 'realBegan' => array('name' => '实际开始日期', 'object' => 'project', 'field' => 'realBegan', 'type' => 'date'), 'realEnd' => array('name' => '实际完成日期', 'object' => 'project', 'field' => 'realEnd', 'type' => 'date'), 'duration' => array('name' => 'duration', 'object' => 'project', 'field' => 'duration', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => '状态', 'zh-tw' => '', 'en' => 'status', 'de' => '', 'fr' => ''), 'realBegan' => array('zh-cn' => '实际开始日期', 'zh-tw' => '', 'en' => 'realBegan', 'de' => '', 'fr' => ''), 'realEnd' => array('zh-cn' => '实际完成日期', 'zh-tw' => '', 'en' => 'realEnd', 'de' => '', 'fr' => ''), 'duration' => array('zh-cn' => '工期', 'zh-tw' => '', 'en' => 'duration', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1096, 'name' => '年度排行-项目-工期偏差榜', 'code' => 'annualRank_projectDurationDeviation', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '42', 'sql' => <<= `year` OR LEFT(realEnd, 4) = '0000') AND YEAR(`end`) != '2059' ORDER BY duration ASC LIMIT 999999 EOT , 'settings' => array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => '项目名称', 'group' => '') ), 'yaxis' => array ( array('field' => 'duration', 'name' => 'duration', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => '编号', 'object' => 'action', 'field' => 'id', 'type' => 'number'), 'name' => array('name' => '项目名称', 'object' => 'project', 'field' => 'name', 'type' => 'string'), 'status' => array('name' => '状态', 'object' => 'project', 'field' => 'status', 'type' => 'option'), 'begin' => array('name' => '计划开始', 'object' => 'project', 'field' => 'begin', 'type' => 'date'), 'end' => array('name' => '计划完成', 'object' => 'project', 'field' => 'end', 'type' => 'date'), 'realBegan' => array('name' => '实际开始日期', 'object' => 'project', 'field' => 'realBegan', 'type' => 'date'), 'realEnd' => array('name' => '实际完成日期', 'object' => 'project', 'field' => 'realEnd', 'type' => 'date'), 'duration' => array('name' => 'duration', 'object' => 'project', 'field' => 'duration', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => '状态', 'zh-tw' => '', 'en' => 'status', 'de' => '', 'fr' => ''), 'begin' => array('zh-cn' => '计划开始', 'zh-tw' => '', 'en' => 'begin', 'de' => '', 'fr' => ''), 'end' => array('zh-cn' => '计划完成', 'zh-tw' => '', 'en' => 'end', 'de' => '', 'fr' => ''), 'realBegan' => array('zh-cn' => '实际开始日期', 'zh-tw' => '', 'en' => 'realBegan', 'de' => '', 'fr' => ''), 'realEnd' => array('zh-cn' => '实际完成日期', 'zh-tw' => '', 'en' => 'realEnd', 'de' => '', 'fr' => ''), 'duration' => array('zh-cn' => '工期偏差', 'zh-tw' => '', 'en' => 'duration', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1097, 'name' => '年度排行-项目-人员投入榜', 'code' => 'annualRank_projectPersonnel', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '41', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => '项目名称', 'group' => '') ), 'yaxis' => array ( array('field' => 'number', 'name' => 'number', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'user', 'field' => 'year', 'type' => 'number'), 'number' => array('name' => 'number', 'object' => 'user', 'field' => 'number', 'type' => 'string'), 'name' => array('name' => '项目名称', 'object' => 'project', 'field' => 'name', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'number' => array('zh-cn' => '人员个数', 'zh-tw' => '', 'en' => 'number', 'de' => '', 'fr' => ''), 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1098, 'name' => '年度排行-项目-工时消耗榜', 'code' => 'annualRank_projectConsumed', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '41', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'project', 'name' => 'project', 'group' => '') ), 'yaxis' => array ( array('field' => 'consumed', 'name' => '总计消耗', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'effort', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'project' => array('name' => 'project', 'object' => 'zt_project', 'field' => 'project', 'type' => 'string'), 'consumed' => array('name' => '总计消耗', 'object' => 'task', 'field' => 'consumed', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'project' => array('zh-cn' => '项目', 'zh-tw' => '', 'en' => 'project', 'de' => '', 'fr' => ''), 'consumed' => array('zh-cn' => '任务总计消耗', 'zh-tw' => '', 'en' => 'consumed', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1099, 'name' => '年度排行-项目-完成需求条目榜', 'code' => 'annualRank_projectStoryCount_finished', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'project', 'name' => '所属项目', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求列表', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'project' => array('name' => '所属项目', 'object' => 'project', 'field' => 'project', 'type' => 'string'), 'story' => array('name' => '研发需求列表', 'object' => 'projectstory', 'field' => 'story', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'project' => array('zh-cn' => '所属项目', 'zh-tw' => '', 'en' => 'project', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '研发需求计数', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1100, 'name' => '年度排行-项目-完成需求规模榜', 'code' => 'annualRank_projectStoryEstimate_finished', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '43', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'project', 'name' => '所属项目', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求列表', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'project' => array('name' => '所属项目', 'object' => 'project', 'field' => 'project', 'type' => 'string'), 'story' => array('name' => '研发需求列表', 'object' => 'projectstory', 'field' => 'story', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'project' => array('zh-cn' => '所属项目', 'zh-tw' => '', 'en' => 'project', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '需求预计工时', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1101, 'name' => '年度排行-产品-新增需求条目榜', 'code' => 'annualRank_productStoryCount_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'product', 'name' => 'product', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_product', 'field' => 'id', 'type' => 'number'), 'product' => array('name' => 'product', 'object' => 'zt_product', 'field' => 'product', 'type' => 'string'), 'story' => array('name' => '研发需求', 'object' => 'story', 'field' => 'story', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '产品编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'product' => array('zh-cn' => '产品', 'zh-tw' => '', 'en' => 'product', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '研发需求计数', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1102, 'name' => '年度排行-产品-完成需求规模榜', 'code' => 'annualRank_productStoryEstimate_finished', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '36', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'product', 'name' => 'product', 'group' => '') ), 'yaxis' => array ( array('field' => 'story', 'name' => '研发需求', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_product', 'field' => 'id', 'type' => 'number'), 'product' => array('name' => 'product', 'object' => 'zt_product', 'field' => 'product', 'type' => 'string'), 'story' => array('name' => '研发需求', 'object' => 'story', 'field' => 'story', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '产品编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'product' => array('zh-cn' => '产品', 'zh-tw' => '', 'en' => 'product', 'de' => '', 'fr' => ''), 'story' => array('zh-cn' => '研发需求预计工时求和', 'zh-tw' => '', 'en' => 'story', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1103, 'name' => '年度排行-产品-新增Bug条目榜', 'code' => 'annualRank_productBug_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '44', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'product', 'name' => 'product', 'group' => '') ), 'yaxis' => array ( array('field' => 'bug', 'name' => 'bug', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_product', 'field' => 'id', 'type' => 'number'), 'product' => array('name' => 'product', 'object' => 'zt_product', 'field' => 'product', 'type' => 'string'), 'bug' => array('name' => 'bug', 'object' => 'bug', 'field' => 'bug', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '产品编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'product' => array('zh-cn' => '产品', 'zh-tw' => '', 'en' => 'product', 'de' => '', 'fr' => ''), 'bug' => array('zh-cn' => 'Bug计数', 'zh-tw' => '', 'en' => 'bug', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1104, 'name' => '年度排行-产品-修复Bug条目榜', 'code' => 'annualRank_productBug_fixed', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '44', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'product', 'name' => 'product', 'group' => '') ), 'yaxis' => array ( array('field' => 'bug', 'name' => 'bug', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'id' => array('name' => 'id', 'object' => 'zt_product', 'field' => 'id', 'type' => 'number'), 'product' => array('name' => 'product', 'object' => 'zt_product', 'field' => 'product', 'type' => 'string'), 'bug' => array('name' => 'bug', 'object' => 'bug', 'field' => 'bug', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '产品编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'product' => array('zh-cn' => '产品', 'zh-tw' => '', 'en' => 'product', 'de' => '', 'fr' => ''), 'bug' => array('zh-cn' => 'Bug计数', 'zh-tw' => '', 'en' => 'bug', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1105, 'name' => '年度排行-个人-创建需求条目榜', 'code' => 'annualRank_personalStoryCount_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'realname', 'name' => 'realname', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'number'), 'realname' => array('name' => 'realname', 'object' => 'zt_user', 'field' => 'realname', 'type' => 'string'), 'count' => array('name' => 'count', 'object' => 'story', 'field' => 'count', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'realname' => array('zh-cn' => '姓名', 'zh-tw' => '', 'en' => 'realname', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '计数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1106, 'name' => '年度排行-个人-创建用例条目榜', 'code' => 'annualRank_personalCaseCount_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'realname', 'name' => 'realname', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'testcase', 'field' => 'year', 'type' => 'number'), 'realname' => array('name' => 'realname', 'object' => 'zt_user', 'field' => 'realname', 'type' => 'string'), 'count' => array('name' => 'count', 'object' => 'testcase', 'field' => 'count', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'realname' => array('zh-cn' => '姓名', 'zh-tw' => '', 'en' => 'realname', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '计数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1107, 'name' => '年度排行-个人-创建Bug条目榜', 'code' => 'annualRank_personalBug_created', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'realname', 'name' => 'realname', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'realname' => array('name' => 'realname', 'object' => 'zt_user', 'field' => 'realname', 'type' => 'string'), 'count' => array('name' => 'count', 'object' => 'bug', 'field' => 'count', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'realname' => array('zh-cn' => '姓名', 'zh-tw' => '', 'en' => 'realname', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '计数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1108, 'name' => '年度排行-个人-修复Bug条目榜', 'code' => 'annualRank_personalBug_Fixed', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'realname', 'name' => 'realname', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'realname' => array('name' => 'realname', 'object' => 'zt_user', 'field' => 'realname', 'type' => 'string'), 'count' => array('name' => 'count', 'object' => 'bug', 'field' => 'count', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'realname' => array('zh-cn' => '姓名', 'zh-tw' => '', 'en' => 'realname', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '计数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1109, 'name' => '年度排行-个人-工时消耗榜', 'code' => 'annualRank_personalConsumed', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'realname', 'name' => 'realname', 'group' => '') ), 'yaxis' => array ( array('field' => 'consumed', 'name' => '耗时', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'user', 'field' => 'year', 'type' => 'number'), 'realname' => array('name' => 'realname', 'object' => 'zt_user', 'field' => 'realname', 'type' => 'string'), 'consumed' => array('name' => '耗时', 'object' => 'effort', 'field' => 'consumed', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'realname' => array('zh-cn' => '姓名', 'zh-tw' => '', 'en' => 'realname', 'de' => '', 'fr' => ''), 'consumed' => array('zh-cn' => '耗时', 'zh-tw' => '', 'en' => 'consumed', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 1110, 'name' => '年度排行-个人-禅道操作次数榜', 'code' => 'annualRank_personalAction', 'dimension' => '1', 'type' => 'cluBarY', 'group' => '56', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'realname', 'name' => 'realname', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'user', 'field' => 'year', 'type' => 'number'), 'realname' => array('name' => 'realname', 'object' => 'zt_action', 'field' => 'realname', 'type' => 'string'), 'count' => array('name' => 'count', 'object' => 'user', 'field' => 'count', 'type' => 'string') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => ''), 'realname' => array('zh-cn' => '姓名', 'zh-tw' => '', 'en' => 'realname', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '计数', 'zh-tw' => '', 'en' => 'count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10000, 'name' => '年度完成项目-完成项目数', 'code' => 'annualFinishedProject_countProject', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10001, 'name' => '年度完成项目-按时完成项目数', 'code' => 'annualFinishedProject_countProject_finished_ontime', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10002, 'name' => '年度完成项目-延期完成项目数', 'code' => 'annualFinishedProject_countProject_finished_delay', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => <<t1.`end` GROUP BY `year` EOT , 'settings' => array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10003, 'name' => '年度完成项目-完成需求条目数', 'code' => 'annualFinishedProject_storyCount_finished', 'dimension' => '2', 'type' => 'card', 'group' => '75', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10004, 'name' => '年度完成项目-完成需求规模数', 'code' => 'annualFinishedProject_storyEstimate_finished', 'dimension' => '2', 'type' => 'card', 'group' => '75', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10005, 'name' => '年度完成项目-完成发布数', 'code' => 'annualFinishedProject_release_finished', 'dimension' => '2', 'type' => 'card', 'group' => '74', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10006, 'name' => '年度完成项目-解决bug数', 'code' => 'annualFinishedProject_bug_fixed', 'dimension' => '2', 'type' => 'card', 'group' => '77', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10007, 'name' => '年度完成项目-完成执行数', 'code' => 'annualFinishedProject_execution_finished', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10008, 'name' => '年度完成项目-按时完成执行数', 'code' => 'annualFinishedProject_execution_finished_ontime', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10009, 'name' => '年度完成项目-延期完成执行数', 'code' => 'annualFinishedProject_execution_finished_delay', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => <<t1.`end` GROUP BY `year` EOT , 'settings' => array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10010, 'name' => '年度完成项目-完成任务条目数', 'code' => 'annualFinishedProject_taskCount_finished', 'dimension' => '2', 'type' => 'card', 'group' => '76', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10011, 'name' => '年度完成项目-完成任务预计工时数', 'code' => 'annualFinishedProject_taskEstimate_finished', 'dimension' => '2', 'type' => 'card', 'group' => '78', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10012, 'name' => '年度完成项目-完成任务消耗工时数', 'code' => 'annualFinishedProject_taskConsumed_finished', 'dimension' => '2', 'type' => 'card', 'group' => '78', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10013, 'name' => '年度完成项目-投入的总人天', 'code' => 'annualFinishedProject_workingDayConsumed', 'dimension' => '2', 'type' => 'card', 'group' => '78', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10014, 'name' => '年度完成项目-项目按期完成率', 'code' => 'annualFinishedProject_projectFinishedRatio', 'dimension' => '2', 'type' => 'waterpolo', 'group' => '71', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'count', 'goal' => 'id', 'conditions' => array ( array('field' => 'projectstatus', 'condition' => 'eq', 'value' => 'done') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'projectstatus' => array('name' => 'projectstatus', 'object' => 'project', 'field' => 'projectstatus', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'projectstatus' => array('zh-cn' => '项目状态', 'zh-tw' => '', 'en' => 'projectstatus', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10015, 'name' => '年度完成项目-执行按期完成率', 'code' => 'annualFinishedProject_executionFinishedRatio', 'dimension' => '2', 'type' => 'waterpolo', 'group' => '71', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'count', 'goal' => 'id', 'conditions' => array ( array('field' => 'projectstatus', 'condition' => 'eq', 'value' => 'done') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'projectstatus' => array('name' => 'projectstatus', 'object' => 'project', 'field' => 'projectstatus', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => '执行ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'projectstatus' => array('zh-cn' => '执行状态', 'zh-tw' => '', 'en' => 'projectstatus', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10016, 'name' => '年度完成项目-项目延期率', 'code' => 'annualFinishedProject_projectDelayRatio', 'dimension' => '2', 'type' => 'waterpolo', 'group' => '71', 'sql' => <<t1.`end` ,'done','undone') AS `projectstatus`, YEAR(`closedDate`) AS `year` FROM (SELECT id, begin, `end`, IF(LEFT(realEnd, 4) = '0000', LEFT(closedDate,10), realEnd) AS realEnd, closedDate FROM zt_project WHERE deleted='0' AND type='project' AND status='closed') t1 EOT , 'settings' => array ( array ( 'type' => 'waterpolo', 'calc' => 'count', 'goal' => 'id', 'conditions' => array ( array('field' => 'projectstatus', 'condition' => 'eq', 'value' => 'done') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'projectstatus' => array('name' => 'projectstatus', 'object' => 'project', 'field' => 'projectstatus', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'projectstatus' => array('zh-cn' => '项目状态', 'zh-tw' => '', 'en' => 'projectstatus', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10017, 'name' => '年度完成项目-执行延期率', 'code' => 'annualFinishedProject_executionDelayRatio', 'dimension' => '2', 'type' => 'waterpolo', 'group' => '71', 'sql' => <<t1.`end`,'done','undone') AS `projectstatus`, YEAR(`closedDate`) AS `year` FROM(SELECT id, begin, `end`, IF(LEFT(realEnd, 4) = '0000', LEFT(closedDate,10), realEnd) AS realEnd, closedDate FROM zt_project WHERE deleted='0' and type='sprint' and status='closed') t1 EOT , 'settings' => array ( array ( 'type' => 'waterpolo', 'calc' => 'count', 'goal' => 'id', 'conditions' => array ( array('field' => 'projectstatus', 'condition' => 'eq', 'value' => 'done') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'projectstatus' => array('name' => 'projectstatus', 'object' => 'project', 'field' => 'projectstatus', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'project', 'field' => 'year', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => '执行ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'projectstatus' => array('zh-cn' => '执行状态', 'zh-tw' => '', 'en' => 'projectstatus', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'year', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10018, 'name' => '年度完成项目-完成项目工期偏差条形图', 'code' => 'annualFinishedProject_projectFinishedDurationDeviation', 'dimension' => '2', 'type' => 'cluBarY', 'group' => '71', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => '项目名称', 'group' => '') ), 'yaxis' => array ( array('field' => 'daterate', 'name' => 'daterate', 'valOrAgg' => 'max') ) ) ), 'filters' => array ( array ( 'field' => 'closedDate', 'type' => 'date', 'name' => '关闭日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'name' => array('name' => '项目名称', 'object' => 'project', 'field' => 'name', 'type' => 'string'), 'closedDate' => array('name' => '关闭日期', 'object' => 'project', 'field' => 'closedDate', 'type' => 'date'), 'daterate' => array('name' => 'daterate', 'object' => 'project', 'field' => 'daterate', 'type' => 'number') ), 'langs' => array ( 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => ''), 'closedDate' => array('zh-cn' => '关闭日期', 'zh-tw' => '', 'en' => 'closedDate', 'de' => '', 'fr' => ''), 'daterate' => array('zh-cn' => '工期偏差率', 'zh-tw' => '', 'en' => 'daterate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10019, 'name' => '年度完成项目-单位工时交付需求规模数对比图', 'code' => 'annualFinishedProject_storyEstimatePerHour', 'dimension' => '2', 'type' => 'pie', 'group' => '71', 'sql' => << array ( array ( 'type' => 'cluBarX', 'xaxis' => array ( array('field' => 'project', 'name' => '所属项目', 'group' => '') ), 'yaxis' => array ( array('field' => '单位时间交付需求规模数', 'name' => '单位时间交付需求规模数', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'project', 'type' => 'input', 'name' => '所属项目', 'default' => '') ), 'fields' => array ( 'project' => array('name' => '所属项目', 'object' => 'project', 'field' => 'project', 'type' => 'string'), '故事点' => array('name' => '故事点', 'object' => 'project', 'field' => '故事点', 'type' => 'number'), '工时' => array('name' => '工时', 'object' => 'project', 'field' => '工时', 'type' => 'number'), '单位时间交付需求规模数' => array('name' => '单位时间交付需求规模数', 'object' => 'project', 'field' => '单位时间交付需求规模数', 'type' => 'number') ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10020, 'name' => '年度完成项目-项目完成分布图', 'code' => 'annualFinishedProject_projectStatus_finished', 'dimension' => '2', 'type' => 'pie', 'group' => '71', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'completeStatus', 'name' => 'completeStatus', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => '项目ID', 'valOrAgg' => 'count') ) ) ), 'filters' => array ( array ( 'field' => 'closedDate', 'type' => 'date', 'name' => '关闭日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'completeStatus' => array('name' => 'completeStatus', 'object' => 'project', 'field' => 'completeStatus', 'type' => 'string'), 'closedDate' => array('name' => '关闭日期', 'object' => 'project', 'field' => 'closedDate', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'completeStatus' => array('zh-cn' => '项目完成情况', 'zh-tw' => '', 'en' => 'completeStatus', 'de' => '', 'fr' => ''), 'closedDate' => array('zh-cn' => '关闭日期', 'zh-tw' => '', 'en' => 'closedDate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10021, 'name' => '年度完成项目-执行完成分布图', 'code' => 'annualFinishedProject_executionStatus_finished', 'dimension' => '2', 'type' => 'pie', 'group' => '71', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'completeStatus', 'name' => 'completeStatus', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => '项目ID', 'valOrAgg' => 'count') ) ) ), 'filters' => array ( array ( 'field' => 'closedDate', 'type' => 'date', 'name' => '关闭日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'completeStatus' => array('name' => 'completeStatus', 'object' => 'project', 'field' => 'completeStatus', 'type' => 'string'), 'closedDate' => array('name' => '关闭日期', 'object' => 'project', 'field' => 'closedDate', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => '执行ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'completeStatus' => array('zh-cn' => '完成情况', 'zh-tw' => '', 'en' => 'completeStatus', 'de' => '', 'fr' => ''), 'closedDate' => array('zh-cn' => '关闭日期', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10022, 'name' => '年度完成项目-完成项目工时偏差条形图', 'code' => 'annualFinishedProject_projectHourDeviation_finished', 'dimension' => '2', 'type' => 'cluBarY', 'group' => '70', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => '任务名称', 'group' => '') ), 'yaxis' => array ( array('field' => 'rate', 'name' => 'rate', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array ( 'field' => 'closedDate', 'type' => 'date', 'name' => '关闭时间', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'name' => array('name' => '任务名称', 'object' => 'project', 'field' => 'name', 'type' => 'string'), 'id' => array('name' => '编号', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'closedDate' => array('name' => '关闭时间', 'object' => 'task', 'field' => 'closedDate', 'type' => 'date'), 'estimate' => array('name' => '最初预计', 'object' => 'task', 'field' => 'estimate', 'type' => 'string'), 'consumed' => array('name' => '总计消耗', 'object' => 'task', 'field' => 'consumed', 'type' => 'string'), 'left' => array('name' => '预计剩余', 'object' => 'task', 'field' => 'left', 'type' => 'string'), 'deviation' => array('name' => 'deviation', 'object' => 'task', 'field' => 'deviation', 'type' => 'number'), 'rate' => array('name' => 'rate', 'object' => 'task', 'field' => 'rate', 'type' => 'number') ), 'langs' => array ( 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => ''), 'id' => array('zh-cn' => '项目编号', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'closedDate' => array('zh-cn' => '关闭时间', 'zh-tw' => '', 'en' => 'closedDate', 'de' => '', 'fr' => ''), 'estimate' => array('zh-cn' => '最初预计', 'zh-tw' => '', 'en' => 'estimate', 'de' => '', 'fr' => ''), 'consumed' => array('zh-cn' => '总计消耗', 'zh-tw' => '', 'en' => 'consumed', 'de' => '', 'fr' => ''), 'left' => array('zh-cn' => '预计剩余', 'zh-tw' => '', 'en' => 'left', 'de' => '', 'fr' => ''), 'deviation' => array('zh-cn' => '偏差', 'zh-tw' => '', 'en' => 'deviation', 'de' => '', 'fr' => ''), 'rate' => array('zh-cn' => '偏差比率', 'zh-tw' => '', 'en' => 'rate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10101, 'name' => '年度进行中项目-进行中的项目数', 'code' => 'annualDoingProject_countProject', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10102, 'name' => '年度进行中项目-进行中的迭代数', 'code' => 'annualDoingProject_countExecution', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10103, 'name' => '年度进行中项目-进展顺利项目数', 'code' => 'annualDoingProject_countProject_good', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => << 0, SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type IN ('sprint', 'kanban') AND t22.deleted = '0' AND t22.parent < 1 GROUP BY t22.project UNION SELECT t.project, ROUND(SUM(t.prograss * (t.percent / 100)), 2) as prograss FROM ( SELECT t21.id,t21.percent, t22.project, IF(SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0)) > 0, ROUND(SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))) * 1000 / 1000 * 100, 2), 0) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type = 'stage' AND t22.deleted = '0' AND t22.parent < 1 AND t22.id IS NOT NULL GROUP BY t21.id, t21.percent, t22.project ) t GROUP BY t.project ) AS t2 ON t1.id = t2.project WHERE t1.deleted = '0' AND t1.status = 'doing' AND t1.type = 'project' AND ((IFNULL(prograss, 0) >= (DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100) AND LEFT(t1.`end`, 4) != '2059' AND DATEDIFF(`end`, NOW()) >= 0) OR LEFT(t1.`end`, 4) = '2059' ) EOT , 'settings' => array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10104, 'name' => '年度进行中项目-进展顺利迭代数', 'code' => 'annualDoingProject_countExecution_good', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => << 0, SUM(t2.consumed) / (SUM(t2.consumed) + SUM(IF(t2.status != 'closed' AND t2.status != 'cancel', t2.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t1 LEFT JOIN zt_task AS t2 ON t1.id = t2.execution WHERE t1.deleted = '0' AND t1.type IN ('sprint', 'stage', 'kanban') AND t1.status = 'doing' AND t1.multiple = '1' AND t2.deleted = '0' AND t2.parent < 1 GROUP BY t1.id ) AS t WHERE prograss >= planPrograss AND DATEDIFF(`end`, NOW()) >= 0 EOT , 'settings' => array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10105, 'name' => '年度进行中项目-进度滞后项目数', 'code' => 'annualDoingProject_countProject_bad', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => << 0, SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type IN ('sprint', 'kanban') AND t22.deleted = '0' AND t22.parent < 1 GROUP BY t22.project UNION SELECT t.project, ROUND(SUM(t.prograss * (t.percent / 100)), 2) as prograss FROM ( SELECT t21.id,t21.percent, t22.project, IF(SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0)) > 0, ROUND(SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))) * 1000 / 1000 * 100, 2), 0) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type = 'stage' AND t22.deleted = '0' AND t22.parent < 1 AND t22.id IS NOT NULL GROUP BY t21.id, t21.percent, t22.project ) t GROUP BY t.project ) AS t2 ON t1.id = t2.project WHERE t1.deleted = '0' AND t1.status = 'doing' AND t1.type = 'project' AND LEFT(t1.`end`, 4) != '2059' AND IFNULL(prograss, 0) < (DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100) AND DATEDIFF(`end`, NOW()) >= 0 EOT , 'settings' => array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10106, 'name' => '年度进行中项目-进度滞后迭代数', 'code' => 'annualDoingProject_countExecution_bad', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => << 0, SUM(t2.consumed) / (SUM(t2.consumed) + SUM(IF(t2.status != 'closed' AND t2.status != 'cancel', t2.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t1 LEFT JOIN zt_task AS t2 ON t1.id = t2.execution WHERE t1.deleted = '0' AND t1.type IN ('sprint', 'stage', 'kanban') AND t1.status = 'doing' AND t1.multiple = '1' AND DATEDIFF(t1.`end`, NOW()) >= 0 AND t2.deleted = '0' AND t2.parent < 1 GROUP BY t1.id ) AS t WHERE prograss < planPrograss EOT , 'settings' => array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10107, 'name' => '年度进行中项目-已延期项目数', 'code' => 'annualDoingProject_countPorject_delay', 'dimension' => '2', 'type' => 'card', 'group' => '72', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10108, 'name' => '年度进行中项目-已延期迭代数', 'code' => 'annualDoingProject_countExecution_delay', 'dimension' => '2', 'type' => 'card', 'group' => '73', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10109, 'name' => '年度进行中项目-未完成需求条目数', 'code' => 'annualDoingProject_storyCount_undone', 'dimension' => '2', 'type' => 'card', 'group' => '75', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10110, 'name' => '年度进行中项目-未完成任务数', 'code' => 'annualDoingProject_countTask_undone', 'dimension' => '2', 'type' => 'card', 'group' => '76', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10111, 'name' => '年度进行中项目-未完成需求规模数', 'code' => 'annualDoingProject_storyEstimate_undone', 'dimension' => '2', 'type' => 'card', 'group' => '75', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'estimate', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10112, 'name' => '年度进行中项目-剩余工时数', 'code' => 'annualDoingProject_leftEffort', 'dimension' => '2', 'type' => 'card', 'group' => '78', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'taskleft', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10113, 'name' => '年度进行中项目-投入总人次', 'code' => 'annualDoingProject_investedPeople', 'dimension' => '2', 'type' => 'card', 'group' => '78', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'id', 'agg' => 'count'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10114, 'name' => '年度进行中项目-项目进度分布图', 'code' => 'annualDoingProject_projectProgressChart', 'dimension' => '2', 'type' => 'pie', 'group' => '69', 'sql' => <<= (DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100) AND LEFT(t1.`end`, 4) != '2059') OR LEFT(t1.`end`, 4) = '2059' , '顺利', '滞后' ))) AS `status`, IFNULL(prograss, 0) AS prograss, ROUND(DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100, 2) AS planPrograss,LEFT(t1.`end`, 4) AS endYear FROM zt_project AS t1 LEFT JOIN ( SELECT t22.project, ROUND(IF(SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0)) > 0, SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type IN ('sprint', 'kanban') AND t22.deleted = '0' AND t22.parent < 1 GROUP BY t22.project UNION SELECT t.project, ROUND(SUM(t.prograss * (t.percent / 100)), 2) as prograss FROM ( SELECT t21.id,t21.percent, t22.project, IF(SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0)) > 0, ROUND(SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))) * 1000 / 1000 * 100, 2), 0) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type = 'stage' AND t22.deleted = '0' AND t22.parent < 1 AND t22.id IS NOT NULL GROUP BY t21.id, t21.percent, t22.project ) t GROUP BY t.project ) AS t2 ON t1.id = t2.project WHERE t1.deleted = '0' AND t1.status = 'doing' AND t1.type = 'project' EOT , 'settings' => array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'status', 'name' => '状态', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => 'id', 'valOrAgg' => 'count') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => 'id', 'object' => 'zt_project', 'field' => 'id', 'type' => 'number'), 'name' => array('name' => 'name', 'object' => 'zt_project', 'field' => 'name', 'type' => 'string'), 'status' => array('name' => '状态', 'object' => 'project', 'field' => 'status', 'type' => 'option'), 'prograss' => array('name' => 'prograss', 'object' => 'task', 'field' => 'prograss', 'type' => 'number'), 'planPrograss' => array('name' => 'planPrograss', 'object' => 'task', 'field' => 'planPrograss', 'type' => 'number'), 'endYear' => array('name' => 'endYear', 'object' => 'task', 'field' => 'endYear', 'type' => 'string') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => '状态', 'zh-tw' => '', 'en' => 'status', 'de' => '', 'fr' => ''), 'prograss' => array('zh-cn' => '项目进度', 'zh-tw' => '', 'en' => 'prograss', 'de' => '', 'fr' => ''), 'planPrograss' => array('zh-cn' => '计划进度', 'zh-tw' => '', 'en' => 'planPrograss', 'de' => '', 'fr' => ''), 'endYear' => array('zh-cn' => '结束年份', 'zh-tw' => '', 'en' => 'endYear', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10115, 'name' => '年度进行中项目-迭代进度分布图', 'code' => 'annualDoingProject_executionProgressChart', 'dimension' => '2', 'type' => 'pie', 'group' => '69', 'sql' => <<= planPrograss, '顺利', '滞后' )) ) AS status, prograss, planPrograss, `end` FROM ( SELECT t1.id,t1.name,ROUND(DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100, 2) AS planPrograss,t1.`end`, ROUND(IF(SUM(t2.consumed) + SUM(IF(t2.status != 'closed' AND t2.status != 'cancel', t2.`left`, 0)) > 0, SUM(t2.consumed) / (SUM(t2.consumed) + SUM(IF(t2.status != 'closed' AND t2.status != 'cancel', t2.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t1 LEFT JOIN zt_task AS t2 ON t1.id = t2.execution WHERE t1.deleted = '0' AND t1.type IN ('sprint', 'stage', 'kanban') AND t1.status = 'doing' AND t1.multiple = '1' AND ((t2.deleted = '0' AND t2.parent < 1) OR t2.id IS NULL) GROUP BY t1.id ) AS t EOT , 'settings' => array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'status', 'name' => '状态', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => '项目ID', 'valOrAgg' => 'count') ) ) ), 'filters' => array(), 'fields' => array ( 'id' => array('name' => '项目ID', 'object' => 'project', 'field' => 'id', 'type' => 'number'), 'name' => array('name' => '项目名称', 'object' => 'project', 'field' => 'name', 'type' => 'string'), 'status' => array('name' => '状态', 'object' => 'project', 'field' => 'status', 'type' => 'option'), 'prograss' => array('name' => 'prograss', 'object' => 'task', 'field' => 'prograss', 'type' => 'number'), 'planPrograss' => array('name' => 'planPrograss', 'object' => 'task', 'field' => 'planPrograss', 'type' => 'number'), 'end' => array('name' => '计划完成', 'object' => 'project', 'field' => 'end', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => '项目ID', 'zh-tw' => '', 'en' => 'id', 'de' => '', 'fr' => ''), 'name' => array('zh-cn' => '项目名称', 'zh-tw' => '', 'en' => 'name', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => '状态', 'zh-tw' => '', 'en' => 'status', 'de' => '', 'fr' => ''), 'prograss' => array('zh-cn' => '项目进度', 'zh-tw' => '', 'en' => 'prograss', 'de' => '', 'fr' => ''), 'planPrograss' => array('zh-cn' => '计划进度', 'zh-tw' => '', 'en' => 'planPrograss', 'de' => '', 'fr' => ''), 'end' => array('zh-cn' => '计划完成', 'zh-tw' => '', 'en' => 'end', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10116, 'name' => '年度进行中项目-项目进度透视表', 'code' => 'annualDoingProject_projectProgressPivot', 'dimension' => '2', 'type' => 'table', 'group' => '84', 'sql' => <<= 0, CAST((DATEDIFF(t1.`end`, NOW()) + 1) AS CHAR), '0' ) ) AS realDuration, IF( DATEDIFF(t1.`end`, NOW()) < 0, '延期', (IF( (IFNULL(prograss, 0) >= (DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100) AND LEFT(t1.`end`, 4) != '2059') OR LEFT(t1.`end`, 4) = '2059' , '顺利', '滞后' ))) AS `status`, CONCAT(IFNULL(prograss, 0), '%') AS prograss FROM zt_project AS t1 LEFT JOIN ( SELECT t22.project, ROUND(IF(SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0)) > 0, SUM(t22.consumed) / (SUM(t22.consumed) + SUM(IF(t22.status != 'closed' AND t22.status != 'cancel', t22.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t21 LEFT JOIN zt_task AS t22 ON t21.id = t22.execution WHERE t21.deleted = '0' AND t21.type IN ('sprint', 'kanban', 'stage') AND t22.deleted = '0' AND t22.parent < 1 GROUP BY t22.project ) AS t2 ON t1.id = t2.project LEFT JOIN zt_project AS t3 ON SUBSTR(t1.path, 2, POSITION(',' IN SUBSTR(t1.path, 2)) -1) = CAST(t3.id AS CHAR) AND t3.type = 'program' AND t3.deleted = '0' WHERE t1.deleted = '0' AND t1.status = 'doing' AND t1.type = 'project' AND FIND_IN_SET('rnd', t1.vision) EOT , 'settings' => array ( 'group' => array(), 'column' => array ( array('field' => 'program', 'valOrAgg' => 'value', 'name' => '一级项目集'), array('field' => 'name', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'begin', 'valOrAgg' => 'value', 'name' => '计划开始日期'), array('field' => 'end', 'valOrAgg' => 'value', 'name' => '计划完成日期'), array('field' => 'planDuration', 'valOrAgg' => 'value', 'name' => '计划工期'), array('field' => 'realBegan', 'valOrAgg' => 'value', 'name' => '实际开始日期'), array('field' => 'realDuration', 'valOrAgg' => 'value', 'name' => '剩余工期天数'), array('field' => 'prograss', 'valOrAgg' => 'value', 'name' => '工期进度'), array('field' => 'status', 'valOrAgg' => 'value', 'name' => '进度状态') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10117, 'name' => '年度进行中项目-迭代进度透视表', 'code' => 'annualDoingProject_executionProgressPivot', 'dimension' => '2', 'type' => 'table', 'group' => '84', 'sql' => <<= planPrograss, '顺利', '滞后' )) ) AS status FROM ( SELECT t1.id,t1.name,t1.`begin`,t1.`end`,t1.`realBegan`,IFNULL(t3.name, '/') AS project,t3.id AS projectID, DATEDIFF(t1.`end`, t1.`begin`) + 1 AS planDuration, IF(DATEDIFF(t1.`end`, NOW()) >= 0, DATEDIFF(t1.`end`, NOW()) + 1, 0) AS realDuration, ROUND(DATEDIFF(NOW(), t1.`begin`) / DATEDIFF(t1.`end`, t1.`begin`) * 100, 2) AS planPrograss, ROUND(IF(SUM(t2.consumed) + SUM(IF(t2.status != 'closed' AND t2.status != 'cancel', t2.`left`, 0)) > 0, SUM(t2.consumed) / (SUM(t2.consumed) + SUM(IF(t2.status != 'closed' AND t2.status != 'cancel', t2.`left`, 0))), 0) * 100, 2) AS prograss FROM zt_project AS t1 LEFT JOIN zt_task AS t2 ON t1.id = t2.execution LEFT JOIN zt_project AS t3 on t1.project = t3.id AND t3.type = 'project' AND t3.deleted = '0' WHERE t1.deleted = '0' AND t1.type IN ('sprint', 'stage', 'kanban') AND t1.status = 'doing' AND t1.multiple = '1' AND t2.deleted = '0' AND t2.parent < 1 GROUP BY t1.id ) AS t ORDER BY projectID ASC, id ASC LIMIT 999999 EOT , 'settings' => array ( 'group' => array(), 'column' => array ( array('field' => 'project', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'name', 'valOrAgg' => 'value', 'name' => '迭代'), array('field' => 'begin', 'valOrAgg' => 'value', 'name' => '计划开始日期'), array('field' => 'end', 'valOrAgg' => 'value', 'name' => '计划完成日期'), array('field' => 'planDuration', 'valOrAgg' => 'value', 'name' => '计划工期'), array('field' => 'realBegan', 'valOrAgg' => 'value', 'name' => '实际开始日期'), array('field' => 'realDuration', 'valOrAgg' => 'value', 'name' => '剩余工期天数'), array('field' => 'prograss', 'valOrAgg' => 'value', 'name' => '工期进度'), array('field' => 'status', 'valOrAgg' => 'value', 'name' => '进度状态') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10118, 'name' => '年度进行中项目-项目剩余工作量透视表', 'code' => 'annualDoingProject_porjectLeftPivot', 'dimension' => '2', 'type' => 'table', 'group' => '83', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'program', 'valOrAgg' => 'value', 'name' => '一级项目集'), array('field' => 'project', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '剩余需求数'), array('field' => 'estimate', 'valOrAgg' => 'value', 'name' => '剩余需求规模数'), array('field' => 'execution', 'valOrAgg' => 'value', 'name' => '剩余执行数'), array('field' => 'workhour', 'valOrAgg' => 'value', 'name' => '剩余工时') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10119, 'name' => '年度进行中项目-迭代剩余工作量透视表', 'code' => 'annualDoingProject_executionLeftPivot', 'dimension' => '2', 'type' => 'table', 'group' => '83', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'project', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'execution', 'valOrAgg' => 'value', 'name' => '迭代'), array('field' => 'story', 'valOrAgg' => 'value', 'name' => '剩余需求数'), array('field' => 'estimate', 'valOrAgg' => 'value', 'name' => '剩余需求规模数'), array('field' => 'task', 'valOrAgg' => 'value', 'name' => '剩余任务数'), array('field' => 'workhour', 'valOrAgg' => 'value', 'name' => '剩余工时') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10201, 'name' => '质量数据-研发完成需求数', 'code' => 'quality_storyCount_finished', 'dimension' => '3', 'type' => 'card', 'group' => '93', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10202, 'name' => '质量数据-研发完成需求规模数', 'code' => 'quality_storyEstimate_finished', 'dimension' => '3', 'type' => 'card', 'group' => '93', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10203, 'name' => '质量数据-研发完成需求用例数', 'code' => 'quality_storyCaseCount_finished', 'dimension' => '3', 'type' => 'card', 'group' => '95', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10204, 'name' => '质量数据-Bug总数', 'code' => 'quality_bugCount', 'dimension' => '3', 'type' => 'card', 'group' => '94', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10205, 'name' => '质量数据-有效Bug数', 'code' => 'quality_bugCount_valid', 'dimension' => '3', 'type' => 'card', 'group' => '94', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10206, 'name' => '质量数据-修复Bug数', 'code' => 'quality_bugCount_fixed', 'dimension' => '3', 'type' => 'card', 'group' => '94', 'sql' => << array ( 'value' => array('type' => 'agg', 'field' => 'number', 'agg' => 'sum'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10207, 'name' => '质量数据-研发完成需求用例覆盖率', 'code' => 'quality_storyCaseCoverage_finished', 'dimension' => '3', 'type' => 'waterpolo', 'group' => '92', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'sum', 'goal' => 'fixpercent', 'conditions' => array ( array('field' => 'havecase', 'condition' => 'eq', 'value' => 'havecase') ) ) ), 'filters' => array(), 'fields' => array ( 'fixpercent' => array('name' => 'fixpercent', 'object' => 'testcase', 'field' => 'fixpercent', 'type' => 'number'), 'havecase' => array('name' => 'havecase', 'object' => 'testcase', 'field' => 'havecase', 'type' => 'string') ), 'langs' => array ( 'fixpercent' => array('zh-cn' => '用例覆盖率', 'zh-tw' => '', 'en' => 'fixpercent', 'de' => '', 'fr' => ''), 'havecase' => array('zh-cn' => '是否有用例', 'zh-tw' => '', 'en' => 'havecase', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10208, 'name' => '质量数据-研发完成需求用例密度', 'code' => 'quality_storyCaseDensity_finished', 'dimension' => '3', 'type' => 'waterpolo', 'group' => '92', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'sum', 'goal' => 'casedensity', 'conditions' => array ( array('field' => 'havecase', 'condition' => 'eq', 'value' => 'havecase') ) ) ), 'filters' => array(), 'fields' => array ( 'casedensity' => array('name' => 'casedensity', 'object' => 'testcase', 'field' => 'casedensity', 'type' => 'number'), 'havecase' => array('name' => 'havecase', 'object' => 'testcase', 'field' => 'havecase', 'type' => 'string') ), 'langs' => array ( 'casedensity' => array('zh-cn' => '用例密度', 'zh-tw' => '', 'en' => 'casedensity', 'de' => '', 'fr' => ''), 'havecase' => array('zh-cn' => '是否有用例', 'zh-tw' => '', 'en' => 'havecase', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10209, 'name' => '质量数据-Bug密度', 'code' => 'quality_bugDensity', 'dimension' => '3', 'type' => 'waterpolo', 'group' => '91', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'sum', 'goal' => 'bugdensity', 'conditions' => array ( array('field' => 'havebug', 'condition' => 'eq', 'value' => 'havebug') ) ) ), 'filters' => array(), 'fields' => array ( 'bugdensity' => array('name' => 'bugdensity', 'object' => 'bug', 'field' => 'bugdensity', 'type' => 'number'), 'havebug' => array('name' => 'havebug', 'object' => 'bug', 'field' => 'havebug', 'type' => 'string') ), 'langs' => array ( 'bugdensity' => array('zh-cn' => 'Bug密度', 'zh-tw' => '', 'en' => 'bugdensity', 'de' => '', 'fr' => ''), 'havebug' => array('zh-cn' => '是否有Bug', 'zh-tw' => '', 'en' => 'havebug', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10210, 'name' => '质量数据-Bug修复率', 'code' => 'quality_bugFixedRatio', 'dimension' => '3', 'type' => 'waterpolo', 'group' => '91', 'sql' => << array ( array ( 'type' => 'waterpolo', 'calc' => 'sum', 'goal' => 'fixpercent', 'conditions' => array ( array('field' => 'havebug', 'condition' => 'eq', 'value' => 'havebug') ) ) ), 'filters' => array(), 'fields' => array ( 'fixpercent' => array('name' => 'fixpercent', 'object' => 'bug', 'field' => 'fixpercent', 'type' => 'number'), 'havebug' => array('name' => 'havebug', 'object' => 'bug', 'field' => 'havebug', 'type' => 'string') ), 'langs' => array ( 'fixpercent' => array('zh-cn' => 'Bug修复率', 'zh-tw' => '', 'en' => 'fixpercent', 'de' => '', 'fr' => ''), 'havebug' => array('zh-cn' => '是否有Bug', 'zh-tw' => '', 'en' => 'havebug', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10211, 'name' => '质量数据-Bug总数、有效Bug与解决Bug数近30天统计柱形图', 'code' => 'quality_bugDailyChart', 'dimension' => '3', 'type' => 'cluBarX', 'group' => '91', 'sql' => << (select DATE_sub(MAX(NOW()), INTERVAL '30' DAY)) and CAST(left(openedDate, 10) AS DATE) < NOW() and deleted='0' EOT , 'settings' => array ( array ( 'type' => 'cluBarX', 'xaxis' => array ( array('field' => '日期', 'name' => '日期', 'group' => 'day') ), 'yaxis' => array ( array('field' => 'Bug总数', 'name' => 'Bug总数', 'valOrAgg' => 'count'), array('field' => '有效Bug', 'name' => '有效Bug', 'valOrAgg' => 'sum'), array('field' => '已解决Bug', 'name' => '已解决Bug', 'valOrAgg' => 'sum') ) ) ), 'filters' => array(), 'fields' => array ( 'Bug总数' => array('name' => 'Bug总数', 'object' => 'bug', 'field' => 'Bug总数', 'type' => 'number'), '有效Bug' => array('name' => '有效Bug', 'object' => 'bug', 'field' => '有效Bug', 'type' => 'string'), '已解决Bug' => array('name' => '已解决Bug', 'object' => 'bug', 'field' => '已解决Bug', 'type' => 'string'), '日期' => array('name' => '日期', 'object' => 'bug', 'field' => '日期', 'type' => 'date') ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10212, 'name' => '质量数据-有效Bug率年度趋势图', 'code' => 'quality_validBugTendency', 'dimension' => '3', 'type' => 'line', 'group' => '91', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'year', 'name' => 'year', 'group' => '') ), 'yaxis' => array ( array('field' => 'effectiveBugRate', 'name' => 'effectiveBugRate', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'string'), 'totalBugCount' => array('name' => 'totalBugCount', 'object' => 'bug', 'field' => 'totalBugCount', 'type' => 'string'), 'effectiveBugCount' => array('name' => 'effectiveBugCount', 'object' => 'bug', 'field' => 'effectiveBugCount', 'type' => 'number'), 'effectiveBugRate' => array('name' => 'effectiveBugRate', 'object' => 'bug', 'field' => 'effectiveBugRate', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'Year', 'de' => '', 'fr' => ''), 'totalBugCount' => array('zh-cn' => 'Bug总数', 'zh-tw' => '', 'en' => 'Total Bug Count', 'de' => '', 'fr' => ''), 'effectiveBugCount' => array('zh-cn' => '有效Bug数', 'zh-tw' => '', 'en' => 'Effective Bug Count', 'de' => '', 'fr' => ''), 'effectiveBugRate' => array('zh-cn' => '有效Bug率', 'zh-tw' => '', 'en' => 'Effective Bug Rate', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10213, 'name' => '质量数据-Bug密度年度趋势图', 'code' => 'quality_bugDensityTendency', 'dimension' => '3', 'type' => 'line', 'group' => '91', 'sql' => << array ( array ( 'type' => 'line', 'xaxis' => array ( array('field' => 'year', 'name' => 'year', 'group' => '') ), 'yaxis' => array ( array('field' => 'bugCount', 'name' => 'Bug数', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'year', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( 'year' => array('name' => 'year', 'object' => 'story', 'field' => 'year', 'type' => 'string'), 'createdBugs' => array('name' => 'createdBugs', 'object' => 'story', 'field' => 'createdBugs', 'type' => 'string'), 'exfixedstoryestimate' => array('name' => 'exfixedstoryestimate', 'object' => 'story', 'field' => 'exfixedstoryestimate', 'type' => 'number'), 'bugCount' => array('name' => 'Bug数', 'object' => 'story', 'field' => 'bugCount', 'type' => 'number') ), 'langs' => array ( 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => 'Year', 'de' => '', 'fr' => ''), 'createdBugs' => array('zh-cn' => '产生Bug', 'zh-tw' => '', 'en' => 'Created Bug', 'de' => '', 'fr' => ''), 'exfixedstoryestimate' => array('zh-cn' => '完成需求数', 'zh-tw' => '', 'en' => 'Finished Story', 'de' => '', 'fr' => ''), 'bugCount' => array('zh-cn' => '单位完成需求规模产生的Bug数', 'zh-tw' => '', 'en' => 'Bug Density', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10214, 'name' => '质量数据-Bug严重程度年度堆积柱状图', 'code' => 'quality_bugAnnualSeverityChart', 'dimension' => '3', 'type' => 'stackedBar', 'group' => '91', 'sql' => << array ( array ( 'type' => 'stackedBar', 'xaxis' => array ( array('field' => '年份', 'name' => '年份', 'group' => '') ), 'yaxis' => array ( array('field' => '严重程度为1级的Bug', 'name' => '严重程度为1级的Bug', 'valOrAgg' => 'sum'), array('field' => '严重程度为2级的Bug', 'name' => '严重程度为2级的Bug', 'valOrAgg' => 'sum'), array('field' => '严重程度低于2级的Bug', 'name' => '严重程度低于2级的Bug', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => '年份', 'type' => 'select', 'name' => '年份') ), 'fields' => array ( '所有Bug数' => array('name' => '所有Bug数', 'object' => 'bug', 'field' => '所有Bug数', 'type' => 'string'), '严重程度为1级的Bug' => array('name' => '严重程度为1级的Bug', 'object' => 'bug', 'field' => '严重程度为1级的Bug', 'type' => 'number'), '严重程度为2级的Bug' => array('name' => '严重程度为2级的Bug', 'object' => 'bug', 'field' => '严重程度为2级的Bug', 'type' => 'number'), '严重程度低于2级的Bug' => array('name' => '严重程度低于2级的Bug', 'object' => 'bug', 'field' => '严重程度低于2级的Bug', 'type' => 'number'), '年份' => array('name' => '年份', 'object' => 'bug', 'field' => '年份', 'type' => 'string') ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 10215, 'name' => '质量数据-产品用例数量统计条形图', 'code' => 'quality_productCaseCountChart', 'dimension' => '3', 'type' => 'cluBarY', 'group' => '91', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => 'name', 'group' => '') ), 'yaxis' => array ( array('field' => 'count', 'name' => 'count', 'valOrAgg' => 'sum') ) ) ), 'filters' => array ( array('field' => 'name', 'type' => 'select', 'name' => '产品') ), 'fields' => array ( 'name' => array('name' => 'name', 'object' => 'product', 'field' => 'name', 'type' => 'string'), 'count' => array('name' => 'count', 'object' => 'testcase', 'field' => 'id', 'type' => 'string') ), 'langs' => array ( 'name' => array('zh-cn' => '产品名称', 'zh-tw' => '', 'en' => 'Product', 'de' => '', 'fr' => ''), 'count' => array('zh-cn' => '用例计数', 'zh-tw' => '', 'en' => 'Case Count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10216, 'name' => '质量数据-产品Bug数量统计条形图', 'code' => 'quality_productBugCountChart', 'dimension' => '3', 'type' => 'cluBarY', 'group' => '91', 'sql' => << array ( array ( 'type' => 'cluBarY', 'xaxis' => array ( array('field' => 'name', 'name' => 'name', 'group' => '') ), 'yaxis' => array ( array('field' => 'bug', 'name' => 'bug', 'valOrAgg' => 'sum') ), 'rotateX' => 'notuse' ) ), 'filters' => array ( array('field' => 'name', 'type' => 'select', 'name' => '产品') ), 'fields' => array ( 'name' => array('name' => 'name', 'object' => 'product', 'field' => 'name', 'type' => 'string'), 'bug' => array('name' => 'bug', 'object' => 'bug', 'field' => 'id', 'type' => 'string') ), 'langs' => array ( 'name' => array('zh-cn' => '产品名称', 'zh-tw' => '', 'en' => 'Product', 'de' => '', 'fr' => ''), 'bug' => array('zh-cn' => 'Bug计数', 'zh-tw' => '', 'en' => 'Bug Count', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10217, 'name' => '质量数据-Bug状态分布图', 'code' => 'quality_bugStatus', 'dimension' => '3', 'type' => 'pie', 'group' => '91', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'status', 'name' => 'Bug状态', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => 'Bug编号', 'valOrAgg' => 'count') ) ) ), 'filters' => array ( array ( 'field' => 'openedDate', 'type' => 'date', 'name' => '创建日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'id' => array('name' => 'Bug编号', 'object' => 'bug', 'field' => 'id', 'type' => 'number'), 'status' => array('name' => 'Bug状态', 'object' => 'bug', 'field' => 'status', 'type' => 'option'), 'openedDate' => array('name' => '创建日期', 'object' => 'bug', 'field' => 'openedDate', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => 'Bug编号', 'zh-tw' => '', 'en' => 'Bug ID', 'de' => '', 'fr' => ''), 'status' => array('zh-cn' => 'Bug状态', 'zh-tw' => '', 'en' => 'Status', 'de' => '', 'fr' => ''), 'openedDate' => array('zh-cn' => '创建日期', 'zh-tw' => '', 'en' => 'Opened Date', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10218, 'name' => '质量数据-Bug类型分布', 'code' => 'quality_bugType', 'dimension' => '3', 'type' => 'pie', 'group' => '91', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'type', 'name' => 'Bug类型', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => 'Bug编号', 'valOrAgg' => 'count') ) ) ), 'filters' => array ( array ( 'field' => 'openedDate', 'type' => 'date', 'name' => '创建日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'id' => array('name' => 'Bug编号', 'object' => 'bug', 'field' => 'id', 'type' => 'number'), 'type' => array('name' => 'Bug类型', 'object' => 'bug', 'field' => 'type', 'type' => 'option'), 'openedDate' => array('name' => '创建日期', 'object' => 'bug', 'field' => 'openedDate', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => 'Bug编号', 'zh-tw' => '', 'en' => 'Bug ID', 'de' => '', 'fr' => ''), 'type' => array('zh-cn' => 'Bug类型', 'zh-tw' => '', 'en' => 'Type', 'de' => '', 'fr' => ''), 'openedDate' => array('zh-cn' => '创建日期', 'zh-tw' => '', 'en' => 'Opened Date', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10219, 'name' => '质量数据-Bug严重程度分布', 'code' => 'quality_bugSeverity', 'dimension' => '3', 'type' => 'pie', 'group' => '91', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'severity', 'name' => '严重程度', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => 'Bug编号', 'valOrAgg' => 'count') ) ) ), 'filters' => array ( array ( 'field' => 'openedDate', 'type' => 'date', 'name' => '创建日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'id' => array('name' => 'Bug编号', 'object' => 'bug', 'field' => 'id', 'type' => 'number'), 'severity' => array('name' => '严重程度', 'object' => 'bug', 'field' => 'severity', 'type' => 'option'), 'openedDate' => array('name' => '创建日期', 'object' => 'bug', 'field' => 'openedDate', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => 'Bug编号', 'zh-tw' => '', 'en' => 'Bug ID', 'de' => '', 'fr' => ''), 'severity' => array('zh-cn' => '严重程度', 'zh-tw' => '', 'en' => 'Severity', 'de' => '', 'fr' => ''), 'openedDate' => array('zh-cn' => '创建日期', 'zh-tw' => '', 'en' => 'Opened Date', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 10220, 'name' => '质量数据-Bug解决方案分布', 'code' => 'quality_bugResolution', 'dimension' => '3', 'type' => 'pie', 'group' => '91', 'sql' => << array ( array ( 'type' => 'pie', 'group' => array ( array('field' => 'resolution', 'name' => '解决方案', 'group' => '') ), 'metric' => array ( array('field' => 'id', 'name' => 'Bug编号', 'valOrAgg' => 'count') ) ) ), 'filters' => array ( array ( 'field' => 'resolvedDate', 'type' => 'date', 'name' => '解决日期', 'default' => array('begin' => '', 'end' => '') ) ), 'fields' => array ( 'id' => array('name' => 'Bug编号', 'object' => 'bug', 'field' => 'id', 'type' => 'number'), 'resolution' => array('name' => '解决方案', 'object' => 'bug', 'field' => 'resolution', 'type' => 'option'), 'resolvedDate' => array('name' => '解决日期', 'object' => 'bug', 'field' => 'resolvedDate', 'type' => 'date') ), 'langs' => array ( 'id' => array('zh-cn' => 'Bug编号', 'zh-tw' => '', 'en' => 'Bug ID', 'de' => '', 'fr' => ''), 'resolution' => array('zh-cn' => '解决方案', 'zh-tw' => '', 'en' => 'Resolution', 'de' => '', 'fr' => ''), 'resolvedDate' => array('zh-cn' => '解决日期', 'zh-tw' => '', 'en' => 'Resolved Date', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 20002, 'name' => '活跃账号情况-活跃账号数项目间对比', 'code' => 'activeAccount_projectCompare', 'dimension' => '1', 'type' => 'table', 'group' => '62', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'activeAccount', 'valOrAgg' => 'value', 'name' => '活跃账号数'), array('field' => 'totalAccount', 'valOrAgg' => 'value', 'name' => '团队账号数'), array('field' => 'ratio', 'valOrAgg' => 'value', 'name' => '活跃账号比') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20003, 'name' => '活跃账号情况-公司账号日活跃度趋势', 'code' => 'activeAccount_activeTendency', 'dimension' => '1', 'type' => 'line', 'group' => '56', 'sql' => << array ( 'xaxis' => array ( array('field' => 'day', 'name' => '日期', 'group' => 'value') ), 'yaxis' => array ( array('type' => 'value', 'field' => 'count', 'agg' => 'value', 'name' => '数量', 'valOrAgg' => 'value') ) ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20004, 'name' => '应用数据-活跃产品数', 'code' => 'appData_activeProduct', 'dimension' => '1', 'type' => 'card', 'group' => '47', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'count', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20005, 'name' => '应用数据-本月新增产品数', 'code' => 'appData_createdProductCount', 'dimension' => '1', 'type' => 'card', 'group' => '47', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'count', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20006, 'name' => '应用数据-本月新增产品名', 'code' => 'appData_createdProductName', 'dimension' => '1', 'type' => 'card', 'group' => '47', 'sql' => << array ( 'value' => array('type' => 'text', 'field' => 'name', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20007, 'name' => '应用数据-活跃项目数', 'code' => 'appData_activeProject', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'count', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20008, 'name' => '应用数据-本月新增项目数', 'code' => 'appData_createdProjectCount', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'count', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20009, 'name' => '应用数据-本月新增项目名 ', 'code' => 'appData_createdProjectName', 'dimension' => '1', 'type' => 'card', 'group' => '46', 'sql' => << array ( 'value' => array('type' => 'text', 'field' => 'name', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20010, 'name' => '应用数据-项目任务概况表', 'code' => 'appData_projectTaskOverview', 'dimension' => '1', 'type' => 'table', 'group' => '60', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'createdTasks', 'valOrAgg' => 'value', 'name' => '新增任务数'), array('field' => 'contributors', 'valOrAgg' => 'value', 'name' => '新增任务人数'), array('field' => 'finishedTasks', 'valOrAgg' => 'value', 'name' => '完成任务数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20011, 'name' => '应用数据-产品测试表', 'code' => 'appData_productTest', 'dimension' => '1', 'type' => 'table', 'group' => '63', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '产品'), array('field' => 'createdCases', 'valOrAgg' => 'value', 'name' => '新增用例数'), array('field' => 'avgBugsOfCase', 'valOrAgg' => 'value', 'name' => '用例平均Bug数'), array('field' => 'createdBugs', 'valOrAgg' => 'value', 'name' => '新增Bug数'), array('field' => 'fixedBugs', 'valOrAgg' => 'value', 'name' => '修复Bug数'), array('field' => 'avgFixedCycle', 'valOrAgg' => 'value', 'name' => 'Bug平均修复周期') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20012, 'name' => '应用数据-产品需求概况表', 'code' => 'appData_productStoryOverview', 'dimension' => '1', 'type' => 'table', 'group' => '63', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '产品'), array('field' => 'createdStories', 'valOrAgg' => 'value', 'name' => '新增研发需求数'), array('field' => 'deliveredStories', 'valOrAgg' => 'value', 'name' => '交付需求数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20013, 'name' => '应用数据-项目需求概况表', 'code' => 'appData_projectStoryOverview', 'dimension' => '1', 'type' => 'table', 'group' => '60', 'sql' => << array ( 'group' => array(), 'column' => array ( array('field' => 'name', 'valOrAgg' => 'value', 'name' => '项目'), array('field' => 'createdStories', 'valOrAgg' => 'value', 'name' => '新增研发需求数'), array('field' => 'deliveredStories', 'valOrAgg' => 'value', 'name' => '交付需求数') ), 'filter' => array() ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20014, 'name' => '使用数据分析-当前版本', 'code' => 'appData_currentVersion', 'dimension' => '1', 'type' => 'card', 'group' => '58', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'version', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 20015, 'name' => '使用数据分析-上线时间', 'code' => 'appData_onlineDate', 'dimension' => '1', 'type' => 'card', 'group' => '58', 'sql' => << array ( 'value' => array('type' => 'value', 'field' => 'date', 'agg' => 'value'), 'title' => array('type' => 'text', 'name' => ''), 'type' => 'value' ), 'filters' => array(), 'stage' => 'published', 'builtin' => '1' ); $config->bi->builtin->charts[] = array ( 'id' => 30000, 'name' => '流水线执行趋势图', 'code' => 'pipelineExecTrend', 'dimension' => '1', 'type' => 'line', 'group' => '103', 'sql' => << 0 ORDER BY base.`year`, base.`month`, base.`day` LIMIT 999999; EOT , 'settings' => array( array( 'type' => 'line', 'xaxis' => array( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array( array('field' => 'execNum', 'name' => 'execNum', 'valOrAgg' => 'sum'), array('field' => 'successNum', 'name' => 'successNum', 'valOrAgg' => 'sum') ) ), ), 'filters' => array(), 'fields' => array( 'YEARMONTH' => array('name' => 'YEARMONTH', 'object' => 'compile', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array('name' => 'year', 'object' => 'compile', 'field' => 'year', 'type' => 'number'), 'month' => array('name' => 'month', 'object' => 'compile', 'field' => 'month', 'type' => 'string'), 'day' => array('name' => 'day', 'object' => 'compile', 'field' => 'day', 'type' => 'string'), 'execNum' => array('name' => 'execNum', 'object' => 'compile', 'field' => 'execNum', 'type' => 'string'), 'successNum' => array('name' => 'successNum', 'object' => 'compile', 'field' => 'successNum', 'type' => 'number') ), 'langs' => array( 'YEARMONTH' => array('zh-cn' => '日期', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'day' => array('zh-cn' => '天', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'execNum' => array('zh-cn' => '执行总数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'successNum' => array('zh-cn' => '成功数量', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' ); $config->bi->builtin->charts[] = array ( 'id' => 30001, 'name' => '代码问题趋势图', 'code' => 'repoIssueTrend', 'dimension' => '1', 'type' => 'line', 'group' => '103', 'sql' => << 0 AND deleted = '0' GROUP BY DATE(openedDate) ) new_bugs ON base_dates.date = new_bugs.bug_date LEFT JOIN ( SELECT DATE(resolvedDate) as bug_date, COUNT(1) as bug_count FROM zt_bug WHERE repo > 0 AND deleted = '0' GROUP BY DATE(resolvedDate) ) resolved_bugs ON base_dates.date = resolved_bugs.bug_date WHERE YEAR(base_dates.date) > 0 ORDER BY base_dates.date LIMIT 999999 EOT , 'settings' => array( array( 'type' => 'line', 'xaxis' => array( array('field' => 'YEARMONTH', 'name' => 'YEARMONTH', 'group' => '') ), 'yaxis' => array( array('field' => 'newIssue', 'name' => 'newIssue', 'valOrAgg' => 'sum'), array('field' => 'resolvedIssue', 'name' => 'resolvedIssue', 'valOrAgg' => 'sum') ) ), ), 'filters' => array(), 'fields' => array ( 'YEARMONTH' => array ('name' => 'YEARMONTH', 'object' => 'bug', 'field' => 'YEARMONTH', 'type' => 'string'), 'year' => array ('name' => 'year', 'object' => 'bug', 'field' => 'year', 'type' => 'number'), 'month' => array ('name' => 'month', 'object' => 'bug', 'field' => 'month', 'type' => 'string'), 'day' => array ('name' => 'day', 'object' => 'bug', 'field' => 'day', 'type' => 'string'), 'newIssue' => array ('name' => 'newIssue', 'object' => 'bug', 'field' => 'newIssue', 'type' => 'string'), 'resolvedIssue' => array ('name' => 'resolvedIssue', 'object' => 'bug', 'field' => 'resolvedIssue', 'type' => 'string') ), 'langs' => array( 'YEARMONTH' => array('zh-cn' => '日期', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'year' => array('zh-cn' => '年份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'month' => array('zh-cn' => '月份', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'day' => array('zh-cn' => '天', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'newIssue' => array('zh-cn' => '新增问题数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => ''), 'resolvedIssue' => array('zh-cn' => '解决问题数', 'zh-tw' => '', 'en' => '', 'de' => '', 'fr' => '') ), 'stage' => 'published', 'builtin' => '0' );