<?php
/**
* Created by PhpStorm.
* User: liuyingjie
* Date: 2017/8/2
* Time: 13:38
*/
namespace frontend\controllers;
use common\components\Upload;
use common\libs\MyLib;
use common\models\CarFinanceT;
use common\models\CarLogT;
use common\models\CarT;
use common\models\DirectionT;
use common\models\FixCarImg;
use common\models\FixCarItemT;
use common\models\FixCarReport;
use common\models\FixCarTuoche;
use common\models\FixItemT;
use common\models\FixCarCategory;
use common\models\InsurerCompanyT;
use common\models\Message;
use common\models\MetalPlatePart;
use common\models\MiddleDamageLevel;
use common\models\MiddleFixCarT;
use common\models\MiddleScaleHour;
use common\models\RangeT;
use common\models\RoleT;
use common\models\StoreRoom;
use common\models\UserT;
use Yii;
use common\models\FixCarT;
use yii\data\Pagination;
use yii\db\Exception;
use yii\helpers\ArrayHelper;
use yii\helpers\Json;
use yii\web\Response;
class BusinessOrderController extends FixCarBaseController
{
public function behaviors()
{
return [
[
'class' => 'yii\filters\ContentNegotiator',
'only' => ['save', 'delete','order-save','driver-save','front-desk-check-save',
'front-setting-loss-exploration-save','setting-loss-exploration-add','fix-item-remove','remove-report',
'front-desk-save','front-desk-info-item-save','ajax-metal-plate-list','metal-plate-save','ajax-bottom-work-list','bottom-work-save',
'ajax-paint-work-list','paint-work-save','ajax-metal-plate-install-list','metal-plate-install-save','ajax-electromechanical-list','electromechanical-save',
'ajax-car-wash-list','car-wash-save','ajax-last-check-list','last-check-save','fix-user-sibling','fix-car-save','ajax-item-list','ajax-item-list-bak',
'fix-item-finish','ajax-fix-user','ajax-job-foreman','get-damage-level','get-metal-plate','get-self-free','get-price-by-shop','rm-img','web-uploader','look-image','refresh-item-list'],
'formats' => [
'application/json' => Response::FORMAT_JSON,
]
],
// [
// 'class'=>'yii\filters\HttpCache',
// 'only' => ['setting-loss-exploration-list','index','order-info','check-list','check-info','driver-list','driver-info','front-desk-check-list',
// 'front-desk-check-info','setting-loss-exploration-list','setting-loss-exploration-info',
// 'front-desk-list','front-desk-info','metal-plate-list','metal-plate-info','bottom-work-list','bottom-work-info',
// 'paint-work-list','paint-work-info','metal-plate-install-list','metal-plate-install-info',
// 'electromechanical-list','electromechanical-info','car-wash-list','car-wash-info','last-check-list','last-check-info'],
// 'cacheControlHeader'=> null,
// 'etagSeed' => function () {
// $q = new \yii\db\Query();
// $model = $q->from('fix_car_t');
// $model1 = $q->from('fix_car_item_t');
// $model2 = $q->from('fix_car_img');
// return $model->max('updated_at').$model->max('id').$model->count().
// $model1->max('updated_at').$model1->max('id').$model1->count().
// $model2->max('updated_at').$model2->max('id').$model2->count();
// },
// ],
// 'pageCache' => [
// 'class' => 'yii\filters\PageCache',
// 'only' => ['setting-loss-exploration-list','index','order-info','check-list','check-info','driver-list','driver-info','front-desk-check-list',
// 'front-desk-check-info','setting-loss-exploration-list','setting-loss-exploration-info',
// 'front-desk-list','front-desk-info','metal-plate-list','metal-plate-info','bottom-work-list','bottom-work-info',
// 'paint-work-list','paint-work-info','metal-plate-install-list','metal-plate-install-info',
// 'electromechanical-list','electromechanical-info','car-wash-list','car-wash-info','last-check-list','last-check-info'],
// 'duration' => 0,
// 'varByParam'=>Yii::$app->request->queryString,
// 'dependency' => [
// 'class' => 'yii\caching\DbDependency',
// 'sql' => "SELECT * FROM (SELECT MAX('updated_at'),MAX('id'),COUNT(*) FROM fix_car_t) AS t1 UNION ALL".
// " SELECT * FROM (SELECT MAX('updated_at'),MAX('id'),COUNT(*) FROM fix_car_item_t) AS t2 UNION ALL".
// " SELECT * FROM (SELECT MAX('updated_at'),MAX('id'),COUNT(*) FROM fix_car_img) AS t3",
// ],
// 'variations' => [
// Yii::$app->language,
// ]
// ],
];
}
private function getList($request, & $session, $type = '')
{
$page = $request->get('page', 1);
$query = FixCarT::find()->select('id,car_no,id_man,link_man,link_phone,submit_date,user_id,status,brand_id,series_id,address,accident_type,responsibility,updated_at');
$query = $query->where('status < =' . self::MAX_STATUS);
$render = [];
$this->getQuery($request, $query, $render);
$sql = $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('driver_list');
$session->set('driver_list', $sql);
$pagination = new Pagination(['totalCount' => $total, 'pageSize' => 20]);
$pagination->setPage($page - 1);
$query = $query->offset($pagination->offset)->orderBy('created_at DESC')->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$render['items'] = $items;
$render['page_info'] = $page_info;
$render['page'] = $page;
if ('' !== $type) $render['type_name'] = $type;
return $render;
}
private function getList1($request, & $session, $type = '')
{
$page = $request->get('page', 1);
$query = MiddleFixCarT::find();
$is_join = false; //控制是否关联查询
switch($type){
case self::METAL_PLATE://钣金
$is_join = true;
$query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND fix_car_item_t.metal_plate_install=0 AND fix_car_item_t.fix_group=7 AND middle_fix_car_t.status=6 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id);
break;
case self::METAL_PLATE_INSTALL://钣金安装
$is_join = true;
$query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND fix_car_item_t.fix_status=1 AND fix_car_item_t.fix_group=7 AND middle_fix_car_t.status=9 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id);
break;
case self::BOTTOM_WORK://底子工
$is_join = true;
$query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND middle_fix_car_t.status=7 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group=13');
break;
case self::PAINT_WORK://喷漆工
$is_join = true;
$query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND middle_fix_car_t.status=8 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group=8');
break;
case self::CAR_WASH://美容装饰
$is_join = true;
$query = $query->joinWith('items','LEFT')->joinWith('fix')->where('middle_fix_car_t.type=1 AND middle_fix_car_t.status=13 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group=12 AND fix_car_t.status_1=1 AND fix_car_t.status_2=1');
break;
case self::ELECTROMECHANICAL://机电
$is_join = true;
$query = $query->joinWith('items','LEFT')->andWhere('middle_fix_car_t.type=2 AND middle_fix_car_t.status=11 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group BETWEEN 10 AND 11');
break;
case self::LAST_CHECK://总检
$is_join = false;
$query = $query->where('status=14');
break;
}
$render = [];
$is_join ? $this->getQuery1($request, $query, $render) : $this->getQuery($request, $query, $render);
$sql = $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('metal_plate_list');
$session->set('metal_plate_list', $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);
$render['items'] = $items;
$render['page_info'] = $page_info;
$render['page'] = $page;
if ('' !== $type) $render['type_name'] = $type;
return $render;
}
/**
*------------------------------------------------------------
* 查询条件
* @param object $request ; 引用 $query,$render
* @return void
* @author liuyingjie
*------------------------------------------------------------
*/
private function getQuery($request, & $query, & $render)
{
$op = $request->get('op');
$car_no = $request->get('car_no', '');
$status = $request->get('status');
$id_man = $request->get('id_man', '');
$id_phone = $request->get('id_phone', '');
$link_man = $request->get('link_man', '');
$link_phone = $request->get('link_phone', '');
$sort_key = $request->get('sort_key', '');
$sort_value = $request->get('sort_value', '');
$start_time = $request->get('start_time') ? $request->get('start_time') . ' 00:00:00' : '';
$end_time = $request->get('end_time') ? $request->get('end_time') . ' 24:00:00' : '';
if ('0' === $op) $query = $query->andWhere('id=-1');
if ('' !== $car_no) $query = $query->andWhere(['like', 'car_no', $car_no]);
if ($status >= 0) $query = $query->andWhere('status = \'' . $status.'\'');
if ('' !== $id_man) $query = $query->andWhere(['like', 'id_man', $id_man]);
if ('' !== $id_phone) $query = $query->andWhere(['like', 'id_man_phone', $id_phone]);
if ('' !== $link_man) $query = $query->andWhere(['like', 'link_man', $link_man]);
if ('' !== $link_phone) $query = $query->andWhere(['like', 'link_phone', $link_phone]);
if ('' !== $start_time & & '' !== $end_time) $query = $query->andWhere('created_at >= \'' . $start_time . '\' AND created_at < =\'' . $end_time . '\'');
if ('' !== $start_time & & '' === $end_time) $query = $query->andWhere('created_at >= \'' . $start_time . '\'');
if ('' !== $end_time & & '' === $start_time) $query = $query->andWhere('created_at < = \'' . $end_time . '\'');
if ('' !== $sort_key) $query = $query->orderBy($sort_key . ' ' . $sort_value . ' , id ASC');
$render['car_no'] = $car_no;
$render['status'] = $status;
$render['id_man'] = $id_man;
$render['id_phone'] = $id_phone;
$render['link_man'] = $link_man;
$render['link_phone'] = $link_phone;
$render['sort_key'] = $sort_key;
$render['sort_value'] = $sort_value;
$render['start_time'] = substr($start_time, 0, 10);
$render['end_time'] = substr($end_time, 0, 10);
}
private function getQuery1($request, & $query, & $render)
{
$op = $request->get('op');
$car_no = $request->get('car_no', '');
$status = $request->get('status', '');
$id_man = $request->get('id_man', '');
$id_phone = $request->get('id_phone', '');
$link_man = $request->get('link_man', '');
$link_phone = $request->get('link_phone', '');
$sort_key = $request->get('sort_key', '');
$sort_value = $request->get('sort_value', '');
$start_time = $request->get('start_time') ? $request->get('start_time') . ' 00:00:00' : '';
$end_time = $request->get('end_time') ? $request->get('end_time') . ' 24:00:00' : '';
if ('0' === $op) $query = $query->joinWith('fix')->andWhere('fix_car_t.id=-1');
if ('' !== $car_no) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.car_no', $car_no]);
if ('' !== $status) $query = $query->joinWith('fix')->andWhere('fix_car_t.status = ' . $status);
if ('' !== $id_man) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.id_man', $id_man]);
if ('' !== $id_phone) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.id_man_phone', $id_phone]);
if ('' !== $link_man) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.link_man', $link_man]);
if ('' !== $link_phone) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.link_phone', $link_phone]);
if ('' !== $start_time & & '' !== $end_time) $query = $query->joinWith('fix')->andWhere('fix_car_t.created_at >= \'' . $start_time . '\' AND fix_car_t.created_at < =\'' . $end_time . '\'');
if ('' !== $start_time & & '' === $end_time) $query = $query->joinWith('fix')->andWhere('fix_car_t.created_at >= \'' . $start_time . '\'');
if ('' !== $end_time & & '' === $start_time) $query = $query->joinWith('fix')->andWhere('fix_car_t.created_at < = \'' . $end_time . '\'');
if ('' !== $sort_key) $query = $query->joinWith('fix')->orderBy('fix_car_t.'.$sort_key . ' ' . $sort_value . ' , fix_car_t.id ASC');
$render['car_no'] = $car_no;
$render['status'] = $status;
$render['id_man'] = $id_man;
$render['id_phone'] = $id_phone;
$render['link_man'] = $link_man;
$render['link_phone'] = $link_phone;
$render['sort_key'] = $sort_key;
$render['sort_value'] = $sort_value;
$render['start_time'] = substr($start_time, 0, 10);
$render['end_time'] = substr($end_time, 0, 10);
}
/**
*------------------------------------------------------------
* 业务提单
* @param fix_car_t status = 0
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionIndex()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('index', $this->getList($request, $session));
}
/**
*------------------------------------------------------------
* 搜索页
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionSearch()
{
return $this->render('search');
}
/**
*------------------------------------------------------------
* 判断是否登记
* @param varchar car_no engine_no car_frame_no car_man car_phone
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionSearchResult()
{
$request = Yii::$app->request;
$car_no = $request->get('car_no');
$engine_no = $request->get('engine_no');
$car_frame_no = $request->get('car_frame_no');
$car_man = $request->get('car_man');
$car_phone = $request->get('car_phone');
if($fix_car = FixCarT::find()->where('car_no=\''.$car_no.'\' AND out_factory_date IS NULL')->one()){
return '【车牌号:'.$fix_car->car_no.';未出厂】< br > 【提单者:'.$fix_car->user->getShowName().'】< br > 【提单日期:'.$fix_car->submit_date.'】< br > 【维修进度:'.$fix_car->getStatus().'】< br > < a href = "javascript:void(0)" onclick = "history.go(-1)" > 返回< / a > ';
}
$query = CarT::find();
if ($car_no !== '') $query = $query->andWhere('car_no like "' . $car_no . '"');
if ($engine_no !== '') $query = $query->andWhere('engine_no like "' . $engine_no . '"');
if ($car_frame_no !== '') $query = $query->andWhere('car_frame_no like "' . $car_frame_no . '"');
if ($car_man !== '') $query = $query->andWhere('car_man like "' . $car_man . '"');
if ($car_phone !== '') $query = $query->andWhere('phone like "' . $car_phone . '"');
$items = $query->all();
return $this->render('search-result', [
'items' => $items
]);
}
/**
*------------------------------------------------------------
* 删除
* @param int id
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionDelete()
{
$request = Yii::$app->request;
$result = [];
$result['success'] = true;
$result['msg'] = '删除失败!';
if (!$request->isAjax) return $result;
$id = $request->post('id', 0);
$tran = Yii::$app->db->beginTransaction();
try {
$fix_car = FixCarT::findOne($id);
if (!$fix_car->delete()) throw new Exception('');
CarLogT::deleteAll('car_id = :car_id AND type = :type', [':car_id' => $fix_car->car_id, ':type' => 2]);
$result['success'] = true;
$result['msg'] = '删除成功!';
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
public function actionOrderInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$car_id = $request->get('car_id', 0);
$status = $request->get('status', 0);
$type = $request->get('type', 0);
$info = $id > 0 ? FixCarT::findOne(['id' => $id, 'status' => $status]) : new FixCarT();
//总库(car_t) 移至 维修(car_fix_t)
if ($car_id > 0 & & $id < 1 ) {
$car_info = CarT::find()
->where(['id' => $car_id])
->orderBy('register_date DESC')
->one();
$info->car_id = $car_info->id;
$info->car_no = $car_info->car_no;
$info->engine_no = $car_info->engine_no;
$info->car_frame_no = $car_info->car_frame_no;
$info->id_man = $car_info->id_man;
$info->id_man_phone = $car_info->car_man_phone;
$info->link_man = $car_info->car_man;
$info->link_man_phone = $car_info->car_man_phone;
$info->company = $car_info->company;
$info->brand_id = $car_info->brand_id;
$info->series_id = $car_info->series_id;
$info->displacement_id = $car_info->displacement_id;
$info->car_year = $car_info->car_year;
$info->status = $status;
}
return $this->render('order-info', [
'info' => $info,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
]);
}
public function actionOrderSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id');
$series_id = $request->post('series_id');
$displacement_id = $request->post('displacement_id');
$sys_remark = $request->post('sys_remark', '');
if (!$request->isAjax) return Message::getMessage();
$tran = FixCarT::getDb()->beginTransaction();
try {
//更新或新增
$row = $id > 0 ? FixCarT::findOne($id) : new FixCarT();
$old_status = $row->isNewRecord ? 0 : $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->series_id = $series_id ? $series_id :null;
$row->displacement_id = $displacement_id ? $displacement_id :null;
$row->remark = $sys_remark;
if (!$row->validate()) {
$errors = array_values($row->errors);
return Message::getMessage(false,$errors[0]);
}
//新增
if ($row->isNewRecord & & $car_id > 0) {
$row->submit_date = date('Y-m-d H:i:s');
$row->user_id = $this->my->id;
$row->car_id = $car_id;
}
if (!$row->save()) throw new Exception('');
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
$tran->commit();
$fix_id = $row->isNewRecord ? Yii::$app->db->getLastInsertID() : $row->id;
return Message::getMessage(true,'保存成功!',$fix_id);
} catch (Exception $e) {
$tran->rollBack();
return Message::getMessage(false,$e->getMessage());
}
}
/*******************************************************提单审核*****************************************************/
/**
*------------------------------------------------------------
* 提单审核
* @param fix_car_t status = 1 提单审核
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionCheckList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('check-list', $this->getList($request, $session));
}
/**
*------------------------------------------------------------
* 提单审核详情
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionCheckInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]); //编辑
// //礼品
// $gift_items = CarGiftT::find()
// ->where('car_id='.$car_info->id)
// ->orderBy('strategy_id DESC')
// ->all();
return $this->render('check-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable
]);
}
public function actionCheckSave(){
$request = Yii::$app->request;
if (!$request->isAjax) return Message::getMessage();
$tran = FixCarT::getDb()->beginTransaction();
try {
$id = $request->post('id', 0);
$car_id = $request->post('car_id');
$driver_id = $request->post('driver_id');
$sys_remark = $request->post('sys_remark', '');
if($id < 1 ) return Message::getMessage ( ) ;
//更新或新增
$row = FixCarT::findOne($id);
$old_status = $row->isNewRecord ? 0 : $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
$row->driver_id = $driver_id;
if (!$row->validate()) {
$errors = array_values($row->errors);
return Message::getMessage(false,$errors[0]);
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
//提单审核 提交
//上门接车 & & (自费维修 || 保险理赔),都进入司机接车
if ((2 == $row->status) & & ('上门接车' == $row->receive_type)) {
$row->status = 2;
} //客户自送 & & 自费维修,则直接进入前台审核
elseif (2 == $row->status & & ('客户自送' == $row->receive_type)) {
$row->status = 3;
}
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('记录日志失败!');
}
if (!$row->save()) throw new Exception('维修信息修改失败!');
$tran->commit();
return Message::getMessage(true,'保存成功!',$row->id);
} catch (Exception $e) {
$tran->rollBack();
return Message::getMessage(false,$e->getMessage());
}
return $result;
}
/***************************************************** end ********************************************************/
/***************************************************司机接车*******************************************************/
/**
*------------------------------------------------------------
* 司机接车
* @param string car_no(车牌号)
* @param int status = 2 待接车
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionDriverList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('driver-list', $this->getList($request, $session));
}
/**
*------------------------------------------------------------
* 司机接车详情
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionDriverInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = $render['info'] = FixCarT::findOne(['id' => $id]);
return $this->render('driver-info', [
'info' => $info,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
]);
}
/**
*------------------------------------------------------------
* 司机接车新增、保存
* @param
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionDriverSave()
{
$request = Yii::$app->request;
$small_type_id = $request->post('small_type_id');
$name = $request->post('name');
$count = $request->post('count', 1);
$remark = $request->post('remark', '');
$price = $request->post('price', 0);
$fix_id = $request->post('fix_id');
$pay_type = $request->post('pay_type');
$id = $request->post('id', 0);
$level = $request->post('level', 0);
$insurance_price = $request->post('insurance_price', 0);
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
if (!$request->isAjax) return $result;
$fix_item = ($id > 0 & & 5 != $small_type_id) ? FixItemT::findOne($id) : new FixItemT();
switch ($small_type_id) {
case 1: //更换清单
case 2: //维修清单
case 3: //辅料清单
case 4: //待定清单
case 6: //美容装饰
$fix_item->name = $name;
$fix_item->count = $count;
$fix_item->fix_remark = $remark;
$fix_item->price = $price;
$fix_item->small_type_id = $small_type_id;
$fix_item->fix_id = $fix_id;
$fix_item->pay_type = $pay_type;
$fix_item->damage_level = $level;
$fix_item->insurance_price = $insurance_price;
if ($fix_item->save()) {
$result['success'] = true;
$result['msg'] = '操作成功!';
}
break;
case 5: //汽车保养
FixItemT::deleteAll('fix_id=' . $fix_id . ' AND small_type_id=5');
foreach ($name as $k => $val) {
$type = strstr($val, '_');
$keep_in_good_id = rtrim(strstr($val, '_', true), '_');
if ('_0' == $type) {
$insert[$k]['name'] = '机油';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_1' == $type) {
$insert[$k]['name'] = '机油滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_2' == $type) {
$insert[$k]['name'] = '空气滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_3' == $type) {
$insert[$k]['name'] = '空调滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_4' == $type) {
$insert[$k]['name'] = '汽油滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
}
$insert[$k]['price'] = $price;
$insert[$k]['count'] = $count;
$insert[$k]['fix_id'] = $fix_id;
$insert[$k]['small_type_id'] = $small_type_id;
$insert[$k]['pay_type'] = 2;
}
Yii::$app->db->createCommand()->batchInsert(FixItemT::tableName(), ['name', 'car_keep_in_good_id', 'price', 'count', 'fix_id', 'small_type_id', 'pay_type'], $insert)->execute();
$result['success'] = true;
$result['msg'] = '操作成功!';
break;
}
return $result;
}
/************************************************* end ***********************************************************/
/***************************************************前台审核*******************************************************/
/**
*------------------------------------------------------------
* 前台审核列表页
* @param int status = 3
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFrontDeskCheckList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('front-desk-check-list', $this->getList($request, $session));
}
public function actionFrontDeskCheckInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
//礼品
// $gift_items = CarGiftT::find()
// ->where('car_id=' . $info->id)
// ->orderBy('strategy_id DESC')
// ->all();
//报案号
$reports = ($reports_res = FixCarReport::findAll(['fix_id'=>$id])) ? $reports_res : [];
$report_nos = Json::encode($reports);
return $this->render('front-desk-check-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' =>$this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'reports'=>$reports,
'gift_enable' => $gift_enable,
]);
}
/**
*------------------------------------------------------------
* 前台审核添加保存
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFrontDeskCheckSave()
{
$request = Yii::$app->request;
if (!$request->isAjax) return Message::getMessage();
$tran = FixCarT::getDb()->beginTransaction();
try {
$id = $request->post('id', 0);
$driver_id = $request->post('driver_id');
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
if($id < 1 | | empty ( $ sys_remark ) ) return Message::getMessage ( ) ;
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
$row->driver_id = $driver_id ? $driver_id :null;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
//判断结算方式,如果非保险理赔则跳过查勘定损,直接进入前台派工
if(intval($row->status) === 4 & & FixCarItemT::find()->where(['fix_id'=>$row->id,'pay_type'=>1])->count() < 1 ) $ row- > status = 5;
//保险理赔 & & fix_id = $row->id & & 未维修 & & 未进入总检 & & 未确认 & & 钣金安装未确认
$fix_item = FixCarItemT::find()->where(['fix_id'=>$row->id,'fix_status'=>0,'status'=>0,'confirm_at'=>'0000-00-00 00:00:00','get_time'=>'0000-00-00 00:00:00','metal_plate_install'=>0])->select('pay_type')->asArray()->all();
$fix_item = array_unique(array_column($fix_item,'pay_type'));
if(empty($fix_item)){
// return Message::getMessage(false,'清单不可为空!');
}else{
$row->status = in_array(1,$fix_item) ? 4 : 5;
}
//操作记录
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $row->car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('a');
}
if (!$row->save()) throw new Exception('b');
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
var_dump($e->getMessage());
$tran->rollBack();
}
return $result;
}
/***************************************************** end *******************************************************/
/*****************************************************查勘定损******************************************************/
/**
*------------------------------------------------------------
* 查勘定损
* @param string car_no 车牌号
* @param int status = 4 待查勘定损
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionSettingLossExplorationList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('setting-loss-exploration-list', $this->getList($request, $session));
}
public function actionSettingLossExplorationInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne($id);
//报案号
$reports = ($reports_res = FixCarReport::findAll(['fix_id'=>$id])) ? $reports_res : [];
$report_nos = Json::encode($reports);
return $this->render('setting-loss-exploration-info', [
'info' => $info,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'reports'=>$reports,
'report_nos'=>$report_nos,
'insurer_companies'=>InsurerCompanyT::find()->all(),
'tuoche'=>FixCarTuoche::find()->all()
]);
}
/**
*------------------------------------------------------------
* 查勘定损 车辆信息添加
* @param
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionSettingLossExplorationAdd()
{
$request = Yii::$app->request;
$id = $request->post('id', 0);
$follow_car_items = $request->post('follow_car_items');
$car_id = $request->post('car_id');
$driver_id = $request->post('driver_id');
$sys_remark = $request->post('sys_remark', '');
if (!$request->isAjax || $id < 1 ) return Message::getMessage ( ) ;
$tran = FixCarT::getDb()->beginTransaction();
try {
$row = FixCarT::findOne($id);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
$row->driver_id = $driver_id ? $driver_id : null;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
return Message::getMessage(false,$errors[0]);
}
if (!$row->save()) throw new Exception('');
//添加报案号
$report_no = array_unique($request->post('report_no'));
$report_id = $request->post('report_id');
foreach($report_no as $k=>$v){
$report = (isset($report_id[$k]) & & $report_res = FixCarReport::findOne(['id'=>$report_id[$k]])) ? $report_res : new FixCarReport();
$report->report_no = strtoupper($v);
$report->baoan_man = $request->post('baoan_man')[$k];
$report->baoan_time = $request->post('baoan_time')[$k];
$report->chuxian_time = $request->post('chuxian_time')[$k];
$report->baoan_address = $request->post('baoan_address')[$k];
$report->shigu_info = $request->post('shigu_info')[$k];
$report->lipei_company = $request->post('lipei_company')[$k];
$report->zhuche_money =$request->post('zhuche_money')[$k];
$report->sanzhe_money = $request->post('sanzhe_money')[$k];
$report->wusun_money = $request->post('wusun_money')[$k];
$report->tuoche = $request->post('tuoche')[$k];
$report->tuoche_money = $request->post('tuoche_money')[$k];
$report->dingsun_hour_money = $request->post('dingsun_hour_money')[$k];
$report->dingsun_huanjian_money = $request->post('dingsun_huanjian_money')[$k];
$report->peifu_bili = $request->post('peifu_bili')[$k];
$report->peifu_money = $request->post('peifu_money')[$k];
$report->kehu_money = $request->post('kehu_money')[$k];
$report->fix_id = $row->isNewRecord ? Yii::$app->db->getLastInsertID() : $id;
if(!$report->validate()){
$errors = array_values($report->errors);
return Message::getMessage($errors[0]);
}
if(!$report->save()) throw new Exception('报案号添加失败!');
}
//操作记录
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
// if (FixCarImg::find()->where('id=' . $id . ' AND type=' . $old_status)->count() >= 6) {
// $result['msg'] = '最多允许上传6张图片';
// return $result;
// }
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/**
*------------------------------------------------------------
* 清单删除
* @param int id fix_item_t表主键
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFixItemRemove()
{
$request = Yii::$app->request;
$result = [];
$result['success'] = false;
$result['msg'] = '删除失败!';
if (!$request->isAjax) return $result;
$id = $request->post('id', 0);
$fix = FixItemT::findOne($id);
if ($fix->delete()) {
$result['success'] = true;
$result['msg'] = '删除成功!';
$result['fix_id'] = $fix->fix_id;
}
return $result;
}
/**
*------------------------------------------------------------
* 删除报案号
* @param
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionRemoveReport(){
$request = Yii::$app->request;
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
if(!$request->isAjax) return $result;
$arr = $request->post('rem_arr');
$ids = implode(',',$arr);
if(FixCarReport::deleteAll('id IN ('.$ids.')')){
$result['success'] = true;
$result['msg'] = '操作成功!';
$result['content'] = $arr;
}
return $result;
}
/***************************************************** end ******************************************************/
/*********************************************前台派工*************************************************************/
/**
*------------------------------------------------------------
* 前台派工
* @param int status = 5
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFrontDeskList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('front-desk-list', $this->getList($request, $session));
}
public function actionFrontDeskInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
//报案号
$reports = ($reports_res = FixCarReport::findAll(['fix_id'=>$id])) ? $reports_res : [];
$report_nos = Json::encode($reports);
return $this->render('front-desk-info', [
'info' => $info,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'reports'=>$reports,
'report_nos'=>$report_nos
]);
}
/**
*------------------------------------------------------------
* 前台派工提交操作
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFrontDeskSave()
{
$request = Yii::$app->request;
if (!$request->isAjax) return Message::getMessage();
$id = $request->post('id', 0);
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$status = $request->post('status');
if ($id < = 0) return Message::getMessage();
$tran = Yii::$app->db->beginTransaction();
try{
//没有添加任何清单,禁止进入下一个环节
$items = FixCarItemT::find()->select('fix_group')->where(['fix_id' => $id, 'status' => 0, 'fix_status' => 0, 'fix_user' => 0, 'lock_id' => 0])->groupBy('fix_group')->asArray()->all();
if (empty($items)) return Message::getMessage(false,'没有添加任何清单!');
$groups = array_column($items,'fix_group');
//更新
$row = $id > 0 ? FixCarT::findOne($id) : NULL;
$old_status = $row->status;
$row->scenario = 'front-desk';
$row->attributes = $request->post();
$row->remark = $sys_remark;
$row->status = $status;
//如果没有添加任何机电项目,则标记机电项目为已完成
if(!in_array(10,$groups) & & !in_array(11,$groups)){
$row->status_2 = 1;
}
//如果没有添加任何钣金项目,则标记钣金项目为已完成
if(!in_array(7,$groups) & & !in_array(13,$groups) & & !in_array(14,$groups)){
$row->status_1 = 1;
}
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
return Message::getMessage(false,$errors[0]);
}
if(!$row->save()) throw new Exception('fix_car_t更新失败!');
//同步到财务
$fix_car_item_t = FixCarItemT::find()->where('fix_id='.$id)->groupBy('report_id')->all();
$item_data = [];
foreach($fix_car_item_t as $item){
array_push($item_data,['fix_id'=>$id,'car_no'=>$row->car_no,'id_man'=>$row->id_man,'engine_no'=>$row->engine_no,'baoanhao'=>$item->report_id ? $item->report->report_no : '']);
}
if (!Yii::$app->db->createCommand()->batchInsert(CarFinanceT::tableName(), ['fix_id','car_no','id_man','engine_no','baoanhao'], $item_data)->execute()) throw new Exception('a');
//记录日志
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('b');
}
$tran->commit();
return Message::getMessage(true,'操作成功!');
}catch(Exception $e){
$tran->rollBack();
return Message::getMessage(false,$e->getMessage());
}
}
/**
*------------------------------------------------------------
* 前台派工清单添加
* @param
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFrontDeskInfoItemSave()
{
$request = Yii::$app->request;
$small_type_id = $request->post('small_type_id');
$name = $request->post('name');
$count = $request->post('count', 1);
$remark = $request->post('remark', '');
$price = $request->post('price', 0);
$fix_id = $request->post('fix_id');
$pay_type = $request->post('pay_type');
$type = $request->post('type', 0);
$fix_user = $request->post('fix_user', 0);
$id = $request->post('id', 0);
$level = $request->post('level', 0);
$insurance_price = $request->post('insurance_price', 0);
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
if (!$request->isAjax) return $result;
// 当id 大于 0 并且 维修类型不为 汽车保养 则更新 ; 否则添加
$fix_item = ($id > 0 & & 5 != $small_type_id) ? FixItemT::findOne($id) : new FixItemT();
switch ($small_type_id) {
case 1: //更换清单
case 2: //维修清单
case 3: //辅料清单
case 4: //待定清单
case 6: //美容装饰
$fix_item->name = $name;
$fix_item->count = $count;
$fix_item->fix_remark = $remark;
$fix_item->price = $price;
$fix_item->small_type_id = $small_type_id;
$fix_item->fix_id = $fix_id;
$fix_item->pay_type = $pay_type;
$fix_item->type = $type;
$fix_item->fix_user = $fix_user;
$fix_item->damage_level = $level;
$fix_item->insurance_price = $insurance_price;
$fix_item->save();
$result['success'] = true;
$result['msg'] = '操作成功!';
break;
case 5: //汽车保养
FixItemT::deleteAll('fix_id=' . $fix_id . ' AND small_type_id=5');
foreach ($name as $k => $val) {
$type = strstr($val, '_');
$keep_in_good_id = rtrim(strstr($val, '_', true), '_');
if ('_0' == $type) {
$insert[$k]['name'] = '机油';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_1' == $type) {
$insert[$k]['name'] = '机油滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_2' == $type) {
$insert[$k]['name'] = '空气滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_3' == $type) {
$insert[$k]['name'] = '空调滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
} elseif ('_4' == $type) {
$insert[$k]['name'] = '汽油滤芯';
$insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
}
$insert[$k]['price'] = $price;
$insert[$k]['count'] = $count;
$insert[$k]['fix_id'] = $fix_id;
$insert[$k]['small_type_id'] = $small_type_id;
$insert[$k]['pay_type'] = 2;
}
Yii::$app->db->createCommand()->batchInsert(FixItemT::tableName(), ['name', 'car_keep_in_good_id', 'price', 'count', 'fix_id', 'small_type_id', 'pay_type'], $insert)->execute();
$result['success'] = true;
$result['msg'] = '操作成功!';
break;
}
return $result;
}
/**************************************************** end *********************************************************/
/************************************************* 钣金 **********************************************************/
/**
*------------------------------------------------------------
* 钣金列表
* @param string where status = 5 AND id IN(fix_id)
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionMetalPlateList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('metal-plate-list',$this->getList1($request,$session,self::METAL_PLATE));
}
public function actionMetalPlateInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('metal-plate-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'role' => self::METAL_PLATE,
]);
}
public function actionAjaxMetalPlateList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where('fix_id='.$fix_id.' AND fix_user='.$this->my->id.' AND lock_id='.$this->my->id.' AND fix_group=7 AND status=0')->orWhere('fix_id='.$fix_id.' AND type=3')->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-metal-plate-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
/**
*------------------------------------------------------------
* 钣金提交
* @param
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionMetalPlateSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$item_id = $request->post('item_id','');
$status = $request->post('status',0);
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < = 0 || $car_id < = 0 || $new_car_price < = 0 || empty($item_id) || $status < = 0) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
//判断是否有喷漆
$has_paint = false;
if(!FixCarItemT::find()->where(['fix_id'=>$row->id,'fix_group'=>8,'status'=>0,'fix_status'=>0])->all()) $has_paint = true;
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
if (!$row->save()) throw new Exception('');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>6]);
$middle->status = $has_paint ? 9 : 7;
if(!$middle->save()) throw new Exception('');
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/*************************************************** end *******************************************************/
/****************************************************底子工********************************************************/
public function actionBottomWorkList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('bottom-work-list', $this->getList1($request,$session,self::BOTTOM_WORK));
}
public function actionBottomWorkInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('bottom-work-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'role' => self::BOTTOM_WORK,
]);
}
public function actionAjaxBottomWorkList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'fix_user'=>$this->my->id,'lock_id'=>$this->my->id,'fix_group'=>13,'status'=>0])->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-bottom-work-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionBottomWorkSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$item_id = $request->post('item_id','');
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < = 0 || $car_id < = 0 || $new_car_price < = 0 || empty($item_id)) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
if (!$row->save()) throw new Exception('');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>7]);
$middle->status = 8;
if(!$middle->save()) throw new Exception('');
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/**************************************************** end ******************************************************/
/****************************************************喷漆工********************************************************/
public function actionPaintWorkList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('paint-work-list', $this->getList1($request, $session, self::PAINT_WORK));
}
public function actionPaintWorkInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('paint-work-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'role' => self::PAINT_WORK,
]);
}
public function actionAjaxPaintWorkList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'fix_user'=>$this->my->id,'lock_id'=>$this->my->id,'fix_group'=>8,'status'=>0])->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-paint-work-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionPaintWorkSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$item_id = $request->post('item_id','');
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < = 0 || $car_id < = 0 || $new_car_price < = 0 || empty($item_id)) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
$is_facial = false;
//判断是否有钣金
if(!FixCarItemT::find()->where(['fix_id'=>$row->id,'fix_group'=>7,'fix_status'=>1,'metal_plate_install'=>0,'status'=>0])->all()) $is_facial = true;
//没有钣金,则默认已通过钣金安装
if($is_facial) $row->status_1 = 1;
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if (!$row->save()) throw new Exception('');
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>8]);
//判断是否有钣金,有则提交到钣金安装,否则直接到美容
$middle->status = $is_facial ? 13 : 9;
if(!$middle->save()) throw new Exception('');
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/**************************************************** end ******************************************************/
/**************************************************钣金安装********************************************************/
public function actionMetalPlateInstallList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('metal-plate-install-list', $this->getList1($request, $session, self::METAL_PLATE_INSTALL));
}
public function actionMetalPlateInstallInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('metal-plate-install-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'role' => self::METAL_PLATE_INSTALL,
]);
}
public function actionAjaxMetalPlateInstallList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'fix_user'=>$this->my->id,'lock_id'=>$this->my->id,'fix_group'=>7,'fix_status'=>1,'status'=>0])->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-metal-plate-install-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionMetalPlateInstallSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$item_id = $request->post('item_id','');
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < = 0 || $car_id < = 0 || $new_car_price < = 0 || empty($item_id)) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->status_1 = 1;
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
if (!$row->save()) throw new Exception('');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>9]);
$middle->status = 13;
if(!$middle->save()) throw new Exception('');
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/**************************************************** end ******************************************************/
/************************************************** 机电 ********************************************************/
public function actionElectromechanicalList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('electromechanical-list', $this->getList1($request, $session, self::ELECTROMECHANICAL));
}
public function actionElectromechanicalInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('electromechanical-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'role' => self::ELECTROMECHANICAL,
]);
}
public function actionAjaxElectromechanicalList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where('fix_id='.$fix_id.' AND fix_user='.$this->my->id.' AND lock_id='.$this->my->id.' AND fix_group IN(10,11) AND status=0' )->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-electromechanical-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionElectromechanicalSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < = 0 || $car_id < = 0 || $new_car_price < = 0) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->status_2 = 1;
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
if (!$row->save()) throw new Exception('');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>2,'status'=>11]);
$middle->status = 13;
if(!$middle->save()) throw new Exception('');
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/**************************************************** end ******************************************************/
/************************************************** 洗车 *****************************************************/
public function actionCarWashList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('car-wash-list', $this->getList1($request, $session, self::CAR_WASH));
}
public function actionCarWashInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('car-wash-info', [
'info' => $info,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' =>$this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
'role' => self::CAR_WASH,
]);
}
public function actionAjaxCarWashList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'type'=>3])->orWhere(['fix_id'=>$fix_id,'type'=>5])->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-car-wash-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionCarWashSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$status = $request->post('status');
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < 1 | | $ car_id < 1 | | $ new_car_price < 1 | | $ status < 1 ) return $ result ;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
$row->status = $status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
if (!$row->save()) throw new Exception('a');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
if(14 == $status) {
$middle_fix_car_t = MiddleFixCarT::findOne(['fix_id' => $id, 'type' => 1, 'status' => 13]);
$middle_fix_car_t->status = 14;
if (!$middle_fix_car_t->save()) throw new Exception('操作失败!');
}
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$result['msg'] = $e->getMessage();
$tran->rollBack();
}
return $result;
}
/**************************************************** end ******************************************************/
/****************************************************** 总检 ****************************************************/
public function actionLastCheckList()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
return $this->render('last-check-list', $this->getList($request, $session,self::LAST_CHECK));
}
public function actionLastCheckInfo()
{
$request = Yii::$app->request;
$id = $request->get('id', 0);
$type = $request->get('type', 0);
$gift_enable = $request->get('gift_enable', 0);
$info = FixCarT::findOne(['id' => $id]);
return $this->render('last-check-info', [
'info' => $info,
// 'gift_items' => $gift_items,
'direction_items' => $this->getDirection(),
'range_items' => $this->getRange(),
'log_items' => $this->getCarLog(intval($info->car_id)),
'driver_items' => $this->getDrivers(),
'brand_items' => $this->getBrands(),
'series_items' => $this->getSeries(intval($info->brand_id)),
'displacement_items' => $this->getDisplacement(intval($info->series_id)),
'type' => $type,
'gift_enable' => $gift_enable,
]);
}
public function actionAjaxLastCheckList(){
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
//fix_group = 7(钣金项目) 并且 status = 0 未总检
$items = ($res = FixCarItemT::find()->where('fix_id='.$fix_id.' AND fix_group!=13')->all()) ? $res : [];
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->renderPartial('ajax-last-check-list', [
'items' => $items,
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionLastCheckSave(){
$request = Yii::$app->request;
$id = $request->post('id', 0);
$car_id = $request->post('car_id',0);
$new_car_price = $request->post('new_car_price',0);
$new_car_price = $this->handleNewCarPrice($new_car_price);
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax || $id < = 0 || $car_id < = 0 || $new_car_price < = 0) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$follow_car_items = $request->post('follow_car_items');
$sys_remark = $request->post('sys_remark', '');
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
if (!$row->save()) throw new Exception('a');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$result['msg'] = $e->getMessage();
$tran->rollBack();
}
return $result;
}
/****************************************************** end ****************************************************/
/*********************************************公共方法*************************************************************/
/**
*------------------------------------------------------------
* 清单添加 art.dialog
* @param int fix_id fix_car_t 主键 及 fix_item_t 表外键
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionDialogBox()
{
$request = Yii::$app->request;
$fix_id = $request->get('fix_id', 0);
$type = $request->get('type', 0);
$info = $request->get('info', 0);
$data = [
'fix_id' => $fix_id,
'type' => $type
];
if ($info > 0) {
$id = $request->get('id', 0);
$info = FixItemT::findOne($id);
$gid = $info->userT->group_id;
$user = UserT::findAll(['group_id' => $gid]);
$data['info'] = $info;
$data['user'] = $user;
}
return $this->render('dialog-box', $data);
}
public function actionFixUserSibling()
{
$request = Yii::$app->request;
$result = [];
$result['success'] = false;
if (!$request->isAjax) return $result;
$fix_user = $request->post('fix_user', 0);
$gid = UserT::findOne($fix_user)->group_id;
if ($gid < = 0) return $result;
$siblings = UserT::find()->where(['group_id' => $gid])->all();
if ($siblings) {
$result['success'] = true;
$result['content'] = $siblings;
}
return $result;
}
public function actionFixCarSave()
{
$request = Yii::$app->request;
$result = array();
$result['success'] = false;
$result['msg'] = '保存失败';
if (!$request->isAjax) return $result;
$tran = FixCarT::getDb()->beginTransaction();
try {
$id = $request->post('id', 0);
$follow_car_items = $request->post('follow_car_items');
$car_id = $request->post('car_id');
$sys_remark = $request->post('sys_remark', '');
$row = null;
if ($id > 0) {
$row = FixCarT::findOne(['id' => $id]);
$old_status = $row->status;
} else {
if (!($row = FixCarT::findOne(['car_id' => $car_id]))) {
$row = new FixCarT();
}
$old_status = 0;
}
//场景选择
$row->scenario = $row->getModelScenario();
//批量赋值
$row->attributes = $request->post();
$row->remark = $sys_remark;
//如果有随车物品,则拼接为字符串
if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
if (!$row->validate()) {
$errors = array_values($row->errors);
$result['msg'] = $errors[0];
return $result;
}
//新增
if ($row->isNewRecord) {
$row->submit_date = date('Y-m-d');
$row->user_id = $this->my->id;
}
if ($old_status >= 0 & & $row->status != $old_status) {
$log_info = new CarLogT();
$log_info->car_id = $car_id;
$log_info->op_time = time();
$log_info->op_man = $this->my->getShowName();
$log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
$log_info->type = 2;
//提单审核 提交
//上门接车 & & (自费维修 || 保险理赔),都进入司机接车
if ((2 == $row->status) & & ('上门接车' == $row->receive_type)) {
$row->status = 2;
} //客户自送 & & 自费维修,则直接进入前台审核
elseif (2 == $row->status & & ('客户自送' == $row->receive_type)) {
$row->status = 3;
}
//前台审核 提交
if (4 == $row->status & & '自费维修' == $row->accident_type) {
$row->status = 5;
}
$log_info->remark = $row->getStatusMark($row->status);
$log_info->info = $sys_remark;
if (!$log_info->save()) throw new Exception('');
}
// //已进入车间维修
// if(6 == $row->status){
// $groups = FixCarItemT::find()->select('fix_group')->where(['fix_id' => $id, 'status' => 0, 'fix_status' => 0, 'fix_user' => 0, 'lock_id' => 0])->groupBy('fix_group')->asArray()->all();
// $groups = array_column($groups,'fix_group');
// //如果有机电项目,则标记机电为未完成
// if(in_array(10,$groups) || in_array(11,$groups)){
// $row->status_2 = 0;
// $middle_fix_car_t = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>2,'status'=>13]);
// if($middle_fix_car_t){
// $middle_fix_car_t->status=11;
// $middle_fix_car_t->save();
// }
// }
//
// //如果有钣金项目,则标记钣金为未完成
// if(in_array(7,$groups) || in_array(13,$groups) || in_array(14,$groups)){
// $row->status_1 = 0;
// $middle_fix_car_t = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>13]);
// if($middle_fix_car_t){
// $middle_fix_car_t->status=6;
// $middle_fix_car_t->save();
// }
// }
// }
if (!$row->save()) throw new Exception('');
//图片上传
$base64 = $request->post('result', '');
$base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();
if (count($base64_arr) > 0) {
//批量插入
$table_name = FixCarImg::tableName();
$field = ['fix_id', 'name', 'type'];
$insert_data = [];
foreach ($base64_arr as $base64_body) {
if (false === ($img = Upload::upload($base64_body))) continue;
array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
}
if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
}
$result['success'] = true;
$result['msg'] = '保存成功';
$result['fix_id'] = $row->id;
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
}
return $result;
}
/**
*------------------------------------------------------------
*
* @param int fix_id fix_item表_t fix_id
* @param int pay_type 保险理赔、自费维修
* @param int small_type_id 对应 更换清单、维修清单、辅料清单、待定清单、汽车保养、美容装饰 其中一种
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionAjaxItemList()
{
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
$fix_items = null;
$items = FixCarItemT::findAll(['fix_id'=>$fix_id]);
var_dump(ArrayHelper::index(ArrayHelper::toArray($items),null,'type'));
die;
$html = $this->renderPartial('ajax-item-list', [
'insurances' => $insurances_after_group,
'facial' => $facial,
'maintenance' => $maintenance,
'self_paying' => $self_paying_after_group
]);
$result['success'] = true;
$result['html'] = $html;
return $result;
}
public function actionAjaxItemListBak()
{
$request = Yii::$app->request;
$result['success'] = false;
$result['msg'] = '读取失败';
$fix_id = $request->get('fix_id', 0); //fix_item表_t fix_id
$pay_type = $request->get('pay_type', 0); //pay_type 保险理赔、自费维修
$small_type_id = $request->get('small_type_id', 0); //small_type_id 对应 更换清单、维修清单、辅料清单、待定清单、汽车保养、美容装饰 其中一种
$role = $request->get('role', ''); //role 对应钣金、底子工...
//钣金分组
$role_id = $role ? $this->getRoleId($role) : 0;
$query = null;
$query = FixItemT::find();
$type1_items = [];
if (1 == $pay_type & & $small_type_id === 0) {
$query = $query->where('fix_id=' . $fix_id . ' and pay_type=' . $pay_type . ' AND small_type_id BETWEEN 1 AND 4');
if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
$type1_items = $query->all();
$arr = [];
foreach ($type1_items as $k => $v) {
if (!$v->small_type_id) continue;
$arr[$v->small_type_id][] = $v;
}
$type1_items = $arr;
}
$type2_items = [];
if (2 == $pay_type & & $small_type_id === 0) {
$query = $query->where('fix_id=' . $fix_id . ' and pay_type=' . $pay_type . ' AND small_type_id BETWEEN 1 AND 4');
if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
$type2_items = $query->all();
$arr = [];
foreach ($type2_items as $k => $v) {
if (!$v->small_type_id) continue;
$arr[$v->small_type_id][] = $v;
}
$type2_items = $arr;
}
$type3_items = [];
$query = $query->where('fix_id=' . $fix_id . ' AND small_type_id=' . $small_type_id);
if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
$type3_items = $query->all();
if ($type3_items) {
$arr = [];
foreach ($type3_items as $k => $v) {
if (5 != $v->small_type_id) continue;
$arr[$v->small_type_id][] = $v;
}
$type3_items = $arr;
}
$type4_items = [];
$query = $query->where('fix_id=' . $fix_id . ' AND small_type_id=' . $small_type_id);
if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
$type4_items = $query->all();
if ($type4_items) {
$arr = [];
foreach ($type4_items as $k => $v) {
if (6 != $v->small_type_id) continue;
$arr[$v->small_type_id][] = $v;
}
$type4_items = $arr;
}
$query = $query->where('fix_id=' . $fix_id . ' and big_type_id=5 and pay_type NOT IN(1,2)');
if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
$type5_items = $query->all();
$html = $this->renderPartial('ajax-item-list', [
'type1_items' => $type1_items,
'type2_items' => $type2_items,
'type3_items' => $type3_items,
'type4_items' => $type4_items,
'type5_items' => $type5_items
]);
$result['success'] = true;
$result['msg'] = '读取成功';
$result['html'] = $html;
return $result;
}
public function actionPrintOrder()
{
$request = Yii::$app->request;
var_dump($request->post());
die;
}
/**
*------------------------------------------------------------
* 维修已完成操作
* @param int id fix_item_t 表 id
* @return json $result
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionFixItemFinish()
{
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
$request = Yii::$app->request;
if (!$request->isAjax) return $result;
$id = $request->post('id', 0);
if (0 == $id) return $result;
$fix_item = FixItemT::findOne($id);
$fix_item->status = 1;
$fix_item->save();
$result['success'] = true;
$result['msg'] = '操作成功';
$result['status'] = self::FIX_FINISH;
return $result;
}
/**
*------------------------------------------------------------
* 根据角色名获取对应id
* @param string $name , default null
* @return int role_t 表id
* @author liuyingjie
*------------------------------------------------------------
*/
private function getRoleId($name = null)
{
$role = null;
if (is_null($name)) return 0;
if (!($role = RoleT::findOne(['name' => $name]))) return 0;
return ArrayHelper::getValue($role, 'id');
}
/**
*------------------------------------------------------------
* 损伤程度
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionGetDamageLevel()
{
$request = Yii::$app->request;
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
if (!$request->isAjax) return $result;
$level = $request->post('level');
$id = $request->post('id');
if ($level < = 0 || $id < = 0) return $result;
$middles = MiddleDamageLevel::find()->where('metal_id=' . $id . ' AND level=' . $level)->one();
$result['success'] = true;
$result['msg'] = '操作成功!';
$result['content'] = $middles;
return $result;
}
public function actionGetMetalPlate()
{
$request = Yii::$app->request;
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
if (!$request->isAjax) return $result;
$name = $request->post('search');
if (empty($name)) return $result;
$parts = MetalPlatePart::find()->where(['like', 'name', $name])->all();
$result['success'] = true;
$result['msg'] = '操作成功!';
$result['content'] = $parts;
return $result;
}
/**
*------------------------------------------------------------
* 根据维修部位、新车购置价 查询自费单价
* @param string name 维修部位
* @param int price 新车购置价
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionGetSelfFree()
{
$request = Yii::$app->request;
$result = [];
$result['success'] = false;
$result['msg'] = '操作失败!';
if (!$request->isAjax) return $result;
$name = $request->post('name', '');
$car_price = $request->post('price', 0);
$level = $request->post('level');
$i = $m = null;
if ($car_price >= 3) {
$len = strlen($car_price);
switch ($len) {
case 1:
break;
case 2:
$car_price = floor(doubleval($car_price / 10)) * 10;
break;
case 3:
$car_price = floor(doubleval($car_price / 100)) * 100;
break;
}
$i = MetalPlatePart::find()->where('name=\'' . $name . '\'')->one();
// $m = MiddleParintPrice::find()->where('metal_id=' . $i->id . ' AND min_price=' . $car_price)->one();
$m = MiddleDamageLevel::find()->where('metal_id='.$i->id.' AND level='.$level)->one();
}
$result['success'] = true;
$result['msg'] = '操作成功!';
$result['content'] = $m;
return $result;
}
/**
*------------------------------------------------------------
* 根据配件名获取自费单价
* @param
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionGetPriceByShop()
{
$request = Yii::$app->request;
$name = $request->post('name');
$price = $request->post('price');
$result = [];
$result['success'] = true;
$result['msg'] = '操作失败!';
if (!$request->isAjax || empty($name) || empty($price)) return $result;
$i = $s = $m = null; //初始化
//格式化新车购置价
if ($price >= 3) {
$len = strlen($price);
switch ($len) {
case 1:
break;
case 2:
$price = floor(doubleval($price / 10)) * 10;
break;
case 3:
$price = floor(doubleval($price / 100)) * 100;
break;
}
$s = StoreRoom::find()->where('name=\'' . $name . '\'')->one();
$i = FixCarCategory::find()->where('name=\'' . $name . '\'')->one();
$m = MiddleScaleHour::find()->where('scale_id=' . $i->id . ' AND min_price=' . $price)->one();
//配件售价($selling_price) = 产品价格($s->price) * 比例($i->scale)
$selling_price = $s ? ($s->price + ($s->price * ($i->scale / 100))) : 0;
//工时($m->work_hour) + 配件售价($selling_price)
$work_hour = $m ? ($m->work_hour + $selling_price) : $selling_price;
$result['success'] = true;
$result['msg'] = '操作成功!';
$result['content'] = $work_hour;
}
return $result;
}
/**
*------------------------------------------------------------
*Ajax 删除图片
* @param id fix_car_img 表id
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionRmImg()
{
$request = Yii::$app->request;
$id = $request->post('id', 0);
$result['success'] = false;
$result['msg'] = '删除失败';
if ($request->isAjax) {
$model = FixCarImg::findOne($id);
if (unlink($model->name)) {
$model->delete();
$result['success'] = true;
$result['msg'] = '删除成功';
}
}
return $result;
}
/**
*------------------------------------------------------------
*下载图片
* @param int id fix_car_img 表外键
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionDownloadImg()
{
$request = Yii::$app->request;
$id = $request->get('id');
$model = FixCarImg::findOne($id);
return Yii::$app->response->sendFile(realpath($model->name));
}
/**
*------------------------------------------------------------
* 调用WebUploader插件
* @param int type 图片分类 ; int id fix_car_t 表主键
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionWebUploader(){
$request = Yii::$app->request;
$type = $request->post('type',0);
$id = $request->post('id',0);
$html = $this->renderPartial('web-uploader',['type'=>$type,'id'=>$id]);
return Message::getMessage(true,'操作成功!',$html);
}
/**
*------------------------------------------------------------
* 查看图片
* @param int type 图片分类 ; id fix_car_t 表主键
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionLookImage(){
$request = Yii::$app->request;
$type = $request->post('type',0);
$id = $request->post('id',0);
$images = FixCarImg::find()->where('fix_id='.$id.' AND type< ='.$type)->asArray()->all();
$images = ArrayHelper::index($images,null,'type');
$html = $this->render('look-image',['images'=>$images]);
return Message::getMessage(true,'操作成功!',$html);
}
/**
*------------------------------------------------------------
* 清单列表
* @param int id fix_car_t 表主键 ;
* @param int gid fix_car_group 表主键
* 7 钣金项目 ; 8 喷漆项目 ; 10 维修项目 ; 11 保养项目 ; 12 美容项目
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionRefreshItemList(){
$request = Yii::$app->request;
$id = $request->post('id',0);
$gid = $request->post('gid',0);
$is_report = $request->post('report');
if($id < 1 | | $ gid < 1 ) return Message::getMessage ( ) ;
$items = ($res = FixCarItemT::find()->where('fix_id='.$id . ' AND fix_group !='.$gid)->all()) ? $res : [];
//查勘定损、前台派工
if('is_report' === $is_report){
$render['reports'] = FixCarReport::find()->where('fix_id='.$id)->all();
}
$render['items'] = $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
$html = $this->render('fix-item-list',$render);
return Message::getMessage(true,'操作成功!',$html);
}
/************************************************* end ************************************************************/
}