Merge branch dev/task-146862 of zentao/zentaopms (#10647)

This commit is contained in:
刘刚
2025-07-30 10:29:30 +08:00
committed by Gitfox
9 changed files with 140 additions and 6 deletions
+9 -3
View File
@@ -1538,7 +1538,9 @@ class metricModel extends model
->where('deleted')->eq(0)
->andWhere('shadow')->eq(0)
->andWhere('createdDate')->le($date)
->andWhere("if(closedDate IS NOT NULL and YEAR(closedDate)!='0000', closedDate>='$date', true)")
->andWhere("closedDate IS NULL OR YEAR(closedDate)='0000'", true)
->orWhere('closedDate')->ge($date)
->markRight(1)
->andWhere("vision LIKE '%{$vision}%'", true)
->orWhere("vision IS NULL")->markRight(1)
->fetchPairs();
@@ -1548,7 +1550,9 @@ class metricModel extends model
->where('deleted')->eq(0)
->andWhere('type')->eq('project')
->andWhere('openedDate')->le($date)
->andWhere("if(closedDate IS NOT NULL and YEAR(closedDate)!='0000', closedDate>='$date', true)")
->andWhere("closedDate IS NULL OR YEAR(closedDate)='0000'", true)
->orWhere('closedDate')->ge($date)
->markRight(1)
->andWhere("vision LIKE '%{$vision}%'", true)
->orWhere("vision IS NULL")->markRight(1)
->fetchPairs();
@@ -1558,7 +1562,9 @@ class metricModel extends model
->where('deleted')->eq(0)
->andWhere('type')->in('sprint,stage,kanban')
->andWhere('openedDate')->le($date)
->andWhere("if(closedDate IS NOT NULL and YEAR(closedDate)!='0000', closedDate>='$date', true)")
->andWhere("closedDate IS NULL OR YEAR(closedDate)='0000'", true)
->orWhere('closedDate')->ge($date)
->markRight(1)
->andWhere("vision LIKE '%{$vision}%'", true)
->orWhere("vision IS NULL")->markRight(1)
->fetchPairs();
@@ -134,6 +134,19 @@ class metricTest
return $this->objectModel->getPairsByScope($scope);
}
/**
* Test getPairsByScopeAndDate method.
*
* @param string $scope
* @param string $date
* @access public
* @return array|false
*/
public function getPairsByScopeAndDate($scope, $date)
{
return $this->objectModel->getPairsByScopeAndDate($scope, $date);
}
/**
* Test getControlOptions method.
*
+46
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env php
<?php
/**
title=getPairsByScopeAndDate
timeout=0
cid=1
- 测试user对象数 @15
- 测试product对象数 @5
- 测试project对象数 @20
- 测试部分user对象
- 属性admin @admin
- 属性user2 @用户2
- 属性user4 @用户4
- 属性user8 @用户8
- 测试部分product对象
- 属性1 @正常产品1
- 属性3 @正常产品3
- 属性5 @正常产品5
- 测试部分project对象
- 属性11 @项目11
- 属性13 @项目13
- 属性15 @项目15
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/calc.unittest.class.php';
su('admin');
$metric = new metricTest();
zenData('user')->loadYaml('user', true)->gen(30);
zenData('product')->loadYaml('product', true)->gen(10);
zenData('project')->loadYaml('project', true)->gen(40);
$date = '2025-01-01';
r(count($metric->getPairsByScopeAndDate('user', $date))) && p('') && e('15'); // 测试user对象数
r(count($metric->getPairsByScopeAndDate('product', $date))) && p('') && e('5'); // 测试product对象数
r(count($metric->getPairsByScopeAndDate('project', $date))) && p('') && e('20'); // 测试project对象数
r($metric->getPairsByScopeAndDate('user', $date)) && p('admin,user2,user4,user8') && e('admin,用户2,用户4,用户8'); // 测试部分user对象
r($metric->getPairsByScopeAndDate('product', $date)) && p('1,3,5') && e('正常产品1,正常产品3,正常产品5'); // 测试部分product对象
r($metric->getPairsByScopeAndDate('project', $date)) && p('11,13,15') && e('项目11,项目13,项目15'); // 测试部分project对象
+8
View File
@@ -9,5 +9,13 @@ fields:
range: 0{1},1{1}
- field: vision
range: rnd
- field: createdDate
range: "20110101 000000-20210101 000000:10D"
type: timestamp
format: YYYY-MM-DD
- field: closedDate
range: "20250101 000000-20260101 000000:10D"
type: timestamp
format: YYYY-MM-DD
...
+5 -1
View File
@@ -11,8 +11,12 @@ fields:
range: closed{2},doing{2},suspended{2},wait{2}
- field: deleted
range: 0{1},1{1}
- field: closedDate
- field: openedDate
range: "20110101 000000-20210101 000000:10D"
type: timestamp
format: YYYY-MM-DD
- field: closedDate
range: "20250101 000000-20260101 000000:10D"
type: timestamp
format: YYYY-MM-DD
...
+2 -2
View File
@@ -308,8 +308,8 @@ class pivotTao extends pivotModel
{
return $this->dao->select(<<<EOT
t1.id,
IF(t1.mode = '', t1.assignedTo, t4.account) AS user,
IF(t1.mode = '', ROUND(t1.left, 2), ROUND(t4.left, 2)) AS 'left',
CASE WHEN t1.mode = '' THEN t1.assignedTo ELSE t4.account END AS user,
CASE WHEN t1.mode = '' THEN ROUND(t1.`left`, 2) ELSE ROUND(t4.`left`, 2) END AS `left`,
t2.multiple,
t2.id AS executionID,
t2.name AS executionName,
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env php
<?php
/**
title=测试 pivotTao->getAssignTask();
timeout=0
cid=1
- 查询单人任务
- 第0条的user属性 @admin
- 第0条的left属性 @1
- 查询多人任务
- 第1条的user属性 @user1
- 第1条的left属性 @1
- 查询单人未开始的任务
- 第2条的user属性 @user16
- 第2条的left属性 @2
- 查询多人进行中的任务
- 第3条的user属性 @user7
- 第3条的left属性 @3
- 查询指派给不存在的用户的任务 @0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/pivot.unittest.class.php';
zenData('task')->loadYaml('task')->gen(10);
zenData('project')->loadYaml('project_getassigntask')->gen(200);
zenData('taskteam')->gen(10);
global $tester;
$pivot = new pivotTest();
$deptUsers = array();
r($pivot->getAssignTask($deptUsers)) && p('0:user,left') && e('admin,1'); //查询单人任务
r($pivot->getAssignTask($deptUsers)) && p('1:user,left') && e('user1,1'); //查询多人任务
r($pivot->getAssignTask($deptUsers)) && p('2:user,left') && e('user16,2'); //查询单人未开始的任务
r($pivot->getAssignTask($deptUsers)) && p('3:user,left') && e('user7,3'); //查询多人进行中的任务
$deptUsers = array('user1000');
r($pivot->getAssignTask($deptUsers)) && p('') && e('0'); //查询指派给不存在的用户的任务
@@ -0,0 +1,10 @@
title: table zt_project
author: Wang XuePeng
version: "1.0"
fields:
- field: id
range: 1-200
- field: type
range: 'program{10},project{90},execution{100}'
- field: vision
range: 'rnd'
+2
View File
@@ -16,3 +16,5 @@ fields:
format: ""
- field: left
range: 1-5
- field: mode
range: "[],linear,multi"