You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
simple-yewu/frontend/controllers/TrackController.php

882 lines
29 KiB

5 years ago
<?php
namespace frontend\controllers;
use common\libs\MyLib;
use common\models\AppointmentHistoryT;
use common\models\AppointmentT;
use common\models\CarCT;
use common\models\CarDT;
use common\models\CarET;
use common\models\CarT;
use common\models\MeetT;
use common\models\InvalidT;
use common\models\UserT;
use Yii;
use yii\data\Pagination;
use yii\db\Exception;
use yii\web\Response;
class TrackController extends BaseController
{
public function actionAdd()
{
$request = Yii::$app->request;
$car_id = $request->get('car_id',0);
return $this->renderPartial('add',[
'car_id' => $car_id
]);
}
public function actionSave()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if($request->isPost) {
$car_id = $request->post('car_id',0);
$pdate = $request->post('pdate');
$ptime = $request->post('ptime');
$remark = $request->post('remark');
if($pdate == '') {
$result['msg'] = '请选择预约时间!';
return $result;
}
$tran = AppointmentT::getDb()->beginTransaction();
try {
$row = AppointmentT::find()
->where('car_id='.$car_id)
->one();
if(empty($row)) {
$row = new AppointmentT();
}
$row->car_id = $car_id;
$row->user_id = $this->my->id;
$row->pdate = $pdate;
$row->ptime = $ptime;
$row->remark = $remark;
$row->is_first = 0;
$row->save();
$h_row = new AppointmentHistoryT();
$h_row->car_id = $car_id;
$h_row->user_id = $this->my->id;
$h_row->pdate = $pdate;
$h_row->ptime = $ptime;
$h_row->remark = $remark;
$h_row->save();
$this->addLog($car_id,'预约客户到'.$pdate.' '.$ptime.',预约内容为:'.$remark,1);
$tran->commit();
} catch(\Exception $e) {
$tran->rollBack();
throw $e;
}
$result['success'] = true;
$result['msg'] = '保存成功';
}
return $result;
}
public function actionAjaxNext()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$session = Yii::$app->session;
$request = Yii::$app->request;
$index = $request->get('index');
$type = $request->get('type');
$sql = null;
if($type == 1) {
$sql = $session->get('track_first',array());
}
if($type == 2) {
$sql = $session->get('track_today',array());
}
if($type == 3) {
$sql = $session->get('track_all',array());
}
if(!$sql){
return array(
'success' => true,
'car_id' => 0
);
}
5 years ago
$car_id = 0;
$item = Yii::$app->db->createCommand($sql.' limit '.$index.',1')
->queryOne();
if($item) {
$car_id = $item['car_id'];
}
$result = array();
$result['success'] = true;
$result['car_id'] = $car_id;
return $result;
}
//首拨
public function actionFirst()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$username = $request->get('username');
$type = $request->get('sort_type');
switch($type){
case 0:
$sort_type = '(car_t.location=3 or car_t.location=6)';
break;
case 1:
$sort_type = 'car_t.location=3';
break;
case 2:
$sort_type = 'car_t.location=6';
break;
default:
$sort_type = '(car_t.location=3 or car_t.location=6)';
}
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=1 and '.$sort_type)
->andWhere('appointment_t.pdate<="'.date('Y-m-d').'"');
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone="'.$phone.'"');
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($username != '') {
$user_info = UserT::find()
->where('username="'.$username.'"')
->one();
if($user_info)
$query = $query->andWhere('appointment_t.user_id='.$user_info->id);
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.', appointment_t.id '.$sort_value);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('track_first');
$session->set('track_first',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$invalid_items = InvalidT::getTree();
return $this->render('first',[
'items' => $items,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'car_no' => $car_no,
'sort_type' => $type,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 1,
'username' => $username,
'invalid_items' => $invalid_items
]);
}
//针对从c库分配好的数据,经过c到e自动化而使数据而无法自动化
public function actionFirstOne()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$username = $request->get('username');
$type = $request->get('sort_type');
switch($type){
case 0:
$sort_type = '(car_t.location=3 or car_t.location=6)';
break;
case 1:
$sort_type = 'car_t.location=3';
break;
case 2:
$sort_type = 'car_t.location=6';
break;
default:
$sort_type = '(car_t.location=3 or car_t.location=6)';
}
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=1 and '.$sort_type)
->andWhere('appointment_t.pdate<="'.date('Y-m-d').'"');
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone="'.$phone.'"');
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($username != '') {
$user_info = UserT::find()
->where('username="'.$username.'"')
->one();
if($user_info)
$query = $query->andWhere('appointment_t.user_id='.$user_info->id);
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.', appointment_t.id '.$sort_value);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('track_first');
$session->set('track_first',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
foreach($items as $vs){
// dd($vs);
$carE_info= CarET::findOne(['id'=>$vs->car_id]);
$carE_info->user_id=$vs->user_id;
$carE_info->save();
$this->addLog($vs->car_id,'修改跟踪操作员',1);
// dd($carE_info);
}
$page_info = MyLib::getPageInfo($pagination);
$invalid_items = InvalidT::getTree();
return $this->render('first',[
'items' => $items,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'car_no' => $car_no,
'sort_type' => $type,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 1,
'username' => $username,
'invalid_items' => $invalid_items
]);
}
//今日预约
public function actionToday()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$username = $request->get('username');
$user_id = $request->get('user_id');
$ptype = $request->get('ptype');
$type = $request->get('sort_type');
$date_begin = $request->get('date_begin');
$date_end = $request->get('date_end');
switch($type){
case 0:
$sort_type = '(car_t.location=3 or car_t.location=6)';
break;
case 1:
$sort_type = 'car_t.location=3';
break;
case 2:
$sort_type = 'car_t.location=6';
break;
default:
$sort_type = '(car_t.location=3 or car_t.location=6)';
}
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=0 and '.$sort_type)
->andWhere('appointment_t.pdate<="'.date('Y-m-d').'"');
// $user_ids = $this->getChildrenUserIDs();
// $query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
if($username == '') {
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
}
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone="'.$phone.'"');
}
if($ptype > 0) {
$query = $query->andWhere('appointment_t.ptype='.$ptype);
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.', appointment_t.id '.$sort_value);
}
if($date_begin != '') {
$query = $query->andWhere('appointment_t.pdate>="'.$date_begin.'"');
}
if($date_end != '') {
$query = $query->andWhere('appointment_t.pdate<="'.$date_end.'"');
}
// if($username == '') {
// $user_ids = $this->getChildrenUserIDs();
// $query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
// }
if($username != '') {
$user_query = UserT::find()
->where('username="'.$username.'"')
->all();
foreach($user_query as $user_info) {
$user_ids[] = $user_info->id;
}
if(count($user_ids) > 0)
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('track_today');
$session->set('track_today',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$list = MeetT::getAllData(2);
$user_items = $this->my->getChildren();
return $this->render('today',[
'items' => $items,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'ptype' => $ptype,
'list' => $list,
'sort_type' => $type,
'car_no' => $car_no,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 2,
'user_id' => $user_id,
'user_items' => $user_items,
'username' => $username,
'date_begin' => $date_begin,
'date_end' => $date_end
]);
}
//全部预约
public function actionAll()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$username = $request->get('username');
$date_begin = $request->get('date_begin');
$date_end = $request->get('date_end');
$ptype = $request->get('ptype');
$type = $request->get('sort_type');
$user_id = $request->get('user_id');
switch($type){
case 0:
$sort_type = '(car_t.location=3 or car_t.location=6)';
break;
case 1:
$sort_type = 'car_t.location=3';
break;
case 2:
$sort_type = 'car_t.location=6';
break;
default:
$sort_type = '(car_t.location=3 or car_t.location=6)';
}
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=0 and '.$sort_type);
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone="'.$phone.'"');
}
if($ptype > 0) {
$query = $query->andWhere('appointment_t.ptype='.$ptype);
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.', appointment_t.id '.$sort_value);
}
if($date_begin != '') {
$query = $query->andWhere('insurer1_date>="'.$date_begin.'"');
}
if($date_end != '') {
$query = $query->andWhere('insurer1_date<="'.$date_end.'"');
}
if($username != '') {
$user_info = UserT::find()
->where('username="'.$username.'"')
->one();
if($user_info)
$query = $query->andWhere('appointment_t.user_id='.$user_info->id);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('track_all');
$session->set('track_all',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$invalid_items = InvalidT::getTree();
$list = MeetT::getAllData(2);
$user_items = $this->my->getChildren();
return $this->render('all',[
'items' => $items,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'ptype' => $ptype,
'sort_type' => $type,
'list' => $list,
'car_no' => $car_no,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 3,
'username' => $username,
'user_items' => $user_items,
'user_id' => $user_id,
'invalid_items' => $invalid_items,
'date_begin' => $date_begin,
'date_end' => $date_end,
]);
}
//领近保险快到期90天
public function actionEndAll()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = array();
$result['success'] = false;
$result['msg'] = '读取失败';
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=0 and car_t.location=6');
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
$bgstr= date("Y-m-d",strtotime("+90 day"));
//结束时间
$endstr=date("Y-m-d",strtotime("+97 day"));
$query = $query->andWhere('insurer1_date>"'.$bgstr.'"');
$query = $query->andWhere('insurer1_date<="'.$endstr.'"');
$data=$query->count();
if($data>=1){
$result['success'] = true;
$result['num'] = $data;
$result['msg'] = '读取成功';
}else{
$result['msg'] = '没有数据';
}
// var_dump($data);
// die;
return $result;
}
public function actionEndAllList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
// $car_man = $request->get('car_man');
// $phone = $request->get('phone');
// $car_no = $request->get('car_no');
$page = $request->get('page',1);
$day = $request->get('day',1);
// $sort_key = $request->get('sort_key','appointment_t.pdate');
// $sort_value = $request->get('sort_value','ASC');
// $username = $request->get('username');
// $date_begin = $request->get('date_begin');
// $date_end = $request->get('date_end');
// $ptype = $request->get('ptype');
// $type = $request->get('sort_type');
// $user_id = $request->get('user_id');
// switch($type){
// case 0:
// $sort_type = '(car_t.location=3 or car_t.location=6)';
// break;
// case 1:
// $sort_type = 'car_t.location=3';
// break;
// case 2:
// $sort_type = 'car_t.location=6';
// break;
// default:
// $sort_type = '(car_t.location=3 or car_t.location=6)';
// }
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=0 and car_t.location=6');
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
// if($car_man != '') {
// $query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
// }
// if($phone != '') {
// $query = $query->andWhere('car_t.phone="'.$phone.'"');
// }
// if($ptype > 0) {
// $query = $query->andWhere('appointment_t.ptype='.$ptype);
// }
// if($car_no != '') {
// $query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
// }
// if($sort_key != '') {
// $query = $query->orderBy($sort_key.' '.$sort_value.', appointment_t.id '.$sort_value);
// }
$bgstr= date("Y-m-d",strtotime("+90 day"));
//结束时间
$endstr=date("Y-m-d",strtotime("+97 day"));
$query = $query->andWhere('insurer1_date>"'.$bgstr.'"');
$query = $query->andWhere('insurer1_date<="'.$endstr.'"');
// if($username != '') {
// $user_info = UserT::find()
// ->where('username="'.$username.'"')
// ->one();
// if($user_info)
// $query = $query->andWhere('appointment_t.user_id='.$user_info->id);
// }
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('track_all');
$session->set('track_all',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$list = MeetT::getAllData(2);
$user_items = $this->my->getChildren();
if($day==1){
$days=2;
}else{
$days=3;
}
return $this->render('all-list',[
'items' => $items,
'page_info' => $page_info,
'list' => $list,
'page' => $page,
'type' => $days,
'user_items' => $user_items,
]);
}
public function actionInvalidC()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = array();
$result['success'] = false;
$result['msg'] = '操作失败';
if($request->isPost) {
$ids = $request->post('ids',array());
if(count($ids) == 0) {
$result['msg'] = '请先钩选车辆';
return $result;
}
$tran = CarT::getDb()->beginTransaction();
try {
foreach($ids as $id) {
$car_info = CarT::findOne(['id'=>$id]);
$car_info->location = 3;
$car_info->save();
$c_info = CarCT::findOne(['id'=>$id]);
$c_info->user_id = 0;
$c_info->save();
//删除预约
AppointmentT::deleteAll('car_id='.$car_info->id);
//删除保单
OrderT::deleteAll('car_id='.$car_info->id.' and status_id<2');
$this->addLog($car_info->id,'回收车辆数据到C库',1);
}
$result['success'] = true;
$result['msg'] = '操作成功';
$tran->commit();
} catch (\Exception $e) {
$tran->rollBack();
echo $e->getMessage();
}
}
return $result;
}
public function actionCarCancel()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = array();
$result['success'] = false;
$result['msg'] = '放弃失败';
if($request->isPost) {
$id = $request->post('id',0);
if($id > 0) {
$tran = CarCT::getDb()->beginTransaction();
try {
$c_info = CarCT::findOne(['id'=>$id]);
if($c_info->user_id > 0)
$this->addLog($c_info->id,'业务员:'.$c_info->user->getShowName().'自动放弃跟踪数据',1);
//删除预约
AppointmentT::deleteAll('user_id='.$c_info->user_id.' and car_id='.$c_info->id);
$car_info = $c_info->car;
$car_info->user_id = 0;
$car_info->location = 4;
$car_info->save();
CarCT::deleteAll(['id'=>$car_info->id]);
$d_info = CarDT::findOne(['id'=>$car_info->id]);
if(!$d_info) {
$d_info = new CarDT();
$d_info->id = $car_info->id;
$d_info->user_id = 0;
$d_info->save();
$this->addLog($car_info->id,'从C库分配到D库',1);
}
$tran->commit();
} catch(\Exception $e) {
$tran->rollBack();
throw $e;
}
$result['success'] = true;
$result['msg'] = '放弃成功';
}
}
return $result;
}
//从e库放弃到a库
// public function actionCarCancelE()
// {
// Yii::$app->response->format = Response::FORMAT_JSON;
// $request = Yii::$app->request;
// $result = array();
// $result['success'] = false;
// $result['msg'] = '放弃失败';
//
// if($request->isPost) {
// $id = $request->post('id',0);
//
// if($id > 0) {
// $tran = CarET::getDb()->beginTransaction();
// try {
// $c_info = CarET::findOne(['id'=>$id]);
// if($c_info->user_id > 0)
// $this->addLog($c_info->id,'业务员:'.$c_info->user->getShowName().'自动放弃跟踪数据',1);
//
// //删除预约
// AppointmentT::deleteAll('user_id='.$c_info->user_id.' and car_id='.$c_info->id);
//
// $car_info = $c_info->car;
// $car_info->user_id = 0;
// $car_info->location = 1;
// $car_info->save();
//
// CarET::deleteAll(['id'=>$car_info->id]);
//
// $this->addLog($car_info->id,'从E库分配到A库',1);
//
// $tran->commit();
// } catch(\Exception $e) {
// $tran->rollBack();
// throw $e;
// }
//
// $result['success'] = true;
// $result['msg'] = '放弃成功';
// }
// }
// return $result;
// }
/**
* E库数据放弃到D库
* xzz
* 2017-12-21
*/
public function actionCarCancelE()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = [
'success' => false,
'msg' => '放弃失败'
];
if($request->isPost){
$id = $request->post('id', 0);
if($id > 0){
$tran = CarET::getDb()->beginTransaction();
try{
$c_info = CarET::findOne(['id' => $id]);
if($c_info->user_id > 0)
$this->addLog($c_info->id,'业务员:'.$c_info->user->getShowName().'自动放弃跟踪数据',1);
//删除预约
AppointmentT::deleteAll('user_id = '.$c_info->user_id.' and car_id = '.$c_info->id);
$car_info = $c_info->car;
$car_info->user_id = 0;
$car_info->location = 4;
$car_info->save();
CarET::deleteAll(['id' => $car_info->id]);
$d_info = CarDT::findOne(['id' => $car_info->id]);
if(!$d_info){
$d_info = new CarDT();
$d_info->id = $car_info->id;
$d_info->user_id = 0;
$d_info->save();
$this->addLog($car_info->id,'从E库分配到D库',1);
}
$tran->commit();
}catch (Exception $e){
$tran->rollBack();
throw $e;
}
$result = [
'success' => true,
'msg' => '放弃成功'
];
}
}
return $result;
}
}