180 lines
9.1 KiB
PHP
180 lines
9.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 报表数据
|
|
*/
|
|
class Report extends HD_Controller
|
|
{
|
|
private $log_dir = 'biz_report';
|
|
private $biz_type = '1,2';
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->load->model("biz/biz_model");
|
|
$this->load->model("biz/biz_report_day_model");
|
|
$this->load->model('receiver/receiver_score_log_model');
|
|
$this->load->model('receiver/receiver_score_day_model');
|
|
$this->load->model('receiver/receiver_score_avg_day_model');
|
|
$this->load->model('app/licheb/app_licheb_users_model');
|
|
$this->load->model('receiver/receiver_customers_model');
|
|
$this->load->model('receiver/order/receiver_orders_model');
|
|
$this->load->model('receiver/order/receiver_order_datas_model');
|
|
}
|
|
|
|
//报表统计
|
|
public function index()
|
|
{
|
|
$day = $this->input->get('day');
|
|
!$day && $day = date('Y-m-d', strtotime('yesterday'));
|
|
$month = date('Y-m', strtotime($day));
|
|
$getPage = $this->input->get('page');
|
|
$size = $this->input->get('size');
|
|
$t_limit = $this->input->get('time_limit');
|
|
$h = date('H');
|
|
if (!$t_limit && $h > 5) {
|
|
echo '当前时间段不可执行';
|
|
exit;
|
|
}
|
|
$redis = &load_cache('redis');
|
|
$pageCacheKey = "BIZ_REPORT_DAY";
|
|
if ($getPage) {
|
|
$page = $getPage;
|
|
} else {
|
|
$page = $redis->get($pageCacheKey) ?: 1;
|
|
}
|
|
!$size && $size = 20;
|
|
|
|
$where = array(
|
|
'status' => 1,
|
|
"type in ({$this->biz_type})" => null,
|
|
'province_id' => 350000
|
|
);
|
|
$bizs = $this->biz_model->select($where, '', $page, $size, 'id, biz_name');
|
|
if ($bizs) {
|
|
foreach ($bizs as $v) {
|
|
//开工率
|
|
$sales = $this->app_licheb_users_model->count(array('group_id in (1,2)' => null, 'biz_id' => $v['id'], 'status' => 1));
|
|
$works = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 0, 'sub_type' => 0, 'score >' => 0));
|
|
|
|
//今日新增线索数
|
|
$cust_new = $this->receiver_customers_model->count(array('biz_id' => $v['id'], 'DATE(p_time)' => $day));
|
|
|
|
//本月线索总数
|
|
$cust_month = $this->receiver_customers_model->count(array('biz_id' => $v['id'], "DATE_FORMAT(`p_time`, '%Y-%m') = '{$month}'" => null));
|
|
|
|
|
|
//今日新增跟进数
|
|
$cust_visit = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 1, 'sub_type' => 2, 'target_id >' => 0));
|
|
|
|
//本月跟进客户数
|
|
$cust_visit_month = $this->receiver_score_log_model->count(array("DATE_FORMAT(`day`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'type' => 1, 'sub_type' => 2, 'target_id >' => 0), 'target_id');
|
|
|
|
//今日订单新增数
|
|
$order_new = $this->receiver_orders_model->count(array('DATE(order_time)' => $day, 'biz_id' => $v['id'], 'status >=' => 0));
|
|
|
|
//本月订单总数
|
|
$order_month = $this->receiver_orders_model->select(array("DATE_FORMAT(`order_time`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'status >=' => 0), '', 0, 0, 'id');
|
|
|
|
|
|
//本月订单信息完整数
|
|
if ($order_month) {
|
|
$oids = implode(',', array_unique(array_column($order_month, 'id')));
|
|
|
|
$where = array(
|
|
"o_id in ({$oids})" => null,
|
|
"((cardida != '' AND cardidb != '') OR (business_licence != ''))" => null,
|
|
"pay_img <>" => '',
|
|
"contract_img <>" => '',
|
|
"bill_img <>" => '',
|
|
"car_img <>" => '',
|
|
"insurance_img <>" => '',
|
|
"business_img <>" => '',
|
|
);
|
|
$order_finish = $this->receiver_order_datas_model->count($where);
|
|
} else {
|
|
$order_finish = 0;
|
|
}
|
|
|
|
//今日线索逾期数
|
|
$cust_delay = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 3, 'target_id >' => 0));
|
|
//本月开工
|
|
$works_month = $this->receiver_score_log_model->count(array("DATE_FORMAT(`day`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'type' => 0, 'sub_type' => 0, 'score >' => 0), 'biz_id,uid');
|
|
//本月线索逾期数
|
|
$cust_delay_month = $this->receiver_score_log_model->count(array("DATE_FORMAT(`day`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 3, 'target_id >' => 0));
|
|
|
|
//今日订单未达T+1
|
|
$order_wrong = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 2, 'target_id >' => 0), 'target_id');
|
|
|
|
//本月订单未达T+1
|
|
$order_wrong_month = $this->receiver_score_log_model->count(array("DATE_FORMAT(`day`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 2, 'target_id >' => 0), 'target_id');
|
|
|
|
//今日开票早与订单时间数
|
|
$order_early = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 1, 'target_id >' => 0), 'target_id');
|
|
|
|
//今日未及时分配数
|
|
$cust_push = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 4, 'target_id >' => 0), 'target_id');
|
|
|
|
//本月未及时分配数
|
|
$cust_push_month = $this->receiver_score_log_model->count(array("DATE_FORMAT(`day`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 4, 'target_id >' => 0), 'target_id');
|
|
|
|
//今日战败申请未处理数
|
|
$cust_defeat = $this->receiver_score_log_model->count(array('day' => $day, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 5, 'target_id >' => 0), 'target_id');
|
|
|
|
//本月战败申请未处理数
|
|
$cust_defeat_moth = $this->receiver_score_log_model->count(array("DATE_FORMAT(`day`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 5, 'target_id >' => 0), 'target_id');
|
|
|
|
//本月交付总数
|
|
$order_over = $this->receiver_orders_model->count(array("DATE_FORMAT(`over_time`, '%Y-%m') = '{$month}'" => null, 'biz_id' => $v['id'], 'status >' => 0));
|
|
|
|
//今日运营分
|
|
$score = $this->receiver_score_day_model->get(array('day' => $day, 'biz_id' => $v['id'], 'type' => 1));
|
|
|
|
//本月运营分
|
|
$score_month = $this->receiver_score_avg_day_model->get(array('day' => $day, 'biz_id' => $v['id'], 'uid' => 0));
|
|
|
|
$data = [
|
|
'sales' => $sales,
|
|
'work_per' => number_format($works / $sales, 2) * 100,
|
|
'cust_new' => $cust_new,
|
|
'cust_push' => $cust_push,
|
|
'cust_visit' => $cust_visit,
|
|
'cust_delay' => $cust_delay,
|
|
'cust_defeat' => $cust_defeat,
|
|
'order_new' => $order_new,
|
|
'order_wrong' => $order_wrong,
|
|
'order_early' => $order_early,
|
|
'score' => round($score['score']),
|
|
|
|
'work_per_month' => number_format($works_month / $sales, 2) * 100,
|
|
'cust_month' => $cust_month,
|
|
'cust_push_month' => $cust_push_month,
|
|
'cust_visit_month' => $cust_visit_month,
|
|
'cust_delay_month' => $cust_delay_month,
|
|
'cust_defeat_month' => $cust_defeat_moth,
|
|
'order_month' => count($order_month),
|
|
'order_wrong_month' => $order_wrong_month,
|
|
'order_over' => $order_over,
|
|
'order_finish' => $order_finish,
|
|
'score_month' => round($score_month['score']),
|
|
'day' => $day,
|
|
];
|
|
$row = $this->biz_report_day_model->get(['biz_id' => $v['id'], 'day' => $day]);
|
|
if ($row) {
|
|
$this->biz_report_day_model->update($data, ['id' => $row['id']]);
|
|
} else {
|
|
$data['biz_id'] = $v['id'];
|
|
$data['c_time'] = time();
|
|
$this->biz_report_day_model->add($data);
|
|
}
|
|
}
|
|
debug_log("[info]# 当前执行页数" . $page, __FUNCTION__, $this->log_dir);
|
|
$page++;
|
|
$redis->save($pageCacheKey, $page, 60 * 60);
|
|
} else {
|
|
$msg = '执行完成';
|
|
echo $msg;
|
|
debug_log("[info]# " . $msg, __FUNCTION__, $this->log_dir);
|
|
}
|
|
}
|
|
} |