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.
448 lines
20 KiB
448 lines
20 KiB
5 years ago
|
<?php
|
||
|
|
||
|
namespace common\models;
|
||
|
|
||
|
use Yii;
|
||
|
use yii\db\Exception;
|
||
|
use yii\helpers\ArrayHelper;
|
||
|
|
||
|
/**
|
||
|
* This is the model class for table "fix_car_t".
|
||
|
*
|
||
|
* @property integer $id
|
||
|
* @property integer $car_id
|
||
|
* @property string $car_no
|
||
|
* @property string $engine_no
|
||
|
* @property string $car_frame_no
|
||
|
* @property string $new_price
|
||
|
* @property integer $brand_id
|
||
|
* @property integer $series_id
|
||
|
* @property integer $displacement_id
|
||
|
* @property string $car_year
|
||
|
* @property string $id_man
|
||
|
* @property string $id_phone
|
||
|
* @property string $link_man
|
||
|
* @property string $link_phone
|
||
|
* @property string $company
|
||
|
* @property string $insurer1_no
|
||
|
* @property string $insurer2_no
|
||
|
* @property string $receive_date
|
||
|
* @property string $receive_type
|
||
|
* @property string $accident_type
|
||
|
* @property string $responsibility
|
||
|
* @property integer $replace_car_id
|
||
|
* @property integer $driver_id
|
||
|
* @property integer $direction_id
|
||
|
* @property integer $range_id
|
||
|
* @property string $address
|
||
|
* @property string $report_no
|
||
|
* @property string $receive_mileage
|
||
|
* @property string $receive_oil
|
||
|
* @property string $factory_mileage
|
||
|
* @property string $factory_oil
|
||
|
* @property string $finish_date
|
||
|
* @property string $submit_date
|
||
|
* @property string $remark
|
||
|
* @property integer $status
|
||
|
* @property integer $user_id
|
||
|
* @property string $baoan_man
|
||
|
* @property string $baoan_time
|
||
|
* @property string $baoan_address
|
||
|
* @property string $chuxian_time
|
||
|
* @property string $shigu_info
|
||
|
* @property string $lipei_company
|
||
|
* @property string $zhuche_money
|
||
|
* @property string $sanzhe_money
|
||
|
* @property string $wusun_money
|
||
|
* @property string $tuoche
|
||
|
* @property string $tuoche_money
|
||
|
* @property string $dingsun_hour_money
|
||
|
* @property string $dingsun_huanjian_money
|
||
|
* @property integer $peifu_bili
|
||
|
* @property string $peifu_money
|
||
|
* @property string $kehu_money
|
||
|
* @property integer $return_status
|
||
|
* @property string $return_remark
|
||
|
* @property integer $return_time
|
||
|
* @property string $created_at
|
||
|
* @property string $updated_at
|
||
|
*/
|
||
|
class FixCarT extends \common\models\Base
|
||
|
{
|
||
|
/**
|
||
|
* @inheritdoc
|
||
|
*/
|
||
|
public static function tableName()
|
||
|
{
|
||
|
return 'fix_car_t';
|
||
|
}
|
||
|
|
||
|
public function scenarios()
|
||
|
{
|
||
|
return [
|
||
|
'business-order' => ['car_no','!car_id','engine_no','car_frame_no','new_price','brand_id','series_id','displacement_id','car_year','link_man','link_phone','id_man','id_phone','accident_type','responsibility','company','insurer1_no','insurer2_no','insurer_type','receive_date','receive_type','replace_car_id','driver_id','direction_id','range_id','address','status','!submit_date'],//业务提单
|
||
|
'check-order' => ['car_no','!car_id','engine_no','car_frame_no','new_car_purchase_price','brand_id','series_id','displacement_id','car_year','link_man','link_phone','id_man','id_phone','accident_type','responsibility','company','insurer1_no','insurer2_no','insurer_type','receive_date','receive_type','replace_car_id','driver_id','direction_id','range_id','address','status'],//提单审核
|
||
|
'driver-order' => ['car_no', 'engine_no', 'car_frame_no', 'new_car_purchase_price', 'brand_id', 'series_id', 'displacement_id', 'car_year', 'link_man', 'link_phone', 'id_man', 'id_phone', 'accident_type', 'responsibility', 'company', 'insurer1_no', 'insurer2_no','insurer_type', 'receive_date', 'receive_type', 'replace_car_id', 'driver_id', 'direction_id', 'range_id', 'address', 'remark', 'status', 'receive_mileage', 'receive_oil', 'finish_date', 'driving_this', 'driver_licesne', 'identity_card_paper', 'car_key', 'policy_of_insurance', 'police_to_prove', 'follow_car_items'], //司机接车
|
||
|
'front-desk-check'=>['car_no','engine_no','car_frame_no','new_car_purchase_price','brand_id','series_id','displacement_id','car_year','link_man','link_phone','id_man','id_phone','accident_type','responsibility','company','insurer1_no','insurer2_no','insurer_type','receive_date','receive_type','replace_car_id','driver_id','direction_id','range_id','address','receive_mileage','receive_oil','factory_mileage','factory_oil','!remark','driving_this','driver_licesne','identity_card_paper','car_key','policy_of_insurance','police_to_prove','follow_car_items','status'], //前台审核
|
||
|
'setting-loss' => ['car_no','engine_no','car_frame_no','new_car_purchase_price','brand_id','series_id','displacement_id','car_year','link_man','link_phone','id_man','id_phone','accident_type','responsibility','company','insurer1_no','insurer2_no','insurer_type','receive_date','receive_type','replace_car_id','driver_id','direction_id','range_id','address','receive_mileage','receive_oil','finish_date','remark','driving_this','driver_licesne','identity_card_paper','car_key','policy_of_insurance','police_to_prove','follow_car_items','status'], //查勘定损
|
||
|
'front-desk' => ['accident_type', 'responsibility', 'new_car_purchase_price', '!remark', 'receive_date', 'receive_type', 'status', 'range_id', 'direction_id', 'displacement_id', 'car_year', 'car_frame_no', 'engine_no', 'car_no', 'link_man', 'link_phone', 'service_date', 'insurance_date', 'driving_date', 'brand_id', 'series_id', 'address', 'driving_this', 'driver_licesne', 'identity_card_paper', 'car_key', 'policy_of_insurance', 'police_to_prove', 'follow_car_items','!is_in_work_shop','!status','receive_mileage','receive_oil','factory_mileage','factory_oil','!the_factory_time','finish_date','into_factory_date'],//前台派工
|
||
|
'default' => ['accident_type', 'responsibility', 'new_car_purchase_price', '!remark', 'receive_date', 'receive_type', 'status', 'range_id', 'direction_id', 'displacement_id', 'car_year', 'car_frame_no', 'engine_no', 'car_no', 'link_man', 'link_phone', 'service_date', 'insurance_date', 'driving_date', 'brand_id', 'series_id', 'address', 'driving_this', 'driver_licesne', 'identity_card_paper', 'car_key', 'policy_of_insurance', 'police_to_prove', 'follow_car_items'],
|
||
|
'metal-plate' => ['new_car_purchase_price', '!status', 'car_no', 'engine_no', 'car_frame_no', 'new_price', 'brand_id', 'series_id', 'displacement_id', 'car_year', 'finish_date', '!remark','status_1','status_2'],
|
||
|
'status' => ['!status']
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @inheritdoc
|
||
|
*/
|
||
|
public function rules()
|
||
|
{
|
||
|
return [
|
||
|
[['car_id', 'brand_id', 'series_id', 'displacement_id', 'replace_car_id', 'driver_id', 'direction_id', 'range_id', 'status', 'user_id', 'peifu_bili', 'return_status', 'return_time', 'police_to_prove', 'policy_of_insurance', 'car_key', 'driving_this', 'driver_licesne', 'identity_card_paper','is_in_work_shop','status_1','status_2'], 'integer'],
|
||
|
[['receive_date', 'finish_date', 'submit_date', 'created_at', 'updated_at', 'service_date', 'insurance_date', 'driving_date','into_factory_date'], 'safe'],
|
||
|
[['zhuche_money', 'sanzhe_money', 'wusun_money', 'tuoche_money', 'dingsun_hour_money', 'dingsun_huanjian_money', 'peifu_money', 'kehu_money'], 'number'],
|
||
|
[['car_no', 'car_year', 'id_phone', 'link_man', 'link_phone', 'receive_type', 'report_no', 'receive_mileage', 'receive_oil', 'factory_mileage', 'factory_oil', 'baoan_time', 'chuxian_time'], 'string', 'max' => 50],
|
||
|
[['engine_no', 'car_frame_no', 'new_price', 'id_man', 'company', 'insurer1_no', 'insurer2_no', 'accident_type', 'responsibility', 'baoan_man', 'baoan_address', 'lipei_company', 'tuoche', 'return_remark', 'follow_car_items'], 'string', 'max' => 100],
|
||
|
[['address', 'remark', 'shigu_info'], 'string', 'max' => 200],
|
||
|
[['car_no'],'unique','message'=>'该车牌号已存在'],
|
||
|
[['new_car_purchase_price', 'series_id', 'car_no', 'accident_type', 'id_man', 'id_phone', 'link_man', 'link_phone', 'company', 'receive_date', 'receive_type', 'accident_type', 'responsibility', 'brand_id', 'address'], 'required', 'on' => 'default'],
|
||
|
[['car_no','new_price','brand_id','link_man','link_phone','id_man','id_phone','company','insurer1_no','insurer2_no','insurer_type','receive_date','receive_type','direction_id','range_id','address','status'], 'required', 'on' => 'business-order'], //业务提单
|
||
|
[['car_no', 'brand_id', 'status', 'link_man', 'link_phone', 'accident_type', 'receive_date', 'receive_type'], 'required', 'on' => 'check-order'], //提单审核
|
||
|
[['car_no','brand_id','series_id','link_man','link_phone','accident_type','receive_date','receive_type','address','receive_mileage','receive_oil','driving_this','driver_licesne','identity_card_paper','car_key','policy_of_insurance','police_to_prove'], 'required', 'on' => 'driver-order'],//司机接车
|
||
|
[['car_no','engine_no','car_frame_no','new_car_purchase_price','brand_id','series_id','displacement_id','car_year','link_man','link_phone','id_man','id_phone','accident_type','responsibility','company','insurer1_no','insurer2_no','insurer_type','receive_date','receive_type','replace_car_id','driver_id','direction_id','range_id','address','receive_mileage','receive_oil','factory_mileage','factory_oil','!remark','driving_this','driver_licesne','identity_card_paper','car_key','policy_of_insurance','police_to_prove','follow_car_items','status'], 'required', 'on' => 'front-desk-check'],//前台审核
|
||
|
[['into_factory_date'], 'required', 'on' => 'front-desk'],//前台派工
|
||
|
[['status', 'finish_date'], 'required', 'on' => 'metal-plate']
|
||
|
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @inheritdoc
|
||
|
*/
|
||
|
public function attributeLabels()
|
||
|
{
|
||
|
return [
|
||
|
'id' => 'ID',
|
||
|
'car_id' => 'Car ID',
|
||
|
'car_no' => '车牌号',
|
||
|
'engine_no' => '引擎号',
|
||
|
'car_frame_no' => '车架号',
|
||
|
'new_price' => '新车购置价',
|
||
|
'brand_id' => '品牌',
|
||
|
'series_id' => '车系',
|
||
|
'displacement_id' => 'Displacement ID',
|
||
|
'car_year' => 'Car Year',
|
||
|
'id_man' => '被保险人',
|
||
|
'id_phone' => '被保险人电话',
|
||
|
'link_man' => '联系人',
|
||
|
'link_phone' => '联系人电话',
|
||
|
'company' => '保险公司',
|
||
|
'insurer1_no' => '商业保单号',
|
||
|
'insurer2_no' => '交强保单号',
|
||
|
'receive_date' => '接车日期',
|
||
|
'service_date' => '保养时间',
|
||
|
'insurance_date' => '保险时间',
|
||
|
'driving_date' => '驾驶证时间',
|
||
|
'receive_type' => '交车方式',
|
||
|
'accident_type' => '事故类型',
|
||
|
'responsibility' => '责任',
|
||
|
'replace_car_id' => '代步车',
|
||
|
'driver_id' => '接车司机',
|
||
|
'direction_id' => '方位',
|
||
|
'range_id' => '范围',
|
||
|
'address' => '接车地址',
|
||
|
'report_no' => 'Report No',
|
||
|
'receive_mileage' => '接车里程数',
|
||
|
'receive_oil' => '接车油表数',
|
||
|
'factory_mileage' => '进厂里程数',
|
||
|
'factory_oil' => '进厂油表数',
|
||
|
'finish_date' => '预计出厂时间',
|
||
|
'submit_date' => '提单时间',
|
||
|
'remark' => 'Remark',
|
||
|
'status' => 'Status',
|
||
|
'user_id' => 'User ID',
|
||
|
'return_status' => 'Return Status',
|
||
|
'return_remark' => 'Return Remark',
|
||
|
'return_time' => 'Return Time',
|
||
|
'created_at' => 'Created At',
|
||
|
'updated_at' => 'Updated At',
|
||
|
'status_1'=>'Status 1',
|
||
|
'status_2'=>'Status 2',
|
||
|
'insurer_type'=>'险项'
|
||
|
];
|
||
|
}
|
||
|
|
||
|
public function getUser()
|
||
|
{
|
||
|
return $this->hasOne(UserT::className(), ['id' => 'user_id']);
|
||
|
}
|
||
|
|
||
|
public function getDriver()
|
||
|
{
|
||
|
return $this->hasOne(UserT::className(), ['id' => 'driver_id']);
|
||
|
}
|
||
|
|
||
|
public function getCar()
|
||
|
{
|
||
|
return $this->hasOne(CarT::className(), ['id' => 'car_id']);
|
||
|
}
|
||
|
|
||
|
public function getStatus()
|
||
|
{
|
||
|
$result = '';
|
||
|
switch ($this->status) {
|
||
|
case 0:
|
||
|
$result = '业务提单';
|
||
|
break;
|
||
|
case 1:
|
||
|
$result = '提单审核';
|
||
|
break;
|
||
|
case 2:
|
||
|
$result = '司机接车';
|
||
|
break;
|
||
|
case 3:
|
||
|
$result = '前台审核';
|
||
|
break;
|
||
|
case 4:
|
||
|
$result = '查勘定损';
|
||
|
break;
|
||
|
case 5:
|
||
|
$result = '前台派工';
|
||
|
break;
|
||
|
case 6://钣金
|
||
|
case 7://底子工
|
||
|
case 8://喷漆工
|
||
|
case 9://钣金安装
|
||
|
case 10://抛光
|
||
|
case 11://机电
|
||
|
case 12://美容装饰
|
||
|
case 13://美容装饰
|
||
|
$result = $this->getShowMiddleStatusName();
|
||
|
break;
|
||
|
case 14:
|
||
|
$result = '总检';
|
||
|
break;
|
||
|
case 15:
|
||
|
$result = '出纳';
|
||
|
break;
|
||
|
case 16:
|
||
|
$result = '会计';
|
||
|
break;
|
||
|
case 17:
|
||
|
$result = '出厂';
|
||
|
break;
|
||
|
default:
|
||
|
$result = '';
|
||
|
}
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
public function getModelScenario()
|
||
|
{
|
||
|
$scenario = null;
|
||
|
switch ($this->status) {
|
||
|
case 0: //业务提单
|
||
|
$scenario = 'business-order';
|
||
|
break;
|
||
|
case 1: //提单审核
|
||
|
$scenario = 'check-order';
|
||
|
break;
|
||
|
case 2: // 司机接车
|
||
|
$scenario = 'driver-order';
|
||
|
break;
|
||
|
case 3: //前台审核
|
||
|
$scenario = 'front-desk-check';
|
||
|
break;
|
||
|
case 4://查勘定损
|
||
|
$scenario = 'setting-loss';
|
||
|
break;
|
||
|
case 5: //前台派工
|
||
|
$scenario = 'default';
|
||
|
break;
|
||
|
case 6:
|
||
|
$scenario = 'front-desk';
|
||
|
break;
|
||
|
case 7:
|
||
|
case 8:
|
||
|
case 9:
|
||
|
case 10:
|
||
|
case 11:
|
||
|
case 12:
|
||
|
case 13:
|
||
|
case 14:
|
||
|
$scenario = 'metal-plate';
|
||
|
break;
|
||
|
case 15:
|
||
|
$scenario = 'metal-plate';
|
||
|
break;
|
||
|
default:
|
||
|
$scenario = 'default';
|
||
|
}
|
||
|
|
||
|
return $scenario;
|
||
|
}
|
||
|
|
||
|
public function getStatusMark($status = 0)
|
||
|
{
|
||
|
$mark = null;
|
||
|
switch ($status) {
|
||
|
case 1:
|
||
|
$mark = '提交到提单审核';
|
||
|
break;
|
||
|
case 2:
|
||
|
$mark = '提交到司机接车';
|
||
|
break;
|
||
|
case 3:
|
||
|
$mark = '提交到前台审核';
|
||
|
break;
|
||
|
case 4:
|
||
|
$mark = '提交到查勘定损';
|
||
|
break;
|
||
|
case 5:
|
||
|
$mark = '提交到前台派工';
|
||
|
break;
|
||
|
case 6:
|
||
|
$mark = '提交到车间';
|
||
|
break;
|
||
|
case 7:
|
||
|
$mark = '提交到底子工';
|
||
|
break;
|
||
|
case 8:
|
||
|
$mark = '提交到喷漆工';
|
||
|
break;
|
||
|
case 9:
|
||
|
$mark = '提交到钣金安装';
|
||
|
break;
|
||
|
case 10:
|
||
|
$mark = '提交到抛光';
|
||
|
break;
|
||
|
case 11:
|
||
|
$mark = '提交到机电';
|
||
|
break;
|
||
|
case 13:
|
||
|
$mark = '提交到美容装饰';
|
||
|
break;
|
||
|
case 14:
|
||
|
$mark = '提交到总检';
|
||
|
break;
|
||
|
case 15:
|
||
|
$mark = '提交到财务(出纳)';
|
||
|
break;
|
||
|
}
|
||
|
return $mark;
|
||
|
}
|
||
|
|
||
|
public function getDirection()
|
||
|
{
|
||
|
return $this->hasOne(DirectionT::className(), ['id' => 'direction_id']);
|
||
|
}
|
||
|
|
||
|
public function getRange()
|
||
|
{
|
||
|
return $this->hasOne(RangeT::className(), ['id' => 'range_id']);
|
||
|
}
|
||
|
|
||
|
public function getBrand()
|
||
|
{
|
||
|
return $this->hasOne(BrandT::className(), ['id' => 'brand_id']);
|
||
|
}
|
||
|
|
||
|
public function getSeries()
|
||
|
{
|
||
|
return $this->hasOne(SeriesT::className(), ['id' => 'series_id']);
|
||
|
}
|
||
|
|
||
|
public function getDisplacement()
|
||
|
{
|
||
|
return $this->hasOne(DisplacementT::className(), ['id' => 'displacement_id']);
|
||
|
}
|
||
|
|
||
|
public function getItems()
|
||
|
{
|
||
|
return $this->hasMany(FixCarItemT::className(), ['fix_id' => 'id']);
|
||
|
}
|
||
|
|
||
|
public function getFixCarImg()
|
||
|
{
|
||
|
return $this->hasMany(FixCarImg::className(), ['fix_id' => 'id']);
|
||
|
}
|
||
|
|
||
|
public function getFollowCar(){
|
||
|
|
||
|
$new_array = explode(",",$this->follow_car_items);
|
||
|
return $new_array;
|
||
|
}
|
||
|
public function getFinance()
|
||
|
{
|
||
|
return $this->hasOne(CarFinanceT::className(), ['fix_id' => 'id']);
|
||
|
}
|
||
|
public function getMiddleFixCarT(){
|
||
|
return $this->hasMany(MiddleFixCarT::className(),['fix_id'=>'id']);
|
||
|
}
|
||
|
private function getShowMiddleStatusName(){
|
||
|
$status = ['6'=>'钣金','7'=>'底子','8'=>'喷漆','9'=>'钣金安装','11'=>'机电','12'=>'美容装饰','13'=>'美容装饰'];
|
||
|
$middle = MiddleFixCarT::find()->select('status')->where(['fix_id'=>$this->id])->all();
|
||
|
$status_name = '';
|
||
|
foreach($middle as $val){
|
||
|
if( 0 === $val->status || $val->status > 13) continue;
|
||
|
if(13 === $val->status){
|
||
|
return $status_name = $status['12'];
|
||
|
}
|
||
|
$status_name .= '/'.$status[$val->status];
|
||
|
}
|
||
|
return $status_name;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*------------------------------------------------------------
|
||
|
*
|
||
|
* @param middle_fix_car_t.status 13 美容装饰
|
||
|
* @return void
|
||
|
* @author liuyingjie
|
||
|
*------------------------------------------------------------
|
||
|
*/
|
||
|
public function afterSave($insert, $changedAttributes)
|
||
|
{
|
||
|
parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub
|
||
|
|
||
|
if(!$insert && 6 == $this->status) {
|
||
|
|
||
|
$groups = FixCarItemT::find()->select('fix_group')->where(['fix_id' => $this->id, 'status' => 0, 'fix_status' => 0, 'fix_user' => 0, 'lock_id' => 0])->groupBy('fix_group')->asArray()->all();
|
||
|
$groups = array_column($groups,'fix_group');
|
||
|
|
||
|
if(count(MiddleFixCarT::findAll(['fix_id' => $this->id])) < 1){
|
||
|
$data = [];
|
||
|
//钣金路线
|
||
|
if (in_array(7, $groups)) {
|
||
|
$data[0] = ['fix_id' => $this->id, 'type' => 1, 'status' => 6];
|
||
|
//底子路线
|
||
|
} elseif (!in_array(7, $groups) && in_array(13, $groups)) {
|
||
|
$data[0] = ['fix_id' => $this->id, 'type' => 1, 'status' => 7];
|
||
|
//喷漆路线
|
||
|
}elseif (!in_array(7, $groups) && in_array(14, $groups)) {
|
||
|
$data[0] = ['fix_id' => $this->id, 'type' => 1, 'status' => 8];
|
||
|
//没有底子、喷漆,只有美容
|
||
|
}elseif(!in_array(7,$groups) && in_array(12,$groups)){
|
||
|
$data[0] = ['fix_id' => $this->id, 'type' => 1, 'status' => 13];
|
||
|
}else{
|
||
|
$data[0] = ['fix_id' => $this->id, 'type' => 1, 'status' => 6];
|
||
|
}
|
||
|
|
||
|
//只有美容
|
||
|
if(!in_array(11,$groups) && in_array(12,$groups)){
|
||
|
$data[1] = ['fix_id' => $this->id, 'type' => 2, 'status' => 13];
|
||
|
//机电
|
||
|
}else{
|
||
|
$data[1] = ['fix_id' => $this->id, 'type' => 2, 'status' => 11];
|
||
|
}
|
||
|
$data[2] = ['fix_id' => $this->id, 'type' => 3, 'status' => 0];
|
||
|
|
||
|
if(1 == $this->status_1 && 1 == $this->status_2){
|
||
|
$data[0]['status'] = 13;
|
||
|
}
|
||
|
Yii::$app->db->createCommand()->batchInsert(MiddleFixCarT::tableName(), ['fix_id', 'type', 'status'], $data)->execute();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|