From a23d20543532b59b43b2e1a5345e7238c56bcdac Mon Sep 17 00:00:00 2001 From: liumengyi Date: Mon, 27 Feb 2023 06:24:08 +0000 Subject: [PATCH 1/3] * Modify menu name. --- module/admin/lang/menu.php | 6 +++--- module/common/lang/de.php | 1 + module/common/lang/en.php | 1 + module/common/lang/fr.php | 1 + module/common/lang/zh-cn.php | 1 + 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/module/admin/lang/menu.php b/module/admin/lang/menu.php index 4bbbd8b777..18c422a129 100644 --- a/module/admin/lang/menu.php +++ b/module/admin/lang/menu.php @@ -85,13 +85,13 @@ $lang->admin->menuList->model['menuOrder']['20'] = 'agileplus'; $lang->admin->menuList->model['menuOrder']['25'] = 'waterfallplus'; $lang->admin->menuList->model['tabMenu']['common']['project'] = array('link' => "{$lang->project->common}|custom|required|module=project", 'alias' => 'set', 'exclude' => 'custom', 'links' => array('custom|set|')); -$lang->admin->menuList->model['tabMenu']['common']['stage'] = array('link' => "{$lang->stage->common}|stage|settype|", 'subModule' => 'stage', 'links' => array('stage|browse|')); +$lang->admin->menuList->model['tabMenu']['common']['stage'] = array('link' => "{$lang->stage->type}|stage|settype|", 'subModule' => 'stage', 'links' => array('stage|browse|')); $lang->admin->menuList->model['tabMenu']['common']['build'] = array('link' => "{$lang->build->common}|custom|required|module=build", 'alias' => 'set', 'exclude' => 'custom'); $lang->admin->menuList->model['tabMenu']['common']['flow'] = array('link' => "{$lang->custom->flow}|custom|flow|", 'divider' => true); $lang->admin->menuList->model['tabMenu']['common']['code'] = array('link' => "{$lang->code}|custom|code|"); $lang->admin->menuList->model['tabMenu']['common']['hours'] = array('link' => "{$lang->workingHour}|custom|hours|", 'subModule' => 'holiday', 'links' => array('holiday|browse|')); -$lang->admin->menuList->model['tabMenu']['waterfall']['stage'] = array('link' => "{$lang->stage->common}|stage|browse|", 'subModule' => 'stage', 'exclude' => 'stage-plusbrowse'); -$lang->admin->menuList->model['tabMenu']['waterfallplus']['stage'] = array('link' => "{$lang->stage->common}|stage|plusbrowse|", 'subModule' => 'stage', 'exclude' => 'stage-browse'); +$lang->admin->menuList->model['tabMenu']['waterfall']['stage'] = array('link' => "{$lang->stage->list}|stage|browse|", 'subModule' => 'stage', 'exclude' => 'stage-plusbrowse'); +$lang->admin->menuList->model['tabMenu']['waterfallplus']['stage'] = array('link' => "{$lang->stage->list}|stage|plusbrowse|", 'subModule' => 'stage', 'exclude' => 'stage-browse'); $lang->admin->menuList->model['tabMenu']['menuOrder']['common']['5'] = 'project'; $lang->admin->menuList->model['tabMenu']['menuOrder']['common']['7'] = 'stage'; $lang->admin->menuList->model['tabMenu']['menuOrder']['common']['10'] = 'build'; diff --git a/module/common/lang/de.php b/module/common/lang/de.php index 4810af6d36..c2b6716fa4 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -202,6 +202,7 @@ $lang->design->DDS = 'DDS'; $lang->design->DBDS = 'DBDS'; $lang->design->ADS = 'ADS'; $lang->stage->common = 'Stage'; +$lang->stage->type = 'Stage Type'; $lang->stage->list = 'Stage List'; $lang->execution->list = "{$lang->executionCommon} List"; $lang->kanban->common = 'Kanban'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 7e772786e2..894c3010a0 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -202,6 +202,7 @@ $lang->design->DDS = 'Detailed Design'; $lang->design->DBDS = 'Database Design'; $lang->design->ADS = 'Interface Design'; $lang->stage->common = 'Stage'; +$lang->stage->type = 'Stage Type'; $lang->stage->list = 'Stage List'; $lang->execution->list = "{$lang->executionCommon} List"; $lang->kanban->common = 'Kanban'; diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index f366dd685b..ef9214957c 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -202,6 +202,7 @@ $lang->design->DDS = 'DDS'; $lang->design->DBDS = 'DBDS'; $lang->design->ADS = 'ADS'; $lang->stage->common = 'Stage'; +$lang->stage->type = 'Stage Type'; $lang->stage->list = 'Stage List'; $lang->execution->list = "{$lang->executionCommon} List"; $lang->kanban->common = 'Kanban'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 5cd8b557c0..f57e0b45c4 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -202,6 +202,7 @@ $lang->design->DDS = '详细设计'; $lang->design->DBDS = '数据库设计'; $lang->design->ADS = '接口设计'; $lang->stage->common = '阶段'; +$lang->stage->type = '阶段类型'; $lang->stage->list = '阶段列表'; $lang->execution->list = "{$lang->executionCommon}列表"; $lang->kanban->common = '看板'; From a26a5c5860a6e8e3bfd5549a30ae310007918d02 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Mon, 27 Feb 2023 06:41:48 +0000 Subject: [PATCH 2/3] * Fix sql error. --- db/zentao.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/zentao.sql b/db/zentao.sql index afadd1b64f..39768146fa 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -13889,7 +13889,7 @@ REPLACE INTO `zt_chart` (`id`, `name`, `dimension`, `type`, `group`, `dataset`, (1093,'年度排行-项目集-修复Bug条目榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"program\",\"name\":\"项目集\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"bug\",\"agg\":\"value\",\"name\":\"修复Bug条目\",\"valOrAgg\":\"value\"}]}','','','SELECT \r\n YEAR(t3.closedDate) AS `year`,\r\n t1.id, \r\n t1.name AS program, \r\n COUNT(1) AS bug \r\nFROM \r\n zt_project AS t1 \r\n LEFT JOIN zt_product AS t2 ON t1.id = t2.program \r\n AND t2.deleted = \'0\' \r\n LEFT JOIN zt_bug AS t3 ON t2.id = t3.product \r\n AND t3.deleted = \'0\' \r\n AND t3.resolution = \'fixed\' \r\n AND t3.status = \'closed\' \r\nWHERE \r\n t1.deleted = \'0\' \r\n AND t1.type = \'program\' \r\n AND t1.grade = 1 \r\n AND t3.id IS NOT NULL \r\nGROUP BY \r\n `year`, \r\n id,\r\n program \r\nORDER BY \r\n `year`, \r\n bug DESC',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), (1094,'年度排行-项目-工期榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"name\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"duration\",\"agg\":\"value\",\"name\":\"工期\",\"valOrAgg\":\"value\"}]}','',NULL,'SELECT `year`, id,name,status,realBegan,realEnd,IF(status = \'closed\', DATEDIFF(realEnd, realBegan), DATEDIFF(NOW(),realBegan)) as duration\r\nFROM (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) AS t1\r\nLEFT JOIN zt_project AS t2 ON 1 = 1 WHERE deleted = \'0\' AND type = \'project\' AND YEAR(realBegan) <= `year` AND LEFT(realBegan, 4) != \'0000\' AND (status =\'doing\' OR (status = \'suspended\' AND YEAR(suspendedDate) >= `year`) OR (status = \'closed\' AND YEAR(realEnd) >= `year`)) HAVING 1=1 ORDER BY `year`, duration desc',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), (1096,'年度排行-项目-工期偏差榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"name\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"duration\",\"agg\":\"value\",\"name\":\"工期\",\"valOrAgg\":\"value\"}]}','',NULL,'SELECT `year`, id,name,status,`begin`,`end`,realBegan,realEnd,\nROUND((IF(LEFT(realEnd,4) != \'0000\', DATEDIFF(realEnd, realBegan), DATEDIFF(NOW(),realBegan)) - DATEDIFF(`end`, `begin`)) / DATEDIFF(`end`,`begin`) * 100) as duration\nFROM (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) AS t1\nLEFT JOIN zt_project AS t2 ON 1 = 1 \nWHERE deleted = \'0\' AND type = \'project\'\nAND YEAR(realBegan) <= `year` AND LEFT(realBegan, 4) != \'0000\'\nAND (YEAR(realEnd) >= `year` OR LEFT(realEnd, 4) = \'0000\') AND YEAR(`end`) != \'2059\'\nHAVING 1=1\nORDER BY duration ASC',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), -(1097,'年度排行-项目-人员投入榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"name\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"number\",\"agg\":\"value\",\"name\":\"人数\",\"valOrAgg\":\"value\"}]}','','','SELECT tt.join as `year`, count(1) as number, tt.name from (\r\nselect \r\nt2.name, YEAR(t1.join) as `join`\r\nfrom zt_team t1 \r\nRIGHT JOIN zt_project t2 on t2.id = t1.root\r\nRIGHT JOIN zt_user t3 on t3.account = t1.account\r\nWHERE t1.type = \'project\'\r\nAND t2.deleted = \'0\'\r\n) tt\r\nGROUP BY tt.`name`, tt.join\r\nORDER BY tt.join, number desc, tt.name',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0); +(1097,'年度排行-项目-人员投入榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"name\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"number\",\"agg\":\"value\",\"name\":\"人数\",\"valOrAgg\":\"value\"}]}','','','SELECT tt.join as `year`, count(1) as number, tt.name from (\r\nselect \r\nt2.name, YEAR(t1.join) as `join`\r\nfrom zt_team t1 \r\nRIGHT JOIN zt_project t2 on t2.id = t1.root\r\nRIGHT JOIN zt_user t3 on t3.account = t1.account\r\nWHERE t1.type = \'project\'\r\nAND t2.deleted = \'0\'\r\n) tt\r\nGROUP BY tt.`name`, tt.join\r\nORDER BY tt.join, number desc, tt.name',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), (1098,'年度排行-项目-工时消耗榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"project\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"consumed\",\"agg\":\"value\",\"name\":\"消耗工时\",\"valOrAgg\":\"value\"}]}','',NULL,'SELECT \r\n YEAR(t4.date) AS `year`,\r\n t1.id, \r\n t1.name AS project, \r\n ROUND(\r\n SUM(t4.consumed), \r\n 2\r\n ) AS consumed \r\nFROM \r\n zt_project AS t1 \r\n LEFT JOIN zt_project AS t2 ON t1.id = t2.parent \r\n AND t2.deleted = \'0\' \r\n AND t2.type IN (\'sprint\', \'stage\', \'kanban\') \r\n LEFT JOIN zt_task AS t3 ON t2.id = t3.execution \r\n AND t3.deleted = \'0\' \r\n AND t3.status != \'cancel\' \r\n LEFT JOIN zt_effort AS t4 ON t3.id = t4.objectID \r\n AND t4.deleted = \'0\' \r\n AND t4.objectType = \'task\' \r\nWHERE \r\n t1.deleted = \'0\' \r\n AND t1.type = \'project\' \r\n AND t4.id IS NOT NULL \r\nGROUP BY \r\n `year`, \r\n id,\r\n project \r\nORDER BY \r\n `year`, \r\n consumed DESC',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), (1099,'年度排行-项目-完成需求条目榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"project\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"story\",\"agg\":\"value\",\"name\":\"完成需求条目\",\"valOrAgg\":\"value\"}]}','',NULL,'SELECT \r\n YEAR(t1.closedDate) AS `year`, \r\n t1.id, \r\n t1.project, \r\n COUNT(1) AS story \r\nFROM \r\n (\r\n SELECT \r\n DISTINCT t1.id, \r\n t1.name AS project, \r\n t4.id AS story, \r\n t4.closedDate \r\n FROM \r\n zt_project AS t1 \r\n LEFT JOIN zt_project AS t2 ON t1.id = t2.parent \r\n AND t2.deleted = \'0\' \r\n AND t2.type IN (\'sprint\', \'stage\', \'kanban\') \r\n LEFT JOIN zt_projectstory AS t3 ON t2.id = t3.project \r\n LEFT JOIN zt_story AS t4 ON t3.story = t4.id \r\n AND t4.deleted = \'0\' \r\n AND t4.closedReason = \'done\' \r\n WHERE \r\n t1.deleted = \'0\' \r\n AND t1.type = \'project\' \r\n AND t4.id IS NOT NULL\r\n ) AS t1 \r\nGROUP BY \r\n `year`, \r\n id, \r\n project \r\nORDER BY \r\n `year`, \r\n story DESC',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), (1100,'年度排行-项目-完成需求规模榜',1,'bar',0,'','','{\"xaxis\":[{\"field\":\"project\",\"name\":\"项目\"}],\"yaxis\":[{\"type\":\"value\",\"field\":\"story\",\"agg\":\"value\",\"name\":\"完成需求规模\",\"valOrAgg\":\"value\"}]}','',NULL,'SELECT \r\n YEAR(t1.closedDate) AS `year`, \r\n t1.id, \r\n t1.project, \r\n ROUND(\r\n SUM(t1.estimate), \r\n 2\r\n ) AS story \r\nFROM \r\n (\r\n SELECT \r\n DISTINCT t1.id, \r\n t1.name AS project, \r\n t4.id AS story, \r\n t4.estimate, \r\n t4.closedDate \r\n FROM \r\n zt_project AS t1 \r\n LEFT JOIN zt_project AS t2 ON t1.id = t2.parent \r\n AND t2.deleted = \'0\' \r\n AND t2.type IN (\'sprint\', \'stage\', \'kanban\') \r\n LEFT JOIN zt_projectstory AS t3 ON t2.id = t3.project \r\n LEFT JOIN zt_story AS t4 ON t3.story = t4.id \r\n AND t4.deleted = \'0\' \r\n AND t4.closedReason = \'done\' \r\n WHERE \r\n t1.deleted = \'0\' \r\n AND t1.type = \'project\' \r\n AND t4.id IS NOT NULL\r\n ) AS t1 \r\nGROUP BY \r\n `year`, \r\n id, \r\n project \r\nORDER BY \r\n `year`, \r\n story DESC',1,'','','0000-00-00 00:00:00','','0000-00-00 00:00:00',0), From 599150da94ba28c682a3d93fe7bdec749c6411c8 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Mon, 27 Feb 2023 06:58:37 +0000 Subject: [PATCH 3/3] * Fix bug #32442. --- module/programplan/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/programplan/model.php b/module/programplan/model.php index 5bd2ca475f..716881a5e9 100755 --- a/module/programplan/model.php +++ b/module/programplan/model.php @@ -868,7 +868,7 @@ class programplanModel extends model if($data->id) { $stageID = $data->id; - unset($data->id); + unset($data->id, $data->type); $oldStage = $this->getByID($stageID); $planChanged = ($oldStage->name != $data->name || $oldStage->milestone != $data->milestone || $oldStage->begin != $data->begin || $oldStage->end != $data->end);