diff --git a/db/update18.3.sql b/db/update18.3.sql index 1b194750df..49be448861 100644 --- a/db/update18.3.sql +++ b/db/update18.3.sql @@ -1,3 +1,4 @@ +DELETE FROM `zt_chart` where id = '1048'; DROP TABLE IF EXISTS `zt_dimension`; CREATE TABLE IF NOT EXISTS `zt_dimension` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, diff --git a/db/zentao.sql b/db/zentao.sql index c55948e697..1468b15a8c 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -14051,7 +14051,6 @@ REPLACE INTO `zt_chart` (`id`, `name`, `dimension`, `type`, `group`, `stage`, `d (1045, '宏观数据-产品数据概览',1,'table',0,'published','','','{\"group\":[],\"column\":[\r\n{\"field\":\"program\",\"valOrAgg\":\"value\",\"name\":\"一级项目集\"},{\"field\":\"productLine\",\"valOrAgg\":\"value\",\"name\":\"产品线\"},\r\n{\"field\":\"product\",\"valOrAgg\":\"value\",\"name\":\"产品\"},\r\n{\"field\":\"story\",\"valOrAgg\":\"value\",\"name\":\"需求数\"},\r\n{\"field\":\"bug\",\"valOrAgg\":\"value\",\"name\":\"Bug数\"},\r\n{\"field\":\"plan\",\"valOrAgg\":\"value\",\"name\":\"计划数\"},\r\n{\"field\":\"release\",\"valOrAgg\":\"value\",\"name\":\"发布数\"}],\"filter\":[]}','[]','','SELECT \r\n t1.name AS product, \r\n IFNULL(t2.name, \'/\') AS program, \r\n IFNULL(t3.name, \'/\') AS productLine, \r\n IFNULL(t4.plan, 0) AS plan, \r\n IFNULL(t5.release, 0) AS `release`, \r\n IFNULL(t6.story, 0) AS story, \r\n IFNULL(t7.bug, 0) AS bug \r\nFROM \r\n zt_product AS t1 \r\n LEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \r\n LEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \r\n LEFT JOIN (SELECT product, COUNT(1) AS plan FROM zt_productplan WHERE deleted = \'0\' GROUP BY product) AS t4 ON t1.id = t4.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS `release` FROM zt_release WHERE deleted = \'0\' GROUP BY product) AS t5 ON t1.id = t5.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' GROUP BY product) AS t6 ON t1.id = t6.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' GROUP BY product) AS t7 ON t1.id = t7.product \r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\'AND t1.vision = \'rnd\'\r\nORDER BY t1.order',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), (1046, '宏观数据-产品需求完成率',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"product\",\"name\":\"产品\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"closedRate\",\"agg\":\"value\",\"name\":\"需求完成率\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT\r\n t1.name AS product,\r\n IFNULL(t2.name, \'/\') AS program, \r\n IFNULL(t3.name, \'/\') AS productLine, \r\n IFNULL(t4.story, 0) AS closedStory, \r\n t5.story AS totalStory, \r\n ROUND(IFNULL(t4.story, 0) / t5.story * 100, 2) AS closedRate \r\nFROM zt_product AS t1 \r\nLEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \r\nLEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \r\nLEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' AND closedReason = \'done\' GROUP BY product) AS t4 ON t1.id = t4.product \r\nLEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' AND ( closedReason = \'done\' OR status != \'closed\') GROUP BY product) AS t5 ON t1.id = t5.product \r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\' AND t1.vision = \'rnd\' AND t5.story IS NOT NULL \r\nORDER BY t1.order DESC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), (1047, '宏观数据-产品Bug修复率',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"product\",\"name\":\"产品\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"fixedRate\",\"agg\":\"value\",\"name\":\"Bug修复率\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT \r\n t1.name AS product,\r\n IFNULL(t2.name, \'/\') AS program,\r\n IFNULL(t3.name, \'/\') AS productLine,\r\n IFNULL(t4.bug, 0) AS fixedBug,\r\n t5.bug AS totalBug,\r\n ROUND(IFNULL(t4.bug, 0) / t5.bug * 100, 2) AS fixedRate\r\nFROM zt_product AS t1\r\nLEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1\r\nLEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\'\r\nLEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' AND resolution = \'fixed\' AND status = \'closed\' GROUP BY product) AS t4 ON t1.id = t4.product\r\nLEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' AND (resolution = \'fixed\' OR resolution = \'postponed\' OR status = \'active\') GROUP BY product) AS t5 ON t1.id = t5.product\r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\' AND t1.vision = \'rnd\' AND t5.bug IS NOT NULL\r\nORDER BY t1.order DESC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), -(1048, '宏观数据-公司组织结构图',1,'org',0,'published','','','','[]','','',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), (1049, '宏观数据-部门人员分布图',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"deptName\",\"name\":\"部门\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"count\",\"agg\":\"value\",\"name\":\"部门人数\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT IF(t3.id IS NOT NULL, t3.`name`, \'空\') AS deptName,count(1) as count, \r\nIF(t3.id IS NOT NULL, t3.`order`, 9999) AS deptOrder \r\nFROM `zt_user` AS t1 \r\nLEFT JOIN `zt_dept` AS t2 ON t1.dept = t2.id\r\nLEFT JOIN `zt_dept` AS t3 ON FIND_IN_SET(TRIM(\',\' FROM t3.path), TRIM(\',\' FROM t2.path)) AND t3.grade = \'1\'\r\nWHERE t1.deleted = \'0\'\r\nGROUP BY deptName, deptOrder \r\nORDER BY deptOrder ASC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), (1050, '宏观数据-公司角色分布图',1,'pie',0,'published','','','{\"group\":[{\"field\":\"role\",\"name\":\"类型\"}],\"metric\":[{\"type\":\"agg\",\"field\":\"account\",\"agg\":\"count\",\"name\":\"人数\",\"valOrAgg\":\"count\"}]}','[]','','SELECT\n account,\nCASE\n ROLE \n WHEN \'dev\' THEN\n \'研发\' \n WHEN \'qa\' THEN\r\n \'测试\'\r\n WHEN \'pm\' THEN\r\n \'项目经理\'\r\n WHEN \'others\' THEN\r\n \'其他\'\r\n WHEN \'td\' THEN\r\n \'研发主管\'\r\n WHEN \'pd\' THEN\r\n \'产品主管\'\r\n WHEN \'po\' THEN\r\n \'产品经理\'\r\n WHEN \'qd\' THEN\r\n \'测试主管\'\r\n WHEN \'top\' THEN\r\n \'高层管理\'\r\n ELSE\r\n \'未知\'\r\n END\r\n role\n FROM\n `zt_user` \n WHERE\n deleted = \'0\' ',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), (1051, '宏观数据-人员工龄分布图',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"joinDate\",\"name\":\"工龄\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"count\",\"agg\":\"value\",\"name\":\"人数\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT count(1) as count, \'0-1年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 1 YEAR)\r\nunion\r\nSELECT 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)\r\nunion\r\nSELECT 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)\r\nunion\r\nSELECT 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)\r\nunion\r\nSELECT 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\'\r\nunion \r\nSELECT count(1) as count, \'未知\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND LEFT(`join`, 4) = \'0000\'',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0), diff --git a/module/dimension/config.php b/module/dimension/config.php index 40155356a9..db574e1936 100644 --- a/module/dimension/config.php +++ b/module/dimension/config.php @@ -4,4 +4,114 @@ $config->dimension->changeDimensionLink['screen-browse'] = 'screen|browse|dimens $config->dimension->changeDimensionLink['pivot-preview'] = 'pivot|preview|dimensionID=%s'; $config->dimension->changeDimensionLink['chart-preview'] = 'chart|preview|dimensionID=%s'; -$config->dimension->defaultDimension = array('macro', 'efficiency', 'quality'); +$config->dimension->defaultDimension = array('macro', 'efficiency', 'quality'); + +/* Pivot second module list. */ +$config->dimension->pivotModuleList = array(); +$config->dimension->pivotModuleList['macro'] = array(); +$config->dimension->pivotModuleList['macro']['staff'] = 'program'; +$config->dimension->pivotModuleList['macro']['product'] = 'product'; + +$config->dimension->pivotModuleList['efficiency'] = array(); +$config->dimension->pivotModuleList['efficiency']['project'] = 'project,progress,cost,timelimit'; + +$config->dimension->pivotModuleList['quality'] = array(); +$config->dimension->pivotModuleList['quality']['test'] = 'bug'; + +/* Chart second module list. */ +$config->dimension->chartModuleList = array(); +$config->dimension->chartModuleList['macro'] = array(); +$config->dimension->chartModuleList['macro']['staff'] = 'program,project,product,plan,execution,release,story,task,bug,doc,cost,personnel,effort,behavior'; +$config->dimension->chartModuleList['macro']['product'] = 'story,release'; +$config->dimension->chartModuleList['macro']['test'] = 'bug'; +$config->dimension->chartModuleList['macro']['project'] = 'project,task,execution,cost,timelimit,story'; + +$config->dimension->chartModuleList['efficiency'] = array(); +$config->dimension->chartModuleList['efficiency']['staff'] = 'project,execution,release,story,task,bug,cost'; +$config->dimension->chartModuleList['efficiency']['project'] = 'progress,cost,timelimit'; + +$config->dimension->chartModuleList['quality'] = array(); +$config->dimension->chartModuleList['quality']['staff'] = 'story,bug,testcase'; +$config->dimension->chartModuleList['quality']['test'] = 'bug,testcase'; + +/* Pivot upgrade group. */ +$config->dimension->pivotUpgrade = array(); +$config->dimension->pivotUpgrade['macro'] = array(); +$config->dimension->pivotUpgrade['macro']['staff'] = array(); +$config->dimension->pivotUpgrade['macro']['staff']['program'] = array('chart' => '1041,1073,1074'); +$config->dimension->pivotUpgrade['macro']['product'] = array(); +$config->dimension->pivotUpgrade['macro']['product']['product'] = array('chart' => '1045,1075,1076'); + +$config->dimension->pivotUpgrade['efficiency'] = array(); +$config->dimension->pivotUpgrade['efficiency']['project'] = array(); +$config->dimension->pivotUpgrade['efficiency']['project']['project'] = array('chart' => '10118,10119'); +$config->dimension->pivotUpgrade['efficiency']['project']['progress'] = array('chart' => '10116,10117'); +$config->dimension->pivotUpgrade['efficiency']['project']['cost'] = array('pivot' => '1001'); +$config->dimension->pivotUpgrade['efficiency']['project']['timelimit'] = array('pivot' => '1000'); + +$config->dimension->pivotUpgrade['quality'] = array(); +$config->dimension->pivotUpgrade['quality']['test'] = array(); +$config->dimension->pivotUpgrade['quality']['test']['bug'] = array('pivot' => '1002'); + +/* Chart upgrade group. */ +$config->dimension->chartUpgrade['macro'] = array(); +$config->dimension->chartUpgrade['macro']['staff'] = array(); +$config->dimension->chartUpgrade['macro']['staff']['program'] = array('chart' => '1018,1033,1042,1043,1055,1083'); +$config->dimension->chartUpgrade['macro']['staff']['project'] = array('chart' => '1019,1036,1060,1066'); +$config->dimension->chartUpgrade['macro']['staff']['product'] = array('chart' => '1020,1035,1056'); +$config->dimension->chartUpgrade['macro']['staff']['plan'] = array('chart' => '1021,1037,1059'); +$config->dimension->chartUpgrade['macro']['staff']['execution'] = array('chart' => '1022,1038,1061,1067'); +$config->dimension->chartUpgrade['macro']['staff']['release'] = array('chart' => '1023,1064,1068'); +$config->dimension->chartUpgrade['macro']['staff']['story'] = array('chart' => '1024,1034,1057,1069'); +$config->dimension->chartUpgrade['macro']['staff']['task'] = array('chart' => '1025,1040,1062,1071'); +$config->dimension->chartUpgrade['macro']['staff']['bug'] = array('chart' => '1026,1039,1058,1070'); +$config->dimension->chartUpgrade['macro']['staff']['doc'] = array('chart' => '1027,1063'); +$config->dimension->chartUpgrade['macro']['staff']['cost'] = array('chart' => '1028,1029'); +$config->dimension->chartUpgrade['macro']['staff']['personnel'] = array('chart' => '1049,1050,1051,1065,1105,1106,1107,1108,1109,1110'); +$config->dimension->chartUpgrade['macro']['staff']['effort'] = array('chart' => '1072'); +$config->dimension->chartUpgrade['macro']['staff']['behavior'] = array('chart' => '1030'); + +$config->dimension->chartUpgrade['macro']['product'] = array(); +$config->dimension->chartUpgrade['macro']['product']['story'] = array('chart' => '1031,1046,1077,1088,1089,1091,1092,1099,1101,1102'); +$config->dimension->chartUpgrade['macro']['product']['release'] = array('chart' => '1082'); + +$config->dimension->chartUpgrade['macro']['test'] = array(); +$config->dimension->chartUpgrade['macro']['test']['bug'] = array('chart' => '1032,1047,1078,1090,1093,1103,1104'); + +$config->dimension->chartUpgrade['macro']['project'] = array(); +$config->dimension->chartUpgrade['macro']['project']['project'] = array('chart' => '1044,1080'); +$config->dimension->chartUpgrade['macro']['project']['task'] = array('chart' => '1079'); +$config->dimension->chartUpgrade['macro']['project']['execution'] = array('chart' => '1081'); +$config->dimension->chartUpgrade['macro']['project']['cost'] = array('chart' => '1085,1086,1097,1087,1098'); +$config->dimension->chartUpgrade['macro']['project']['timelimit'] = array('chart' => '1094,1096'); +$config->dimension->chartUpgrade['macro']['project']['story'] = array('chart' => '1091,1100'); + +$config->dimension->chartUpgrade['efficiency'] = array(); +$config->dimension->chartUpgrade['efficiency']['staff'] = array(); +$config->dimension->chartUpgrade['efficiency']['staff']['project'] = array('chart' => '10000,10001,10002,10101,10103,10105,10107'); +$config->dimension->chartUpgrade['efficiency']['staff']['execution'] = array('chart' => '10007,10008,10009,10102,10104,10106,10107'); +$config->dimension->chartUpgrade['efficiency']['staff']['release'] = array('chart' => '10005'); +$config->dimension->chartUpgrade['efficiency']['staff']['story'] = array('chart' => '10003,10004,10109,10111'); +$config->dimension->chartUpgrade['efficiency']['staff']['task'] = array('chart' => '10010,10110'); +$config->dimension->chartUpgrade['efficiency']['staff']['bug'] = array('chart' => '1070'); +$config->dimension->chartUpgrade['efficiency']['staff']['cost'] = array('chart' => '10011,10012,10013,10112,10113'); + +$config->dimension->chartUpgrade['efficiency']['project'] = array(); +$config->dimension->chartUpgrade['efficiency']['project']['progress'] = array('chart' => '10114,10115'); +$config->dimension->chartUpgrade['efficiency']['project']['cost'] = array(); +$config->dimension->chartUpgrade['efficiency']['project']['timelimit'] = array('chart' => '10014,10015,10016,10017,10020,10021,10018,10019'); + +$config->dimension->chartUpgrade['quality'] = array(); +$config->dimension->chartUpgrade['quality']['staff'] = array(); +$config->dimension->chartUpgrade['quality']['staff']['story'] = array('chart' => '10201,10202'); +$config->dimension->chartUpgrade['quality']['staff']['bug'] = array('chart' => '10204,10205,10206'); +$config->dimension->chartUpgrade['quality']['staff']['testcase'] = array('chart' => '10203'); + +$config->dimension->chartUpgrade['quality']['test'] = array(); +$config->dimension->chartUpgrade['quality']['test']['bug'] = array('chart' => '10209,10210,1014,10211,10219,10212,10218,10214,10220,10213,10216'); +$config->dimension->chartUpgrade['quality']['test']['testcase'] = array('chart' => '10208,10215'); + +$config->dimension->secondModuleList = array(); +$config->dimension->secondModuleList['macro'] = array('pivot' => $config->dimension->pivotModuleList['macro'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['macro'], 'chart' => $config->dimension->chartModuleList['macro'], 'chartUpgrade' => $config->dimension->chartUpgrade['macro']); +$config->dimension->secondModuleList['efficiency'] = array('pivot' => $config->dimension->pivotModuleList['efficiency'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['efficiency'], 'chart' => $config->dimension->chartModuleList['efficiency'], 'chartUpgrade' => $config->dimension->chartUpgrade['efficiency']); +$config->dimension->secondModuleList['quality'] = array('pivot' => $config->dimension->pivotModuleList['quality'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['quality'], 'chart' => $config->dimension->chartModuleList['quality'], 'chartUpgrade' => $config->dimension->chartUpgrade['quality']); diff --git a/module/dimension/lang/de.php b/module/dimension/lang/de.php index 9627dff89d..1f13a52b69 100644 --- a/module/dimension/lang/de.php +++ b/module/dimension/lang/de.php @@ -9,3 +9,21 @@ $lang->dimension->moduleList['product'] = $lang->productCommon; $lang->dimension->moduleList['project'] = $lang->projectCommon; $lang->dimension->moduleList['test'] = 'QA'; $lang->dimension->moduleList['staff'] = 'Company'; + +$lang->dimension->modules = array(); +$lang->dimension->modules['program'] = $lang->program->common; +$lang->dimension->modules['project'] = $lang->projectCommon; +$lang->dimension->modules['product'] = $lang->productCommon; +$lang->dimension->modules['plan'] = 'Plan'; +$lang->dimension->modules['execution'] = $lang->executionCommon; +$lang->dimension->modules['release'] = $lang->release->common; +$lang->dimension->modules['story'] = $lang->SRCommon; +$lang->dimension->modules['task'] = $lang->task->common; +$lang->dimension->modules['bug'] = $lang->bug->common; +$lang->dimension->modules['doc'] = $lang->doc->common; +$lang->dimension->modules['cost'] = 'Cost'; +$lang->dimension->modules['personnel'] = 'Personnel'; +$lang->dimension->modules['effort'] = 'Effort'; +$lang->dimension->modules['timelimit'] = 'Time limit'; +$lang->dimension->modules['progress'] = 'Progress'; +$lang->dimension->modules['testcase'] = $lang->testcase->common; diff --git a/module/dimension/lang/en.php b/module/dimension/lang/en.php index 9627dff89d..1f13a52b69 100644 --- a/module/dimension/lang/en.php +++ b/module/dimension/lang/en.php @@ -9,3 +9,21 @@ $lang->dimension->moduleList['product'] = $lang->productCommon; $lang->dimension->moduleList['project'] = $lang->projectCommon; $lang->dimension->moduleList['test'] = 'QA'; $lang->dimension->moduleList['staff'] = 'Company'; + +$lang->dimension->modules = array(); +$lang->dimension->modules['program'] = $lang->program->common; +$lang->dimension->modules['project'] = $lang->projectCommon; +$lang->dimension->modules['product'] = $lang->productCommon; +$lang->dimension->modules['plan'] = 'Plan'; +$lang->dimension->modules['execution'] = $lang->executionCommon; +$lang->dimension->modules['release'] = $lang->release->common; +$lang->dimension->modules['story'] = $lang->SRCommon; +$lang->dimension->modules['task'] = $lang->task->common; +$lang->dimension->modules['bug'] = $lang->bug->common; +$lang->dimension->modules['doc'] = $lang->doc->common; +$lang->dimension->modules['cost'] = 'Cost'; +$lang->dimension->modules['personnel'] = 'Personnel'; +$lang->dimension->modules['effort'] = 'Effort'; +$lang->dimension->modules['timelimit'] = 'Time limit'; +$lang->dimension->modules['progress'] = 'Progress'; +$lang->dimension->modules['testcase'] = $lang->testcase->common; diff --git a/module/dimension/lang/fr.php b/module/dimension/lang/fr.php index 9627dff89d..1f13a52b69 100644 --- a/module/dimension/lang/fr.php +++ b/module/dimension/lang/fr.php @@ -9,3 +9,21 @@ $lang->dimension->moduleList['product'] = $lang->productCommon; $lang->dimension->moduleList['project'] = $lang->projectCommon; $lang->dimension->moduleList['test'] = 'QA'; $lang->dimension->moduleList['staff'] = 'Company'; + +$lang->dimension->modules = array(); +$lang->dimension->modules['program'] = $lang->program->common; +$lang->dimension->modules['project'] = $lang->projectCommon; +$lang->dimension->modules['product'] = $lang->productCommon; +$lang->dimension->modules['plan'] = 'Plan'; +$lang->dimension->modules['execution'] = $lang->executionCommon; +$lang->dimension->modules['release'] = $lang->release->common; +$lang->dimension->modules['story'] = $lang->SRCommon; +$lang->dimension->modules['task'] = $lang->task->common; +$lang->dimension->modules['bug'] = $lang->bug->common; +$lang->dimension->modules['doc'] = $lang->doc->common; +$lang->dimension->modules['cost'] = 'Cost'; +$lang->dimension->modules['personnel'] = 'Personnel'; +$lang->dimension->modules['effort'] = 'Effort'; +$lang->dimension->modules['timelimit'] = 'Time limit'; +$lang->dimension->modules['progress'] = 'Progress'; +$lang->dimension->modules['testcase'] = $lang->testcase->common; diff --git a/module/dimension/lang/zh-cn.php b/module/dimension/lang/zh-cn.php index 5972bd2810..8193c03d51 100644 --- a/module/dimension/lang/zh-cn.php +++ b/module/dimension/lang/zh-cn.php @@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon; $lang->dimension->moduleList['project'] = $lang->projectCommon; $lang->dimension->moduleList['test'] = '测试'; $lang->dimension->moduleList['staff'] = '组织'; + +$lang->dimension->modules = array(); +$lang->dimension->modules['program'] = $lang->program->common; +$lang->dimension->modules['project'] = $lang->projectCommon; +$lang->dimension->modules['product'] = $lang->productCommon; +$lang->dimension->modules['plan'] = '计划'; +$lang->dimension->modules['execution'] = $lang->executionCommon; +$lang->dimension->modules['release'] = $lang->release->common; +$lang->dimension->modules['story'] = $lang->SRCommon; +$lang->dimension->modules['task'] = $lang->task->common; +$lang->dimension->modules['bug'] = $lang->bug->common; +$lang->dimension->modules['doc'] = $lang->doc->common; +$lang->dimension->modules['cost'] = '成本'; +$lang->dimension->modules['personnel'] = '人员'; +$lang->dimension->modules['effort'] = '工时'; +$lang->dimension->modules['timelimit'] = '工期'; +$lang->dimension->modules['progress'] = '进度'; +$lang->dimension->modules['testcase'] = $lang->testcase->common; +$lang->dimension->modules['behavior'] = '行为'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 4fc1fb65c7..4b4ed2d622 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -8224,13 +8224,68 @@ class upgradeModel extends model $this->dao->insert(TABLE_DIMENSION)->data($dimension)->exec(); $dimensionID = $this->dao->lastInsertID(); - $this->addDefaultModules4BI('chart', $dimensionID); - $this->addDefaultModules4BI('pivot', $dimensionID); + $chartModules = $this->addDefaultModules4BI('chart', $dimensionID); + $this->addSecondModule4BI($dimensionID, $dimensionName, 'chart', $chartModules); + + $pivotModules = $this->addDefaultModules4BI('pivot', $dimensionID); + $this->addSecondModule4BI($dimensionID, $dimensionName, 'pivot', $pivotModules); } return !dao::isError(); } + /** + * Add second modules for bi, move buildin chart and pivot to second modules. + * + * @access public + * @return bool + */ + public function addSecondModule4BI($dimensionID, $dimensionName, $module, $modules) + { + $this->loadModel('dimension'); + + $listIndex = $module . 'Upgrade'; + $secondModules = $this->config->dimension->secondModuleList[$dimensionName][$module]; + $updateInfos = $this->config->dimension->secondModuleList[$dimensionName][$listIndex]; + + foreach($modules as $moduleName => $parentID) + { + $insertModules = isset($secondModules[$moduleName]) ? explode(',', $secondModules[$moduleName]) : array(); + if(empty($insertModules)) continue; + + $i = 1; + foreach($insertModules as $moduleCode) + { + $data = new stdclass(); + $data->root = $dimensionID; + $data->name = $this->lang->dimension->modules[$moduleCode]; + $data->parent = $parentID; + $data->grade = 2; + $data->order = 10 * $i; + $data->type = $module; + $i ++; + + $this->dao->insert(TABLE_MODULE)->data($data)->exec(); + $lastGroupID = $this->dao->lastInsertID(); + + $path = ',' . $parentID . ',' . $lastGroupID . ','; + $this->dao->update(TABLE_MODULE)->set("`path`")->eq($path)->where('id')->eq($lastGroupID)->exec(); + + $updateArr = isset($updateInfos[$moduleName][$moduleCode]) ? $updateInfos[$moduleName][$moduleCode] : array(); + if(!empty($updateArr)) + { + foreach($updateArr as $type => $idString) + { + $table = $type == 'chart' ? TABLE_CHART : TABLE_PIVOT; + $idList = explode(',', $idString); + + $this->dao->update($table)->set('group')->eq($lastGroupID)->set('dimension')->eq($dimensionID)->where('id')->in($idList)->exec(); + } + } + } + } + } + /** * Add update2BI mark to zt_config. * diff --git a/www/static/images/bi_guide_biz_en.png b/www/static/images/bi_guide_biz_en.png index 15bc63485b..fe3622860d 100644 Binary files a/www/static/images/bi_guide_biz_en.png and b/www/static/images/bi_guide_biz_en.png differ diff --git a/www/static/images/bi_guide_biz_zh.png b/www/static/images/bi_guide_biz_zh.png index ca9d443658..1fe1932b0d 100644 Binary files a/www/static/images/bi_guide_biz_zh.png and b/www/static/images/bi_guide_biz_zh.png differ diff --git a/www/static/images/bi_guide_pms_en.png b/www/static/images/bi_guide_pms_en.png index 467ce7dc7c..dd20789e9f 100644 Binary files a/www/static/images/bi_guide_pms_en.png and b/www/static/images/bi_guide_pms_en.png differ diff --git a/www/static/images/bi_guide_pms_zh.png b/www/static/images/bi_guide_pms_zh.png index 75ae27979c..87cd8ee4e4 100644 Binary files a/www/static/images/bi_guide_pms_zh.png and b/www/static/images/bi_guide_pms_zh.png differ