Merge branch 'sprint/170_liumengyi_43909' into 'sprint/170'

Finish task #43909

See merge request easycorp/zentaopms!382
This commit is contained in:
李玉春
2021-11-10 05:14:37 +00:00
2 changed files with 46 additions and 27 deletions
+24 -13
View File
@@ -287,37 +287,43 @@ class reportModel extends model
if($assign == 'noassign')
{
$members = $this->dao->select('t1.account,t2.name,t1.root')->from(TABLE_TEAM)->alias('t1')
$members = $this->dao->select('t1.account,t2.name,t1.root,t3.id as project,t3.name as projectname')->from(TABLE_TEAM)->alias('t1')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t2.id = t1.root')
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t3.id = t2.project')
->where('t2.status')->notin('cancel, closed, done, suspended')
->beginIF($dept)->andWhere('t1.account')->in(array_keys($deptUsers))->fi()
->andWhere('t1.type')->eq('execution')
->andWhere("t1.account NOT IN(SELECT `assignedTo` FROM " . TABLE_TASK . " WHERE `execution` = t1.`root` AND `status` NOT IN('cancel, closed, done, pause') AND assignedTo != '' GROUP BY assignedTo)")
->fetchGroup('account', 'name');
$workload = array();
$workload = array();
if(!empty($members))
{
foreach($members as $member => $executions)
{
$project = array();
if(!empty($executions))
{
foreach($executions as $name => $execution)
{
$workload[$member]['task'][$name]['count'] = 0;
$workload[$member]['task'][$name]['manhour'] = 0;
$workload[$member]['task'][$name]['executionID'] = $execution->root;
$workload[$member]['total']['count'] = 0;
$workload[$member]['total']['manhour'] = 0;
$project[$execution->projectname]['projectID'] = $execution->project;
$project[$execution->projectname]['execution'][$name]['executionID'] = $execution->root;
$project[$execution->projectname]['execution'][$name]['count'] = 0;
$project[$execution->projectname]['execution'][$name]['manhour'] = 0;
$workload[$member]['total']['count'] = 0;
$workload[$member]['total']['manhour'] = 0;
}
}
$workload[$member]['task']['project'] = $project;
}
}
return $workload;
}
$stmt = $this->dao->select('t1.*, t2.name as executionName')->from(TABLE_TASK)->alias('t1')
$stmt = $this->dao->select('t1.*, t2.name as executionName,t3.name as projectname')->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t3.id = t2.project')
->where('t1.deleted')->eq(0)
->andWhere('t1.status')->in('wait,pause,doing')
->andWhere('t2.deleted')->eq(0)
@@ -371,17 +377,22 @@ class reportModel extends model
{
if($user)
{
$project = array();
foreach($userTasks as $task)
{
if(isset($parents[$task->id])) continue;
$workload[$user]['task'][$task->executionName]['count'] = isset($workload[$user]['task'][$task->executionName]['count']) ? $workload[$user]['task'][$task->executionName]['count'] + 1 : 1;
$workload[$user]['task'][$task->executionName]['manhour'] = isset($workload[$user]['task'][$task->executionName]['manhour']) ? $workload[$user]['task'][$task->executionName]['manhour'] + $task->left : $task->left;
$workload[$user]['task'][$task->executionName]['executionID'] = $task->execution;
$workload[$user]['total']['count'] = isset($workload[$user]['total']['count']) ? $workload[$user]['total']['count'] + 1 : 1;
$project[$task->projectname]['projectID'] = isset($project[$task->projectname]['projectID']) ? $project[$task->projectname]['projectID'] : $task->project;
$project[$task->projectname]['execution'][$task->executionName]['executionID'] = isset($project[$task->projectname]['execution'][$task->executionName]['executionID']) ? $project[$task->projectname]['execution'][$task->executionName]['executionID'] : $task->execution;
$project[$task->projectname]['execution'][$task->executionName]['count'] = isset($project[$task->projectname]['execution'][$task->executionName]['count']) ? $project[$task->projectname]['execution'][$task->executionName]['count'] + 1 : 1;
$project[$task->projectname]['execution'][$task->executionName]['manhour'] = isset($project[$task->projectname]['execution'][$task->executionName]['manhour']) ? $project[$task->projectname]['execution'][$task->executionName]['manhour'] + $task->left : $task->left;
$workload[$user]['total']['count'] = isset($workload[$user]['total']['count']) ? $workload[$user]['total']['count'] + 1 : 1;
$workload[$user]['total']['manhour'] = isset($workload[$user]['total']['manhour']) ? $workload[$user]['total']['manhour'] + $task->left : $task->left;
}
$workload[$user]['task']['project'] = $project;
}
}
}
unset($workload['closed']);
return $workload;
}
+22 -14
View File
@@ -70,6 +70,7 @@
<thead>
<tr class='colhead text-center'>
<th class="c-user"><?php echo $lang->report->user;?></th>
<th class="c-project"><?php echo $lang->report->project ;?>
<th><?php echo $lang->report->execution;?></th>
<th class="c-count"><?php echo $lang->report->task;?></th>
<th class="c-hours"><?php echo $lang->report->remain;?></th>
@@ -83,24 +84,31 @@
<?php foreach($workload as $account => $load):?>
<?php if(!isset($users[$account])) continue;?>
<tr class="text-center">
<td rowspan="<?php echo count($load['task']);?>"><?php echo $users[$account];?></td>
<?php $id = 1;?>
<?php foreach($load['task'] as $execution => $info):?>
<?php $class = $color ? 'rowcolor' : '';?>
<?php if($id != 1) echo '<tr class="text-center">';?>
<td title='<?php echo $execution?>' class="<?php echo $class;?> text-left"><?php echo html::a($this->createLink('execution', 'view', "executionID={$info['executionID']}"), $execution);?></td>
<td class="<?php echo $class;?>"><?php echo $info['count'];?></td>
<td class="<?php echo $class;?>"><?php echo $info['manhour'];?></td>
<?php if($id == 1):?>
<td rowspan="<?php echo count($load['task']);?>"><?php echo $load['total']['count'];?></td>
<td rowspan="<?php echo count($load['task']);?>"><?php echo $load['total']['manhour'];?></td>
<td rowspan="<?php echo count($load['task']);?>"><?php echo round($load['total']['manhour'] / $allHour * 100, 2) . '%';?></td>
<?php $idusername = 1; $countusername = 0;?>
<?php foreach($load['task']['project'] as $project => $info) foreach($info['execution'] as $exec => $execinfo) $countusername ++;?>
<td class="<?php echo $class;?>" rowspan="<?php echo $countusername;?>"><?php echo $users[$account];?></td>
<?php foreach($load['task']['project'] as $project => $info):?>
<?php $idprojectname = 1; $countprojectname = 0;?>
<?php foreach($info['execution'] as $exec) $countprojectname ++ ;?>
<?php foreach($info['execution'] as $exec => $execinfo):?>
<?php if($idprojectname != 1 || $idusername != 1) echo "<tr>";?>
<?php if($idprojectname == 1):?>
<td class="text-center" rowspan="<?php echo $countprojectname;?>"><?php echo html::a($this->createLink('project', 'view', "projectID={$info['projectID']}"), $project);?></td>
<?php endif;?>
<?php if($id != 1) echo '</tr>'; $id ++;?>
<td class="text-center"><?php echo html::a($this->createLink('execution', 'view', "executionID={$execinfo['executionID']}"), $exec);?></td>
<td class="text-center"><?php echo $execinfo['count'];?></td>
<td class="text-center"><?php echo $execinfo['manhour'];?></td>
<?php if($idusername == 1):?>
<td rowspan="<?php echo $countusername;?>"><?php echo $load['total']['count'];?></td>
<td rowspan="<?php echo $countusername;?>"><?php echo $load['total']['manhour'];?></td>
<td rowspan="<?php echo $countusername;?>"><?php echo round($load['total']['manhour'] / $allHour * 100, 2) . '%';?></td>
<?php endif;?>
<?php if($idprojectname != 1 || $idusername != 1) echo "</tr>"; $idprojectname ++; $idusername ++;?>
<?php $color = !$color;?>
<?php endforeach;?>
<?php endforeach;?>
</tr>
<?php endforeach;?>
<?php endforeach;?>
</tbody>
</table>
</div>