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('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' => 0, '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'], 'MONTH(p_time)' => $month)); //今日新增跟进数 $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('MONTH(day)' => $month, '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('MONTH(order_time)' => $month, '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('MONTH(day)' => $month, 'biz_id' => $v['id'], 'type' => 0, 'sub_type' => 0, 'score >' => 0)); //本月线索逾期数 $cust_delay_month = $this->receiver_score_log_model->count(array('MONTH(day)' => $month, '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('MONTH(day)' => $month, '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('MONTH(day)' => $month, '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('MONTH(day)' => $month, 'biz_id' => $v['id'], 'type' => 3, 'sub_type' => 5, 'target_id >' => 0), 'target_id'); //本月交付总数 $order_over = $this->receiver_orders_model->count(array('MONTH(over_time)' => $month, '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); } } }