* Refactor getProjectsConsumed method.

This commit is contained in:
tianshujie
2023-08-24 09:25:56 +08:00
parent 491c05871d
commit 0c4bbb1914
2 changed files with 22 additions and 16 deletions
+7 -7
View File
@@ -426,26 +426,26 @@ class projectModel extends model
}
/**
* 获取给定项目的总计消耗工时。
* Get projects consumed info.
*
* @param array $projectID
* @param string $time
* @param array $projectID
* @param string $time
* @access public
* @return array
* @return object[]
*/
public function getProjectsConsumed($projectIdList, $time = '')
public function getProjectsConsumed(array $projectIdList, string $time = ''): array
{
$projects = array();
$totalConsumeds = $this->dao->select('t2.project,ROUND(SUM(t1.consumed), 1) AS totalConsumed')->from(TABLE_EFFORT)->alias('t1')
->leftJoin(TABLE_TASK)->alias('t2')->on("t1.objectID=t2.id and t1.objectType = 'task'")
->where('t2.project')->in($projectIdList)
->beginIF($time == 'THIS_YEAR')->andWhere('LEFT(t1.`date`, 4)')->eq(date('Y'))->fi()
->andWhere('t2.deleted')->eq(0)
->andWhere('t2.parent')->lt(1)
->beginIF($time == 'THIS_YEAR')->andWhere('LEFT(t1.`date`, 4)')->eq(date('Y'))->fi()
->groupBy('t2.project')
->fetchAll('project');
$projects = array();
foreach($projectIdList as $projectID)
{
$project = new stdClass();
@@ -3,23 +3,29 @@
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
zdTable('project')->config('execution')->gen(10);
zdTable('task')->config('task')->gen(30);
zdTable('effort')->config('effort')->gen(30);
/**
title=测试 projectModel::getProjectsConsumed;
timeout=0
cid=1
pid=1
批量获取各个项目的总计消耗工时 >> 0
批量获取各个项目的总计消耗工时 >> 0
批量获取各个项目的总计消耗工时 >> 0
*/
global $tester;
$tester->loadModel('project');
$projectIdList = array(11, 12, 13);
$projectIdList[0] = array(1, 2);
$projectIdList[1] = array(11, 60);
$projectIdList[2] = array(61, 100);
r($tester->project->getProjectsConsumed($projectIdList)) && p('11:totalConsumed') && e('0'); // 批量获取各个项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList)) && p('12:totalConsumed') && e('0'); // 批量获取各个项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList)) && p('13:totalConsumed') && e('0'); // 批量获取各个项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList[0])) && p('1:totalConsumed') && e('0'); // 批量获取不存在项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList[1])) && p('11:totalConsumed') && e('55'); // 批量获取有工时记录的项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList[2])) && p('61:totalConsumed') && e('0'); // 批量获取没有工时记录项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList[0], 'THIS_YEAR')) && p('1:totalConsumed') && e('0'); // 批量获取今年不存在项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList[1], 'THIS_YEAR')) && p('11:totalConsumed') && e('55'); // 批量获取今年有工时记录的项目的总计消耗工时
r($tester->project->getProjectsConsumed($projectIdList[2], 'THIS_YEAR')) && p('61:totalConsumed') && e('0'); // 批量获取今年没有工时记录项目的总计消耗工时