938 lines
32 KiB
PHP
Executable File
938 lines
32 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* @Author: fm453
|
|
* @Date: 2018-08-17 19:39:41
|
|
* @Last Modified by: fm453
|
|
* @Last Modified time: 2021-09-11 07:42:21
|
|
* @Email: fm453@lukegzs.com
|
|
*/
|
|
namespace backend\controllers;
|
|
|
|
use Yii;
|
|
use yii\data\Pagination;
|
|
use yii\helpers\Url;
|
|
use addons\models\AcTruck;
|
|
use addons\models\AcDriver;
|
|
use addons\models\AcTruckOnline;
|
|
use addons\models\AcTruckCars;
|
|
use addons\models\AcStore;
|
|
use addons\models\AcCar;
|
|
use addons\models\AcCarBrand;
|
|
use addons\models\AcCarSeries;
|
|
use addons\models\AcOrder;
|
|
use addons\models\AcEmployee;
|
|
use addons\models\AcGps;
|
|
use addons\models\AcGpsRoute;
|
|
|
|
class TruckolController extends \yii\web\Controller
|
|
{
|
|
//替代常规的_construct 析构函数;其他方法调用前执行
|
|
public function init()
|
|
{
|
|
parent::init();
|
|
$session = Yii::$app->session;
|
|
if(isset($_GET['pid']) && (int)$_GET['pid']>0){
|
|
$session->set('pid',(int)$_GET['pid']);
|
|
}
|
|
$pid = $session->get('pid');
|
|
if(!$pid){
|
|
return Yii::$app->response->redirect(['index/index']);
|
|
}
|
|
}
|
|
|
|
//出车单
|
|
public function actionIndex()
|
|
{
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$where = [];
|
|
$where[]='and';
|
|
$where[] = ['=','pid',Yii::$app->session->get('pid')];
|
|
$where[] = ['>','status_code',0];
|
|
$post = Yii::$app->request->post();
|
|
$search = [];
|
|
$search['title'] = isset($post['title']) ? trim(htmlspecialchars_decode($post['title'])) : '';
|
|
if(!empty($search['title'])){
|
|
$where[] = ['LIKE','num_left',$search['title']];
|
|
}
|
|
$where[] = ['=','deleted',0];
|
|
$data = $AcTruckOnline->find()->where($where);
|
|
|
|
$pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '10']);
|
|
$res = $data->offset($pages->offset)->limit($pages->limit)->orderby('id DESC')->all();
|
|
$status = Yii::$app->params['TruckOnlineStatus'];
|
|
|
|
$stores = [];
|
|
$AcStore = new AcStore();
|
|
if($res){
|
|
$store_ids = [];
|
|
foreach($res as $r){
|
|
$store_ids[$r->from_store] = $r->from_store;
|
|
$store_ids[$r->end_store] = $r->end_store;
|
|
}
|
|
array_unique($store_ids);
|
|
$_stores = $AcStore->find()->where(['IN','id',$store_ids])->all();
|
|
if($_stores){
|
|
foreach($_stores as $r){
|
|
$stores[$r->id] = $r->toArray();
|
|
}
|
|
}
|
|
}
|
|
|
|
return $this->render('index',[
|
|
'list'=>$res,
|
|
'pager' => $pages,
|
|
'status'=>$status,
|
|
'stores'=>$stores,
|
|
'search'=>$search
|
|
]);
|
|
}
|
|
|
|
//在线板车列表(标记了发车状态——装车中的)
|
|
public function actionList()
|
|
{
|
|
$AcTruck = new AcTruck();
|
|
$where = [];
|
|
$where[]='and';
|
|
$where[] = ['=','pid',Yii::$app->session->get('pid')];
|
|
$where[] = ['=','status_code',4];
|
|
$post = Yii::$app->request->post();
|
|
$search = [];
|
|
$search['title'] = isset($post['title']) ? trim(htmlspecialchars_decode($post['title'])) : '';
|
|
if(!empty($search['title'])){
|
|
$where[] = ['LIKE','num_left',$search['title']];
|
|
}
|
|
$where[] = ['=','deleted',0];
|
|
$data = $AcTruck->find()->where($where);
|
|
|
|
$pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '20']);
|
|
$res = $data->offset($pages->offset)->limit($pages->limit)->all();
|
|
$status = Yii::$app->params['TruckStatus'];
|
|
$AcDriver = new AcDriver();
|
|
$where = [];
|
|
$where['pid'] = Yii::$app->session->get('pid');
|
|
$_drivers = $AcDriver->find()->where($where)->all();
|
|
$drivers = [];
|
|
foreach($_drivers as $s){
|
|
$drivers[$s->id] = $s->toArray();
|
|
}
|
|
|
|
return $this->render('list',[
|
|
'trucks'=>$res,
|
|
'pager' => $pages,
|
|
'drivers'=>$drivers,
|
|
'status'=>$status,
|
|
'search'=>$search
|
|
]);
|
|
}
|
|
|
|
//选择可装车的板车
|
|
public function actionSelect()
|
|
{
|
|
$AcTruck = new AcTruck();
|
|
$where = [];
|
|
$where[]='and';
|
|
$where[] = ['=','pid',Yii::$app->session->get('pid')];
|
|
$where[] = ['=','status_code',4];
|
|
$post = Yii::$app->request->post();
|
|
$search = [];
|
|
$search['title'] = isset($post['title']) ? trim(htmlspecialchars_decode($post['title'])) : '';
|
|
if(!empty($search['title'])){
|
|
$where[] = ['LIKE','num_left',$search['title']];
|
|
}
|
|
$where[] = ['=','deleted',0];
|
|
$data = $AcTruck->find()->where($where);
|
|
|
|
$pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '20']);
|
|
$res = $data->offset($pages->offset)->limit($pages->limit)->all();
|
|
$status = Yii::$app->params['TruckStatus'];
|
|
$AcDriver = new AcDriver();
|
|
$where = [];
|
|
$where['pid'] = Yii::$app->session->get('pid');
|
|
$_drivers = $AcDriver->find()->where($where)->all();
|
|
$drivers = [];
|
|
foreach($_drivers as $s){
|
|
$drivers[$s->id] = $s->toArray();
|
|
}
|
|
$callback = !empty(Yii::$app->request->get('callback')) ? Yii::$app->request->get('callback') : 'truckol';
|
|
|
|
return $this->render('select',[
|
|
'trucks'=>$res,
|
|
'pager' => $pages,
|
|
'drivers'=>$drivers,
|
|
'status'=>$status,
|
|
'search'=>$search,
|
|
'callback'=>$callback
|
|
]);
|
|
}
|
|
|
|
public function actionSelect2()
|
|
{
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$where = [];
|
|
$where[]='and';
|
|
$where[] = ['=','pid',Yii::$app->session->get('pid')];
|
|
$where[] = ['>','status_code',0];
|
|
$post = Yii::$app->request->post();
|
|
$search = [];
|
|
$search['title'] = isset($post['title']) ? trim(htmlspecialchars_decode($post['title'])) : '';
|
|
if(!empty($search['title'])){
|
|
$where[] = ['LIKE','num_left',$search['title']];
|
|
}
|
|
$where[] = ['=','deleted',0];
|
|
$data = $AcTruckOnline->find()->where($where);
|
|
|
|
$pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '10']);
|
|
$res = $data->offset($pages->offset)->limit($pages->limit)->orderby('id DESC')->all();
|
|
$status = Yii::$app->params['TruckOnlineStatus'];
|
|
|
|
$stores = [];
|
|
$AcStore = new AcStore();
|
|
if($res){
|
|
$store_ids = [];
|
|
foreach($res as $r){
|
|
$store_ids[$r->from_store] = $r->from_store;
|
|
$store_ids[$r->end_store] = $r->end_store;
|
|
}
|
|
array_unique($store_ids);
|
|
$_stores = $AcStore->find()->where(['IN','id',$store_ids])->all();
|
|
if($_stores){
|
|
foreach($_stores as $r){
|
|
$stores[$r->id] = $r->toArray();
|
|
}
|
|
}
|
|
}
|
|
|
|
$callback = !empty(Yii::$app->request->get('callback')) ? Yii::$app->request->get('callback') : 'truckol';
|
|
|
|
return $this->render('select2',[
|
|
'list'=>$res,
|
|
'pager' => $pages,
|
|
'status'=>$status,
|
|
'stores'=>$stores,
|
|
'search'=>$search,
|
|
'callback'=>$callback
|
|
]);
|
|
}
|
|
|
|
public function actionNew()
|
|
{
|
|
$status = Yii::$app->params['TruckOnlineStatus'];
|
|
$AcTruckOnline = [];
|
|
$AcTruckOnline['status_code'] = 0;
|
|
return $this->render('edit',['status'=>$status,'detail'=>$AcTruckOnline]);
|
|
}
|
|
|
|
//编辑板车装车计划资料
|
|
public function actionEdit()
|
|
{
|
|
// $id = Yii::$app->request->get('id'); //装车任务ID
|
|
$id = 0;
|
|
$truck_id = Yii::$app->request->get('truck_id'); //板车ID
|
|
$store_id = $store2_id = 0;
|
|
$pid = Yii::$app->session->get('pid');
|
|
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$AcTruck = new AcTruck();
|
|
$truckol = [];
|
|
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
if(!$truck){
|
|
$post = Yii::$app->request->post();
|
|
$return = [];
|
|
$return['msg'] = '关联板车数据获取异常,发车任务编辑失败';
|
|
$return['errorcode'] = 0;
|
|
$return['url'] = Url::toRoute(['truck/list',$post]);
|
|
$return['buttons'] = [
|
|
['title'=>'好的,我知道了','class'=>'info','url'=>$return['url']]
|
|
];
|
|
$return['content'] = $return['msg'];
|
|
$return['class'] = 'warning';
|
|
Yii::$app->request->setBodyParams($return);
|
|
return Yii::$app->runAction('index/msg');
|
|
}
|
|
if(!$id){
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['=','truck_id',$truck_id];
|
|
$where[] = ['<','status_code',99];
|
|
$where[] = ['=','deleted',0];
|
|
$res = $AcTruckOnline->find()->where($where)->orderby('id ASC')->one();
|
|
if($res){
|
|
$id = $res->id;
|
|
$store_id = $res->from_store;
|
|
$store2_id = $res->end_store;
|
|
$truckol = $res->toArray();
|
|
}
|
|
}
|
|
|
|
$truckol['truck_id'] = $truck_id;
|
|
$truckol['truck_title'] = $truck->num_p.$truck->num_area.$truck->num_left;
|
|
$truckol['truck_num'] = $truckol['truck_title']?$truckol['truck_title']:$truckol['truck_num'];
|
|
|
|
$AcStore = new AcStore();
|
|
$store = $AcStore->findOne($store_id);
|
|
if($store){
|
|
$truckol['fromstore_title'] = $store->title;
|
|
}
|
|
$store2 = $AcStore->findOne($store2_id);
|
|
if($store2){
|
|
$truckol['endstore_title'] = $store2->title;
|
|
}
|
|
|
|
$AcDriver = new AcDriver();
|
|
$driver = $AcDriver->find()->where(['id' => $truck->driver_id])->one();
|
|
$truckol['driver_title'] = $truckol['driver_mobile'] = '';
|
|
if($driver){
|
|
$truckol['driver_title'] = $driver->name;
|
|
$truckol['driver_mobile'] = $driver->mobile;
|
|
}
|
|
$truckol['driver_name'] = isset($truckol['driver_name'])?$truckol['driver_name']:$truckol['driver_title'];
|
|
$truckol['driver_mobiles'] = isset($truckol['driver_mobiles'])?$truckol['driver_mobiles']:$truckol['driver_mobile'];
|
|
$status = Yii::$app->params['TruckOnlineStatus'];
|
|
return $this->render('edit',['status'=>$status,'detail'=>$truckol]);
|
|
}
|
|
|
|
//更新板车装车任务资料
|
|
public function actionModify()
|
|
{
|
|
$id = Yii::$app->request->get('id'); //装车任务ID
|
|
// $truck_id = Yii::$app->request->get('truck_id'); //板车ID
|
|
$truck_id = 0;
|
|
$store_id = $store2_id = 0;
|
|
$pid = Yii::$app->session->get('pid');
|
|
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$AcTruck = new AcTruck();
|
|
$truckol = [];
|
|
|
|
$res = $AcTruckOnline->findOne($id);
|
|
if($res){
|
|
$truck_id = $res->truck_id;
|
|
$store_id = $res->from_store;
|
|
$store2_id = $res->end_store;
|
|
$truckol = $res->toArray();
|
|
}
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
|
|
if(!$truck){
|
|
$post = Yii::$app->request->post();
|
|
$return = [];
|
|
$return['msg'] = '关联板车数据获取异常,发车任务编辑失败';
|
|
$return['errorcode'] = 0;
|
|
$return['url'] = Url::toRoute(['truck/list',$post]);
|
|
$return['buttons'] = [
|
|
['title'=>'好的,我知道了','class'=>'info','url'=>$return['url']]
|
|
];
|
|
$return['content'] = $return['msg'];
|
|
$return['class'] = 'warning';
|
|
Yii::$app->request->setBodyParams($return);
|
|
return Yii::$app->runAction('index/msg');
|
|
}
|
|
|
|
$truckol['truck_id'] = $truck_id;
|
|
$truckol['truck_title'] = $truck->num_p.$truck->num_area.$truck->num_left;
|
|
$truckol['truck_num'] = $truckol['truck_title']?$truckol['truck_title']:$truckol['truck_num'];
|
|
|
|
$AcStore = new AcStore();
|
|
$store = $AcStore->findOne($store_id);
|
|
if($store){
|
|
$truckol['fromstore_title'] = $store->title;
|
|
}
|
|
$store2 = $AcStore->findOne($store2_id);
|
|
if($store2){
|
|
$truckol['endstore_title'] = $store2->title;
|
|
}
|
|
|
|
$AcDriver = new AcDriver();
|
|
$driver = $AcDriver->find()->where(['id' => $truck->driver_id])->one();
|
|
$truckol['driver_title'] = $truckol['driver_mobile'] = '';
|
|
if($driver){
|
|
$truckol['driver_title'] = $driver->name;
|
|
$truckol['driver_mobile'] = $driver->mobile;
|
|
}
|
|
$truckol['driver_name'] = isset($truckol['driver_name'])?$truckol['driver_name']:$truckol['driver_title'];
|
|
$truckol['driver_mobiles'] = isset($truckol['driver_mobiles'])?$truckol['driver_mobiles']:$truckol['driver_mobile'];
|
|
$status = Yii::$app->params['TruckOnlineStatus'];
|
|
return $this->render('modify',['status'=>$status,'detail'=>$truckol]);
|
|
}
|
|
|
|
//保存装车基础资料
|
|
public function actionSave()
|
|
{
|
|
$post = Yii::$app->request->post();
|
|
$id = (int)$post['id'];
|
|
$pid = Yii::$app->session->get('pid');
|
|
//格式化数据
|
|
//目标键=》POST键
|
|
$cols = ['driver_name'=>'driver_name','driver_mobiles'=>'driver_mobiles','driver_idcard'=>'driver_idcard','truck_num'=>'truck_num','end_city'=>'end_city','from_city'=>'from_city'];
|
|
foreach($cols as $col=>$key){
|
|
$data[$col] = isset($post[$key]) ? trim($post[$key]) : '';
|
|
}
|
|
|
|
$cols = ['truck_id'=>'truck_id','from_store'=>'from_store','end_store'=>'end_store'];
|
|
foreach($cols as $col=>$key){
|
|
$data[$col] = isset($post[$key]) ? (int)$post[$key] : 0;
|
|
}
|
|
$key = 'status_code';
|
|
if(isset($post[$key])){
|
|
$data[$key] = (int)$post[$key];
|
|
}
|
|
/*板车规则判断
|
|
*一辆板车只能有一条可用装车任务表单
|
|
**/
|
|
$truck_id = $data['truck_id'];
|
|
if(!$truck_id){
|
|
$return['msg'] = '未指定板车信息,保存失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
$AcTruck = new AcTruck();
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
if(!$truck){
|
|
$return['msg'] = '未找到指定板车,保存失败';
|
|
$return['errorcode'] = 404;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['=','truck_id',$truck_id];
|
|
$where[] = ['<','status_code',99];
|
|
$where[] = ['=','deleted',0];
|
|
$truckol = $AcTruckOnline->find()->where($where)->orderby('id ASC')->one();
|
|
if($truckol){
|
|
if($id != $truckol->id){
|
|
$return['msg'] = '该板车已有未完成的托运任务,不允许重复指派';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
}
|
|
|
|
$key = 'remark';
|
|
$data[$key] = isset($post[$key]) ? htmlspecialchars(trim($post[$key])) : '';
|
|
|
|
$_time = time();
|
|
$key = 'from_date';
|
|
$data[$key] = isset($post[$key]) ? strtotime($post[$key]) : $_time;
|
|
$key = 'end_date';
|
|
if(isset($post[$key])){
|
|
$data[$key] = strtotime($post[$key]);
|
|
}
|
|
|
|
if(!$id){
|
|
$data['create_at'] = $_time;
|
|
}
|
|
$data['update_at'] = $_time;;
|
|
$data['pid'] = $pid;
|
|
|
|
//保存板车资料
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
foreach($data as $key=>$val){
|
|
$AcTruckOnline->$key = $val;
|
|
}
|
|
|
|
if($id){
|
|
$res = $AcTruckOnline->updateAll($data,['id'=>$id]);
|
|
}else{
|
|
$res = $AcTruckOnline->save();
|
|
$id = $AcTruckOnline->attributes['id']; //获取插入后id
|
|
}
|
|
|
|
if($res){
|
|
\Yii::$app->getSession()->setFlash('success', '信息保存成功!');
|
|
return $this->redirect(['modify','id'=>$id]);
|
|
}else{
|
|
\Yii::$app->getSession()->setFlash('warning', '信息保存失败!');
|
|
return $this->goBack();
|
|
}
|
|
}
|
|
|
|
//随车车辆管理
|
|
public function actionCars()
|
|
{
|
|
$pid = Yii::$app->session->get('pid');
|
|
$id = Yii::$app->request->get('id'); //装车任务ID
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$truckol = [];
|
|
$res = $AcTruckOnline->findOne($id);
|
|
if(!$res){
|
|
$post = Yii::$app->request->post();
|
|
$return = [];
|
|
$return['msg'] = '发车任务记录获取失败,请重新获取';
|
|
$return['errorcode'] = 0;
|
|
$return['url'] = Url::toRoute(['truckol/list',$post]);
|
|
$return['buttons'] = [
|
|
['title'=>'好的,我知道了','class'=>'info','url'=>$return['url']]
|
|
];
|
|
$return['content'] = $return['msg'];
|
|
$return['class'] = 'warning';
|
|
Yii::$app->request->setBodyParams($return);
|
|
return Yii::$app->runAction('index/msg');
|
|
}
|
|
|
|
$truck_id = $res->truck_id;
|
|
$store_id = $res->from_store;
|
|
$store2_id = $res->end_store;
|
|
$truckol = $res->toArray();
|
|
|
|
$AcTruck = new AcTruck();
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
|
|
$AcStore = new AcStore();
|
|
$store = $AcStore->findOne($store_id);
|
|
if($store){
|
|
$truckol['fromstore_title'] = $store->title;
|
|
}
|
|
$store2 = $AcStore->findOne($store2_id);
|
|
if($store2){
|
|
$truckol['endstore_title'] = $store2->title;
|
|
}
|
|
|
|
$online_id = $id;
|
|
$AcTruckCars = new AcTruckCars();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['=','online_id',$online_id];
|
|
$where[] = ['=','deleted',0];
|
|
$truckcars = $AcTruckCars->find()->where($where)->orderby('update_at DESC')->all();
|
|
$carids = $orderids = [];
|
|
if($truckcars){
|
|
foreach($truckcars as $t){
|
|
$carids[] = $t->car_id;
|
|
$orderids[] = $t->order_id;
|
|
}
|
|
}
|
|
|
|
$AcCar = new AcCar();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$carids];
|
|
$where[] = ['=','deleted',0];
|
|
$cars = $AcCar->find()->where($where)->indexby('id')->all();
|
|
|
|
$status = Yii::$app->params['TruckCarsStatus'];
|
|
$truckOnLineStatus = Yii::$app->params['TruckOnlineStatus'];
|
|
|
|
return $this->render('cars',[
|
|
'status'=>$status,
|
|
'truckOnLineStatus'=>$truckOnLineStatus,
|
|
'truckol'=>$truckol,
|
|
'cars'=>$cars,
|
|
'truckcars'=>$truckcars
|
|
]);
|
|
}
|
|
|
|
//保存装车随车资料
|
|
public function actionCarssave()
|
|
{
|
|
$post = Yii::$app->request->post();
|
|
$online_id = (int)$post['id'];
|
|
$pid = Yii::$app->session->get('pid');
|
|
//格式化数据
|
|
//目标键=》POST键
|
|
$cols = ['car_id','order_id'];
|
|
foreach($cols as $key){
|
|
if(!isset($post[$key])){
|
|
$return['msg'] = '未传入的运单或车辆信息,保存失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
}
|
|
$car_ids = $post['car_id'];
|
|
if(!is_array($car_ids)){
|
|
$return['msg'] = '传入的车辆数据不正确,保存失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
$order_ids = $post['order_id'];
|
|
if(!is_array($order_ids)){
|
|
$return['msg'] = '传入的运单数据不正确,保存失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
if(count($car_ids) != count($order_ids)){
|
|
$return['msg'] = '传入的车辆数据与运单数据不匹配,保存失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
/*筛除已在运输中的运单及车辆数据 TBD*/
|
|
|
|
$AcTruckCars = new AcTruckCars();
|
|
$cars = [];
|
|
$_time = time();
|
|
foreach($car_ids as $k=>$car_id){
|
|
$car = [];
|
|
$car['pid'] = $pid;
|
|
$car['online_id'] = $online_id;
|
|
$car['car_id'] = $car_id;
|
|
$car['order_id'] = $order_ids[$k];
|
|
$car['create_at'] = $_time;
|
|
$car['update_at'] = $_time;
|
|
$cars[] = $car;
|
|
$model = clone $AcTruckCars;
|
|
foreach($car as $key=>$val){
|
|
$model->$key = $val;
|
|
}
|
|
$model->save();
|
|
}
|
|
|
|
$return['msg'] = '操作完成,请刷新页面并检查数据';
|
|
$return['errorcode'] = 200;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
//板车出发
|
|
public function actionChufa()
|
|
{
|
|
$id = Yii::$app->request->get('id'); //装车任务ID
|
|
$return = [];
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$truckol = [];
|
|
$res = $AcTruckOnline->findOne($id);
|
|
if(!$res){
|
|
$post = Yii::$app->request->post();
|
|
$return['msg'] = '发车任务记录获取失败,请重新获取';
|
|
$return['errorcode'] = 404;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
if($res->status_code!=0){
|
|
$return['msg'] = '关联出车任务非“待出发”状态,操作失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
$truck_id = $res->truck_id;
|
|
$truckol = $res->toArray();
|
|
|
|
$AcTruck = new AcTruck();
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
if(!$truck){
|
|
$return['msg'] = '关联板车数据获取异常,操作失败';
|
|
$return['errorcode'] = 404;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
/*更新数据*/
|
|
$_time = time();
|
|
$data = [];
|
|
$data['update_at'] = $_time;
|
|
$data['status_code'] = 1;
|
|
$res = $AcTruckOnline->updateAll($data,['id'=>$id]);
|
|
|
|
$data = [];
|
|
$data['update_at'] = $_time;
|
|
$data['status_code'] = 5;
|
|
$AcTruck->updateAll($data,['id'=>$truck_id]);
|
|
|
|
if($res){
|
|
$return['msg'] = '出车任务出发标记操作成功';
|
|
$return['errorcode'] = 200;
|
|
}else{
|
|
$return['msg'] = '出发标记操作失败';
|
|
$return['errorcode'] = 100;
|
|
}
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
//板车到达
|
|
public function actionArrive()
|
|
{
|
|
$id = Yii::$app->request->get('id'); //装车任务ID
|
|
$return = [];
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$truckol = [];
|
|
$res = $AcTruckOnline->findOne($id);
|
|
if(!$res){
|
|
$post = Yii::$app->request->post();
|
|
$return['msg'] = '发车任务记录获取失败,请重新获取';
|
|
$return['errorcode'] = 404;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
if($res->status_code!=1){
|
|
$return['msg'] = '关联出车任务非“进行中”(在途)状态,操作失败';
|
|
$return['errorcode'] = 400;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
$truck_id = $res->truck_id;
|
|
$truckol = $res->toArray();
|
|
|
|
$AcTruck = new AcTruck();
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
if(!$truck){
|
|
$return['msg'] = '关联板车数据获取异常,操作失败';
|
|
$return['errorcode'] = 404;
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
/*更新数据*/
|
|
$_time = time();
|
|
$data = [];
|
|
$data['update_at'] = $_time;
|
|
$data['status_code'] = 99;
|
|
$res = $AcTruckOnline->updateAll($data,['id'=>$id]);
|
|
|
|
$data = [];
|
|
$data['update_at'] = $_time;
|
|
$data['status_code'] = 0;
|
|
$AcTruck->updateAll($data,['id'=>$truck_id]);
|
|
|
|
if($res){
|
|
$return['msg'] = '出车任务运达标记操作成功';
|
|
$return['errorcode'] = 200;
|
|
}else{
|
|
$return['msg'] = '运达标记操作失败';
|
|
$return['errorcode'] = 100;
|
|
}
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
|
|
//删除板车装车任务
|
|
public function actionDelete()
|
|
{
|
|
$get = Yii::$app->request->get();
|
|
$post = Yii::$app->request->post();
|
|
$id = (int)$get['id'];
|
|
$data = $where = [];
|
|
$where['pid'] = Yii::$app->session->get('pid');
|
|
$where['id'] = $id;
|
|
$data['update_at'] = time();
|
|
$data['deleted'] = 1;
|
|
|
|
$model = new AcTruck();
|
|
$res = $model->updateAll($data,$where);
|
|
|
|
$return = [];
|
|
$return['url'] = Url::toRoute('truckol/index');
|
|
$return['timeout'] = 3; //3秒后自动跳转
|
|
$return['status'] = 0;
|
|
if($res){
|
|
$return['msg'] = '板车装车任务删除成功';
|
|
$return['errorcode'] = 200;
|
|
$return['data'] = $id;
|
|
}else{
|
|
$return['msg'] = '板车装车任务删除失败';
|
|
$return['errorcode'] = 0;
|
|
}
|
|
exit(json_encode($return,JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
//打印出车单
|
|
public function actionPrint()
|
|
{
|
|
$pid = Yii::$app->session->get('pid');
|
|
$id = Yii::$app->request->get('id'); //装车任务ID
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$truckol = [];
|
|
$res = $AcTruckOnline->findOne($id);
|
|
if(!$res){
|
|
$post = Yii::$app->request->post();
|
|
$return = [];
|
|
$return['msg'] = '发车任务记录获取失败,请重新获取';
|
|
$return['errorcode'] = 0;
|
|
$return['url'] = Url::toRoute(['truckol/list',$post]);
|
|
$return['buttons'] = [
|
|
['title'=>'好的,我知道了','class'=>'info','url'=>$return['url']]
|
|
];
|
|
$return['content'] = $return['msg'];
|
|
$return['class'] = 'warning';
|
|
Yii::$app->request->setBodyParams($return);
|
|
return Yii::$app->runAction('index/msg');
|
|
}
|
|
|
|
$truck_id = $res->truck_id;
|
|
$store_id = $res->from_store;
|
|
$store2_id = $res->end_store;
|
|
$truckol = $res->toArray();
|
|
$AcTruck = new AcTruck();
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
|
|
$AcStore = new AcStore();
|
|
$store = $AcStore->findOne($store_id);
|
|
if($store){
|
|
$truckol['fromstore_title'] = $store->title;
|
|
}
|
|
$store2 = $AcStore->findOne($store2_id);
|
|
if($store2){
|
|
$truckol['endstore_title'] = $store2->title;
|
|
}
|
|
|
|
$online_id = $id;
|
|
$AcTruckCars = new AcTruckCars();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['=','online_id',$online_id];
|
|
$where[] = ['=','deleted',0];
|
|
$where[] = ['>','status_code',0];
|
|
$truckcars = $AcTruckCars->find()->where($where)->orderby('update_at DESC')->all();
|
|
$carids = $orderids = [];
|
|
if($truckcars){
|
|
foreach($truckcars as $t){
|
|
$carids[] = $t->car_id;
|
|
$orderids[] = $t->order_id;
|
|
}
|
|
}
|
|
|
|
$counts = [];
|
|
|
|
$AcCar = new AcCar();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$carids];
|
|
$where[] = ['=','deleted',0];
|
|
$cars = $AcCar->find()->where($where)->indexby('id')->all();
|
|
|
|
$AcOrder = new AcOrder();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$orderids];
|
|
$where[] = ['=','deleted',0];
|
|
$orders = $AcOrder->find()->where($where)->indexby('id')->all();
|
|
|
|
$employee_ids = [];
|
|
$count['fee_total'] = $count['pay_receive'] = 0;
|
|
foreach($orders as $v){
|
|
$employee_ids[] = $v->employee_id;
|
|
$count['fee_total'] += $v->fee_total;
|
|
$count['pay_receive'] += $v->pay_receive;
|
|
}
|
|
$AcEmployee = new AcEmployee();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$employee_ids];
|
|
$where[] = ['=','deleted',0];
|
|
$employees = $AcEmployee->find()->where($where)->indexby('id')->all();
|
|
|
|
$count['cars'] = count($truckcars);
|
|
|
|
$status = Yii::$app->params['TruckCarsStatus'];
|
|
$truckOnLineStatus = Yii::$app->params['TruckOnlineStatus'];
|
|
return $this->render('print',[
|
|
'status'=>$status,
|
|
'truckOnLineStatus'=>$truckOnLineStatus,
|
|
'truckol'=>$truckol,
|
|
'cars'=>$cars,
|
|
'orders'=>$orders,
|
|
'employees'=>$employees,
|
|
'truckcars'=>$truckcars,
|
|
'count'=>$count
|
|
]);
|
|
}
|
|
|
|
//浏览详情
|
|
public function actionDetail()
|
|
{
|
|
$pid = Yii::$app->session->get('pid');
|
|
$id = Yii::$app->request->get('id'); //装车任务ID
|
|
$AcTruckOnline = new AcTruckOnline();
|
|
$truckol = [];
|
|
$res = $AcTruckOnline->findOne($id);
|
|
if(!$res){
|
|
$post = Yii::$app->request->post();
|
|
$return = [];
|
|
$return['msg'] = '发车任务记录获取失败,请重新获取';
|
|
$return['errorcode'] = 0;
|
|
$return['url'] = Url::toRoute(['truckol/list',$post]);
|
|
$return['buttons'] = [
|
|
['title'=>'好的,我知道了','class'=>'info','url'=>$return['url']]
|
|
];
|
|
$return['content'] = $return['msg'];
|
|
$return['class'] = 'warning';
|
|
Yii::$app->request->setBodyParams($return);
|
|
return Yii::$app->runAction('index/msg');
|
|
}
|
|
|
|
$truck_id = $res->truck_id;
|
|
$store_id = $res->from_store;
|
|
$store2_id = $res->end_store;
|
|
$truckol = $res->toArray();
|
|
$AcTruck = new AcTruck();
|
|
$truck = $AcTruck->findOne($truck_id);
|
|
|
|
$AcStore = new AcStore();
|
|
$store = $AcStore->findOne($store_id);
|
|
if($store){
|
|
$truckol['fromstore_title'] = $store->title;
|
|
}
|
|
$store2 = $AcStore->findOne($store2_id);
|
|
if($store2){
|
|
$truckol['endstore_title'] = $store2->title;
|
|
}
|
|
|
|
$online_id = $id;
|
|
$AcTruckCars = new AcTruckCars();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['=','online_id',$online_id];
|
|
$where[] = ['=','deleted',0];
|
|
$where[] = ['>','status_code',1];
|
|
$truckcars = $AcTruckCars->find()->where($where)->orderby('update_at DESC')->all();
|
|
$carids = $orderids = [];
|
|
if($truckcars){
|
|
foreach($truckcars as $t){
|
|
$carids[] = $t->car_id;
|
|
$orderids[] = $t->order_id;
|
|
}
|
|
}
|
|
|
|
$counts = [];
|
|
|
|
$AcCar = new AcCar();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$carids];
|
|
$where[] = ['=','deleted',0];
|
|
$cars = $AcCar->find()->where($where)->indexby('id')->all();
|
|
|
|
$AcOrder = new AcOrder();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$orderids];
|
|
$where[] = ['=','deleted',0];
|
|
$orders = $AcOrder->find()->where($where)->indexby('id')->all();
|
|
|
|
$employee_ids = [];
|
|
$count['fee_total'] = $count['pay_receive'] = 0;
|
|
foreach($orders as $v){
|
|
$employee_ids[] = $v->employee_id;
|
|
$count['fee_total'] += $v->fee_total;
|
|
$count['pay_receive'] += $v->pay_receive;
|
|
}
|
|
$AcEmployee = new AcEmployee();
|
|
$where = [];
|
|
$where[] = 'and';
|
|
$where[] = ['=','pid',$pid];
|
|
$where[] = ['IN','id',$employee_ids];
|
|
$where[] = ['=','deleted',0];
|
|
$employees = $AcEmployee->find()->where($where)->indexby('id')->all();
|
|
|
|
$count['cars'] = count($truckcars);
|
|
|
|
$status = Yii::$app->params['TruckCarsStatus'];
|
|
$truckOnLineStatus = Yii::$app->params['TruckOnlineStatus'];
|
|
return $this->render('detail',[
|
|
'status'=>$status,
|
|
'truckOnLineStatus'=>$truckOnLineStatus,
|
|
'truckol'=>$truckol,
|
|
'cars'=>$cars,
|
|
'orders'=>$orders,
|
|
'employees'=>$employees,
|
|
'truckcars'=>$truckcars,
|
|
'count'=>$count
|
|
]);
|
|
}
|
|
|
|
}
|