From 93aa3e307b5f2d20e80211d00fd29eb535b455e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E9=87=91=E5=8B=87?= Date: Thu, 20 Apr 2023 02:17:53 +0000 Subject: [PATCH 1/3] * Format zentao.sql. --- db/update18.3.sql | 18 +++++++++++++----- db/zentao.sql | 21 ++++++++++----------- framework/base/helper.class.php | 1 + module/file/model.php | 4 ++-- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/db/update18.3.sql b/db/update18.3.sql index 1f44d282b9..42bd512f57 100644 --- a/db/update18.3.sql +++ b/db/update18.3.sql @@ -1035,17 +1035,25 @@ ALTER TABLE `zt_testreport` CHANGE `project` `project` mediumint unsigned NOT NULL DEFAULT '0', CHANGE `product` `product` mediumint unsigned NOT NULL DEFAULT '0', CHANGE `execution` `execution` mediumint unsigned NOT NULL DEFAULT '0', -CHANGE `stories` `stories` text COLLATE 'utf8mb3_general_ci' NULL, -CHANGE `bugs` `bugs` text COLLATE 'utf8mb3_general_ci' NULL, -CHANGE `cases` `cases` text COLLATE 'utf8mb3_general_ci' NULL, -CHANGE `report` `report` text COLLATE 'utf8mb3_general_ci' NULL, -CHANGE `deleted` `deleted` enum('0','1') COLLATE 'utf8mb3_general_ci' NOT NULL DEFAULT '0'; +CHANGE `stories` `stories` text NULL, +CHANGE `bugs` `bugs` text NULL, +CHANGE `cases` `cases` text NULL, +CHANGE `report` `report` text NULL, +CHANGE `deleted` `deleted` enum('0','1') NOT NULL DEFAULT '0'; ALTER TABLE `zt_testrun` CHANGE `lastRunner` `lastRunner` varchar(30) NOT NULL DEFAULT '', CHANGE `lastRunDate` `lastRunDate` datetime NULL, CHANGE `lastRunResult` `lastRunResult` char(30) NOT NULL DEFAULT ''; +ALTER TABLE `zt_testresult` +CHANGE `job` `job` mediumint unsigned NOT NULL DEFAULT '0', +CHANGE `compile` `compile` mediumint unsigned NOT NULL DEFAULT '0', +CHANGE `ZTFResult` `ZTFResult` text NULL, +CHANGE `duration` `duration` float NOT NULL DEFAULT '0', +CHANGE `xml` `xml` text NULL, +CHANGE `deploy` `deploy` mediumint unsigned NOT NULL DEFAULT '0'; + ALTER TABLE `zt_testsuite` CHANGE `project` `project` mediumint unsigned NOT NULL DEFAULT '0', CHANGE `product` `product` mediumint unsigned NOT NULL DEFAULT '0', diff --git a/db/zentao.sql b/db/zentao.sql index 27bf4975a2..3c99746edc 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -1809,17 +1809,17 @@ CREATE TABLE IF NOT EXISTS `zt_testresult` ( `run` mediumint(8) unsigned NOT NULL, `case` mediumint(8) unsigned NOT NULL, `version` smallint(5) unsigned NOT NULL, - `job` mediumint(8) unsigned NOT NULL, - `compile` mediumint(8) unsigned NOT NULL, + `job` mediumint(8) unsigned NOT NULL DEFAULT '0', + `compile` mediumint(8) unsigned NOT NULL DEFAULT '0', `caseResult` char(30) NOT NULL, `stepResults` text NOT NULL, - `ZTFResult` text NOT NULL, + `ZTFResult` text NULL, `node` int(8) unsigned NOT NULL DEFAULT '0', `lastRunner` varchar(30) NOT NULL, `date` datetime NOT NULL, - `duration` float NOT NULL, - `xml` text NOT NULL, - `deploy` mediumint(8) unsigned NOT NULL, + `duration` float NOT NULL DEFAULT '0', + `xml` text NULL, + `deploy` mediumint(8) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `case` (`case`), KEY `version` (`version`), @@ -14215,11 +14215,10 @@ CREATE TABLE IF NOT EXISTS `zt_pivot` ( KEY `group` (`group`) ) ENGINE = InnoDB DEFAULT CHARSET=utf8; -REPLACE INTO `zt_pivot` VALUES (1000,2,0,'{\"zh-cn\":\"\\u5b8c\\u6210\\u9879\\u76ee\\u5de5\\u671f\\u900f\\u89c6\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','select\nt1.name,\nt2.1program,\nt1.begin,\nt1.end,\nt1.realBegan,\nt1.realEnd,\nt1.closedDate,\nt1.realduration,\nt1.realduration-t1.planduration duration_deviation,\nround((t1.realduration-t1.planduration)/t1.planduration,3) rate\nfrom\n(select \nname,\nsubstr(`path`,2,4) 1program,\nbegin,\nend,\nrealBegan,\nrealEnd,\nleft(closedDate,10) closedDate,\ndatediff(`end`,`begin`) planduration,\nifnull(if(left(`realEnd`,4) != \'0000\',datediff(`realEnd`,`realBegan`),datediff(`closedDate`,`realBegan`)),0) realduration\nfrom\nzt_project\nwhere type=\'project\' and status=\'closed\' and deleted=\'0\') t1\nleft join\n(select\nid programid,\nname 1program\nfrom\nzt_project\nwhere type=\'program\' and grade=1) t2\non t1.1program=t2.programid','{\"name\":{\"name\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"object\":\"project\",\"field\":\"name\",\"type\":\"string\"},\"1program\":{\"name\":\"1program\",\"object\":\"project\",\"field\":\"1program\",\"type\":\"string\"},\"begin\":{\"name\":\"\\u8ba1\\u5212\\u5f00\\u59cb\",\"object\":\"project\",\"field\":\"begin\",\"type\":\"date\"},\"end\":{\"name\":\"\\u8ba1\\u5212\\u5b8c\\u6210\",\"object\":\"project\",\"field\":\"end\",\"type\":\"date\"},\"realBegan\":{\"name\":\"\\u5b9e\\u9645\\u5f00\\u59cb\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"realBegan\",\"type\":\"date\"},\"realEnd\":{\"name\":\"\\u5b9e\\u9645\\u5b8c\\u6210\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"realEnd\",\"type\":\"date\"},\"closedDate\":{\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"closedDate\",\"type\":\"date\"},\"realduration\":{\"name\":\"realduration\",\"object\":\"project\",\"field\":\"realduration\",\"type\":\"number\"},\"duration_deviation\":{\"name\":\"duration_deviation\",\"object\":\"project\",\"field\":\"duration_deviation\",\"type\":\"number\"},\"rate\":{\"name\":\"rate\",\"object\":\"project\",\"field\":\"rate\",\"type\":\"number\"}}','{\"name\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"1program\":{\"zh-cn\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"begin\":{\"zh-cn\":\"\\u8ba1\\u5212\\u5f00\\u59cb\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"end\":{\"zh-cn\":\"\\u8ba1\\u5212\\u5b8c\\u6210\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realBegan\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5f00\\u59cb\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realEnd\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5b8c\\u6210\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"closedDate\":{\"zh-cn\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realduration\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5de5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"duration_deviation\":{\"zh-cn\":\"\\u5de5\\u671f\\u504f\\u5dee\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"rate\":{\"zh-cn\":\"\\u5de5\\u671f\\u504f\\u5dee\\u7387\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}}','','','{\"columns\":[{\"field\":\"begin\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"end\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realBegan\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realEnd\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"closedDate\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realduration\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"duration_deviation\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"rate\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"group3\":\"1program\",\"group6\":\"name\",\"lastStep\":\"4\"}','[]',0,'published','1','admin','2023-04-06 14:07:26','admin','2023-04-06 14:07:26','0'); - -REPLACE INTO `zt_pivot` VALUES (1001,2,0,'{\"zh-cn\":\"\\u5b8c\\u6210\\u9879\\u76ee\\u5de5\\u65f6\\u900f\\u89c6\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','select\nt1.name \'项目名称\',\nt1.1program \'一级项目集\',\nround(t2.estimate,2) \'预计工时\',\nround(t2.consumed,2) \'消耗工时\',\nround(t2.consumed-t2.estimate,2) \'工时偏差\',\nround((t2.consumed-t2.estimate)/t2.estimate,2) \'工时偏差率\',\nifnull(t3.storys,0) \'完成需求数\',\nifnull(t3.storyestimate,0) \'完成需求规模数\',\nround(ifnull(t3.storyestimate,0)/ifnull(t2.consumed,0),2) \'单位时间交付需求规模数\',\nt1.closedDate closedDate\nfrom(\nselect\nid,\nname,\nsubstr(`path`,2,4) 1program,\nclosedDate\nfrom\nzt_project\nwhere deleted=\'0\' and type=\'project\' and status=\'closed\') t1\nleft join(\nselect\nproject,\nsum(estimate) estimate,\nsum(consumed) consumed\nfrom\nzt_task\nwhere deleted=\'0\' and project !=0\ngroup by project) t2\non t1.id=t2.project\nleft join (\nselect\ntt3.project,\ncount(tt3.id) storys,\nsum(estimate) storyestimate\nfrom(\nselect\ntt1.id,\ntt1.estimate,\ntt2.project\nfrom\nzt_story tt1\nleft join\nzt_projectstory tt2\non tt1.id=tt2.story\nwhere tt1.deleted=\'0\' and tt1.status=\'closed\' and tt1.closedReason=\'done\') tt3\ngroup by tt3.project) t3\non t1.id=t3.project','{\"\\u9879\\u76ee\\u540d\\u79f0\":{\"name\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"object\":\"story\",\"field\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"type\":\"string\"},\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\":{\"name\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"object\":\"story\",\"field\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"type\":\"string\"},\"\\u9884\\u8ba1\\u5de5\\u65f6\":{\"name\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"object\":\"story\",\"field\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"type\":\"number\"},\"\\u6d88\\u8017\\u5de5\\u65f6\":{\"name\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"object\":\"story\",\"field\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"type\":\"number\"},\"\\u5de5\\u65f6\\u504f\\u5dee\":{\"name\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"object\":\"story\",\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"type\":\"number\"},\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\":{\"name\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"object\":\"story\",\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"type\":\"number\"},\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\":{\"name\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"object\":\"story\",\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"type\":\"string\"},\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"closedDate\":{\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"object\":\"story\",\"field\":\"closedDate\",\"type\":\"date\"}}','','','','{\"columns\":[{\"field\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"group1\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"group2\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"lastStep\":\"4\"}','[{\"field\":\"closedDate\",\"type\":\"date\",\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"default\":{\"begin\":\"\",\"end\":\"\"}}]',0,'published','1','admin','2023-04-11 13:14:37','admin','2023-04-11 13:14:37','0'); - -REPLACE INTO `zt_pivot` VALUES (1002,3,0,'{\"zh-cn\":\"\\u4ea7\\u54c1\\u7f3a\\u9677\\u6570\\u636e\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','SELECT \n t1.name AS \'产品\', \n IFNULL(t2.name, \'/\') AS \'一级项目集\', \n IFNULL(t3.name, \'/\') AS \'产品线\', \n IFNULL(t6.exfixedstorys, 0) AS \'研发完成需求数\', \n round(IFNULL(t6.exfixedstorysmate, 0),3) AS \'研发完成需求规模数\',\n IFNULL(t8.storycases, 0) AS \'需求用例数\',\n round(storycases/exfixedstorysmate,3) AS \'用例密度\',\n round(IFNULL(t10.casestorys/t6.exfixedstorys,0),3) AS \'用例覆盖率\',\n IFNULL(t7.bug, 0) AS \'Bug数\',\n IFNULL(t7.effbugs, 0) AS \'有效Bug数\',\n IFNULL(t7.pri12bugs, 0) AS \'优先级为1,2的Bug数\',\n round(bug/exfixedstorysmate,3) AS \'Bug密度\',\n IFNULL(t7.fixedbugs, 0) AS \'修复Bug数\',\n round(fixedbugs/bug,3) \'Bug修复率\'\nFROM \n zt_product AS t1 \n LEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \n LEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \n LEFT JOIN (\n SELECT\n product, \n count(id) exfixedstorys, \n sum(estimate) exfixedstorysmate\n FROM zt_story \n WHERE deleted = \'0\' and (stage in (\'developed\',\'testing\',\'verfied\',\'released\') or (status=\'closed\' and closedReason=\'done\'))\n GROUP BY product) AS t6 ON t1.id = t6.product \n LEFT JOIN (SELECT product, COUNT(id) AS bug,\n SUM(case when resolution in (\'fixed\',\'postponed\') or status=\'active\' then 1 else 0 end) effbugs, \n SUM(CASE WHEN resolution=\'fixed\' then 1 else 0 end) fixedbugs,\n SUM(CASE WHEN severity in (1,2) then 1 else 0 end) pri12bugs\n FROM zt_bug WHERE deleted = \'0\' GROUP BY product) AS t7 ON t1.id = t7.product \n LEFT JOIN (SELECT product, COUNT(id) AS storycases FROM zt_case WHERE deleted=\'0\' GROUP BY product) AS t8 ON t1.id=t8.product\n LEFT JOIN (\n select \n t9.product, \n count(t9.story) casestorys\n from(\n SELECT \n zt_case.product,zt_case.story \n FROM zt_case \n left join zt_story\n on zt_case.story=zt_story.id\n WHERE zt_case.deleted=\'0\' and zt_case.story !=\'0\' and zt_story.deleted=\'0\' and (zt_story.stage in (\'developed\',\'testing\',\'verfied\',\'released\') or (zt_story.status=\'closed\' and zt_story.closedReason=\'done\'))\n GROUP BY product, story) t9\n group by product) t10\n on t1.id=t10.product\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\'AND t1.vision = \'rnd\'\nORDER BY t1.order','{\"\\u4ea7\\u54c1\":{\"name\":\"\\u4ea7\\u54c1\",\"object\":\"story\",\"field\":\"\\u4ea7\\u54c1\",\"type\":\"string\"},\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\":{\"name\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"object\":\"story\",\"field\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"type\":\"string\"},\"\\u4ea7\\u54c1\\u7ebf\":{\"name\":\"\\u4ea7\\u54c1\\u7ebf\",\"object\":\"story\",\"field\":\"\\u4ea7\\u54c1\\u7ebf\",\"type\":\"string\"},\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\":{\"name\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"object\":\"story\",\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"type\":\"string\"},\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\":{\"name\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"object\":\"story\",\"field\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"type\":\"string\"},\"\\u7528\\u4f8b\\u5bc6\\u5ea6\":{\"name\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"object\":\"story\",\"field\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"type\":\"number\"},\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\":{\"name\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"object\":\"story\",\"field\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"type\":\"number\"},\"Bug\\u6570\":{\"name\":\"Bug\\u6570\",\"object\":\"story\",\"field\":\"Bug\\u6570\",\"type\":\"string\"},\"\\u6709\\u6548Bug\\u6570\":{\"name\":\"\\u6709\\u6548Bug\\u6570\",\"object\":\"story\",\"field\":\"\\u6709\\u6548Bug\\u6570\",\"type\":\"number\"},\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\":{\"name\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"object\":\"story\",\"field\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"type\":\"number\"},\"Bug\\u5bc6\\u5ea6\":{\"name\":\"Bug\\u5bc6\\u5ea6\",\"object\":\"story\",\"field\":\"Bug\\u5bc6\\u5ea6\",\"type\":\"number\"},\"\\u4fee\\u590dBug\\u6570\":{\"name\":\"\\u4fee\\u590dBug\\u6570\",\"object\":\"story\",\"field\":\"\\u4fee\\u590dBug\\u6570\",\"type\":\"number\"},\"Bug\\u4fee\\u590d\\u7387\":{\"name\":\"Bug\\u4fee\\u590d\\u7387\",\"object\":\"story\",\"field\":\"Bug\\u4fee\\u590d\\u7387\",\"type\":\"number\"}}','','','','{\"columns\":[{\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u6709\\u6548Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u5bc6\\u5ea6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u4fee\\u590dBug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u4fee\\u590d\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"columnTotal\":\"noShow\",\"group1\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"group3\":\"\\u4ea7\\u54c1\\u7ebf\",\"group2\":\"\\u4ea7\\u54c1\",\"lastStep\":\"4\"}','[]',0,'published','1','admin','2023-04-06 13:16:52','admin','2023-04-06 13:16:52','0'); +REPLACE INTO `zt_pivot`(`id`,`dimension`,`group`,`name`,`desc`,`sql`,`fields`,`langs`,`vars`,`objects`,`settings`,`filters`,`step`,`stage`,`builtin`,`createdBy`,createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES +(1000,2,0,'{\"zh-cn\":\"\\u5b8c\\u6210\\u9879\\u76ee\\u5de5\\u671f\\u900f\\u89c6\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','select\nt1.name,\nt2.1program,\nt1.begin,\nt1.end,\nt1.realBegan,\nt1.realEnd,\nt1.closedDate,\nt1.realduration,\nt1.realduration-t1.planduration duration_deviation,\nround((t1.realduration-t1.planduration)/t1.planduration,3) rate\nfrom\n(select \nname,\nsubstr(`path`,2,4) 1program,\nbegin,\nend,\nrealBegan,\nrealEnd,\nleft(closedDate,10) closedDate,\ndatediff(`end`,`begin`) planduration,\nifnull(if(left(`realEnd`,4) != \'0000\',datediff(`realEnd`,`realBegan`),datediff(`closedDate`,`realBegan`)),0) realduration\nfrom\nzt_project\nwhere type=\'project\' and status=\'closed\' and deleted=\'0\') t1\nleft join\n(select\nid programid,\nname 1program\nfrom\nzt_project\nwhere type=\'program\' and grade=1) t2\non t1.1program=t2.programid','{\"name\":{\"name\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"object\":\"project\",\"field\":\"name\",\"type\":\"string\"},\"1program\":{\"name\":\"1program\",\"object\":\"project\",\"field\":\"1program\",\"type\":\"string\"},\"begin\":{\"name\":\"\\u8ba1\\u5212\\u5f00\\u59cb\",\"object\":\"project\",\"field\":\"begin\",\"type\":\"date\"},\"end\":{\"name\":\"\\u8ba1\\u5212\\u5b8c\\u6210\",\"object\":\"project\",\"field\":\"end\",\"type\":\"date\"},\"realBegan\":{\"name\":\"\\u5b9e\\u9645\\u5f00\\u59cb\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"realBegan\",\"type\":\"date\"},\"realEnd\":{\"name\":\"\\u5b9e\\u9645\\u5b8c\\u6210\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"realEnd\",\"type\":\"date\"},\"closedDate\":{\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"closedDate\",\"type\":\"date\"},\"realduration\":{\"name\":\"realduration\",\"object\":\"project\",\"field\":\"realduration\",\"type\":\"number\"},\"duration_deviation\":{\"name\":\"duration_deviation\",\"object\":\"project\",\"field\":\"duration_deviation\",\"type\":\"number\"},\"rate\":{\"name\":\"rate\",\"object\":\"project\",\"field\":\"rate\",\"type\":\"number\"}}','{\"name\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"1program\":{\"zh-cn\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"begin\":{\"zh-cn\":\"\\u8ba1\\u5212\\u5f00\\u59cb\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"end\":{\"zh-cn\":\"\\u8ba1\\u5212\\u5b8c\\u6210\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realBegan\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5f00\\u59cb\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realEnd\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5b8c\\u6210\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"closedDate\":{\"zh-cn\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realduration\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5de5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"duration_deviation\":{\"zh-cn\":\"\\u5de5\\u671f\\u504f\\u5dee\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"rate\":{\"zh-cn\":\"\\u5de5\\u671f\\u504f\\u5dee\\u7387\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}}','','','{\"columns\":[{\"field\":\"begin\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"end\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realBegan\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realEnd\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"closedDate\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realduration\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"duration_deviation\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"rate\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"group3\":\"1program\",\"group6\":\"name\",\"lastStep\":\"4\"}','[]',0,'published','1','admin','2023-04-06 14:07:26','admin','2023-04-06 14:07:26','0'), +(1001,2,0,'{\"zh-cn\":\"\\u5b8c\\u6210\\u9879\\u76ee\\u5de5\\u65f6\\u900f\\u89c6\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','select\nt1.name \'项目名称\',\nt1.1program \'一级项目集\',\nround(t2.estimate,2) \'预计工时\',\nround(t2.consumed,2) \'消耗工时\',\nround(t2.consumed-t2.estimate,2) \'工时偏差\',\nround((t2.consumed-t2.estimate)/t2.estimate,2) \'工时偏差率\',\nifnull(t3.storys,0) \'完成需求数\',\nifnull(t3.storyestimate,0) \'完成需求规模数\',\nround(ifnull(t3.storyestimate,0)/ifnull(t2.consumed,0),2) \'单位时间交付需求规模数\',\nt1.closedDate closedDate\nfrom(\nselect\nid,\nname,\nsubstr(`path`,2,4) 1program,\nclosedDate\nfrom\nzt_project\nwhere deleted=\'0\' and type=\'project\' and status=\'closed\') t1\nleft join(\nselect\nproject,\nsum(estimate) estimate,\nsum(consumed) consumed\nfrom\nzt_task\nwhere deleted=\'0\' and project !=0\ngroup by project) t2\non t1.id=t2.project\nleft join (\nselect\ntt3.project,\ncount(tt3.id) storys,\nsum(estimate) storyestimate\nfrom(\nselect\ntt1.id,\ntt1.estimate,\ntt2.project\nfrom\nzt_story tt1\nleft join\nzt_projectstory tt2\non tt1.id=tt2.story\nwhere tt1.deleted=\'0\' and tt1.status=\'closed\' and tt1.closedReason=\'done\') tt3\ngroup by tt3.project) t3\non t1.id=t3.project','{\"\\u9879\\u76ee\\u540d\\u79f0\":{\"name\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"object\":\"story\",\"field\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"type\":\"string\"},\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\":{\"name\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"object\":\"story\",\"field\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"type\":\"string\"},\"\\u9884\\u8ba1\\u5de5\\u65f6\":{\"name\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"object\":\"story\",\"field\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"type\":\"number\"},\"\\u6d88\\u8017\\u5de5\\u65f6\":{\"name\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"object\":\"story\",\"field\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"type\":\"number\"},\"\\u5de5\\u65f6\\u504f\\u5dee\":{\"name\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"object\":\"story\",\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"type\":\"number\"},\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\":{\"name\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"object\":\"story\",\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"type\":\"number\"},\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\":{\"name\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"object\":\"story\",\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"type\":\"string\"},\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"closedDate\":{\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"object\":\"story\",\"field\":\"closedDate\",\"type\":\"date\"}}','','','','{\"columns\":[{\"field\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"group1\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"group2\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"lastStep\":\"4\"}','[{\"field\":\"closedDate\",\"type\":\"date\",\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"default\":{\"begin\":\"\",\"end\":\"\"}}]',0,'published','1','admin','2023-04-11 13:14:37','admin','2023-04-11 13:14:37','0'), +(1002,3,0,'{\"zh-cn\":\"\\u4ea7\\u54c1\\u7f3a\\u9677\\u6570\\u636e\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','SELECT \n t1.name AS \'产品\', \n IFNULL(t2.name, \'/\') AS \'一级项目集\', \n IFNULL(t3.name, \'/\') AS \'产品线\', \n IFNULL(t6.exfixedstorys, 0) AS \'研发完成需求数\', \n round(IFNULL(t6.exfixedstorysmate, 0),3) AS \'研发完成需求规模数\',\n IFNULL(t8.storycases, 0) AS \'需求用例数\',\n round(storycases/exfixedstorysmate,3) AS \'用例密度\',\n round(IFNULL(t10.casestorys/t6.exfixedstorys,0),3) AS \'用例覆盖率\',\n IFNULL(t7.bug, 0) AS \'Bug数\',\n IFNULL(t7.effbugs, 0) AS \'有效Bug数\',\n IFNULL(t7.pri12bugs, 0) AS \'优先级为1,2的Bug数\',\n round(bug/exfixedstorysmate,3) AS \'Bug密度\',\n IFNULL(t7.fixedbugs, 0) AS \'修复Bug数\',\n round(fixedbugs/bug,3) \'Bug修复率\'\nFROM \n zt_product AS t1 \n LEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \n LEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \n LEFT JOIN (\n SELECT\n product, \n count(id) exfixedstorys, \n sum(estimate) exfixedstorysmate\n FROM zt_story \n WHERE deleted = \'0\' and (stage in (\'developed\',\'testing\',\'verfied\',\'released\') or (status=\'closed\' and closedReason=\'done\'))\n GROUP BY product) AS t6 ON t1.id = t6.product \n LEFT JOIN (SELECT product, COUNT(id) AS bug,\n SUM(case when resolution in (\'fixed\',\'postponed\') or status=\'active\' then 1 else 0 end) effbugs, \n SUM(CASE WHEN resolution=\'fixed\' then 1 else 0 end) fixedbugs,\n SUM(CASE WHEN severity in (1,2) then 1 else 0 end) pri12bugs\n FROM zt_bug WHERE deleted = \'0\' GROUP BY product) AS t7 ON t1.id = t7.product \n LEFT JOIN (SELECT product, COUNT(id) AS storycases FROM zt_case WHERE deleted=\'0\' GROUP BY product) AS t8 ON t1.id=t8.product\n LEFT JOIN (\n select \n t9.product, \n count(t9.story) casestorys\n from(\n SELECT \n zt_case.product,zt_case.story \n FROM zt_case \n left join zt_story\n on zt_case.story=zt_story.id\n WHERE zt_case.deleted=\'0\' and zt_case.story !=\'0\' and zt_story.deleted=\'0\' and (zt_story.stage in (\'developed\',\'testing\',\'verfied\',\'released\') or (zt_story.status=\'closed\' and zt_story.closedReason=\'done\'))\n GROUP BY product, story) t9\n group by product) t10\n on t1.id=t10.product\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\'AND t1.vision = \'rnd\'\nORDER BY t1.order','{\"\\u4ea7\\u54c1\":{\"name\":\"\\u4ea7\\u54c1\",\"object\":\"story\",\"field\":\"\\u4ea7\\u54c1\",\"type\":\"string\"},\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\":{\"name\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"object\":\"story\",\"field\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"type\":\"string\"},\"\\u4ea7\\u54c1\\u7ebf\":{\"name\":\"\\u4ea7\\u54c1\\u7ebf\",\"object\":\"story\",\"field\":\"\\u4ea7\\u54c1\\u7ebf\",\"type\":\"string\"},\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\":{\"name\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"object\":\"story\",\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"type\":\"string\"},\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\":{\"name\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"object\":\"story\",\"field\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"type\":\"string\"},\"\\u7528\\u4f8b\\u5bc6\\u5ea6\":{\"name\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"object\":\"story\",\"field\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"type\":\"number\"},\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\":{\"name\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"object\":\"story\",\"field\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"type\":\"number\"},\"Bug\\u6570\":{\"name\":\"Bug\\u6570\",\"object\":\"story\",\"field\":\"Bug\\u6570\",\"type\":\"string\"},\"\\u6709\\u6548Bug\\u6570\":{\"name\":\"\\u6709\\u6548Bug\\u6570\",\"object\":\"story\",\"field\":\"\\u6709\\u6548Bug\\u6570\",\"type\":\"number\"},\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\":{\"name\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"object\":\"story\",\"field\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"type\":\"number\"},\"Bug\\u5bc6\\u5ea6\":{\"name\":\"Bug\\u5bc6\\u5ea6\",\"object\":\"story\",\"field\":\"Bug\\u5bc6\\u5ea6\",\"type\":\"number\"},\"\\u4fee\\u590dBug\\u6570\":{\"name\":\"\\u4fee\\u590dBug\\u6570\",\"object\":\"story\",\"field\":\"\\u4fee\\u590dBug\\u6570\",\"type\":\"number\"},\"Bug\\u4fee\\u590d\\u7387\":{\"name\":\"Bug\\u4fee\\u590d\\u7387\",\"object\":\"story\",\"field\":\"Bug\\u4fee\\u590d\\u7387\",\"type\":\"number\"}}','','','','{\"columns\":[{\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u6709\\u6548Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u5bc6\\u5ea6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u4fee\\u590dBug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u4fee\\u590d\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"columnTotal\":\"noShow\",\"group1\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"group3\":\"\\u4ea7\\u54c1\\u7ebf\",\"group2\":\"\\u4ea7\\u54c1\",\"lastStep\":\"4\"}','[]',0,'published','1','admin','2023-04-06 13:16:52','admin','2023-04-06 13:16:52','0'); -- DROP TABLE IF EXISTS `zt_sqlview`; CREATE TABLE IF NOT EXISTS `zt_sqlview` ( diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php index 3e5694036e..233335971c 100644 --- a/framework/base/helper.class.php +++ b/framework/base/helper.class.php @@ -251,6 +251,7 @@ class baseHelper { if(is_array($idList)) { + if(empty($idList)) return "IN (0)"; foreach($idList as $key=>$value) $idList[$key] = addslashes($value); return "IN ('" . join("','", $idList) . "')"; } diff --git a/module/file/model.php b/module/file/model.php index ecfbad3811..78a93bf5e8 100755 --- a/module/file/model.php +++ b/module/file/model.php @@ -123,14 +123,14 @@ class fileModel extends model * Save upload. * * @param string $objectType - * @param string $objectID + * @param int $objectID * @param string $extra * @param string $filesName * @param string $labelsName * @access public * @return array */ - public function saveUpload($objectType = '', $objectID = '', $extra = '', $filesName = 'files', $labelsName = 'labels') + public function saveUpload($objectType = '', $objectID = 0, $extra = '', $filesName = 'files', $labelsName = 'labels') { $fileTitles = array(); $now = helper::today(); From ca303976787411df2f1add89464e1c87b4f4c58e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E9=87=91=E5=8B=87?= Date: Thu, 20 Apr 2023 02:18:40 +0000 Subject: [PATCH 2/3] * Reset commit. --- framework/base/helper.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php index 233335971c..3e5694036e 100644 --- a/framework/base/helper.class.php +++ b/framework/base/helper.class.php @@ -251,7 +251,6 @@ class baseHelper { if(is_array($idList)) { - if(empty($idList)) return "IN (0)"; foreach($idList as $key=>$value) $idList[$key] = addslashes($value); return "IN ('" . join("','", $idList) . "')"; } From ba630dcbffeb1658fcba8e9e113ff1f874ea030a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E9=87=91=E5=8B=87?= Date: Thu, 20 Apr 2023 02:35:33 +0000 Subject: [PATCH 3/3] * Fix typo. --- db/zentao.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/zentao.sql b/db/zentao.sql index 3c99746edc..49f439304e 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -14215,7 +14215,7 @@ CREATE TABLE IF NOT EXISTS `zt_pivot` ( KEY `group` (`group`) ) ENGINE = InnoDB DEFAULT CHARSET=utf8; -REPLACE INTO `zt_pivot`(`id`,`dimension`,`group`,`name`,`desc`,`sql`,`fields`,`langs`,`vars`,`objects`,`settings`,`filters`,`step`,`stage`,`builtin`,`createdBy`,createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES +REPLACE INTO `zt_pivot`(`id`,`dimension`,`group`,`name`,`desc`,`sql`,`fields`,`langs`,`vars`,`objects`,`settings`,`filters`,`step`,`stage`,`builtin`,`createdBy`,`createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES (1000,2,0,'{\"zh-cn\":\"\\u5b8c\\u6210\\u9879\\u76ee\\u5de5\\u671f\\u900f\\u89c6\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','select\nt1.name,\nt2.1program,\nt1.begin,\nt1.end,\nt1.realBegan,\nt1.realEnd,\nt1.closedDate,\nt1.realduration,\nt1.realduration-t1.planduration duration_deviation,\nround((t1.realduration-t1.planduration)/t1.planduration,3) rate\nfrom\n(select \nname,\nsubstr(`path`,2,4) 1program,\nbegin,\nend,\nrealBegan,\nrealEnd,\nleft(closedDate,10) closedDate,\ndatediff(`end`,`begin`) planduration,\nifnull(if(left(`realEnd`,4) != \'0000\',datediff(`realEnd`,`realBegan`),datediff(`closedDate`,`realBegan`)),0) realduration\nfrom\nzt_project\nwhere type=\'project\' and status=\'closed\' and deleted=\'0\') t1\nleft join\n(select\nid programid,\nname 1program\nfrom\nzt_project\nwhere type=\'program\' and grade=1) t2\non t1.1program=t2.programid','{\"name\":{\"name\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"object\":\"project\",\"field\":\"name\",\"type\":\"string\"},\"1program\":{\"name\":\"1program\",\"object\":\"project\",\"field\":\"1program\",\"type\":\"string\"},\"begin\":{\"name\":\"\\u8ba1\\u5212\\u5f00\\u59cb\",\"object\":\"project\",\"field\":\"begin\",\"type\":\"date\"},\"end\":{\"name\":\"\\u8ba1\\u5212\\u5b8c\\u6210\",\"object\":\"project\",\"field\":\"end\",\"type\":\"date\"},\"realBegan\":{\"name\":\"\\u5b9e\\u9645\\u5f00\\u59cb\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"realBegan\",\"type\":\"date\"},\"realEnd\":{\"name\":\"\\u5b9e\\u9645\\u5b8c\\u6210\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"realEnd\",\"type\":\"date\"},\"closedDate\":{\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"object\":\"project\",\"field\":\"closedDate\",\"type\":\"date\"},\"realduration\":{\"name\":\"realduration\",\"object\":\"project\",\"field\":\"realduration\",\"type\":\"number\"},\"duration_deviation\":{\"name\":\"duration_deviation\",\"object\":\"project\",\"field\":\"duration_deviation\",\"type\":\"number\"},\"rate\":{\"name\":\"rate\",\"object\":\"project\",\"field\":\"rate\",\"type\":\"number\"}}','{\"name\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"1program\":{\"zh-cn\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"begin\":{\"zh-cn\":\"\\u8ba1\\u5212\\u5f00\\u59cb\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"end\":{\"zh-cn\":\"\\u8ba1\\u5212\\u5b8c\\u6210\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realBegan\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5f00\\u59cb\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realEnd\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5b8c\\u6210\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"closedDate\":{\"zh-cn\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"realduration\":{\"zh-cn\":\"\\u5b9e\\u9645\\u5de5\\u671f\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"duration_deviation\":{\"zh-cn\":\"\\u5de5\\u671f\\u504f\\u5dee\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"},\"rate\":{\"zh-cn\":\"\\u5de5\\u671f\\u504f\\u5dee\\u7387\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}}','','','{\"columns\":[{\"field\":\"begin\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"end\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realBegan\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realEnd\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"closedDate\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"realduration\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"duration_deviation\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"rate\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"group3\":\"1program\",\"group6\":\"name\",\"lastStep\":\"4\"}','[]',0,'published','1','admin','2023-04-06 14:07:26','admin','2023-04-06 14:07:26','0'), (1001,2,0,'{\"zh-cn\":\"\\u5b8c\\u6210\\u9879\\u76ee\\u5de5\\u65f6\\u900f\\u89c6\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','select\nt1.name \'项目名称\',\nt1.1program \'一级项目集\',\nround(t2.estimate,2) \'预计工时\',\nround(t2.consumed,2) \'消耗工时\',\nround(t2.consumed-t2.estimate,2) \'工时偏差\',\nround((t2.consumed-t2.estimate)/t2.estimate,2) \'工时偏差率\',\nifnull(t3.storys,0) \'完成需求数\',\nifnull(t3.storyestimate,0) \'完成需求规模数\',\nround(ifnull(t3.storyestimate,0)/ifnull(t2.consumed,0),2) \'单位时间交付需求规模数\',\nt1.closedDate closedDate\nfrom(\nselect\nid,\nname,\nsubstr(`path`,2,4) 1program,\nclosedDate\nfrom\nzt_project\nwhere deleted=\'0\' and type=\'project\' and status=\'closed\') t1\nleft join(\nselect\nproject,\nsum(estimate) estimate,\nsum(consumed) consumed\nfrom\nzt_task\nwhere deleted=\'0\' and project !=0\ngroup by project) t2\non t1.id=t2.project\nleft join (\nselect\ntt3.project,\ncount(tt3.id) storys,\nsum(estimate) storyestimate\nfrom(\nselect\ntt1.id,\ntt1.estimate,\ntt2.project\nfrom\nzt_story tt1\nleft join\nzt_projectstory tt2\non tt1.id=tt2.story\nwhere tt1.deleted=\'0\' and tt1.status=\'closed\' and tt1.closedReason=\'done\') tt3\ngroup by tt3.project) t3\non t1.id=t3.project','{\"\\u9879\\u76ee\\u540d\\u79f0\":{\"name\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"object\":\"story\",\"field\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"type\":\"string\"},\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\":{\"name\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"object\":\"story\",\"field\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"type\":\"string\"},\"\\u9884\\u8ba1\\u5de5\\u65f6\":{\"name\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"object\":\"story\",\"field\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"type\":\"number\"},\"\\u6d88\\u8017\\u5de5\\u65f6\":{\"name\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"object\":\"story\",\"field\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"type\":\"number\"},\"\\u5de5\\u65f6\\u504f\\u5dee\":{\"name\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"object\":\"story\",\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"type\":\"number\"},\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\":{\"name\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"object\":\"story\",\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"type\":\"number\"},\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\":{\"name\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"object\":\"story\",\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"type\":\"string\"},\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"closedDate\":{\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"object\":\"story\",\"field\":\"closedDate\",\"type\":\"date\"}}','','','','{\"columns\":[{\"field\":\"\\u9884\\u8ba1\\u5de5\\u65f6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5de5\\u65f6\\u504f\\u5dee\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u5355\\u4f4d\\u65f6\\u95f4\\u4ea4\\u4ed8\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"group1\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"group2\":\"\\u9879\\u76ee\\u540d\\u79f0\",\"lastStep\":\"4\"}','[{\"field\":\"closedDate\",\"type\":\"date\",\"name\":\"\\u5173\\u95ed\\u65e5\\u671f\",\"default\":{\"begin\":\"\",\"end\":\"\"}}]',0,'published','1','admin','2023-04-11 13:14:37','admin','2023-04-11 13:14:37','0'), (1002,3,0,'{\"zh-cn\":\"\\u4ea7\\u54c1\\u7f3a\\u9677\\u6570\\u636e\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\"}','','SELECT \n t1.name AS \'产品\', \n IFNULL(t2.name, \'/\') AS \'一级项目集\', \n IFNULL(t3.name, \'/\') AS \'产品线\', \n IFNULL(t6.exfixedstorys, 0) AS \'研发完成需求数\', \n round(IFNULL(t6.exfixedstorysmate, 0),3) AS \'研发完成需求规模数\',\n IFNULL(t8.storycases, 0) AS \'需求用例数\',\n round(storycases/exfixedstorysmate,3) AS \'用例密度\',\n round(IFNULL(t10.casestorys/t6.exfixedstorys,0),3) AS \'用例覆盖率\',\n IFNULL(t7.bug, 0) AS \'Bug数\',\n IFNULL(t7.effbugs, 0) AS \'有效Bug数\',\n IFNULL(t7.pri12bugs, 0) AS \'优先级为1,2的Bug数\',\n round(bug/exfixedstorysmate,3) AS \'Bug密度\',\n IFNULL(t7.fixedbugs, 0) AS \'修复Bug数\',\n round(fixedbugs/bug,3) \'Bug修复率\'\nFROM \n zt_product AS t1 \n LEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \n LEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \n LEFT JOIN (\n SELECT\n product, \n count(id) exfixedstorys, \n sum(estimate) exfixedstorysmate\n FROM zt_story \n WHERE deleted = \'0\' and (stage in (\'developed\',\'testing\',\'verfied\',\'released\') or (status=\'closed\' and closedReason=\'done\'))\n GROUP BY product) AS t6 ON t1.id = t6.product \n LEFT JOIN (SELECT product, COUNT(id) AS bug,\n SUM(case when resolution in (\'fixed\',\'postponed\') or status=\'active\' then 1 else 0 end) effbugs, \n SUM(CASE WHEN resolution=\'fixed\' then 1 else 0 end) fixedbugs,\n SUM(CASE WHEN severity in (1,2) then 1 else 0 end) pri12bugs\n FROM zt_bug WHERE deleted = \'0\' GROUP BY product) AS t7 ON t1.id = t7.product \n LEFT JOIN (SELECT product, COUNT(id) AS storycases FROM zt_case WHERE deleted=\'0\' GROUP BY product) AS t8 ON t1.id=t8.product\n LEFT JOIN (\n select \n t9.product, \n count(t9.story) casestorys\n from(\n SELECT \n zt_case.product,zt_case.story \n FROM zt_case \n left join zt_story\n on zt_case.story=zt_story.id\n WHERE zt_case.deleted=\'0\' and zt_case.story !=\'0\' and zt_story.deleted=\'0\' and (zt_story.stage in (\'developed\',\'testing\',\'verfied\',\'released\') or (zt_story.status=\'closed\' and zt_story.closedReason=\'done\'))\n GROUP BY product, story) t9\n group by product) t10\n on t1.id=t10.product\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\'AND t1.vision = \'rnd\'\nORDER BY t1.order','{\"\\u4ea7\\u54c1\":{\"name\":\"\\u4ea7\\u54c1\",\"object\":\"story\",\"field\":\"\\u4ea7\\u54c1\",\"type\":\"string\"},\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\":{\"name\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"object\":\"story\",\"field\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"type\":\"string\"},\"\\u4ea7\\u54c1\\u7ebf\":{\"name\":\"\\u4ea7\\u54c1\\u7ebf\",\"object\":\"story\",\"field\":\"\\u4ea7\\u54c1\\u7ebf\",\"type\":\"string\"},\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\":{\"name\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"object\":\"story\",\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"type\":\"string\"},\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\":{\"name\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"object\":\"story\",\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"type\":\"number\"},\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\":{\"name\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"object\":\"story\",\"field\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"type\":\"string\"},\"\\u7528\\u4f8b\\u5bc6\\u5ea6\":{\"name\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"object\":\"story\",\"field\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"type\":\"number\"},\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\":{\"name\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"object\":\"story\",\"field\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"type\":\"number\"},\"Bug\\u6570\":{\"name\":\"Bug\\u6570\",\"object\":\"story\",\"field\":\"Bug\\u6570\",\"type\":\"string\"},\"\\u6709\\u6548Bug\\u6570\":{\"name\":\"\\u6709\\u6548Bug\\u6570\",\"object\":\"story\",\"field\":\"\\u6709\\u6548Bug\\u6570\",\"type\":\"number\"},\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\":{\"name\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"object\":\"story\",\"field\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"type\":\"number\"},\"Bug\\u5bc6\\u5ea6\":{\"name\":\"Bug\\u5bc6\\u5ea6\",\"object\":\"story\",\"field\":\"Bug\\u5bc6\\u5ea6\",\"type\":\"number\"},\"\\u4fee\\u590dBug\\u6570\":{\"name\":\"\\u4fee\\u590dBug\\u6570\",\"object\":\"story\",\"field\":\"\\u4fee\\u590dBug\\u6570\",\"type\":\"number\"},\"Bug\\u4fee\\u590d\\u7387\":{\"name\":\"Bug\\u4fee\\u590d\\u7387\",\"object\":\"story\",\"field\":\"Bug\\u4fee\\u590d\\u7387\",\"type\":\"number\"}}','','','','{\"columns\":[{\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7814\\u53d1\\u5b8c\\u6210\\u9700\\u6c42\\u89c4\\u6a21\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u9700\\u6c42\\u7528\\u4f8b\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7528\\u4f8b\\u5bc6\\u5ea6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u7528\\u4f8b\\u8986\\u76d6\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u6709\\u6548Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u4f18\\u5148\\u7ea7\\u4e3a1\\uff0c2\\u7684Bug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u5bc6\\u5ea6\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"\\u4fee\\u590dBug\\u6570\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"},{\"field\":\"Bug\\u4fee\\u590d\\u7387\",\"stat\":\"sum\",\"slice\":\"noSlice\",\"showMode\":\"default\",\"monopolize\":\"0\",\"showTotal\":\"noShow\"}],\"columnTotal\":\"noShow\",\"group1\":\"\\u4e00\\u7ea7\\u9879\\u76ee\\u96c6\",\"group3\":\"\\u4ea7\\u54c1\\u7ebf\",\"group2\":\"\\u4ea7\\u54c1\",\"lastStep\":\"4\"}','[]',0,'published','1','admin','2023-04-06 13:16:52','admin','2023-04-06 13:16:52','0');