diff --git a/module/metric/dataset.php b/module/metric/dataset.php index 108cdd7434..aec3e33a83 100644 --- a/module/metric/dataset.php +++ b/module/metric/dataset.php @@ -566,7 +566,7 @@ class dataset $stmt = $this->dao->select($fieldList)->from(TABLE_TASK)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.execution=t2.id') ->leftJoin(TABLE_PROJECT)->alias('t3')->on('t2.project=t3.id') - ->leftJoin(TABLE_TASKTEAM)->alias('t4')->on("t1.id=t4.task and t1.mode != ''") + ->beginIF(strpos($fieldList, 't4') !== false)->leftJoin(TABLE_TASKTEAM)->alias('t4')->on("t1.id=t4.task and t1.mode != ''")->fi() ->where('t1.deleted')->eq(0) ->andWhere('t2.deleted')->eq(0) ->andWhere('t3.deleted')->eq(0); diff --git a/module/task/model.php b/module/task/model.php index 77510dde39..08a7370b04 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -50,6 +50,8 @@ class taskModel extends model ->exec(); if(dao::isError()) return false; + if($task->consumed != $oldTask->consumed || $task->left != $oldTask->left) $this->loadModel('program')->refreshProjectStats($oldTask->project); + if($oldTask->parent > 0) $this->updateParentStatus($taskID); if($oldTask->parent == '-1') { @@ -1105,7 +1107,11 @@ class taskModel extends model /* Manage the team of task and calculate the team hours. */ $task->id = $taskID; $teams = $this->manageTaskTeam($task->mode, $task, $teamData); - if($teams) $this->computeMultipleHours($task); + if($teams) + { + $this->computeMultipleHours($task); + $this->loadModel('program')->refreshProjectStats($task->project); + } return $taskID; } @@ -1136,6 +1142,7 @@ class taskModel extends model /* 更新任务、父任务状态、需求阶段。*/ $this->dao->update(TABLE_TASK)->data($data) ->where('id')->eq($effort->objectID)->exec(); + if($task->consumed != $data->consumed || $task->left != $data->left) $this->loadModel('program')->refreshProjectStats($task->project); if($task->parent > 0) $this->updateParentStatus($task->id); if($task->story) $this->loadModel('story')->setStage($task->story); @@ -1172,12 +1179,12 @@ class taskModel extends model $task = $this->computeMultipleHours($oldTask, $task); } - $this->dao->update(TABLE_TASK)->data($task)->autoCheck()->checkFlow() - ->where('id')->eq((int)$oldTask->id) - ->exec(); + $this->dao->update(TABLE_TASK)->data($task)->autoCheck()->checkFlow()->where('id')->eq((int)$oldTask->id)->exec(); if(dao::isError()) return false; + if($task->consumed != $oldTask->consumed || $task->left != $oldTask->left) $this->loadModel('program')->refreshProjectStats($oldTask->project); + if($task->status == 'done') $this->loadModel('score')->create('task', 'finish', $oldTask->id); return common::createChanges($oldTask, $task); } @@ -2239,11 +2246,7 @@ class taskModel extends model $removedMembers = array_diff($oldMembers, $teams); $changeUsers = array_merge($changeUsers, $removedMembers); } - if($changeUsers) - { - $this->taskTao->resetEffortLeft($task->id, $changeUsers); - $this->loadModel('program')->refreshProjectStats($task->project); - } + if($changeUsers) $this->taskTao->resetEffortLeft($task->id, $changeUsers); return $teams; } @@ -2789,12 +2792,12 @@ class taskModel extends model } } - $this->dao->update(TABLE_TASK)->data($task)->autoCheck() - ->checkFlow() - ->where('id')->eq($oldTask->id) - ->exec(); + $this->dao->update(TABLE_TASK)->data($task)->autoCheck()->checkFlow()->where('id')->eq($oldTask->id)->exec(); if(dao::isError()) return false; + + if($task->consumed != $oldTask->consumed || $task->left != $oldTask->left) $this->loadModel('program')->refreshProjectStats($oldTask->project); + return common::createChanges($oldTask, $task); } @@ -2811,6 +2814,7 @@ class taskModel extends model { $taskID = $task->id; $oldTask = $this->getByID($taskID); + $task->project = $oldTask->project; if($task->consumed < $oldTask->consumed) { @@ -2831,6 +2835,8 @@ class taskModel extends model $this->taskTao->doUpdate($task, $oldTask, $requiredFields); if(dao::isError()) return false; + if($task->estimate != $oldTask->estimate || $task->consumed != $oldTask->consumed || $task->left != $oldTask->left) $this->loadModel('program')->refreshProjectStats($oldTask->project); + $this->afterUpdate($oldTask, $task); unset($oldTask->parent, $task->parent); @@ -2896,6 +2902,8 @@ class taskModel extends model if(dao::isError()) return false; + if($task->consumed != $data->consumed || $task->left != $data->left) $this->loadModel('program')->refreshProjectStats($task->project); + if($task->parent > 0) $this->updateParentStatus($task->id); if($task->story) $this->loadModel('story')->setStage($task->story); @@ -3231,6 +3239,9 @@ class taskModel extends model ->exec(); if(dao::isError()) return false; + + if($task->estimate != $oldTask->estimate || $task->consumed != $oldTask->consumed || $task->left != $oldTask->left) $this->loadModel('program')->refreshProjectStats($oldTask->project); + return common::createChanges($oldTask, $task); }