fix: 导出任务统计修改

This commit is contained in:
韦荣超 2022-03-04 14:00:38 +08:00
parent 248a9c4070
commit 2975d550eb
4 changed files with 38 additions and 21 deletions

View File

@ -1014,7 +1014,7 @@ class ProjectController extends AbstractController
if (Carbon::parse($time[1])->timestamp - Carbon::parse($time[0])->timestamp > 90 * 86400) { if (Carbon::parse($time[1])->timestamp - Carbon::parse($time[0])->timestamp > 90 * 86400) {
return Base::retError('时间范围限制最大90天'); return Base::retError('时间范围限制最大90天');
} }
$type = Request::input('type','taskTime');
$headings = []; $headings = [];
$headings[] = '任务ID'; $headings[] = '任务ID';
$headings[] = '父级任务ID'; $headings[] = '父级任务ID';
@ -1037,7 +1037,7 @@ class ProjectController extends AbstractController
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_id') ->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_id')
->where('project_task_users.owner', 1) ->where('project_task_users.owner', 1)
->whereIn('project_task_users.userid', $userid) ->whereIn('project_task_users.userid', $userid)
->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay()); ->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay(),$type);
$builder->orderByDesc('project_tasks.id')->chunk(100, function($tasks) use (&$datas) { $builder->orderByDesc('project_tasks.id')->chunk(100, function($tasks) use (&$datas) {
/** @var ProjectTask $task */ /** @var ProjectTask $task */
foreach ($tasks as $task) { foreach ($tasks as $task) {
@ -1078,12 +1078,11 @@ class ProjectController extends AbstractController
$firstDevTime = Carbon::parse($firstChange->created_at)->timestamp - Carbon::parse($task->created_at)->timestamp; $firstDevTime = Carbon::parse($firstChange->created_at)->timestamp - Carbon::parse($task->created_at)->timestamp;
$developTime += $firstDevTime; $developTime += $firstDevTime;
} }
if (count($flowChanges) === 0) { if (count($flowChanges) === 0 && $task->start_at) {
$lastTime = $task->complete_at ? Carbon::parse($task->complete_at)->timestamp : time(); $lastTime = $task->complete_at ? Carbon::parse($task->complete_at)->timestamp : time();
$developTime = $lastTime - Carbon::parse($task->created_at)->timestamp; $developTime = $lastTime - Carbon::parse($task->start_at)->timestamp;
} }
$totalTime = $developTime + $testTime; //任务总用时 $totalTime = $developTime + $testTime; //任务总用时
if ($task->complete_at) { if ($task->complete_at) {
$a = Carbon::parse($task->complete_at)->timestamp; $a = Carbon::parse($task->complete_at)->timestamp;
if ($task->start_at) { if ($task->start_at) {
@ -1112,10 +1111,10 @@ class ProjectController extends AbstractController
$task->end_at ?: '-', $task->end_at ?: '-',
$task->complete_at ?: '-', $task->complete_at ?: '-',
$task->archived_at ?: '-', $task->archived_at ?: '-',
$planTime, $planTime ?: '-',
$totalTime > 0 ? Base::timeFormat($totalTime) : '-', $totalTime ? Base::timeFormat($totalTime) : '-',
$overTime, $overTime,
$developTime > 0 ? Base::timeFormat($developTime) : '-', $developTime > 0? Base::timeFormat($developTime) : '-',
$testTime > 0 ? Base::timeFormat($testTime) : '-', $testTime > 0 ? Base::timeFormat($testTime) : '-',
Base::filterEmoji(User::userid2nickname($task->ownerid)) . " (ID: {$task->ownerid})", Base::filterEmoji(User::userid2nickname($task->ownerid)) . " (ID: {$task->ownerid})",
Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})", Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})",

View File

@ -314,11 +314,13 @@ class ProjectTask extends AbstractModel
* @param $query * @param $query
* @param $start * @param $start
* @param $end * @param $end
* @param $type
* @return mixed * @return mixed
*/ */
public function scopeBetweenTime($query, $start, $end) public function scopeBetweenTime($query, $start, $end, $type)
{ {
$query->where(function ($q1) use ($start, $end) { $query->where(function ($q1) use ($start, $end, $type) {
if ($type === 'taskTime') {
$q1->where(function ($q2) use ($start) { $q1->where(function ($q2) use ($start) {
$q2->where('project_tasks.start_at', '<=', $start)->where('project_tasks.end_at', '>=', $start); $q2->where('project_tasks.start_at', '<=', $start)->where('project_tasks.end_at', '>=', $start);
})->orWhere(function ($q2) use ($end) { })->orWhere(function ($q2) use ($end) {
@ -326,6 +328,15 @@ class ProjectTask extends AbstractModel
})->orWhere(function ($q2) use ($start, $end) { })->orWhere(function ($q2) use ($start, $end) {
$q2->where('project_tasks.start_at', '>', $start)->where('project_tasks.end_at', '<', $end); $q2->where('project_tasks.start_at', '>', $start)->where('project_tasks.end_at', '<', $end);
}); });
} else {
$q1->where(function ($q2) use ($start) {
$q2->where('project_tasks.created_at', '>=', $start);
})->orWhere(function ($q2) use ($end) {
$q2->where('project_tasks.created_at', '<=', $end);
})->orWhere(function ($q2) use ($start, $end) {
$q2->where('project_tasks.created_at', '>', $start)->where('project_tasks.created_at', '<', $end);
});
}
}); });
return $query; return $query;
} }

View File

@ -1723,9 +1723,9 @@ class Base
$hours = (int)($time / 3600); $hours = (int)($time / 3600);
$time = $time % 3600; // 计算小时后剩余的毫秒数 $time = $time % 3600; // 计算小时后剩余的毫秒数
} }
$minutes = (int)($time / 60); // 剩下的毫秒数都算作分 $minutes = ceil($time / 60); // 剩下的毫秒数都算作分
$daysStr = $days > 0 ? $days . '天' : ''; $daysStr = $days > 0 ? $days . '天' : '';
$hoursStr = ($hours > 0 || $minutes > 0) ? $hours . '时' : ''; $hoursStr = ($hours > 0 || ($days > 0 && $minutes > 0)) ? $hours . '时' : '';
$minuteStr = ($minutes > 0) ? $minutes . '分' : ''; $minuteStr = ($minutes > 0) ? $minutes . '分' : '';
return $daysStr . $hoursStr . $minuteStr; return $daysStr . $hoursStr . $minuteStr;
} }
@ -1747,9 +1747,9 @@ class Base
$hours = (int)($time / 3600); $hours = (int)($time / 3600);
$time = $time % 3600; // 计算小时后剩余的毫秒数 $time = $time % 3600; // 计算小时后剩余的毫秒数
} }
$minutes = (int)($time / 60); // 剩下的毫秒数都算作分 $minutes = ceil($time / 60); // 剩下的毫秒数都算作分
$daysStr = $days > 0 ? $days . '天' : ''; $daysStr = $days > 0 ? $days . '天' : '';
$hoursStr = ($hours > 0 || $minutes > 0) ? $hours . '时' : ''; $hoursStr = ($hours > 0 || ($days > 0 && $minutes > 0)) ? $hours . '时' : '';
$minuteStr = ($minutes > 0) ? $minutes . '分' : ''; $minuteStr = ($minutes > 0) ? $minutes . '分' : '';
return $daysStr . $hoursStr . $minuteStr; return $daysStr . $hoursStr . $minuteStr;
} }

View File

@ -249,6 +249,12 @@
style="width:100%" style="width:100%"
:placeholder="$L('请选择时间')"/> :placeholder="$L('请选择时间')"/>
</FormItem> </FormItem>
<FormItem prop="type" :label="$L('导出时间类型')">
<RadioGroup v-model="exportData.type">
<Radio label="taskTime">{{$L('任务时间')}}</Radio>
<Radio label="CreatedTime">{{$L('创建时间')}}</Radio>
</RadioGroup>
</FormItem>
</Form> </Form>
<div slot="footer" class="adaption"> <div slot="footer" class="adaption">
<Button type="default" @click="exportTaskShow=false">{{$L('取消')}}</Button> <Button type="default" @click="exportTaskShow=false">{{$L('取消')}}</Button>
@ -364,6 +370,7 @@ export default {
exportData: { exportData: {
userid: [], userid: [],
time: [], time: [],
type:'taskTime',
}, },
dialogMsgSubscribe: null, dialogMsgSubscribe: null,