This commit is contained in:
王怡栋
2022-03-14 17:28:35 +08:00
18 changed files with 490 additions and 60 deletions
+3 -2
View File
@@ -23,6 +23,9 @@ ALTER TABLE `zt_project` ADD `output` text NOT NULL AFTER `milestone`;
ALTER TABLE `zt_project` ADD `lastEditedBy` varchar(30) NOT NULL DEFAULT '' AFTER `openedVersion`;
ALTER TABLE `zt_project` ADD `lastEditedDate` datetime NOT NULL AFTER `lastEditedBy`;
ALTER TABLE `zt_case` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_case` ADD `execution` mediumint(8) unsigned NOT NULL AFTER `project`;
ALTER TABLE `zt_action` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_bug` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_build` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
@@ -30,7 +33,6 @@ ALTER TABLE `zt_burn` CHANGE `project` `execution` mediumint(8) unsigned NOT NUL
ALTER TABLE `zt_doc` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_relation` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_relation` CHANGE `program` `project` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_case` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_doclib` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_task` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
ALTER TABLE `zt_testreport` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL;
@@ -43,7 +45,6 @@ ALTER TABLE `zt_doclib` ADD `project` mediumint(8) unsigned NOT NULL AFTER `prod
ALTER TABLE `zt_doc` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_story` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_bug` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_case` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_testtask` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_testreport` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_testsuite` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
+6 -6
View File
@@ -28,22 +28,22 @@ ALTER TABLE `zt_user` ADD `visions` varchar(20) NOT NULL DEFAULT 'rnd,lite' AFTE
UPDATE `zt_user` SET `visions`='rnd,lite';
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES
('lite', '管理员', 'liteUser', '迅捷版用户分组');
('lite', '管理员', 'liteAdmin', '迅捷版用户分组');
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES
('lite', '项目管理', 'liteUser', '迅捷版用户分组');
('lite', '项目管理', 'liteProject', '迅捷版用户分组');
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES
('lite', '团队成员', 'liteUser', '迅捷版用户分组');
('lite', '团队成员', 'liteTeam', '迅捷版用户分组');
REPLACE INTO `zt_grouppriv`(`module`, `method`,`group`)
SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `name` = '管理员' and `vision` = 'lite') from `zt_grouppriv` where `group` = 1;
SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `role` = 'liteAdmin' and `vision` = 'lite') from `zt_grouppriv` where `group` = 1;
REPLACE INTO `zt_grouppriv`(`module`, `method`,`group`)
SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `name` = '项目管理' and `vision` = 'lite') from `zt_grouppriv` where `group` = 4;
SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `role` = 'liteProject' and `vision` = 'lite') from `zt_grouppriv` where `group` = 4;
REPLACE INTO `zt_grouppriv`(`module`, `method`,`group`)
SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `name` = '团队成员' and `vision` = 'lite') from `zt_grouppriv` where `group` = 9;
SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `role` = 'liteTeam' and `vision` = 'lite') from `zt_grouppriv` where `group` = 9;
ALTER TABLE `zt_productplan` ADD `closedReason` varchar(20) NOT NULL AFTER `order`;
+2
View File
@@ -785,6 +785,7 @@ $lang->resource->execution->addWhitelist = 'addWhitelist';
$lang->resource->execution->unbindWhitelist = 'unbindWhitelist';
$lang->resource->execution->storyEstimate = 'storyEstimate';
$lang->resource->execution->executionkanban = 'kanbanAction';
$lang->resource->execution->kanban = 'RDKanban';
//if($config->systemMode == 'classic') $lang->resource->project->list = 'list';
//$lang->execution->methodOrder[0] = 'index';
@@ -840,6 +841,7 @@ $lang->execution->methodOrder[250] = 'addWhitelist';
$lang->execution->methodOrder[255] = 'unbindWhitelist';
$lang->execution->methodOrder[260] = 'storyEstimate';
$lang->execution->methodOrder[265] = 'executionkanban';
$lang->execution->methodOrder[270] = 'kanban';
/* Task. */
$lang->resource->task = new stdclass();
+1 -1
View File
@@ -5828,7 +5828,7 @@ class upgradeModel extends model
}
}
if(empty($customFiles) or $module == 'owt') $encryptModules[] = $module;
if(empty($customFiles) or $module == 'owt') $encryptModules[$module] = $module;
}
return $encryptModules;
}
+112
View File
@@ -950,4 +950,116 @@ class executionTest
}
}
}
public function addProjectMembersTest($projectID = 0, $executionID, $count)
{
global $tester;
$tester->dbh->query("delete from zt_team where root = $projectID");
$executionMembers = $tester->dao->select('`root`,`account`,`join`,`role`,`days`,`type`,`hours`')->from(TABLE_TEAM)->where('root')->eq($executionID)->fetchAll('account');
$this->objectModel->addProjectMembers($projectID, $executionMembers);
$object = $tester->dao->select('*')->from(TABLE_TEAM)->where('root')->eq($projectID)->fetchAll();
if(dao::isError())
{
$error = dao::getError();
return $error;
}
elseif($count == "1")
{
return count($object);
}
else
{
return $object;
}
}
public function unlinkMemberTest($sprintID, $account, $count)
{
global $tester;
$oldObject = $tester->dao->select('*')->from(TABLE_TEAM)->where('root')->eq($sprintID)->fetchAll();
$this->objectModel->unlinkMember($sprintID, $account);
$object = $tester->dao->select('*')->from(TABLE_TEAM)->where('root')->eq($sprintID)->fetchAll();
if(dao::isError())
{
$error = dao::getError();
return $error;
}
elseif($count == "1")
{
return count($oldObject);
}
else
{
return $object;
}
}
public function computeBurnTest($count)
{
$object = $this->objectModel->computeBurn();
if(dao::isError())
{
$error = dao::getError();
return $error;
}
elseif($count == "1")
{
return count($object);
}
else
{
return $object;
}
}
public function fixFirstTest($executionID, $count, $param = array())
{
global $tester;
$date = date('Y-m-d');
$createFields = array('estimate' => '');
foreach($createFields as $field => $defaultValue) $_POST[$field] = $defaultValue;
foreach($param as $key => $value) $_POST[$key] = $value;
$this->objectModel->computeBurn();
$this->objectModel->fixFirst($executionID);
unset($_POST);
$object = $tester->dao->select('*')->from(TABLE_BURN)->where('execution')->eq($executionID)->andWhere('date')->eq($date)->fetchAll();
if(dao::isError())
{
$error = dao::getError();
return $error;
}
elseif($count == "1")
{
return count($object);
}
else
{
if(empty($object))
{
return '无数据';
}
else
{
return $object;
}
}
}
public function getBurnDataFlotTest($executionID = 0, $count)
{
$object = $this->objectModel->getBurnDataFlot($executionID, $burnBy = 'left');
if(dao::isError())
{
$error = dao::getError();
return $error;
}
elseif($count == "1")
{
return count($object);
}
else
{
return $object;
}
}
}
+90
View File
@@ -0,0 +1,90 @@
title: table zt_effort
desc: "任务工时记录"
author: automated export
version: "1.0"
fields:
- field: id
note: "ID"
range: "1-10000"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: objectType
note: "对象类型"
range: "custom"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: objectID
note: "对象ID"
range: "0"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: "产品ID"
range: "0"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: project
note: "项目ID"
range: "0"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: account
note: "用户账号"
fields:
- field: account1
range: admin,user{99}
- field: account2
range: [],1-99
format: ""
- field: work
note: "工作内容"
range: "1-10000"
prefix: "这是工作内容"
postfix: ""
loop: 0
format: ""
- field: date
note: "创建日期"
range: "(M)-(w)"
type: timestamp
prefix: "DateTime"
postfix: ""
format: "YY/MM/DD"
- field: left
note: "剩余"
range: "0"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: consumed
note: "消耗"
range: 1-100:5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: begin
note: "开始"
range: 1000-1059:2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: end
note: "结束"
range: 1400-1459:2
prefix: ""
postfix: ""
loop: 0
format: ""
+40
View File
@@ -0,0 +1,40 @@
title: table zt_projectstory
desc: "项目需求关系"
author: automated export
version: "1.0"
fields:
- field: project
note: "项目ID"
range: 101-190{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: "产品ID"
range: 1-10000{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: story
note: "需求ID"
range: 2-400:2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: version
note: "版本"
range: 1
prefix: ""
postfix: ""
loop: 0
format: ""
- field: order
note: "排序"
range: 1,2
prefix: ""
postfix: ""
loop: 0
format: ""
-4
View File
@@ -3,8 +3,6 @@ desc: ""
author: automated export
version: "1.0"
fields:
- field: lane
range: "0"
- field: parent
range: "0"
- field: type
@@ -22,8 +20,6 @@ fields:
range: ""
- field: order
range: 1-4
- field: cards
range: ""
- field: archived
range: "0"
- field: deleted
-4
View File
@@ -5,8 +5,6 @@ version: "1.0"
fields:
- field: id
range: 401-100000
- field: lane
range: "0"
- field: parent
range: "0"
- field: type
@@ -23,8 +21,6 @@ fields:
range: ""
- field: order
range: "0"
- field: cards
range: ""
- field: archived
range: "0"
- field: deleted
+40
View File
@@ -0,0 +1,40 @@
title: table zt_projectstory
desc: "项目需求关系"
author: automated export
version: "1.0"
fields:
- field: project
note: "项目ID"
range: 11-100{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: "产品ID"
range: 1-10000{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: story
note: "需求ID"
range: 2-400:2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: version
note: "版本"
range: 1
prefix: ""
postfix: ""
loop: 0
format: ""
- field: order
note: "排序"
range: 1,2
prefix: ""
postfix: ""
loop: 0
format: ""
+36 -35
View File
@@ -1,65 +1,64 @@
title: table zt_todo
desc: "待办"
author: automated export
author: ly
version: "1.0"
fields:
- field: id
note: "ID"
range: "1-10000"
range: 1-10000
prefix: ""
postfix: ""
loop: 0
format: ""
- field: account
note: "用户账号"
note: "用户名"
fields:
- field: account1
range: test,dev
- field: account2
range: 1-100
- field: account1
range: admin,user{99},test{100},dev{100},pm{100},po{100},td{100},pd{100},qd{100},top{100},outside{100}
- field: account2
range: [],1-99,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100
prefix: ""
postfix: ""
loop: 0
format: ""
- field: date
note: "日期"
from: common.date.v1.yaml
use: dateB
prefix: ""
range: "(M)-(w)"
type: timestamp
prefix: "DateTime"
postfix: ""
loop: 0
format: ""
format: "YY/MM/DD"
- field: begin
note: "开始"
range: "1000-1300:R"
range: "1000-1059:2"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: end
note: "结束"
range: "1400-2000:R"
range: "1400-1459:2"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: "类型"
range: custom{20},bug{20},task{20},story{20},testtask{20}
range: custom,bug,task,story,testtask
prefix: ""
postfix: ""
loop: 0
format: ""
- field: idvalue
note: "关联编号"
range: 0{20},1-20{20},1-20{20},1-20{20},1-20{20}
range: 0,1-20,1-20,1-20,1-20
prefix: ""
postfix: ""
loop: 0
format: ""
- field: pri
note: "优先级"
range: 1-4:R
range: 1-4
prefix: ""
postfix: ""
loop: 0
@@ -68,11 +67,11 @@ fields:
note: "待办名称"
fields:
- field: name1
range: "这是一个"
range: 自定义,BUG,任务,需求,测试单
- field: name2
range: 自定义{20},BUG{20},任务{20},需求{20},测试单{20}
range: 1-200,1-200,1-200,1-200.1-200
prefix: ""
postfix: "的名称"
postfix: "的待办"
loop: 0
format: ""
- field: desc
@@ -84,7 +83,7 @@ fields:
format: ""
- field: status
note: "状态"
range: [wait,doing,done,closed]:R
range: wait,doing,done,closed
prefix: ""
postfix: ""
loop: 0
@@ -98,35 +97,37 @@ fields:
format: ""
- field: config
note: "配置"
range: 1-10000
prefix: "这里待办json配置"
range: ""
prefix: ""
postfix: ""
loop: 0
format: ""
- field: assignedTo
note: "指派给"
from: common.user.v1.yaml
use: user
fields:
- field: ass1
range: admin,user{99},test{100},dev{100},pm{100},po{100},td{100},pd{100},qd{100},top{100},outside{100}
- field: ass2
range: [],1-99,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100
prefix: ""
postfix: ""
loop: 0
format: ""
- field: assignedBy
note: "由谁指派"
from: common.user.v1.yaml
use: user
fields:
- field: ass1
range: admin,user{99},test{100},dev{100},pm{100},po{100},td{100},pd{100},qd{100},top{100},outside{100}
- field: ass2
range: [],1-99,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100
prefix: ""
postfix: ""
loop: 0
format: ""
- field: assignedDate
note: "指派日期"
from: common.date.v1.yaml
use: dateA
prefix: ""
range: "(M)-(w):60m"
type: timestamp
prefix: "DateTime"
postfix: ""
loop: 0
format: ""
format: "YY/MM/DD hh:mm:ss"
- field: finishedBy
note: "由谁完成"
from: common.user.v1.yaml
+4
View File
@@ -3,6 +3,8 @@ $builder = new stdclass();
$builder->company = array('rows' => 1, 'extends' => array('company'));
$builder->user = array('rows' => 1000, 'extends' => array('user'));
$builder->todo = array('rows' => 2000, 'extends' => array('todo'));
$builder->effort = array('rows' => 100, 'extends' => array('effort'));
$builder->usergroup = array('rows' => 600, 'extends' => array('usergroup'));
$builder->dept = array('rows' => 100, 'extends' => array('dept'));
$builder->action = array('rows' => 100, 'extends' => array('action'));
@@ -28,6 +30,8 @@ $builder->productline = array('rows' => 20, 'extends' => array('module', 'pr
$builder->productplan = array('rows' => 30, 'extends' => array('productplan'));
$builder->branch = array('rows' => 240, 'extends' => array('branch'));
$builder->projectproduct = array('rows' => 200, 'extends' => array('projectproduct'));
$builder->projectstory = array('rows' => 200, 'extends' => array('projectstory'));
$builder->executionstory = array('rows' => 180, 'extends' => array('projectstory','executionstory'));
$builder->kanbanspace = array('rows' => 50, 'extends' => array('kanbanspace'));
$builder->kanban = array('rows' => 100, 'extends' => array('kanban'));
+6 -8
View File
@@ -10,14 +10,12 @@ fields:
postfix: ""
loop: 0
format: ""
- field: account
note: "所有者"
from: common.user.v1.yaml
use: user
prefix: ""
postfix: ""
loop: 0
format: ""
- field: account
- fields:
- field: account1
range: admin,user{99},test{100},dev{100},pm{100},po{100},td{100},pd{100},qd{100},top{100},outside{100}
- field: account2
range: []{2},1-99{2},1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100
- field: date
note: "日期"
from: common.date.v1.yaml
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/execution.class.php';
su('admin');
/**
title=测试executionModel->addProjectMembersTest();
cid=1
pid=1
敏捷执行关联用例 >> 101,1,1
瀑布执行关联用例 >> 131,43,169
看板执行关联用例 >> 161,68,269
敏捷执行关联用例统计 >> 4
瀑布执行关联用例统计 >> 4
看板执行关联用例统计 >> 4
*/
$projectIDList = array('11', '41', '71');
$executionIDList = array('101', '131', '161', '1611');
$count = array('0','1');
$execution = new executionTest();
r($execution->addProjectMembersTest($projectIDList[0], $executionIDList[0], $count[0])) && p('0:account,role') && e('po82,研发'); // 敏捷项目根据执行添加团队信息
r($execution->addProjectMembersTest($projectIDList[1], $executionIDList[1], $count[0])) && p('0:account,role') && e('test22,测试'); // 瀑布项目根据执行添加团队信息
r($execution->addProjectMembersTest($projectIDList[2], $executionIDList[2], $count[0])) && p('0:account,role') && e('test52,测试'); // 看板项目根据执行添加团队信息
r($execution->addProjectMembersTest($projectIDList[0], $executionIDList[0], $count[1])) && p() && e('2'); // 敏捷项目根据执行添加团队信息统计
r($execution->addProjectMembersTest($projectIDList[1], $executionIDList[1], $count[1])) && p() && e('1'); // 瀑布项目根据执行添加团队信息统计
r($execution->addProjectMembersTest($projectIDList[2], $executionIDList[2], $count[1])) && p() && e('1'); // 看板项目根据执行添加团队信息统计
system("./ztest init");
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/execution.class.php';
su('admin');
/**
title=测试executionModel->computeBurnTest();
cid=1
pid=1
敏捷执行关联用例 >> 101,1,1
瀑布执行关联用例 >> 131,43,169
看板执行关联用例 >> 161,68,269
敏捷执行关联用例统计 >> 4
瀑布执行关联用例统计 >> 4
看板执行关联用例统计 >> 4
*/
$count = array('0','1');
$execution = new executionTest();
r($execution->computeBurnTest($count[0])) && p('700:executionName') && e('project600'); // 正常初始化
r($execution->computeBurnTest($count[1])) && p() && e('516'); // 初始化后数据统计
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/execution.class.php';
su('admin');
/**
title=测试executionModel->fixFirstTest();
cid=1
pid=1
敏捷执行关联用例 >> 101,1,1
瀑布执行关联用例 >> 131,43,169
看板执行关联用例 >> 161,68,269
敏捷执行关联用例统计 >> 4
瀑布执行关联用例统计 >> 4
看板执行关联用例统计 >> 4
*/
$executionIDList = array('101', '131');
$scrumEstimate = array('estimate' => '25');
$withLeft = array('estimate' => '21', 'withLeft' => '1');
$waterfallEstimate = array('estimate' => '17', 'withLeft' => '1');
$execution = new executionTest();
r($execution->fixFirstTest($executionIDList[0], $scrumEstimate)) && p('0:estimate') && e('26'); // 敏捷执行更新首日工时
r($execution->fixFirstTest($executionIDList[0], $withLeft)) && p('0:estimate') && e('26'); // 敏捷执行更新首日剩余工时
r($execution->fixFirstTest($executionIDList[1], $waterfallEstimate)) && p('0:left') && e('17'); // 瀑布执行更新首日剩余工时
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/execution.class.php';
su('admin');
/**
title=测试executionModel->getBurnDataFlotTest();
cid=1
pid=1
敏捷执行关联用例 >> 101,1,1
瀑布执行关联用例 >> 131,43,169
看板执行关联用例 >> 161,68,269
敏捷执行关联用例统计 >> 4
瀑布执行关联用例统计 >> 4
看板执行关联用例统计 >> 4
*/
$executionIDList = array('101', '131', '161');
$count = array('0','1');
$execution = new executionTest();
r($execution->getBurnDataFlotTest($executionIDList[0], $count[1])) && p() && e('2'); // 敏捷执行查询统计
r($execution->getBurnDataFlotTest($executionIDList[1], $count[1])) && p() && e('2'); // 瀑布执行查询统计
r($execution->getBurnDataFlotTest($executionIDList[2], $count[1])) && p() && e('1'); // 看板执行查询统计
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/execution.class.php';
su('admin');
/**
title=测试executionModel->unlinkMemberTest();
cid=1
pid=1
敏捷执行关联用例 >> 101,1,1
瀑布执行关联用例 >> 131,43,169
看板执行关联用例 >> 161,68,269
敏捷执行关联用例统计 >> 4
瀑布执行关联用例统计 >> 4
看板执行关联用例统计 >> 4
*/
$accountList = array('user92', 'test22', 'test52');
$executionIDList = array('101', '131', '161');
$count = array('0','1');
$execution = new executionTest();
r($execution->unlinkMemberTest($executionIDList[0], $accountList[0], $count[0])) && p('0:account,role') && e('po82,研发'); // 敏捷执行解除团队成员
r($execution->unlinkMemberTest($executionIDList[0], $accountList[0], $count[1])) && p() && e('1'); // 敏捷执行解除团队成员后统计
r($execution->unlinkMemberTest($executionIDList[1], $accountList[1], $count[0])) && p() && e('0'); // 瀑布执行解除团队成员
r($execution->unlinkMemberTest($executionIDList[2], $accountList[2], $count[0])) && p('0:account,role') && e('test52,测试'); // 看板执行解除团队成员
r($execution->unlinkMemberTest($executionIDList[2], $accountList[2], $count[1])) && p() && e('1'); // 看板执行解除团队成员后统计
system("./ztest init");