input(); if ($data != null ) { $today=Carbon::now()->subDays(15); $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id','DESC'); if ($request->input('waybill_number')){ $waybills =$waybills->where('waybill_number','like','%'.$request->input('waybill_number').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('carrier_bill')){ $waybills=$waybills->where('carrier_bill','like','%'.$request->input('carrier_bill').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('carrier_id')){ $waybills=$waybills->where('carrier_id','=',$request->input('carrier_id')); } if ($request->input('owner_id')){ $waybills=$waybills->where('owner_id','=',$request->input('owner_id')); } if ($request->input('wms_bill_number')){ $waybills=$waybills->where('wms_bill_number','like','%'.$request->input('wms_bill_number').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('origination')){ $waybills=$waybills->where('origination','like','%'.$request->input('origination').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('destination')){ $waybills=$waybills->where('destination','like','%'.$request->input('destination').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('created_at_start')){ $waybills=$waybills->where('created_at','>',$request->input('created_at_start')); } if ($request->input('created_at_end')){ $waybills=$waybills->where('created_at','<',$request->input('created_at_end')); } if ($request->input('status')){ $waybills=$waybills->where('status',$request->input('status')); } $waybills=$waybills->paginate($request->input('paginate')?$request->input('paginate'):50); if (!$waybills&&$request->input('waybill_number')){ $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id','DESC')->where('type','专线')->where('waybill_number',$request->input('waybill_number')) ->paginate($request->input('paginate')?$request->input('paginate'):50); } $carries = Carrier::get(); $owners = Owner::get(); return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>'']); } else { $waybills = Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id', 'DESC')->paginate(50); $carries = Carrier::get(); $owners = Owner::get(); return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>'']); } } public function indexZF(Request $request){ if(!Gate::allows('运输管理-查询')){ return redirect(url('/')); } $data=$request->input(); if ($data != null ) { $today=Carbon::now()->subDays(15); $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id','DESC')->where('type','直发车'); if ($request->input('waybill_number')){ $waybills =$waybills->where('waybill_number','like','%'.$request->input('waybill_number').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('carrier_bill')){ $waybills=$waybills->where('carrier_bill','like','%'.$request->input('carrier_bill').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('carrier_id')){ $waybills=$waybills->where('carrier_id','=',$request->input('carrier_id')); } if ($request->input('owner_id')){ $waybills=$waybills->where('owner_id','=',$request->input('owner_id')); } if ($request->input('wms_bill_number')){ $waybills=$waybills->where('wms_bill_number','like','$'.$request->input('wms_bill_number').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('created_at_start')){ $waybills=$waybills->where('created_at','>',$request->input('created_at_start')); } if ($request->input('created_at_end')){ $waybills=$waybills->where('created_at','<',$request->input('created_at_end')); } if ($request->input('status')){ $waybills=$waybills->where('status',$request->input('status')); } $waybills=$waybills->paginate($request->input('paginate')?$request->input('paginate'):50); if (!$waybills&&$request->input('waybill_number')){ $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id','DESC')->where('type','专线')->where('waybill_number',$request->input('waybill_number')) ->paginate($request->input('paginate')?$request->input('paginate'):50); } $carries = Carrier::get(); $owners = Owner::get(); return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>'ZF']); } else { $waybills = Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->where('type','直发车')->orderBy('id', 'DESC')->paginate(50); $carries = Carrier::get(); $owners = Owner::get(); return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>'ZF']); } } public function indexZX(Request $request){ if(!Gate::allows('运输管理-查询')){ return redirect(url('/')); } $data=$request->input(); if ($data != null ) { $today=Carbon::now()->subDays(15); $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id','DESC')->where('type','专线'); if ($request->input('waybill_number')){ $waybills =$waybills->where('waybill_number','like','%'.$request->input('waybill_number').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('carrier_bill')){ $waybills=$waybills->where('carrier_bill','like','%'.$request->input('carrier_bill').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('carrier_id')){ $waybills=$waybills->where('carrier_id','=',$request->input('carrier_id')); } if ($request->input('owner_id')){ $waybills=$waybills->where('owner_id','=',$request->input('owner_id')); } if ($request->input('wms_bill_number')){ $waybills=$waybills->where('wms_bill_number','like','$'.$request->input('wms_bill_number').'%')->where('created_at','>',$today->format('Y-m-d')); } if ($request->input('created_at_start')){ $waybills=$waybills->where('created_at','>',$request->input('created_at_start')); } if ($request->input('created_at_end')){ $waybills=$waybills->where('created_at','<',$request->input('created_at_end')); } if ($request->input('status')){ $waybills=$waybills->where('status',$request->input('status')); } $waybills=$waybills->paginate($request->input('paginate')?$request->input('paginate'):50); if (!$waybills&&$request->input('waybill_number')){ $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->orderBy('id','DESC')->where('type','专线')->where('waybill_number',$request->input('waybill_number')) ->paginate($request->input('paginate')?$request->input('paginate'):50); } $carries = Carrier::get(); $owners = Owner::get(); return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>'ZX']); } else { $waybills = Waybill::with(['owner', 'waybillAuditLogs' => function ($query) { return $query->with('user'); }])->where('type','专线')->orderBy('id', 'DESC')->paginate(50); $carries = Carrier::get(); $owners = Owner::get(); return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>'ZX']); } } public function create() { if(!Gate::allows('运输管理-录入')){ return redirect(url('/')); } $owners=Owner::get(); return view('waybill.create',['owners'=>$owners]); } public function createZF() { if(!Gate::allows('运输管理-录入')){ return redirect(url('/')); } $owners=Owner::get(); return view('waybill.create',['owners'=>$owners,'type'=>'直发车']); } public function createZX() { if(!Gate::allows('运输管理-录入')){ return redirect(url('/')); } $owners=Owner::get(); return view('waybill.create',['owners'=>$owners,'type'=>'专线']); } public function store(Request $request) { if(!Gate::allows('运输管理-录入')){ return redirect(url('/')); } $id=false; $this->validatorWaybill($request,$id)->validate(); $data=$request->input(); $waybill=new Waybill([ 'type'=>$data['type'], 'status'=>'未审核', 'waybill_number'=>Uuid::uuid1(), 'owner_id'=>$data['owner_id'], 'wms_bill_number'=>$data['wms_bill_number'], 'origination'=>$data['origination'], 'destination'=>$data['destination'], 'recipient'=>$data['recipient'], 'recipient_mobile'=>$data['recipient_mobile'], 'charge'=>$data['charge'], 'collect_fee'=>isset($data['collect_fee'])?$data['collect_fee']:0, 'ordering_remark'=>$data['ordering_remark'] ]); $waybill->save(); $number_id=$waybill->id; if ($data['type']=='直发车'){ $waybill_number='BSZF'.date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT); $waybill->waybill_number=$waybill_number; $waybill->update(); }else{ $waybill_number='BSZX'.date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT); $waybill->waybill_number=$waybill_number; $waybill->update(); } $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return redirect('waybill')->with('successTip','新运单“'.$waybill_number.'”录入成功'); } public function edit($id) { if(!Gate::allows('运输管理-编辑')){ return redirect(url('/')); } $waybill=Waybill::find($id); $carriers=Carrier::get(); $cities=City::get(); $units=Unit::get(); $carTypes=CarType::get(); return view('waybill/edit',['waybill'=>$waybill,'carriers'=>$carriers,'cities'=>$cities,'units'=>$units,'carTypes'=>$carTypes]); } public function update(Request $request, $id) { if(!Gate::allows('运输管理-调度')){ return redirect(url('/')); } $waybill=Waybill::find($id); $this->validatorWaybillDispatch($request,$id)->validate(); $data=$request->input(); $waybill->fill($data); if ($waybill->save()){ if ($waybill->type=="直发车"){ if ($waybill->charge)$total_receivable=($waybill->charge); elseif ($waybill->collect_fee)$total_receivable=($waybill->collect_fee); $total_expense=($waybill->fee)+($waybill->other_fee)-($waybill->collect_fee); }else if ($waybill->type=="专线"){ $waybillPriceModel_id=$request->input('waybillPriceModel'); if ($waybillPriceModel_id){ $carrier_weight=$request->input('carrier_weight'); $waybillPriceModel=WaybillPriceModel::find($waybillPriceModel_id); $carrier=Carrier::find($waybill->carrier_id); if ($carrier_weight<$waybillPriceModel->initial_weight){ $fee=(($waybillPriceModel->unit_price)*($waybillPriceModel->initial_weight))+$carrier->delivery_fee; }else{ $fee=(($waybillPriceModel->unit_price)*$carrier_weight)+$carrier->delivery_fee; } if ($waybillPriceModel->base_fee&&$fee<$waybillPriceModel->base_fee){ $fee=$waybillPriceModel->base_fee; } $waybill->fee=$fee; $waybill->waybill_price_model_id=$waybillPriceModel_id; } $waybill->save(); if ($waybill->charge)$total_receivable=($waybill->charge); elseif ($waybill->collect_fee)$total_receivable=($waybill->collect_fee); $total_expense=($waybill->pick_up_fee)+($waybill->other_fee)+($waybill->fee); } if ($total_receivable&&$total_receivable>0){ $waybillPayoff=WaybillPayoff::where('waybill_id','=',$id)->first(); if ($waybillPayoff){ $waybillPayoff->waybill_id=$id; $waybillPayoff->total_expense=$total_expense; $waybillPayoff->total_receivable=$total_receivable; $waybillPayoff->gross_margin=$total_receivable-$total_expense; $waybillPayoff->gross_profit_rate=(($total_receivable-$total_expense)/$total_receivable); $waybillPayoff->save(); }else{ WaybillPayoff::create([ 'waybill_id'=>$id, 'total_expense'=>$total_expense, 'total_receivable'=>$total_receivable, 'gross_margin'=>$total_receivable-$total_expense, 'gross_profit_rate'=>(($total_receivable-$total_expense)/$total_receivable), ]); }; } $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return redirect('waybill')->with('successTip','运单“'.$waybill->waybill_number.'”调度成功'); } } public function checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id){ //确保承运商计数与计数单位为一个数组且长度2 if(!$carrier_id)return false; if(!$destination_city_id)return false; if(!$carrier_weight)return false; if(!$carrier_weight_unit_id)return false; //多个计数标准,计算价格,取最贵 if ($carrier_weight[0]&&$carrier_weight[1]&&$carrier_weight_unit_id[0]&&$carrier_weight_unit_id[1]){ //城市价格区间不为空 $waybillPriceModelOne=WaybillPriceModel::where('carrier_id',$carrier_id)->where('city_id',$destination_city_id) ->where('range_min','<',$carrier_weight[0])->where('range_max','>=',$carrier_weight[0]) ->where('unit_id',$carrier_weight_unit_id[0])->first(); $waybillPriceModelTwo=WaybillPriceModel::where('carrier_id',$carrier_id)->where('city_id',$destination_city_id) ->where('range_min','<',$carrier_weight[1])->where('range_max','>=',$carrier_weight[1]) ->where('unit_id',$carrier_weight_unit_id[1])->first(); if ($waybillPriceModelOne&&$waybillPriceModelTwo){ if ($waybillPriceModelOne->unit_price*$carrier_weight[0]>=$waybillPriceModelTwo->unit_price*$carrier_weight[1]){ return $waybillPriceModelOne->id; }else{ return $waybillPriceModelTwo->id; } } if ($waybillPriceModelOne)return $waybillPriceModelOne->id; if ($waybillPriceModelTwo)return $waybillPriceModelTwo->id; //价格区间为空 $waybillPriceModelRangeOne=WaybillPriceModel::whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[0]])->first(); $waybillPriceModelRangeTwo=WaybillPriceModel::whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[1]])->first(); if ($waybillPriceModelRangeOne&&$waybillPriceModelRangeTwo){ if ($waybillPriceModelRangeOne->unit_price*$carrier_weight[0]>=$waybillPriceModelRangeTwo->unit_price*$carrier_weight[1]){ return $waybillPriceModelRangeOne->id; }else{ return $waybillPriceModelRangeTwo->id; } } if ($waybillPriceModelRangeOne)return $waybillPriceModelRangeOne->id; if ($waybillPriceModelRangeTwo)return $waybillPriceModelRangeTwo->id; //城市为空 $city=City::where('id',$destination_city_id)->select('province_id')->first(); $waybillPriceModelProvinceOne=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL', [$carrier_id,$city->province_id,$carrier_weight_unit_id[0],$carrier_weight[0],$carrier_weight[0]])->first(); $waybillPriceModelProvinceTwo=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL', [$carrier_id,$city->province_id,$carrier_weight_unit_id[1],$carrier_weight[1],$carrier_weight[1]])->first(); if ($waybillPriceModelProvinceOne&&$waybillPriceModelProvinceTwo){ if ($waybillPriceModelProvinceOne->unit_price*$carrier_weight[0]>=$waybillPriceModelProvinceTwo->unit_price*$carrier_weight[1]){ return $waybillPriceModelProvinceOne->id; }else{ return $waybillPriceModelProvinceTwo->id; } } if ($waybillPriceModelProvinceOne)return $waybillPriceModelProvinceOne->id; if ($waybillPriceModelProvinceTwo)return $waybillPriceModelProvinceTwo->id; //城市价格区间都为空 $waybillPriceModelProvinceRangeOne=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL', [$carrier_id,$city->province_id,$carrier_weight_unit_id[0]])->first(); $waybillPriceModelProvinceRangeTwo=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL', [$carrier_id,$city->province_id,$carrier_weight_unit_id[1]])->first(); if ($waybillPriceModelProvinceRangeOne&&$waybillPriceModelProvinceRangeTwo){ if ($waybillPriceModelProvinceRangeOne->unit_price*$carrier_weight[0]>=$waybillPriceModelProvinceRangeTwo->unit_price*$carrier_weight[1]){ return $waybillPriceModelProvinceRangeOne->id; }else{ return $waybillPriceModelProvinceRangeOne->id; } } if ($waybillPriceModelProvinceRangeOne)return $waybillPriceModelProvinceRangeOne->id; if ($waybillPriceModelProvinceRangeOne)return $waybillPriceModelProvinceRangeOne->id; }; for ($i=0;$iwhere('city_id',$destination_city_id) ->where('range_min','<',$carrier_weight[$i])->where('range_max','>=',$carrier_weight[$i]) ->where('unit_id',$carrier_weight_unit_id[$i])->first(); if($waybillPriceModel)return $waybillPriceModel->id; //价格区间为空 $waybillPriceModelRange=WaybillPriceModel::whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[$i]])->first(); if ($waybillPriceModelRange){ return $waybillPriceModelRange->id;} //城市为空 $city=City::where('id',$destination_city_id)->select('province_id')->first(); $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL', [$carrier_id,$city->province_id,$carrier_weight_unit_id[$i],$carrier_weight[$i],$carrier_weight[$i]])->first(); if ($waybillPriceModelProvince){return $waybillPriceModelProvince->id;} //城市价格区间都为空 $waybillPriceModelProvinceRange=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL', [$carrier_id,$city->province_id,$carrier_weight_unit_id[$i]])->first(); if ($waybillPriceModelProvinceRange){return $waybillPriceModelProvinceRange->id;} } } return false; } /*三层条件:无优先级,找到第一个直接返回 * 无论是否为KG||T,计数单位一为KG,计数单位一为T,计数单位二为KG,计数单位二为T * 计数一与计数二同时存在取最贵价格: * 计数一存在,二不存在: * 计数二存在,一不存在: * 城市价格区间不为空,城市价格区间都为空,城市为空,价格区间为空 * */ public function isWaybillPriceModel(Request $request){ $carrier_id=$request->input('carrier_id'); $destination_city_id=$request->input('destination_city_id'); $carrier_weight=$request->input('carrier_weight'); $carrier_weight_unit_id=$request->input('carrier_weight_unit_id'); $result=$this->checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id); if (!$result){ //单位为kg,T时 $unitKG=Unit::where('name','kg')->first(); $unitT=Unit::where('name','T')->first(); if ($carrier_weight_unit_id[0]==$unitKG->id){ $carrier_weight_unit_id[0]=$unitT->id; $carrier_weight[0]=$carrier_weight[0]/1000; $result=$this->checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id); if ($result)return ['success'=>$result]; } if ($carrier_weight_unit_id[1]==$unitKG->id){ $carrier_weight_unit_id[1]=$unitT->id; $carrier_weight[1]=$carrier_weight[1]/1000; $result=$this->checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id); if ($result)return ['success'=>$result]; } if ($carrier_weight_unit_id[0]==$unitT->id){ $carrier_weight_unit_id[0]=$unitKG->id; $carrier_weight[0]=$carrier_weight[0]*1000; $result=$this->checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id); if ($result)return ['success'=>$result]; } if ($carrier_weight_unit_id[1]==$unitT->id){ $carrier_weight_unit_id[1]=$unitKG->id; $carrier_weight[1]=$carrier_weight[1]*1000; $result=$this->checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id); if ($result)return ['success'=>$result]; } } return ['success'=>$result]; } public function waybillUpdate(Request $request, $id){ if(!Gate::allows('运输管理-编辑')){ return redirect(url('/')); } $this->validatorWaybill($request,$id)->validate(); $data=$request->input(); $waybill=Waybill::find($id); $waybill->fill($data); if ($waybill->save()){ $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']); return redirect('waybill')->with('successTip','运单“'.$waybill->waybill_number.'”修改成功'); } } public function waybillAudit(Request $request){ if(!Gate::allows('运输管理-运单审核')){ return redirect(url('/')); } $id=$request->input('id'); $waybill=Waybill::find($id); $isAudit=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->first(); if (empty($isAudit)){ $waybillAuditLog=new WaybillAuditLog([ 'waybill_id'=>$id, 'audit_stage'=>'运单阶段', 'user_id'=>Auth::id(), ]); $waybillAuditLog->save(); $waybillAuditLog['user']=Auth::user(); $waybill->status='已审核'; $result=$waybill->save(); $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']); return ['success'=>$result,'status'=>$waybill->status,'waybillAuditLog'=>$waybillAuditLog]; } return ['exception'=>'请勿重复审核!']; } public function waybillEdit($id){ if(!Gate::allows('运输管理-编辑')){ return redirect(url('/')); } $waybill=Waybill::find($id); $owners=Owner::get(); return view('waybill.waybillEdit',['waybill'=>$waybill,'owners'=>$owners]); } public function waybillRetreatAudit(Request $request){ if(!Gate::allows('运输管理-调度')){ return redirect(url('/')); } $id=$request->input('id'); $waybill=Waybill::find($id); WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->delete(); $waybill->status='待重审'; $result=$waybill->save(); $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']); return ['success'=>$result,'status'=>$waybill->status]; } public function waybillEndAudit(Request $request){ if(!Gate::allows('运输管理-调度审核')){ return redirect(url('/')); } $id=$request->input('id'); $waybill=Waybill::find($id); if (!$waybill->charge&&!$waybill->collect_fee)return ['exception'=>'收费或到付费用未填!']; if ($waybill->charge==0&&$waybill->collect_fee==0)return ['exception'=>'收费与到付费用都为0!']; if ($waybill->type=='专线'){ if (!$waybill->carrier_weight||$waybill->carrier_weight==0)return ['exception'=>'承运商计重未填或为0!']; if (!$waybill->carrier_weight_unit_id)return ['exception'=>'承运商计重单位未选!']; } $isAudit=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"调度阶段"])->first(); if (empty($isAudit)){ $waybillAuditLog=new WaybillAuditLog([ 'waybill_id'=>$id, 'audit_stage'=>'调度阶段', 'user_id'=>Auth::id(), ]); $waybillAuditLog->save(); $waybillAuditLog['user']=Auth::user(); if ($waybill->waybill_price_model_id||$waybill->type=='直发车'){ $waybill->status='已完结'; $result=$waybill->save(); $waybillPayoff=WaybillPayoff::where('waybill_id','=',$id)->first(); $waybillPayoff->load(["waybill"]); $waybillPayoff->waybill->load(["owner","carrier","origination_city","destination_city","carType","waybillAuditLogs"]); $waybillPayoff->waybill->waybillAuditLogs->load(["user"]); $waybillPayoffJson=json_encode($waybillPayoff,JSON_UNESCAPED_UNICODE); WaybillFinancialSnapshot::create([ 'waybill_id'=>$id, 'json_content'=>$waybillPayoffJson, ]); }else{ $waybill->status='无模型'; $result=$waybill->save(); $waybillPayoff=WaybillPayoff::where('waybill_id','=',$id)->first(); if ($waybillPayoff){ $waybillPayoff->load(["waybill"]); $waybillPayoff->waybill->load(["owner","carrier","origination_city","destination_city","carType","waybillAuditLogs"]); $waybillPayoff->waybill->waybillAuditLogs->load(["user"]); $waybillPayoffJson=json_encode($waybillPayoff,JSON_UNESCAPED_UNICODE); WaybillFinancialExcepted::create([ 'waybill_id'=>$id, 'json_content'=>$waybillPayoffJson, ]); } } $this->log(__METHOD__,__FUNCTION__,$waybillPayoffJson,Auth::user()['id']); return ['success'=>$result,'status'=>$waybill->status,'waybillAuditLog'=>$waybillAuditLog]; } return ['exception'=>'请勿重复审核!']; } public function waybillExport($id){ $id = explode( ',',$id); $row=[[ 'type'=>'运单类型', 'waybill_number'=>'运单号', 'owner'=>'货主', 'wms_bill_number'=>'WMS单号', 'origination'=>'始发地', 'destination'=>'目的地', 'recipient'=>'收件人', 'recipient_mobile'=>'收件人电话', 'charge'=>'收费(元)', 'ordering_remark'=>'下单备注', 'carrier'=>'承运商', 'carrier_bill'=>'承运商单号', 'origination_city'=>'始发市', 'destination_city'=>'目的市', 'warehouse_weight'=>'仓库计数(抛)', 'warehouse_weight_other'=>'仓库计数二 ', 'carrier_weight'=>'承运商计数(抛)', 'carrier_weight_other'=>'承运商计数二', 'carType'=>'车型', 'car_owner_info'=>'车辆信息', 'fee'=>'运费(元)', 'pick_up_fee'=>'提货费(元)', 'other_fee'=>'其他费用(元)', 'collect_fee'=>'到付金额(元)', 'dispatch_remark'=>'调度备注', 'waybillAuditor'=>'运单审核人', 'dispatchAuditor'=>'调度审核人', 'created_at'=>'创建时间' ]]; $feeVisible=true; if(!Gate::allows('运输管理-可见费用项')){ $feeVisible=false; unset($row[0]['fee'],$row[0]['pick_up_fee'],$row[0]['other_fee'],$row[0]['collect_fee']); } $list=[]; for ($i=0; $i function ($query) { return $query->with('user'); }])->find($id[$i]); foreach ($waybill->waybillAuditLogs as $waybillAuditLog){ if ($waybillAuditLog->audit_stage=="运单阶段"){ $waybillAuditor=$waybillAuditLog->user->name; }else{ $waybillAuditor=''; } if ($waybillAuditLog->audit_stage=="调度阶段"){ $dispatchAuditor=$waybillAuditLog->user->name; }else{ $dispatchAuditor=''; } }; $w=[ 'type'=>isset($waybill->type)?$waybill->type:'', 'waybill_number'=>isset($waybill->waybill_number)?$waybill->waybill_number:'', 'owner'=>isset($waybill->owner->name)?$waybill->owner->name:'', 'wms_bill_number'=>isset($waybill->wms_bill_number)?$waybill->wms_bill_number:'', 'origination'=>isset($waybill->origination)?$waybill->origination:'', 'destination'=>isset($waybill->destination)?$waybill->destination:'', 'recipient'=>isset($waybill->recipient)?$waybill->recipient:'', 'recipient_mobile'=>isset($waybill->recipient_mobile)?$waybill->recipient_mobile:'', 'charge'=>isset($waybill->charge)?$waybill->charge:'', 'ordering_remark'=>isset($waybill->ordering_remark)?$waybill->ordering_remark:'', 'carrier'=>isset($waybill->carrier_name)?$waybill->carrier_name:'', 'carrier_bill'=>isset($waybill->carrier_bill)?$waybill->carrier_bill:'', 'origination_city'=>isset($waybill->origination_city_name)?$waybill->origination_city_name:'', 'destination_city'=>isset($waybill->destination_city_name)?$waybill->destination_city_name:'', 'warehouse_weight'=>isset($waybill->warehouse_weight)?$waybill->warehouse_weight.' '.(isset($waybill->warehouse_weight_unit_name)?$waybill->warehouse_weight_unit_name:''):'', 'warehouse_weight_other'=>isset($waybill->warehouse_weight_other)?$waybill->warehouse_weight_other.' '.(isset($waybill->warehouse_weight_unit_other_name)?$waybill->warehouse_weight_unit_other_name:''):'', 'carrier_weight'=>isset($waybill->carrier_weight)?$waybill->carrier_weight.' '.(isset($waybill->carrier_weight_unit_name)?$waybill->carrier_weight_unit_name:''):'', 'carrier_weight_other'=>isset($waybill->carrier_weight_other)?$waybill->carrier_weight_other.' '.(isset($waybill->carrier_weight_unit_other_name)?$waybill->carrier_weight_unit_other_name:''):'', 'carType'=>isset($waybill->carType->name)?$waybill->carType->name.($waybill->carType->length.'米'):'', 'car_owner_info'=>isset($waybill->car_owner_info)?$waybill->car_owner_info:'', 'fee'=>isset($waybill->fee)?$waybill->fee:'', 'pick_up_fee'=>isset($waybill->pick_up_fee)?$waybill->pick_up_fee:'', 'other_fee'=>isset($waybill->other_fee)?$waybill->other_fee:'', 'collect_fee'=>isset($waybill->collect_fee)?$waybill->collect_fee:'', 'dispatch_remark'=>isset($waybill->dispatch_remark)?$waybill->dispatch_remark:'', 'waybillAuditor'=>isset($waybillAuditor)?$waybillAuditor:'', 'dispatchAuditor'=>isset($dispatchAuditor)?$dispatchAuditor:'', 'created_at'=>isset($waybill->created_at)?$waybill->created_at:'' ]; if(!$feeVisible){ unset($w['fee'],$w['pick_up_fee'],$w['other_fee'],$w['collect_fee']); } $list[$i]=$w; } $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']); return Excel::download(new WaybillExport($row,$list), date('Y:m:d ') . '运单列表.xls'); } protected function validatorWaybill(Request $request,$id){ if ($id){$wms_bill_number=$id;}; $validator=Validator::make($request->input(),[ 'owner_id'=>'required', 'wms_bill_number'=>['nullable','max:50',isset($wms_bill_number)?"unique:waybills,wms_bill_number,$wms_bill_number":'unique:waybills,wms_bill_number'], 'origination'=>'required|max:255', 'destination'=>'required|max:255', 'recipient'=>'required|max:50', 'recipient_mobile'=>['required','regex:/^(\d{7,11})|(1[3|4|5|7|8][0-9]\d{4,8})$/'], 'charge'=>'nullable|min:0|max:999999|numeric', 'collect_fee'=>'nullable|min:0|numeric', ],[ 'required'=>':attribute 为必填项', 'alpha_num'=>':attribute 应为字母或数字', 'max'=>':attribute 字符过多或输入值过大', 'regex'=>':attribute 输入有误', 'integer'=>':attribute 应为整数', 'min'=>':attribute 不得为负', 'numeric'=>':attribute 应为数字', 'unique'=>':attribute 已存在', ],[ 'owner_id'=>'货主', 'wms_bill_number'=>'WMS单号', 'origination'=>'始发地', 'destination'=>'目的地', 'recipient'=>'收件人', 'recipient_mobile'=>'收件人电话', 'charge'=>'收费', 'collect_fee'=>'到付金额', ]); return $validator; } protected function validatorWaybillDispatch(Request $request,$id){ if ($request->input('type')=='直发车'){ $validator=Validator::make($request->input(),[ 'carrier_bill'=>"nullable|max:50|unique:waybills,carrier_bill,$id", 'fee'=>'required|min:0|numeric|max:999999', 'other_fee'=>'nullable|min:0|numeric|max:999999', 'charge'=>'nullable|min:0|numeric|max:999999', ],[ 'required'=>':attribute 为必填项', 'alpha_num'=>':attribute 应为字母或数字', 'max'=>':attribute 字符过多或输入值过大', 'min'=>':attribute 不得为负', 'numeric'=>':attribute 应为数字', 'unique'=>':attribute 已存在', ],[ 'carrier_bill'=>'承运商单号', 'fee'=>'运费', 'other_fee'=>'其他费用', 'charge'=>'收费', ]); return $validator; }else if ($request->input('type')=='专线'){ $validator=Validator::make($request->input(),[ 'carrier_bill'=>"nullable|max:50|unique:waybills,carrier_bill,$id", 'pick_up_fee'=>'nullable|min:0|numeric|max:999999', 'other_fee'=>'nullable|min:0|numeric|max:999999', 'carrier_id'=>'required|integer', 'destination_city_id'=>'required|integer', 'warehouse_weight'=>'nullable|min:0|numeric|max:999999', 'carrier_weight'=>'nullable|min:0|numeric|max:999999', 'warehouse_weight_unit_id'=>'required_with:warehouse_weight|integer', 'carrier_weight_unit_id'=>'required_with:carrier_weight|integer', 'warehouse_weight_other'=>'nullable|min:0|numeric|max:999999', 'carrier_weight_other'=>'nullable|min:0|numeric|max:999999', 'warehouse_weight_unit_id_other'=>'required_with:warehouse_weight_other|integer', 'carrier_weight_unit_id_other'=>'required_with:carrier_weight_other|integer', 'charge'=>'nullable|min:0|numeric|max:999999', ],[ 'required'=>':attribute 为必填项', 'alpha_num'=>':attribute 应为字母或数字', 'max'=>':attribute 字符过多或输入值过大', 'min'=>':attribute 不得为负', 'numeric'=>':attribute 应为数字', 'unique'=>':attribute 已存在', 'required_with'=>':attribute 未填', ],[ 'carrier_bill'=>'承运商单号', 'warehouse_weight'=>'仓库计数(抛)', 'carrier_weight'=>'承运商计数(抛)', 'pick_up_fee'=>'提货费', 'other_fee'=>'其他费用', 'carrier_id'=>'承运商', 'destination_city_id'=>'目的市', 'carrier_weight_unit_id'=>'承运商计数单位', 'charge'=>'收费', 'warehouse_weight_unit_id'=>'仓库计数单位', 'warehouse_weight_other'=>'仓库计数二', 'carrier_weight_other'=>'承运商计数二', 'warehouse_weight_unit_id_other'=>'仓库技数单位二', 'carrier_weight_unit_id_other'=>'承运商计数单位二', ]); return $validator; }else{ return false; } } }