master
cody 9 months ago
parent 01db45dfbf
commit b54b934499

@ -36,65 +36,53 @@ class ChartController extends CommonController
$startDate = $all['start_date'] ?? null; $startDate = $all['start_date'] ?? null;
$endDate = $all['end_date'] ?? null; $endDate = $all['end_date'] ?? null;
// 构建查询条件 $today = date('Y-m-d');
$buildQuery = function ($type) use ($startDate, $endDate) {
$query = Visit::where('type', $type);
if ($startDate && $endDate) {
$query->whereBetween('date', [$startDate, $endDate]);
} elseif ($startDate) {
$query->where('date', '>=', $startDate);
} elseif ($endDate) {
$query->where('date', '<=', $endDate);
}
return $query;
};
$list = [ $list = [
'common_visit' => [ 'common_visit' => [
// 总人数 // 总人数
'total' => $buildQuery(1)->count(), 'total' => Visit::visitHome(1, $startDate, $endDate, [Visit::AUDIT_STATUS_APPROVED, Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 总入场人数 // 总入场人数
'enter_visit' => $buildQuery(1)->whereNotNull('accept_admin_sign')->count(), 'enter_visit' => Visit::visitHome(1, $startDate, $endDate, [Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 离厂统计 // 离厂统计
'leave_total' => $buildQuery(1)->where('audit_status', Visit::AUDIT_STATUS_LEFT)->count(), 'leave_total' => Visit::visitHome(1, $startDate, $endDate, [Visit::AUDIT_STATUS_LEFT]),
// 总随访人数
'follow_total' => $buildQuery(1)->get()->sum('follw_people_total'),
// 今日总人数 // 今日总人数
'today_total' => $buildQuery(1)->where('date', date('Y-m-d'))->count(), 'today_total' => Visit::visitHome(1, $today, $today, [Visit::AUDIT_STATUS_APPROVED, Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 今日入场人数 // 今日入场人数
'today_enter_visit' => $buildQuery(1)->where('date', date('Y-m-d'))->whereNotNull('accept_admin_sign')->count(), 'today_enter_visit' => Visit::visitHome(1, $today, $today, [Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 今日离厂 // 今日离厂
'today_leave_total' => $buildQuery(1)->where('date', date('Y-m-d'))->where('audit_status', Visit::AUDIT_STATUS_LEFT)->count(), 'today_leave_total' => Visit::visitHome(1, $today, $today, [Visit::AUDIT_STATUS_LEFT]),
// 今日随访人数
'today_follow_total' => $buildQuery(1)->where('date', date('Y-m-d'))->get()->sum('follw_people_total'),
], ],
'work_visit' => [ 'work_visit' => [
'total' => $buildQuery(2)->count(), // 总人数
'enter_visit' => $buildQuery(2)->whereNotNull('accept_admin_sign')->count(), 'total' => Visit::visitHome(2, $startDate, $endDate, [Visit::AUDIT_STATUS_APPROVED, Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
'today_total' => Visit::where('type', 2)->where('date', date('Y-m-d'))->count(), // 总入场人数
'today_enter_visit' => Visit::where('type', 2)->where('date', date('Y-m-d'))->whereNotNull('accept_admin_sign')->count(), 'enter_visit' => Visit::visitHome(2, $startDate, $endDate, [Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 离厂统计 // 离厂统计
'leave_total' => $buildQuery(2)->where('audit_status', Visit::AUDIT_STATUS_LEFT)->count(), 'leave_total' => Visit::visitHome(2, $startDate, $endDate, [Visit::AUDIT_STATUS_LEFT]),
// 今日总人数
'today_total' => Visit::visitHome(2, $today, $today, [Visit::AUDIT_STATUS_APPROVED, Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 今日入场人数
'today_enter_visit' => Visit::visitHome(2, $today, $today, [Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 今日离厂 // 今日离厂
'today_leave_total' => Visit::where('type', 2)->where('date', date('Y-m-d'))->where('audit_status', Visit::AUDIT_STATUS_LEFT)->count(), 'today_leave_total' => Visit::visitHome(2, $today, $today, [Visit::AUDIT_STATUS_LEFT]),
// 总随访人数
'follow_total' => $buildQuery(2)->get()->sum('follw_people_total'),
// 今日随访人数
'today_follow_total' => $buildQuery(2)->where('date', date('Y-m-d'))->get()->sum('follw_people_total'),
], ],
'car_visit' => [ 'car_visit' => [
'total' => $buildQuery(3)->count(), // 总人数
'enter_visit' => $buildQuery(3)->whereNotNull('accept_admin_sign')->count(), 'total' => Visit::visitHome(3, $startDate, $endDate, [Visit::AUDIT_STATUS_APPROVED, Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
'today_total' => Visit::where('type', 3)->where('date', date('Y-m-d'))->count(), // 总入场人数
'today_enter_visit' => Visit::where('type', 3)->where('date', date('Y-m-d'))->whereNotNull('accept_admin_sign')->count(), 'enter_visit' => Visit::visitHome(3, $startDate, $endDate, [Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 离厂统计 // 离厂统计
'leave_total' => $buildQuery(3)->where('audit_status', Visit::AUDIT_STATUS_LEFT)->count(), 'leave_total' => Visit::visitHome(3, $startDate, $endDate, [Visit::AUDIT_STATUS_LEFT]),
// 今日总人数
'today_total' => Visit::visitHome(3, $today, $today, [Visit::AUDIT_STATUS_APPROVED, Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 今日入场人数
'today_enter_visit' => Visit::visitHome(3, $today, $today, [Visit::AUDIT_STATUS_ENTERED, Visit::AUDIT_STATUS_LEFT]),
// 今日离厂 // 今日离厂
'today_leave_total' => Visit::where('type', 3)->where('date', date('Y-m-d'))->where('audit_status', Visit::AUDIT_STATUS_LEFT)->count(), 'today_leave_total' => Visit::visitHome(3, $today, $today, [Visit::AUDIT_STATUS_LEFT]),
// 总随访人数
'follow_total' => $buildQuery(3)->get()->sum('follw_people_total'),
// 今日随访人数
'today_follow_total' => $buildQuery(3)->where('date', date('Y-m-d'))->get()->sum('follw_people_total'),
], ],
]; ];

@ -146,4 +146,38 @@ class Visit extends SoftDeletesModel
return $app->subscribe_message->send($data); return $app->subscribe_message->send($data);
} }
/**
* 首页统计
*/
public static function visitHome($type, $startDate, $endDate, $auditStatus)
{
$visit = self::visitQuery($type, $startDate, $endDate, $auditStatus);
$visitTotal = $visit->count();
$follwPeopleTotal = $visit->sum('follw_people_total');
return $visitTotal + $follwPeopleTotal;
}
/**
* 首页统计
*/
public static function visitQuery($type, $startDate, $endDate, $auditStatus)
{
$visit = Visit::where(function ($query) use ($type, $startDate, $endDate, $auditStatus) {
if ($type) {
$query->where('type', $type);
}
if ($auditStatus) {
$query->whereIn('audit_status', $auditStatus);
}
if ($startDate) {
$query->where('date', '>=', $startDate);
}
if ($endDate) {
$query->where('date', '<=', $endDate);
}
})->get();
return $visit;
}
} }

Loading…
Cancel
Save