Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
+8
-8
@@ -12,23 +12,23 @@ SET pmsRoot=%2
|
||||
IF "%phpcli%"=="" SET /P phpcli="Please input your php path:(example: c:\windows\php.exe)"
|
||||
if "%phpcli%"=="" (
|
||||
echo php path is error
|
||||
goto input_php
|
||||
goto input_php
|
||||
)
|
||||
if not exist %phpcli% (
|
||||
echo php path is error
|
||||
goto input_php
|
||||
goto input_php
|
||||
)
|
||||
:input_url
|
||||
IF "%pmsRoot%"=="" SET /P pmsRoot="Please input zentao url:(example: http://localhost or http://127.0.0.1:88)"
|
||||
IF "%pmsRoot%"=="" (
|
||||
echo zentao url is error
|
||||
goto input_url
|
||||
goto input_url
|
||||
)
|
||||
|
||||
:: get pmsRoot
|
||||
if "%pmsRoot:~-1%" == "/" SET pmsRoot=%pmsRoot:~0,-1%
|
||||
:: get requestType
|
||||
SET requestType= 'PATH_INFO'
|
||||
SET requestType= 'PATH_INFO'
|
||||
for /f "tokens=3" %%f in ('find /c "'PATH_INFO'" "%baseDir%..\config\my.php"') do set count=%%f
|
||||
if not defined count set count=1
|
||||
if %count% == 0 SET requestType='GET'
|
||||
@@ -58,18 +58,18 @@ echo dailyreminder.bat ok
|
||||
|
||||
:: create computeburn.bat
|
||||
if %requestType% == 'PATH_INFO' (
|
||||
SET computeburn= %phpcli% %baseDir%ztcli "%pmsRoot%/project-computeburn"
|
||||
SET computeburn= %phpcli% %baseDir%ztcli "%pmsRoot%/execution-computeburn"
|
||||
)else (
|
||||
SET computeburn= %phpcli% %baseDir%ztcli "%pmsRoot%/index.php?m=project&f=computeburn"
|
||||
SET computeburn= %phpcli% %baseDir%ztcli "%pmsRoot%/index.php?m=execution&f=computeburn"
|
||||
)
|
||||
echo %computeburn% > %baseDir%computeburn.bat
|
||||
echo computeburn.bat ok
|
||||
|
||||
:: create computetaskeffort.bat
|
||||
if %requestType% == 'PATH_INFO' (
|
||||
SET computetaskeffort= %phpcli% %baseDir%ztcli "%pmsRoot%/project-computetaskeffort"
|
||||
SET computetaskeffort= %phpcli% %baseDir%ztcli "%pmsRoot%/execution-computetaskeffort"
|
||||
)else (
|
||||
SET computetaskeffort= %phpcli% %baseDir%ztcli "%pmsRoot%/index.php?m=project&f=computetaskeffort"
|
||||
SET computetaskeffort= %phpcli% %baseDir%ztcli "%pmsRoot%/index.php?m=execution&f=computetaskeffort"
|
||||
)
|
||||
echo %computetaskeffort% > %baseDir%computetaskeffort.bat
|
||||
echo computetaskeffort.bat ok
|
||||
|
||||
+10
-10
@@ -7,25 +7,25 @@ basePath=$(cd "$(dirname "$0")"; pwd)
|
||||
if [ ! -n "$1" ]; then
|
||||
while :; do
|
||||
echo "Please input your php path:(example: /usr/bin/php)"
|
||||
read phpcli
|
||||
if [ ! -f $phpcli ]; then
|
||||
read phpcli
|
||||
if [ ! -f $phpcli ]; then
|
||||
echo "php path is error";
|
||||
elif [ "$phpcli"x != ""x ]; then
|
||||
break;
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -n "$2" ]; then
|
||||
while :; do
|
||||
echo "Please input zentao url:(example: http://localhost:88/zentao or http://localhost)"
|
||||
read pmsRoot
|
||||
read pmsRoot
|
||||
if [ -z "$pmsRoot" ]; then
|
||||
echo "zentao url is error";
|
||||
echo "zentao url is error";
|
||||
else
|
||||
break;
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
pmsRoot=`echo "$pmsRoot" | sed 's/[/]$//g'`
|
||||
cat $basePath/../config/my.php |awk '$1!~/^\/\//&& $1~/\$config\->requestType/{requestType = $0} END{print requestType}'| grep -c 'PATH_INFO' > ./init.tmp
|
||||
@@ -52,18 +52,18 @@ echo "backup.sh ok"
|
||||
|
||||
# computeburn
|
||||
if [ $requestType == 'PATH_INFO' ]; then
|
||||
computeburn="$phpcli $basePath/ztcli '$pmsRoot/project-computeburn'";
|
||||
computeburn="$phpcli $basePath/ztcli '$pmsRoot/execution-computeburn'";
|
||||
else
|
||||
computeburn="$phpcli $basePath/ztcli '$pmsRoot/index.php?m=project&f=computeburn'";
|
||||
computeburn="$phpcli $basePath/ztcli '$pmsRoot/index.php?m=execution&f=computeburn'";
|
||||
fi
|
||||
echo $computeburn > $basePath/computeburn.sh
|
||||
echo "computeburn.sh ok"
|
||||
|
||||
# compute task effort.
|
||||
if [ $requestType == 'PATH_INFO' ]; then
|
||||
computetaskeffort="$phpcli $basePath/ztcli '$pmsRoot/project-computetaskeffort'";
|
||||
computetaskeffort="$phpcli $basePath/ztcli '$pmsRoot/execution-computetaskeffort'";
|
||||
else
|
||||
computetaskeffort="$phpcli $basePath/ztcli '$pmsRoot/index.php?m=project&f=computetaskeffort'";
|
||||
computetaskeffort="$phpcli $basePath/ztcli '$pmsRoot/index.php?m=execution&f=computetaskeffort'";
|
||||
fi
|
||||
echo $computetaskeffort > $basePath/computetaskeffort.sh
|
||||
echo "computetaskeffort.sh ok"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+3
-2
@@ -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`;
|
||||
|
||||
+8
-1
@@ -11,7 +11,7 @@ ALTER TABLE `zt_doc` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `id`;
|
||||
ALTER TABLE `zt_doclib` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `type`;
|
||||
ALTER TABLE `zt_action` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `read`;
|
||||
ALTER TABLE `zt_searchindex` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `id`;
|
||||
ALTER TABLE `zt_config` ADD `vision` varchar(10) NOT NULL DEFAULT '' AFTER `id`;
|
||||
ALTER TABLE `zt_config` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `id`;
|
||||
ALTER TABLE `zt_config` DROP INDEX `unique`, ADD UNIQUE `unique` (`vision`,`owner`,`module`,`section`,`key`);
|
||||
ALTER TABLE `zt_todo` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `deleted`;
|
||||
ALTER TABLE `zt_block` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `account`;
|
||||
@@ -48,3 +48,10 @@ SELECT `module`, `method`,(SELECT `id` FROM zt_group WHERE `name` = '团队成
|
||||
ALTER TABLE `zt_productplan` ADD `closedReason` varchar(20) NOT NULL AFTER `order`;
|
||||
|
||||
update zt_config set `value` = concat(`value`, ',visions') where module = 'user' and `key` = 'requiredFields' and section in ('create', 'edit');
|
||||
|
||||
ALTER TABLE `zt_kanban` CHANGE `order` `order` mediumint NOT NULL DEFAULT '0' AFTER `status`;
|
||||
ALTER TABLE `zt_kanbancolumn` CHANGE `group` `group` mediumint NOT NULL DEFAULT '0' AFTER `region`;
|
||||
ALTER TABLE `zt_kanbancard` CHANGE `order` `order` mediumint NOT NULL DEFAULT '0' AFTER `whitelist`;
|
||||
ALTER TABLE `zt_kanbanregion` CHANGE `order` `order` mediumint NOT NULL DEFAULT '0' AFTER `name`;
|
||||
ALTER TABLE `zt_kanbanspace` CHANGE `order` `order` mediumint NOT NULL DEFAULT '0' AFTER `status`;
|
||||
ALTER TABLE `zt_projectstory` CHANGE `branch` `branch` mediumint unsigned NOT NULL AFTER `product`;
|
||||
|
||||
+2
-2
@@ -98,7 +98,7 @@ CREATE TABLE `zt_apistruct` (
|
||||
`lib` int UNSIGNED NOT NULL DEFAULT 0,
|
||||
`name` varchar(30) NOT NULL DEFAULT '',
|
||||
`type` varchar(50) NOT NULL DEFAULT '',
|
||||
`desc` varchar(255) NOT NULL DEFAULT '',
|
||||
`desc` text NOT NULL DEFAULT '',
|
||||
`version` smallint unsigned NOT NULL DEFAULT 0,
|
||||
`attribute` text NULL,
|
||||
`addedBy` varchar(30) NOT NULL DEFAULT 0,
|
||||
@@ -359,7 +359,7 @@ CREATE TABLE IF NOT EXISTS `zt_compile` (
|
||||
-- DROP TABLE IF EXISTS `zt_config`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_config` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
`vision` varchar(10) NOT NULL DEFAULT '',
|
||||
`vision` varchar(10) NOT NULL DEFAULT 'rnd',
|
||||
`owner` char(30) NOT NULL default '',
|
||||
`module` varchar(30) NOT NULL,
|
||||
`section` char(30) NOT NULL default '',
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
$config->effort->list->exportFields = 'id,date,dept,account,work,consumed,left,objectType,execution';
|
||||
$config->effort->list->defaultFields = 'id,date,account,work,consumed,left,objectType,execution';
|
||||
|
||||
$config->effort->datatable->defaultField = array('id', 'date', 'account', 'work', 'consumed', 'left', 'objectType', 'execution');
|
||||
@@ -0,0 +1,6 @@
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
$('#productBox').addClass("hide");
|
||||
});
|
||||
</script>
|
||||
@@ -877,6 +877,17 @@ class actionModel extends model
|
||||
$actionCondition = $this->getActionCondition();
|
||||
if(!$actionCondition and !$this->app->user->admin and isset($this->app->user->rights['acls']['actions'])) return array();
|
||||
|
||||
/* Restrict query data in this year when no limit for big data. */
|
||||
$beginDate = '';
|
||||
if($period == 'all')
|
||||
{
|
||||
$year = date('Y');
|
||||
$beginDate = $year . '-01-01';
|
||||
|
||||
/* When query all dynamic then query the data of the last two years at most. */
|
||||
if($this->app->getMethodName() == 'dynamic') $beginDate = $year - 1 . '-01-01';
|
||||
}
|
||||
|
||||
/* Get actions. */
|
||||
$actions = $this->dao->select('*')->from(TABLE_ACTION)
|
||||
->where('objectType')->notIN('kanbanregion,kanbanlane,kanbancolumn')
|
||||
@@ -885,6 +896,7 @@ class actionModel extends model
|
||||
->beginIF($period != 'all')->andWhere('date')->lt($end)->fi()
|
||||
->beginIF($date)->andWhere('date' . ($direction == 'next' ? '<' : '>') . "'{$date}'")->fi()
|
||||
->beginIF($account != 'all')->andWhere('actor')->eq($account)->fi()
|
||||
->beginIF($beginDate)->andWhere('date')->ge($beginDate)->fi()
|
||||
->beginIF(is_numeric($productID))->andWhere('product')->like("%,$productID,%")->fi()
|
||||
->andWhere()
|
||||
->markLeft(1)
|
||||
|
||||
@@ -205,7 +205,6 @@ class company extends control
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$order = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = common::appendOrder($order);
|
||||
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
@@ -245,11 +244,11 @@ class company extends control
|
||||
if(!$productID) $productID = 'all';
|
||||
if(!$projectID) $projectID = 'all';
|
||||
if(!$executionID) $executionID = 'all';
|
||||
$actions = $this->action->getDynamic($account, $browseType, $sort, $pager, $productID, $projectID, $executionID, $date, $direction);
|
||||
$actions = $this->action->getDynamic($account, $browseType, $orderBy, $pager, $productID, $projectID, $executionID, $date, $direction);
|
||||
}
|
||||
else
|
||||
{
|
||||
$actions = $this->action->getDynamicBySearch($products, $projects, $executions, $queryID, $sort, $pager, $date, $direction);
|
||||
$actions = $this->action->getDynamicBySearch($products, $projects, $executions, $queryID, $orderBy, $pager, $date, $direction);
|
||||
}
|
||||
|
||||
/* Build search form. */
|
||||
|
||||
@@ -76,7 +76,8 @@ class customModel extends model
|
||||
$item->key = $key;
|
||||
$item->value = $value;
|
||||
$item->system = $system;
|
||||
$item->vision = $this->config->vision;
|
||||
|
||||
if(!defined('IN_UPGRADE')) $item->vision = $this->config->vision;
|
||||
|
||||
$this->dao->replace(TABLE_LANG)->data($item)->exec();
|
||||
}
|
||||
|
||||
@@ -202,6 +202,7 @@ $lang->doc->noCollectedDoc = 'You have not favorited any documents.';
|
||||
$lang->doc->errorEmptyLib = 'No data in document library.';
|
||||
$lang->doc->confirmUpdateContent = 'You have a document that is not saved from last time. Do you want to continue editing it?';
|
||||
$lang->doc->selectLibType = 'Please select a type of doc library.';
|
||||
$lang->doc->noLibreOffice = 'You does not have access to office conversion settings!';
|
||||
|
||||
$lang->doc->noticeAcl['lib']['product']['default'] = 'Users who can access the selected product can access it.';
|
||||
$lang->doc->noticeAcl['lib']['product']['custom'] = 'Users who can access the selected product or users in the whiltelist can access it.';
|
||||
|
||||
@@ -202,6 +202,7 @@ $lang->doc->noCollectedDoc = '您还没有收藏任何文档。';
|
||||
$lang->doc->errorEmptyLib = '文档库暂无数据。';
|
||||
$lang->doc->confirmUpdateContent = '检查到您有未保存的文档内容,是否继续编辑?';
|
||||
$lang->doc->selectLibType = '请选择文档库类型';
|
||||
$lang->doc->noLibreOffice = '您还没有office转换设置访问权限!';
|
||||
|
||||
$lang->doc->noticeAcl['lib']['product']['default'] = '有所选产品访问权限的用户可以访问。';
|
||||
$lang->doc->noticeAcl['lib']['product']['custom'] = '有所选产品访问权限或白名单里的用户可以访问。';
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<script>
|
||||
$("a[href^='###']").click(function()
|
||||
{
|
||||
alert('<?php echo $lang->doc->accessDenied;?>');
|
||||
alert('<?php echo $lang->doc->noLibreOffice;?>');
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -2957,7 +2957,6 @@ class execution extends control
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = common::appendOrder($orderBy);
|
||||
|
||||
/* Set the menu. If the executionID = 0, use the indexMenu instead. */
|
||||
$this->execution->setMenu($executionID);
|
||||
@@ -2975,7 +2974,7 @@ class execution extends control
|
||||
}
|
||||
$period = $type == 'account' ? 'all' : $type;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, 'all', 'all', $executionID, $date, $direction);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $orderBy, $pager, 'all', 'all', $executionID, $date, $direction);
|
||||
|
||||
/* The header and position. */
|
||||
$execution = $this->execution->getByID($executionID);
|
||||
|
||||
@@ -74,7 +74,7 @@ class misc extends control
|
||||
|
||||
$source = isset($this->config->qcVersion) ? 'qucheng' : 'zentao';
|
||||
$lang = str_replace('-', '_', $this->app->getClientLang());
|
||||
$link = $website . "/updater-getLatest-{$this->config->version}-$source-$lang.html";
|
||||
$link = $website . "/updater-getLatest-{$this->config->version}-$source-$lang-$sn.html";
|
||||
|
||||
$latestVersionList = common::http($link);
|
||||
|
||||
|
||||
@@ -1236,14 +1236,13 @@ EOF;
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = common::appendOrder($orderBy);
|
||||
|
||||
/* The header and position. */
|
||||
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->dynamic;
|
||||
$this->view->position[] = $this->lang->my->dynamic;
|
||||
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
$actions = $this->loadModel('action')->getDynamic($this->app->user->account, $type, $sort, $pager, 'all', 'all', 'all', $date, $direction);
|
||||
$actions = $this->loadModel('action')->getDynamic($this->app->user->account, $type, $orderBy, $pager, 'all', 'all', 'all', $date, $direction);
|
||||
if(empty($recTotal)) $originTotal = $pager->recTotal;
|
||||
|
||||
/* Assign. */
|
||||
|
||||
@@ -854,7 +854,6 @@ class product extends control
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = common::appendOrder($orderBy);
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
@@ -869,7 +868,7 @@ class product extends control
|
||||
}
|
||||
$period = $type == 'account' ? 'all' : $type;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, $productID, 'all', 'all', $date, $direction);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $orderBy, $pager, $productID, 'all', 'all', $date, $direction);
|
||||
|
||||
/* The header and position. */
|
||||
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->product->dynamic;
|
||||
|
||||
@@ -840,7 +840,6 @@ class project extends control
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = common::appendOrder($orderBy);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
@@ -855,7 +854,7 @@ class project extends control
|
||||
}
|
||||
$period = $type == 'account' ? 'all' : $type;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, 'all', $projectID, 'all', $date, $direction);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $orderBy, $pager, 'all', $projectID, 'all', $date, $direction);
|
||||
|
||||
/* The header and position. */
|
||||
$project = $this->project->getByID($projectID);
|
||||
|
||||
@@ -51,8 +51,8 @@ class settingModel extends model
|
||||
{
|
||||
/* Determine vision of config item. */
|
||||
$pathVision = explode('@', $path);
|
||||
$vision = isset($pathVision[1]) ? $pathVision[1] : '';
|
||||
$path = $pathVision[0];
|
||||
$vision = isset($pathVision[1]) ? $pathVision[1] : '';
|
||||
$path = $pathVision[0];
|
||||
|
||||
/* fix bug when account has dot. */
|
||||
$account = isset($this->app->user->account) ? $this->app->user->account : '';
|
||||
@@ -78,8 +78,7 @@ class settingModel extends model
|
||||
$item->key = $key;
|
||||
$item->value = $value;
|
||||
|
||||
/* If in upgrade, skip vision. */
|
||||
if(!defined('IN_UPGRADE')) $item->vision = $vision;
|
||||
if($vision) $item->vision = $vision;
|
||||
|
||||
$this->dao->replace(TABLE_CONFIG)->data($item)->exec();
|
||||
}
|
||||
|
||||
+18
-17
@@ -461,28 +461,29 @@ class upgradeModel extends model
|
||||
set_time_limit(0);
|
||||
$this->updateActivatedDate();
|
||||
|
||||
if(!empty($this->config->isINT))
|
||||
{
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'xuanxuan.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
$executedXuanxuan = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$executedXuanxuan)
|
||||
{
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan4.6.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan5.1.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
}
|
||||
}
|
||||
|
||||
switch($fromEdition)
|
||||
{
|
||||
case 'open':
|
||||
$this->execSQL($this->getUpgradeFile('proinstall'));
|
||||
case 'pro':
|
||||
$this->execSQL($this->getUpgradeFile('bizinstall'));
|
||||
if(!empty($this->config->isINT))
|
||||
{
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'xuanxuan.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
$executedXuanxuan = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$executedXuanxuan)
|
||||
{
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan4.6.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan5.1.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
}
|
||||
}
|
||||
case 'biz':
|
||||
$this->execSQL($this->getUpgradeFile('maxinstall'));
|
||||
$this->execSQL($this->getUpgradeFile('functions'));
|
||||
@@ -5827,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;
|
||||
}
|
||||
|
||||
@@ -1110,10 +1110,9 @@ class user extends control
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = common::appendOrder($orderBy);
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, 'all', 'all', 'all', $date, $direction);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $orderBy, $pager, 'all', 'all', 'all', $date, $direction);
|
||||
|
||||
$this->view->title = $this->lang->user->common . $this->lang->colon . $this->lang->user->dynamic;
|
||||
$this->view->position[] = $this->lang->user->dynamic;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+231
-1
@@ -640,6 +640,7 @@ class taskTest
|
||||
|
||||
public function processTaskTest($task)
|
||||
{
|
||||
$task->deadline = $task->deadline == '-1day' ? date('Y-m-d',strtotime('-1 day')) : date('Y-m-d',strtotime('+1 day'));
|
||||
$object = $this->objectModel->processTask($task);
|
||||
|
||||
if(dao::isError())
|
||||
@@ -652,8 +653,33 @@ class taskTest
|
||||
}
|
||||
}
|
||||
|
||||
public function processTasksTest($tasks)
|
||||
public function processTasksTest($executionID)
|
||||
{
|
||||
global $tester;
|
||||
$tasks = $tester->dao->select('*')->from(TABLE_TASK)->where('execution')->eq($executionID)->andWhere('deleted')->eq('0')->fetchAll('id');
|
||||
$parents = '0';
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
if($task->parent > 0) $parents .= ",$task->parent";
|
||||
}
|
||||
$parents = $tester->dao->select('*')->from(TABLE_TASK)->where('`id`')->in($parents)->andWhere('deleted')->eq('0')->fetchAll('id');
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
if($task->parent > 0)
|
||||
{
|
||||
if(isset($tasks[$task->parent]))
|
||||
{
|
||||
$tasks[$task->parent]->children[$task->id] = $task;
|
||||
unset($tasks[$task->id]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$parent = $parents[$task->parent];
|
||||
$task->parentName = $parent->name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$object = $this->objectModel->processTasks($tasks);
|
||||
|
||||
if(dao::isError())
|
||||
@@ -665,4 +691,208 @@ class taskTest
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function processData4ReportTest($tasks, $children, $field)
|
||||
{
|
||||
$object = $this->objectModel->processData4Report($tasks, $children, $field);
|
||||
|
||||
$object['void'] = isset($object['']) ? $object[''] : 'void';
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
if($field == 'deadline')
|
||||
{
|
||||
$dateList = array(date('Y-m-d',strtotime('-8 day')), date('Y-m-d',strtotime('-15 day')));
|
||||
return array($object[$dateList[0]], $object[$dateList[1]]);
|
||||
}
|
||||
return count($object) == 0 ? array('void' => 'void') : $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerExecutionTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerExecution();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerModuleTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerModule();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerAssignedToTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerAssignedTo();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerTypeTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerType();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerPriTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerPri();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerDeadlineTest($dateID)
|
||||
{
|
||||
$dateList = array(date('Y-m-d',strtotime('+1 day')), date('Y-m-d',strtotime('+2 day')), date('Y-m-d',strtotime('+3 day')), date('Y-m-d',strtotime('+4 day')), date('Y-m-d',strtotime('-1 day')), date('Y-m-d',strtotime('-2 day')), date('Y-m-d',strtotime('-3 day')), date('Y-m-d',strtotime('-4 day')));
|
||||
$object = $this->objectModel->getDataOfTasksPerDeadline();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return array($dateID => $object[$dateList[$dateID]]);
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerEstimateTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerEstimate();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerLeftTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerLeft();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerConsumedTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerConsumed();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerFinishedByTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerFinishedBy();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerClosedReasonTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerClosedReason();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOffinishedTasksPerDayTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOffinishedTasksPerDay();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataOfTasksPerStatusTest()
|
||||
{
|
||||
$object = $this->objectModel->getDataOfTasksPerStatus();
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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: ""
|
||||
@@ -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: ""
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -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
|
||||
|
||||
Executable
+33
@@ -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");
|
||||
Executable
+26
@@ -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'); // 初始化后数据统计
|
||||
Executable
+31
@@ -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'); // 瀑布执行更新首日剩余工时
|
||||
Executable
+28
@@ -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'); // 看板执行查询统计
|
||||
Executable
+32
@@ -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");
|
||||
@@ -10,8 +10,8 @@ title=taskModel->computeBeginAndEnd();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
根据taskID计算没有父计划的开始结束时间 >> 1,2022-03-11,0000-00-00 00:00:00,2022-03-18
|
||||
根据taskID计算有父计划的父开始结束时间 >> 601,,0000-00-00 00:00:00,2022-03-04
|
||||
根据taskID计算没有父计划的开始结束时间 >> 1,2022-03-14,0000-00-00 00:00:00,2022-03-21
|
||||
根据taskID计算有父计划的父开始结束时间 >> 601,,0000-00-00 00:00:00,2022-03-07
|
||||
根据不存在的taskID计划开始结束时间 >> 0
|
||||
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ pid=1
|
||||
$taskIDList = array('1', '901', '100001');
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->computeBeginAndEndTest($taskIDList[0])) && p('id,estStarted,realStarted,deadline') && e('1,2022-03-11,0000-00-00 00:00:00,2022-03-18'); //根据taskID计算没有父计划的开始结束时间
|
||||
r($task->computeBeginAndEndTest($taskIDList[1])) && p('id,estStarted,realStarted,deadline') && e('601,,0000-00-00 00:00:00,2022-03-04'); //根据taskID计算有父计划的父开始结束时间
|
||||
r($task->computeBeginAndEndTest($taskIDList[0])) && p('id,estStarted,realStarted,deadline') && e('1,2022-03-14,0000-00-00 00:00:00,2022-03-21'); //根据taskID计算没有父计划的开始结束时间
|
||||
r($task->computeBeginAndEndTest($taskIDList[1])) && p('id,estStarted,realStarted,deadline') && e('601,,0000-00-00 00:00:00,2022-03-07'); //根据taskID计算有父计划的父开始结束时间
|
||||
r($task->computeBeginAndEndTest($taskIDList[2])) && p('id,estStarted,realStarted,deadline') && e('0'); //根据不存在的taskID计算开始结束时间
|
||||
system("./ztest init");
|
||||
|
||||
@@ -19,3 +19,4 @@ $assignedTo = 'user92';
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getUserTasksTest($taskID,$assignedTo)) && p('2:name') && e('开发任务12'); // 根据指派人员查看任务
|
||||
system("./ztest init");
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOffinishedTasksPerDay();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计没有每日完成的任务数量 >> 0
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOffinishedTasksPerDayTest()) && p() && e('0'); //统计没有每日完成的任务数量
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerAssignedTo();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计指派给为po82的任务数量 >> 研发主管82,1
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerAssignedToTest()) && p('po82:name,value') && e('研发主管82,1'); //统计指派给为po82的任务数量
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerClosedReason();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计没有完成原因的任务数量 >> 0
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerClosedReasonTest()) && p() && e('0'); //统计没有完成原因的任务数量
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerConsumed();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计消耗工时为3的任务数量 >> 3,90
|
||||
统计消耗工时为4的任务数量 >> 4,90
|
||||
统计消耗工时为5的任务数量 >> 5,90
|
||||
统计消耗工时为6的任务数量 >> 6,91
|
||||
统计消耗工时为7的任务数量 >> 7,91
|
||||
统计消耗工时为8的任务数量 >> 8,91
|
||||
统计消耗工时为9的任务数量 >> 9,91
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('3:name,value') && e('3,90'); //统计消耗工时为3的任务数量
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('4:name,value') && e('4,90'); //统计消耗工时为4的任务数量
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('5:name,value') && e('5,90'); //统计消耗工时为5的任务数量
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('6:name,value') && e('6,91'); //统计消耗工时为6的任务数量
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('7:name,value') && e('7,91'); //统计消耗工时为7的任务数量
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('8:name,value') && e('8,91'); //统计消耗工时为8的任务数量
|
||||
r($task->getDataOfTasksPerConsumedTest()) && p('9:name,value') && e('9,91'); //统计消耗工时为9的任务数量
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerDeadline();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计日期为+1days的任务数量 >> 17
|
||||
统计日期为+2days的任务数量 >> 17
|
||||
统计日期为+3days的任务数量 >> 18
|
||||
统计日期为+4days的任务数量 >> 18
|
||||
统计日期为-1days的任务数量 >> 17
|
||||
统计日期为-2days的任务数量 >> 17
|
||||
统计日期为-3days的任务数量 >> 17
|
||||
统计日期为-4days的任务数量 >> 17
|
||||
|
||||
*/
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerDeadlineTest(0)) && p("0:value") && e("17"); //统计日期为+1days的任务数量
|
||||
r($task->getDataOfTasksPerDeadlineTest(1)) && p("1:value") && e("17"); //统计日期为+2days的任务数量
|
||||
r($task->getDataOfTasksPerDeadlineTest(2)) && p("2:value") && e("18"); //统计日期为+3days的任务数量
|
||||
r($task->getDataOfTasksPerDeadlineTest(3)) && p("3:value") && e("18"); //统计日期为+4days的任务数量
|
||||
r($task->getDataOfTasksPerDeadlineTest(4)) && p("4:value") && e("17"); //统计日期为-1days的任务数量
|
||||
r($task->getDataOfTasksPerDeadlineTest(5)) && p("5:value") && e("17"); //统计日期为-2days的任务数量
|
||||
r($task->getdataoftasksperdeadlinetest(6)) && p("6:value") && e("17"); //统计日期为-3days的任务数量
|
||||
r($task->getdataoftasksperdeadlinetest(7)) && p("7:value") && e("17"); //统计日期为-4days的任务数量
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerEstimate();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计预计工时为0的任务数量 >> 0,83
|
||||
统计预计工时为1的任务数量 >> 1,83
|
||||
统计预计工时为2的任务数量 >> 2,83
|
||||
统计预计工时为3的任务数量 >> 3,83
|
||||
统计预计工时为4的任务数量 >> 4,83
|
||||
统计预计工时为5的任务数量 >> 5,83
|
||||
统计预计工时为6的任务数量 >> 6,82
|
||||
统计预计工时为7的任务数量 >> 7,82
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('0:name,value') && e('0,83'); //统计预计工时为0的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('1:name,value') && e('1,83'); //统计预计工时为1的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('2:name,value') && e('2,83'); //统计预计工时为2的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('3:name,value') && e('3,83'); //统计预计工时为3的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('4:name,value') && e('4,83'); //统计预计工时为4的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('5:name,value') && e('5,83'); //统计预计工时为5的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('6:name,value') && e('6,82'); //统计预计工时为6的任务数量
|
||||
r($task->getDataOfTasksPerEstimateTest()) && p('7:name,value') && e('7,82'); //统计预计工时为7的任务数量
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerExecution();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计executionID为101的执行的任务数量 >> 迭代1,14
|
||||
统计executionID为102的执行的任务数量 >> 迭代2,4
|
||||
统计executionID为103的执行的任务数量 >> 迭代3,4
|
||||
统计executionID为104的执行的任务数量 >> 迭代4,4
|
||||
统计executionID为105的执行的任务数量 >> 迭代5,4
|
||||
统计executionID为106的执行的任务数量 >> 迭代6,4
|
||||
统计executionID为107的执行的任务数量 >> 迭代7,4
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('101:name,value') && e('迭代1,14'); //统计executionID为101的执行的任务数量
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('102:name,value') && e('迭代2,4'); //统计executionID为102的执行的任务数量
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('103:name,value') && e('迭代3,4'); //统计executionID为103的执行的任务数量
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('104:name,value') && e('迭代4,4'); //统计executionID为104的执行的任务数量
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('105:name,value') && e('迭代5,4'); //统计executionID为105的执行的任务数量
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('106:name,value') && e('迭代6,4'); //统计executionID为106的执行的任务数量
|
||||
r($task->getDataOfTasksPerExecutionTest()) && p('107:name,value') && e('迭代7,4'); //统计executionID为107的执行的任务数量
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerFinishedBy();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计没有完成者的任务数量 >> 0
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerFinishedByTest()) && p() && e('0'); //统计没有完成者的任务数量
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerLeft();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计剩余工时为0的任务数量 >> 0,83
|
||||
统计剩余工时为1的任务数量 >> 1,83
|
||||
统计剩余工时为2的任务数量 >> 2,83
|
||||
统计剩余工时为3的任务数量 >> 3,83
|
||||
统计剩余工时为4的任务数量 >> 4,83
|
||||
统计剩余工时为5的任务数量 >> 5,83
|
||||
统计剩余工时为6的任务数量 >> 6,82
|
||||
统计剩余工时为7的任务数量 >> 7,82
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('0:name,value') && e('0,83'); //统计剩余工时为0的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('1:name,value') && e('1,83'); //统计剩余工时为1的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('2:name,value') && e('2,83'); //统计剩余工时为2的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('3:name,value') && e('3,83'); //统计剩余工时为3的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('4:name,value') && e('4,83'); //统计剩余工时为4的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('5:name,value') && e('5,83'); //统计剩余工时为5的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('6:name,value') && e('6,82'); //统计剩余工时为6的任务数量
|
||||
r($task->getDataOfTasksPerLeftTest()) && p('7:name,value') && e('7,82'); //统计剩余工时为7的任务数量
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerModule();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
|
||||
统计moduleID为21的模块的任务数量 >> /模块1,12
|
||||
统计moduleID为615的模块的任务数量 >> /模块595,2
|
||||
统计moduleID为504的模块的任务数量 >> /模块484,2
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerModuleTest()) && p('21:name,value') && e('/模块1,12'); //统计moduleID为21的模块的任务数量
|
||||
r($task->getDataOfTasksPerModuleTest()) && p('615:name,value') && e('/模块595,2'); //统计moduleID为615的模块的任务数量
|
||||
r($task->getDataOfTasksPerModuleTest()) && p('504:name,value') && e('/模块484,2'); //统计moduleID为504的模块的任务数量
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerPri();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计优先级为1的任务数量 >> 1,228
|
||||
统计优先级为2的任务数量 >> 2,228
|
||||
统计优先级为3的任务数量 >> 3,227
|
||||
统计优先级为4的任务数量 >> 4,227
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerPriTest()) && p('1:name,value') && e('1,228'); //统计优先级为1的任务数量
|
||||
r($task->getDataOfTasksPerPriTest()) && p('2:name,value') && e('2,228'); //统计优先级为2的任务数量
|
||||
r($task->getDataOfTasksPerPriTest()) && p('3:name,value') && e('3,227'); //统计优先级为3的任务数量
|
||||
r($task->getDataOfTasksPerPriTest()) && p('4:name,value') && e('4,227'); //统计优先级为4的任务数量
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerStatus();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计状态为已完成的任务数量 >> 已完成,152
|
||||
统计状态为未开始的任务数量 >> 未开始,152
|
||||
统计状态为进行中的任务数量 >> 进行中,152
|
||||
统计状态为已暂停的任务数量 >> 已暂停,152
|
||||
统计状态为已取消的任务数量 >> 已取消,151
|
||||
统计状态为已关闭的任务数量 >> 已关闭,151
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerStatusTest()) && p('done:name,value') && e('已完成,152'); //统计状态为已完成的任务数量
|
||||
r($task->getDataOfTasksPerStatusTest()) && p('wait:name,value') && e('未开始,152'); //统计状态为未开始的任务数量
|
||||
r($task->getDataOfTasksPerStatusTest()) && p('doing:name,value') && e('进行中,152'); //统计状态为进行中的任务数量
|
||||
r($task->getDataOfTasksPerStatusTest()) && p('pause:name,value') && e('已暂停,152'); //统计状态为已暂停的任务数量
|
||||
r($task->getDataOfTasksPerStatusTest()) && p('cancel:name,value') && e('已取消,151'); //统计状态为已取消的任务数量
|
||||
r($task->getDataOfTasksPerStatusTest()) && p('closed:name,value') && e('已关闭,151'); //统计状态为已关闭的任务数量
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->getDataOfTasksPerType();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
统计类型为devel的任务数量 >> 开发,115
|
||||
统计类型为study的任务数量 >> 研究,114
|
||||
统计类型为discuss的任务数量 >> 讨论,113
|
||||
统计类型为ui的任务数量 >> 界面,113
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->getDataOfTasksPerTypeTest()) && p('devel:name,value') && e('开发,115'); //统计类型为devel的任务数量
|
||||
r($task->getDataOfTasksPerTypeTest()) && p('study:name,value') && e('研究,114'); //统计类型为study的任务数量
|
||||
r($task->getDataOfTasksPerTypeTest()) && p('discuss:name,value') && e('讨论,113'); //统计类型为discuss的任务数量
|
||||
r($task->getDataOfTasksPerTypeTest()) && p('ui:name,value') && e('界面,113'); //统计类型为ui的任务数量
|
||||
|
||||
Executable
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->processData4Report();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
计算executionID为101的执行下按迭代任务数统计的图表数据 101 >> 101,14
|
||||
计算executionID为101的执行下按模块任务统计的图表数据 27 >> 27,1
|
||||
计算executionID为101的执行下按模块任务统计的图表数据 21 >> 21,12
|
||||
计算executionID为101的执行下按指派给统计的图表数据 >> po82,1
|
||||
计算executionID为101的执行下按任务类型统计的图表数据 ui >> ui,1
|
||||
计算executionID为101的执行下按任务类型统计的图表数据 test >> test,2
|
||||
计算executionID为101的执行下按优先级统计的图表数据 1 >> 1,5
|
||||
计算executionID为101的执行下按优先级统计的图表数据 2 >> 2,4
|
||||
计算executionID为101的执行下按任务状态统计的图表数据 -8day >> 2
|
||||
计算executionID为101的执行下按任务状态统计的图表数据 -15day >> 1
|
||||
计算executionID为101的执行下按截止时间统计的图表数据 0 >> 0,3
|
||||
计算executionID为101的执行下按截止时间统计的图表数据 5 >> 5,1
|
||||
计算executionID为101的执行下按预计时间统计的图表数据 0 >> 0,2
|
||||
计算executionID为101的执行下按预计时间统计的图表数据 6 >> 6,1
|
||||
计算executionID为101的执行下按剩余时间统计的图表数据 3 >> 3,2
|
||||
计算executionID为101的执行下按剩余时间统计的图表数据 7 >> 7,1
|
||||
计算executionID为101的执行下按消耗时间统计的图表数据 >> ,11
|
||||
计算executionID为101的执行下按由谁完成统计的图表数据 >> ,14
|
||||
计算executionID为101的执行下按关闭原因统计的图表数据 >> void
|
||||
计算executionID为101的执行下按每天完成统计的图表数据 wait >> wait,4
|
||||
计算executionID为101的执行下按每天完成统计的图表数据 done >> done,3
|
||||
|
||||
*/
|
||||
|
||||
$now = helper::now();
|
||||
|
||||
$tasks = $dao->select('*')->from(TABLE_TASK)->where('`execution`')->eq('101')->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
$parents = array();
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
if($task->parent > 0) $parents[$task->parent] = $task->parent;
|
||||
}
|
||||
$parents = $dao->select('*')->from(TABLE_TASK)->where('id')->in($parents)->fetchAll('id');
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
if($task->parent > 0)
|
||||
{
|
||||
if(isset($tasks[$task->parent]))
|
||||
{
|
||||
$tasks[$task->parent]->children[$task->id] = $task;
|
||||
}
|
||||
else
|
||||
{
|
||||
$parent = $parents[$task->parent];
|
||||
$task->parentName = $parent->name;
|
||||
}
|
||||
}
|
||||
$task->date = '0000-00-00';
|
||||
}
|
||||
|
||||
$children = $tasks[601]->children + $tasks[602]->children + $tasks[603]->children;
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->processData4ReportTest($tasks, '', "execution")) && p('101:name,value') && e('101,14'); //计算executionID为101的执行下按迭代任务数统计的图表数据 101
|
||||
r($task->processData4ReportTest($tasks, '', 'module')) && p('27:name,value') && e('27,1'); //计算executionID为101的执行下按模块任务统计的图表数据 27
|
||||
r($task->processData4ReportTest($tasks, '', 'module')) && p('21:name,value') && e('21,12'); //计算executionID为101的执行下按模块任务统计的图表数据 21
|
||||
r($task->processData4ReportTest($tasks, '', 'assignedTo')) && p('po82:name,value') && e('po82,1'); //计算executionID为101的执行下按指派给统计的图表数据
|
||||
r($task->processData4ReportTest($tasks, '', 'type')) && p('ui:name,value') && e('ui,1'); //计算executionID为101的执行下按任务类型统计的图表数据 ui
|
||||
r($task->processData4ReportTest($tasks, '', 'type')) && p('test:name,value') && e('test,2'); //计算executionID为101的执行下按任务类型统计的图表数据 test
|
||||
r($task->processData4ReportTest($tasks, '', 'pri')) && p('1:name,value') && e('1,5'); //计算executionID为101的执行下按优先级统计的图表数据 1
|
||||
r($task->processData4ReportTest($tasks, '', 'pri')) && p('2:name,value') && e('2,4'); //计算executionID为101的执行下按优先级统计的图表数据 2
|
||||
r($task->processData4ReportTest($tasks, '', 'deadline')) && p('0:value') && e("2"); //计算executionID为101的执行下按任务状态统计的图表数据 -8day
|
||||
r($task->processData4ReportTest($tasks, '', 'deadline')) && p('1:value') && e("1"); //计算executionID为101的执行下按任务状态统计的图表数据 -15day
|
||||
r($task->processData4ReportTest($tasks, '', 'estimate')) && p('0:name,value') && e('0,3'); //计算executionID为101的执行下按截止时间统计的图表数据 0
|
||||
r($task->processData4ReportTest($tasks, '', 'estimate')) && p('5:name,value') && e('5,1'); //计算executionID为101的执行下按截止时间统计的图表数据 5
|
||||
r($task->processData4ReportTest($tasks, $children, 'left')) && p('0:name,value') && e('0,2'); //计算executionID为101的执行下按预计时间统计的图表数据 0
|
||||
r($task->processData4ReportTest($tasks, $children, 'left')) && p('6:name,value') && e('6,1'); //计算executionID为101的执行下按预计时间统计的图表数据 6
|
||||
r($task->processData4ReportTest($tasks, $children, 'consumed')) && p('3:name,value') && e('3,2'); //计算executionID为101的执行下按剩余时间统计的图表数据 3
|
||||
r($task->processData4ReportTest($tasks, $children, 'consumed')) && p('7:name,value') && e('7,1'); //计算executionID为101的执行下按剩余时间统计的图表数据 7
|
||||
r($task->processData4ReportTest($tasks, $children, 'finishedBy')) && p('void:name,value') && e(',11'); //计算executionID为101的执行下按消耗时间统计的图表数据
|
||||
r($task->processData4ReportTest($tasks, '', 'closedReason')) && p('void:name,value') && e(',14'); //计算executionID为101的执行下按由谁完成统计的图表数据
|
||||
r($task->processData4ReportTest($tasks, '', 'date')) && p('void') && e('void'); //计算executionID为101的执行下按关闭原因统计的图表数据
|
||||
r($task->processData4ReportTest($tasks, '', 'status')) && p('wait:name,value') && e('wait,4'); //计算executionID为101的执行下按每天完成统计的图表数据 wait
|
||||
r($task->processData4ReportTest($tasks, '', 'status')) && p('done:name,value') && e('done,3'); //计算executionID为101的执行下按每天完成统计的图表数据 done
|
||||
@@ -19,11 +19,9 @@ pid=1
|
||||
|
||||
*/
|
||||
|
||||
$now = helper::now();
|
||||
|
||||
$task1 = new stdclass();
|
||||
$task1->status = 'wait';
|
||||
$task1->deadline = date("Y-m-d",strtotime("+1 day"));
|
||||
$task1->deadline = '+1day';
|
||||
$task1->storyStatus = 'draft';
|
||||
$task1->latestStoryVersion = '1';
|
||||
$task1->storyVersion = '1';
|
||||
@@ -34,7 +32,7 @@ $task1->left = '1';
|
||||
|
||||
$task2 = new stdclass();
|
||||
$task2->status = 'doing';
|
||||
$task2->deadline = date("Y-m-d",strtotime("-1 day"));
|
||||
$task2->deadline = '-1day';
|
||||
$task2->storyStatus = 'draft';
|
||||
$task2->latestStoryVersion = '1';
|
||||
$task2->storyVersion = '1';
|
||||
@@ -45,7 +43,7 @@ $task2->left = '1';
|
||||
|
||||
$task3 = new stdclass();
|
||||
$task3->status = 'doing';
|
||||
$task3->deadline = date("Y-m-d",strtotime("-1 day"));
|
||||
$task3->deadline = '-1day';
|
||||
$task3->storyStatus = 'draft';
|
||||
$task3->latestStoryVersion = '1';
|
||||
$task3->storyVersion = '1';
|
||||
@@ -56,7 +54,7 @@ $task3->left = '1';
|
||||
|
||||
$task4 = new stdclass();
|
||||
$task4->status = 'doing';
|
||||
$task4->deadline = date("Y-m-d",strtotime("+1 day"));
|
||||
$task4->deadline = '+1day';
|
||||
$task4->storyStatus = 'draft';
|
||||
$task4->latestStoryVersion = '1';
|
||||
$task4->storyVersion = '1';
|
||||
@@ -67,8 +65,7 @@ $task4->left = '1';
|
||||
|
||||
$task5 = new stdclass();
|
||||
$task5->status = 'done';
|
||||
$task5->deadline = date("Y-m-d",strtotime("-1 day"));
|
||||
$task5->deadline = '2022-03-10';
|
||||
$task5->deadline = '-1day';
|
||||
$task5->storyStatus = 'draft';
|
||||
$task5->latestStoryVersion = '1';
|
||||
$task5->storyVersion = '1';
|
||||
@@ -79,7 +76,7 @@ $task5->left = '0';
|
||||
|
||||
$task6 = new stdclass();
|
||||
$task6->status = 'done';
|
||||
$task6->deadline = date("Y-m-d",strtotime("+1 day"));
|
||||
$task6->deadline = '+1day';
|
||||
$task6->storyStatus = 'draft';
|
||||
$task6->latestStoryVersion = '1';
|
||||
$task6->storyVersion = '1';
|
||||
|
||||
@@ -11,8 +11,8 @@ cid=1
|
||||
pid=1
|
||||
|
||||
根据tasks计算executionID为1的执行下所有任务的进度 任务1 >> ,100
|
||||
根据tasks计算executionID为1的执行下所有任务的进度 任务601 >> ,100
|
||||
根据tasks计算executionID为1的执行下所有任务的进度 任务602 >> ,80
|
||||
根据tasks计算executionID为1的执行下所有任务的进度 任务601 >> 7,100
|
||||
根据tasks计算executionID为1的执行下所有任务的进度 任务602 >> 8,80
|
||||
根据tasks计算executionID为1的执行下所有任务的进度 任务602 >> ,71
|
||||
根据tasks计算executionID为2的执行下所有任务的进度 任务2 >> ,80
|
||||
根据tasks计算executionID为2的执行下所有任务的进度 任务602 >> 10,67
|
||||
@@ -21,62 +21,14 @@ pid=1
|
||||
|
||||
*/
|
||||
|
||||
$now = helper::now();
|
||||
|
||||
$tasks1 = $dao->select('*')->from(TABLE_TASK)->where('execution')->eq('101')->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
$parents = array();
|
||||
foreach($tasks1 as $task)
|
||||
{
|
||||
if($task->parent > 0) $parents[$task->parent] = $task->parent;
|
||||
}
|
||||
$parents = $dao->select('*')->from(TABLE_TASK)->where('id')->in($parents)->fetchAll('id');
|
||||
foreach($tasks1 as $task)
|
||||
{
|
||||
if($task->parent > 0)
|
||||
{
|
||||
if(isset($tasks[$task->parent]))
|
||||
{
|
||||
$tasks[$task->parent]->children[$task->id] = $task;
|
||||
unset($tasks[$task->id]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$parent = $parents[$task->parent];
|
||||
$task->parentName = $parent->name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$tasks2 = $dao->select('*')->from(TABLE_TASK)->where('execution')->eq('102')->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
$parents = array();
|
||||
foreach($tasks2 as $task)
|
||||
{
|
||||
if($task->parent > 0) $parents[$task->parent] = $task->parent;
|
||||
}
|
||||
$parents = $dao->select('*')->from(TABLE_TASK)->where('id')->in($parents)->fetchAll('id');
|
||||
foreach($tasks2 as $task)
|
||||
{
|
||||
if($task->parent > 0)
|
||||
{
|
||||
if(isset($tasks[$task->parent]))
|
||||
{
|
||||
$tasks[$task->parent]->children[$task->id] = $task;
|
||||
unset($tasks[$task->id]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$parent = $parents[$task->parent];
|
||||
$task->parentName = $parent->name;
|
||||
}
|
||||
}
|
||||
}
|
||||
$executionID = array('101', '102');
|
||||
|
||||
$task = new taskTest();
|
||||
r($task->processTasksTest($tasks1)) && p('1:delay,progress') && e(',100'); //根据tasks计算executionID为1的执行下所有任务的进度 任务1
|
||||
r($task->processTasksTest($tasks1)) && p('601:delay,progress') && e(',100'); //根据tasks计算executionID为1的执行下所有任务的进度 任务601
|
||||
r($task->processTasksTest($tasks1)) && p('602:delay,progress') && e(',80'); //根据tasks计算executionID为1的执行下所有任务的进度 任务602
|
||||
r($task->processTasksTest($tasks1)) && p('603:delay,progress') && e(',71'); //根据tasks计算executionID为1的执行下所有任务的进度 任务603
|
||||
r($task->processTasksTest($tasks2)) && p('2:delay,progress') && e(',80'); //根据tasks计算executionID为2的执行下所有任务的进度 任务2
|
||||
r($task->processTasksTest($tasks2)) && p('604:delay,progress') && e('10,67'); //根据tasks计算executionID为2的执行下所有任务的进度 任务604
|
||||
r($task->processTasksTest($tasks2)) && p('605:delay,progress') && e(',64'); //根据tasks计算executionID为2的执行下所有任务的进度 任务605
|
||||
r($task->processTasksTest($tasks2)) && p('606:delay,progress') && e(',62'); //根据tasks计算executionID为2的执行下所有任务的进度 任务606
|
||||
r($task->processTasksTest($executionID['0'])) && p('1:delay,progress') && e(',100'); //根据tasks计算executionID为1的执行下所有任务的进度 任务1
|
||||
r($task->processTasksTest($executionID['0'])) && p('601:delay,progress') && e('7,100'); //根据tasks计算executionID为1的执行下所有任务的进度 任务601
|
||||
r($task->processTasksTest($executionID['0'])) && p('602:delay,progress') && e('8,80'); //根据tasks计算executionID为1的执行下所有任务的进度 任务602
|
||||
r($task->processTasksTest($executionID['0'])) && p('603:delay,progress') && e(',71'); //根据tasks计算executionID为1的执行下所有任务的进度 任务603
|
||||
r($task->processTasksTest($executionID['1'])) && p('2:delay,progress') && e(',80'); //根据tasks计算executionID为2的执行下所有任务的进度 任务2
|
||||
r($task->processTasksTest($executionID['1'])) && p('604:delay,progress') && e('10,67'); //根据tasks计算executionID为2的执行下所有任务的进度 任务604
|
||||
r($task->processTasksTest($executionID['1'])) && p('605:delay,progress') && e(',64'); //根据tasks计算executionID为2的执行下所有任务的进度 任务605
|
||||
r($task->processTasksTest($executionID['1'])) && p('606:delay,progress') && e(',62'); //根据tasks计算executionID为2的执行下所有任务的进度 任务606
|
||||
|
||||
@@ -18,14 +18,14 @@ pid=1
|
||||
测试修改任务状态 >> status,cancel,doing
|
||||
测试修改任务优先级 >> pri,2,1
|
||||
测试修改任务所属执行 >> execution,107,101
|
||||
测试修改任务预计开始时间 >> estStarted,2022-03-11,2022-02-27
|
||||
测试修改任务截止时间 >> deadline,2022-03-10,2022-03-11
|
||||
测试修改任务预计开始时间 >> estStarted,2022-03-14,2022-02-27
|
||||
测试修改任务截止时间 >> deadline,2022-03-13,2022-03-29
|
||||
测试修改任务关闭原因 >> 『关闭原因』必须为空。
|
||||
|
||||
*/
|
||||
|
||||
$estStarted = '2022-02-27';
|
||||
$deadline = '2022-03-11';
|
||||
$deadline = '2022-03-29';
|
||||
$taskIDList = array('1','2','3','4','5','6','7','8','9');
|
||||
|
||||
$changename = array('name' => '任务名修改','estStarted' => $estStarted,'deadline' => $deadline);
|
||||
@@ -48,8 +48,8 @@ r($task->updateObject($taskIDList[3], $changetype)) && p('0:field,old,new'
|
||||
r($task->updateObject($taskIDList[4], $changestatus)) && p('0:field,old,new') && e('status,cancel,doing'); // 测试修改任务状态
|
||||
r($task->updateObject($taskIDList[5], $changepri)) && p('0:field,old,new') && e('pri,2,1'); // 测试修改任务优先级
|
||||
r($task->updateObject($taskIDList[6], $changeexecution)) && p('0:field,old,new') && e('execution,107,101'); // 测试修改任务所属执行
|
||||
r($task->updateObject($taskIDList[7], $changeestStarted)) && p('0:field,old,new') && e('estStarted,2022-03-11,2022-02-27'); // 测试修改任务预计开始时间
|
||||
r($task->updateObject($taskIDList[8], $changedeadline)) && p('0:field,old,new') && e('deadline,2022-03-10,2022-03-11'); // 测试修改任务截止时间
|
||||
r($task->updateObject($taskIDList[7], $changeestStarted)) && p('0:field,old,new') && e('estStarted,2022-03-14,2022-02-27'); // 测试修改任务预计开始时间
|
||||
r($task->updateObject($taskIDList[8], $changedeadline)) && p('0:field,old,new') && e('deadline,2022-03-13,2022-03-29'); // 测试修改任务截止时间
|
||||
r($task->updateObject($taskIDList[0], $ckclosedReason)) && p('closedReason:0') && e(' 『关闭原因』必须为空。'); // 测试修改任务关闭原因
|
||||
|
||||
system("./ztest init");
|
||||
|
||||
Reference in New Issue
Block a user